From 4330a339cdb5e2d8e7a6c437b100cf16c2822eda Mon Sep 17 00:00:00 2001 From: iamgoofball Date: Thu, 14 Aug 2014 12:27:15 -0700 Subject: [PATCH] beep book goonfabs 4 i fucking hate git etc etc. --- baystation12.dme | 11 +- code/datums/supplypacks.dm | 27 + code/modules/mining/manufacturing.dm | 1139 +++++++++++++++++++++ code/modules/mining/materials.dm | 8 + code/modules/mining/mining_recipes.dm | 252 +++++ code/modules/mining/ore.dm | 6 + code/modules/mining/security_recipes.dm | 128 +++ code/modules/mob/living/carbon/species.dm | 1 + code/modules/mob/living/damage_procs.dm | 9 + code/modules/research/designs.dm | 27 + icons/obj/mining.dmi | Bin 50767 -> 51684 bytes icons/obj/surgery.dmi | Bin 9263 -> 16489 bytes nano/templates/pda.tmpl | 10 + tools/mapmerge/1prepare_map.bat | 2 +- tools/mapmerge/2clean_map.bat | 2 +- tools/mapmerge/clean_map_git.sh | 2 +- 16 files changed, 1617 insertions(+), 7 deletions(-) create mode 100644 code/modules/mining/manufacturing.dm create mode 100644 code/modules/mining/mining_recipes.dm create mode 100644 code/modules/mining/security_recipes.dm diff --git a/baystation12.dme b/baystation12.dme index 163d1a079cd..30c856b0bcf 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -848,10 +848,10 @@ #include "code\modules\customitems\item_defines.dm" #include "code\modules\customitems\item_spawning.dm" #include "code\modules\customitems\definitions\base.dm" -#include "code\modules\detectivework\detective_work.dm" -#include "code\modules\detectivework\evidence.dm" -#include "code\modules\detectivework\footprints_and_rag.dm" -#include "code\modules\detectivework\scanner.dm" +#include "code\modules\DetectiveWork\detective_work.dm" +#include "code\modules\DetectiveWork\evidence.dm" +#include "code\modules\DetectiveWork\footprints_and_rag.dm" +#include "code\modules\DetectiveWork\scanner.dm" #include "code\modules\economy\Accounts.dm" #include "code\modules\economy\Accounts_DB.dm" #include "code\modules\economy\ATM.dm" @@ -947,16 +947,19 @@ #include "code\modules\mining\machine_processing.dm" #include "code\modules\mining\machine_stacking.dm" #include "code\modules\mining\machine_unloading.dm" +#include "code\modules\mining\manufacturing.dm" #include "code\modules\mining\materials.dm" #include "code\modules\mining\mine_areas.dm" #include "code\modules\mining\mine_items.dm" #include "code\modules\mining\mine_turfs.dm" #include "code\modules\mining\minerals.dm" +#include "code\modules\mining\mining_recipes.dm" #include "code\modules\mining\mint.dm" #include "code\modules\mining\money_bag.dm" #include "code\modules\mining\ore.dm" #include "code\modules\mining\ore_datum.dm" #include "code\modules\mining\satchel_ore_boxdm.dm" +#include "code\modules\mining\security_recipes.dm" #include "code\modules\mining\surprise.dm" #include "code\modules\mining\drilling\distribution.dm" #include "code\modules\mining\drilling\drill.dm" diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm index c09c8de7774..b80c6bb4145 100755 --- a/code/datums/supplypacks.dm +++ b/code/datums/supplypacks.dm @@ -1095,3 +1095,30 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee containertype = /obj/structure/closet/crate containername = "mafia supply crate" group = "Operations" + +/datum/supply_packs/fabric + name = "Fabric crate" + contains = list(/obj/item/weapon/ore/fabric, + /obj/item/weapon/ore/fabric, + /obj/item/weapon/ore/fabric, + /obj/item/weapon/ore/fabric, + /obj/item/weapon/ore/fabric, + /obj/item/weapon/ore/fabric, + /obj/item/weapon/ore/fabric, + /obj/item/weapon/ore/fabric, + /obj/item/weapon/ore/fabric, + /obj/item/weapon/ore/fabric, + /obj/item/weapon/ore/fabric, + /obj/item/weapon/ore/fabric, + /obj/item/weapon/ore/fabric, + /obj/item/weapon/ore/fabric, + /obj/item/weapon/ore/fabric, + /obj/item/weapon/ore/fabric, + /obj/item/weapon/ore/fabric, + /obj/item/weapon/ore/fabric, + /obj/item/weapon/ore/fabric, + /obj/item/weapon/ore/fabric) + cost = 30 + containertype = /obj/structure/closet/crate + containername = "Fabric crate" + group = "Operations" diff --git a/code/modules/mining/manufacturing.dm b/code/modules/mining/manufacturing.dm new file mode 100644 index 00000000000..7c6d695d769 --- /dev/null +++ b/code/modules/mining/manufacturing.dm @@ -0,0 +1,1139 @@ +// the entire manufacturing.dm + +/datum/manufacture + var/name = null + var/item = null + var/cost1 = null + var/cost2 = null + var/cost3 = null + var/cname1 = null + var/cname2 = null + var/cname3 = null + var/amount1 = 0 + var/amount2 = 0 + var/amount3 = 0 + var/create = 1 + var/time = 5 + +/obj/machinery/manufacturer + name = "Manufacturing Unit" + desc = "A standard fabricator unit capable of producing certain items from mined ore." + icon = 'surgery.dmi' + icon_state = "fab-idle" + density = 1 + anchored = 1 + //mats = 25 + var/working = 0 + var/panelopen = 0 + var/powconsumption = 0 + var/hacked = 0 + var/acceptdisk = 0 + var/dl_list = null + var/list/available = list() + var/list/diskload = list() + var/list/download = list() + var/list/hidden = list() + + New() + ..() + + process() + ..() + if (src.working) use_power(src.powconsumption) + + ex_act(severity) + switch(severity) + if(1.0) del(src) + if(2.0) + if (prob(60)) stat |= BROKEN + if(3.0) + if (prob(30)) stat |= BROKEN + return + + blob_act() + if (prob(25)) del src + return + + meteorhit() + if (prob(50)) del src + return + + power_change() + if(stat & BROKEN) icon_state = "fab-broken" + else + if( powered() ) + if (src.working) src.icon_state = "fab-active" + else src.icon_state = "fab-idle" + stat &= ~NOPOWER + else + spawn(rand(0, 15)) + src.icon_state = "fab-off" + stat |= NOPOWER + + attack_hand(var/mob/user as mob) + if(stat & BROKEN) return + if(stat & NOPOWER) return + + user.machine = src + var/dat = "[src.name]

" + + if(src.working) + dat += "This unit is currently busy." + user << browse(dat, "window=manufact;size=400x500") + onclose(user, "manufact") + return + + var/AMTmaux = 0 + var/AMTmoli = 0 + var/AMTphar = 0 + var/AMTclar = 0 + var/AMTbohr = 0 + var/AMTereb = 0 + var/AMTcere = 0 + var/AMTplas = 0 + var/AMTuqil = 0 + var/AMTtele = 0 + var/AMTfabr = 0 + + for(var/obj/item/weapon/ore/O in src.contents) + if (istype(O,/obj/item/weapon/ore/iron)) AMTmaux++ + if (istype(O,/obj/item/weapon/ore/glass)) AMTmoli++ + if (istype(O,/obj/item/weapon/ore/silver)) AMTphar++ + if (istype(O,/obj/item/weapon/ore/diamond)) AMTclar++ + if (istype(O,/obj/item/weapon/ore/gold)) AMTbohr++ + if (istype(O,/obj/item/weapon/ore/coal)) AMTereb++ + if (istype(O,/obj/item/weapon/ore/uranium)) AMTcere++ + if (istype(O,/obj/item/weapon/ore/plasma)) AMTplas++ + if (istype(O,/obj/item/weapon/ore/osmium)) AMTuqil++ + if (istype(O,/obj/item/weapon/ore/hydrogen)) AMTtele++ + if (istype(O,/obj/item/weapon/ore/fabric)) AMTfabr++ + + dat += "Available Minerals
" + if (AMTmaux) dat += "Iron: [AMTmaux]
" + if (AMTmoli) dat += "Glass: [AMTmoli]
" + if (AMTphar) dat += "Silver: [AMTphar]
" + if (AMTclar) dat += "Diamond: [AMTclar]
" + if (AMTbohr) dat += "Gold: [AMTbohr]
" + if (AMTereb) dat += "Coal: [AMTereb]
" + if (AMTcere) dat += "Uranium: [AMTcere]
" + if (AMTplas) dat += "Plasma: [AMTplas]
" + if (AMTuqil) dat += "Platinum: [AMTuqil]
" + if (AMTtele) dat += "Hydrogen: [AMTtele]
" + if (AMTfabr) dat += "Fabric: [AMTfabr]
" + if (!AMTmaux && !AMTmoli && !AMTphar && !AMTclar && !AMTbohr && !AMTereb && !AMTcere && !AMTplas && !AMTuqil && !AMTtele && !AMTfabr) + dat += "No minerals currently loaded.
" + + dat += {"
+ Available Schematics"} + + for(var/datum/manufacture/A in src.available) + dat += {"
+ [A.name]
+ Cost: [A.amount1] [A.cname1]"} + if (A.cost2) dat += ", [A.amount2] [A.cname2]" + if (A.cost3) dat += ", [A.amount3] [A.cname3]" + dat += "
Time: [A.time] Seconds
" + + for(var/datum/manufacture/A in src.download) + dat += {"
+ [A.name] (Downloaded)
+ Cost: [A.amount1] [A.cname1]"} + if (A.cost2) dat += ", [A.amount2] [A.cname2]" + if (A.cost3) dat += ", [A.amount3] [A.cname3]" + dat += "
Time: [A.time] Seconds
" + + for(var/datum/manufacture/A in src.diskload) + dat += {"
+ [A.name] (Disk)
+ Cost: [A.amount1] [A.cname1]"} + if (A.cost2) dat += ", [A.amount2] [A.cname2]" + if (A.cost3) dat += ", [A.amount3] [A.cname3]" + dat += "
Time: [A.time] Seconds
" + + if (src.hacked) + for(var/datum/manufacture/A in src.hidden) + dat += {"
+ [A.name] (Secret)
+ Cost: [A.amount1] [A.cname1]"} + if (A.cost2) dat += ", [A.amount2] [A.cname2]" + if (A.cost3) dat += ", [A.amount3] [A.cname3]" + dat += "
Time: [A.time] Seconds
" + + dat += "
" + + if (src.dl_list) + dat += {"Download Available Schematics
+ Clear Downloaded Schematics
"} + + if (src.acceptdisk) + dat += {"Clear Disk Schematics
"} + + user << browse(dat, "window=manufact;size=400x500") + onclose(user, "manufact") + + Topic(href, href_list) + if(stat & BROKEN) return + if(stat & NOPOWER) return + if(usr.stat || usr.restrained()) + return + + if ((usr.contents.Find(src) || ((get_dist(src, usr) <= 1) && istype(src.loc, /turf)))) + usr.machine = src + + if (href_list["download"]) + if(!src.dl_list) usr << "\red This unit is not capable of downloading any additional schematics." + else + var/amtdl = 0 + //var/dontload = 0 + if (src.dl_list == "robotics") + /*for(var/i = robotics_research.starting_tier, i <= robotics_research.max_tiers, i++) + for(var/datum/roboresearch/X in robotics_research.researched_items[i]) + for (var/datum/manufacture/S in X.schematics) + for (var/datum/manufacture/A in src.download) + if (istype(S,A)) dontload = 1 + if (!dontload) + src.download += new S.type(src) + amtdl++ + else dontload = 0*/ + if (amtdl) usr << "\blue [amtdl] new schematics downloaded from Robotics Research Database." + else usr << "\red No new schematics currently available in Robotics Research Database." + + if (href_list["delete"]) + var/operation = text2num(href_list["delete"]) + if(operation == 1) // Clear Disk Schematics + var/amtgone = 0 + for(var/datum/manufacture/D in src.diskload) + src.diskload-= D + amtgone++ + if (amtgone) usr << "\blue Cleared [amtgone] schematics from database." + else usr << "\red No disk-loaded schematics detected in database." + if(operation == 2) // Clear Download Schematics + var/amtgone = 0 + for(var/datum/manufacture/D in src.download) + src.download-= D + amtgone++ + if (amtgone) usr << "\blue Cleared [amtgone] schematics from database." + else usr << "\red No downloaded schematics detected in database." + + if (href_list["eject"]) + var/operation = text2num(href_list["eject"]) + var/ejectamt = 0 + var/ejecting = null + switch(operation) + if(1) ejecting = /obj/item/weapon/ore/iron + if(2) ejecting = /obj/item/weapon/ore/glass + if(3) ejecting = /obj/item/weapon/ore/silver + if(4) ejecting = /obj/item/weapon/ore/diamond + if(5) ejecting = /obj/item/weapon/ore/gold + if(6) ejecting = /obj/item/weapon/ore/coal + if(7) ejecting = /obj/item/weapon/ore/uranium + if(8) ejecting = /obj/item/weapon/ore/plasma + if(9) ejecting = /obj/item/weapon/ore/osmium + if(10) ejecting = /obj/item/weapon/ore/hydrogen + if(11) ejecting = /obj/item/weapon/ore/fabric + else + usr << "\red Error. Unknown ore type." + return + sleep(3) + ejectamt = input(usr,"How many units do you want to eject?","Eject Materials") as num + for(var/obj/item/weapon/ore/O in src.contents) + if (ejectamt <= 0) break + if (istype(O, ejecting)) + O.loc = usr.loc + ejectamt-- + + if (href_list["disp"]) + var/datum/manufacture/I = locate(href_list["disp"]) + // Material Check + var/A1 = 0 + var/A2 = 0 + var/A3 = 0 + for(var/obj/item/weapon/ore/O in src.contents) + if (istype(O,I.cost1)) A1++ + if (istype(O,I.cost2)) A2++ + if (istype(O,I.cost3)) A3++ + if (A1 < I.amount1 || A2 < I.amount2 || A3 < I.amount3) + usr << "\red Insufficient materials to manufacture that item." + return + // Consume Mats + var/C1 = I.amount1 + var/C2 = I.amount2 + var/C3 = I.amount3 + for(var/obj/item/weapon/ore/O in src.contents) + if (istype(O,I.cost1) && C1) + del O + C1-- + if (istype(O,I.cost2) && C2) + del O + C2-- + if (istype(O,I.cost3) && C3) + del O + C3-- + // Manufacture Item + src.icon_state = "fab-active" + src.working = 1 + var/worktime = I.time * 10 + var/powconsume = round(1500*worktime/3) + /*for(var/i = robotics_research.starting_tier, i <= robotics_research.max_tiers, i++) + for(var/datum/roboresearch/a in robotics_research.researched_items[i]) + if (a.manubonus) + worktime -= a.timebonus + if (a.multiplier != 0) worktime /= a.multiplier + powconsume -= a.powbonus*/ + if (worktime < 1) worktime = 1 + src.powconsumption = powconsume + src.updateUsrDialog() + sleep(worktime) + var/make = I.create + while (make > 0) + new I.item(src.loc) + make-- + src.working = 0 + src.icon_state = "fab-idle" + src.updateUsrDialog() + + + attackby(obj/item/weapon/W as obj, mob/user as mob) + var/load = 0 + if(istype(W, /obj/item/weapon/ore/)) + for(var/mob/O in viewers(user, null)) O.show_message(text("\blue [] loads [] into the [].", user, W, src), 1) + load = 1 + else if(istype(W, /obj/item/stack/sheet)) + var/obj/item/stack/sheet/STACK = W + for(var/mob/O in viewers(user, null)) O.show_message(text("\blue [] loads [] into the [].", user, W, src), 1) + if(istype(STACK, /obj/item/stack/sheet/metal)) + for (var/amt = STACK.amount, amt > 0, amt--) new /obj/item/weapon/ore/iron(src) + if(istype(STACK, /obj/item/stack/sheet/plasteel)) + for (var/amt = STACK.amount, amt > 0, amt--) + new /obj/item/weapon/ore/iron(src) + new /obj/item/weapon/ore/plasma(src) + if(istype(STACK, /obj/item/stack/sheet/glass)) + for (var/amt = STACK.amount, amt > 0, amt--) new /obj/item/weapon/ore/glass(src) + if(istype(STACK, /obj/item/stack/sheet/rglass)) + for (var/amt = STACK.amount, amt > 0, amt--) + new /obj/item/weapon/ore/iron(src) + new /obj/item/weapon/ore/glass(src) + load = 2 + //else if (istype(W, /obj/item/weapon/plant/wheat/metal)) + // new /obj/item/weapon/ore/iron(src) + // load = 2 + /*else if(istype(W, /obj/item/weapon/cable_coil/)) + for(var/mob/O in viewers(user, null)) O.show_message(text("\blue [] loads [] into the [].", user, W, src), 1) + for (var/amt = W:amount, amt > 0, amt--) + new /obj/item/weapon/ore/silver(src) + amt-- + load = 2*/ + else if(istype(W, /obj/item/weapon/shard)) + new /obj/item/weapon/ore/glass(src) + load = 2 + else if(istype(W, /obj/item/stack/rods)) + var/obj/item/stack/RODS = W + for (var/amt = RODS.amount, amt > 0, amt--) new /obj/item/weapon/ore/iron(src) + load = 2 + else if(istype(W, /obj/item/clothing/)) + if(istype(W, /obj/item/clothing/under/)) + new /obj/item/weapon/ore/fabric(src) + load = 2 + if(istype(W, /obj/item/clothing/suit/)) + if(!istype(W,/obj/item/clothing/suit/armor)) + new /obj/item/weapon/ore/fabric(src) + new /obj/item/weapon/ore/fabric(src) + if(istype(W,/obj/item/clothing/suit/space/)) new /obj/item/weapon/ore/fabric(src) + load = 2 + else if(istype(W, /obj/item/weapon/disk/data/schematic)) + if (!src.acceptdisk) user << "\red This unit is unable to accept disks." + else + var/amtload = 0 + var/dontload = 0 + for (var/datum/manufacture/WS in W:schematics) + for (var/datum/manufacture/A in src.available) + if (istype(WS,A)) dontload = 1 + for (var/datum/manufacture/B in src.download) + if (istype(WS,B)) dontload = 1 + for (var/datum/manufacture/C in src.diskload) + if (istype(WS,C)) dontload = 1 + for (var/datum/manufacture/D in src.hidden) + if (istype(WS,D) && src.hacked) dontload = 1 + if (!dontload) + src.diskload += new WS.type(src) + amtload++ + else dontload = 0 + if (amtload) user << "\blue [amtload] new schematics downloaded from disk." + else user << "\red No new schematics available on disk." + else if (istype(W, /obj/item/weapon/storage/bag/ore)) + for(var/mob/V in viewers(user, null)) V.show_message(text("\blue [] uses the []'s automatic ore loader on []!", user, src, W), 1) + var/amtload = 0 + for (var/obj/item/weapon/ore/M in W.contents) + M.loc = src + amtload++ + if (amtload) user << "\blue [amtload] pieces of ore loaded from [W]!" + else user << "\red No ore loaded!" + else if(istype(W, /obj/item/weapon/card/emag)) + src.hacked = 1 + user << "\blue You remove the [src]'s product locks!" + else ..() + + if (load == 1) + user.u_equip(W) + W.loc = src + if ((user.client && user.s_active != src)) + user.client.screen -= W + W.dropped() + else if (load == 2) + user.u_equip(W) + W.dropped() + if ((user.client && user.s_active != src)) + user.client.screen -= W + del W + + src.updateUsrDialog() + + MouseDrop_T(atom/movable/O as mob|obj, mob/user as mob) + if (istype(O, /obj/structure/closet/crate/)) + for(var/mob/V in viewers(user, null)) V.show_message(text("\blue [] uses the []'s automatic ore loader on []!", user, src, O), 1) + var/amtload = 0 + for (var/obj/item/weapon/ore/M in O.contents) + M.loc = src + amtload++ + if (amtload) user << "\blue [amtload] pieces of ore loaded from [O]!" + else user << "\red No ore loaded!" + else if (istype(O, /obj/item/weapon/ore/)) + for(var/mob/V in viewers(user, null)) V.show_message(text("\blue [] begins quickly stuffing ore into []!", user, src), 1) + var/staystill = user.loc + for(var/obj/item/weapon/ore/M in view(1,user)) + M.loc = src + sleep(3) + if (user.loc != staystill) break + user << "\blue You finish stuffing ore into [src]!" + /*else if (istype(O, /obj/item/weapon/plant/wheat/metal)) + for(var/mob/V in viewers(user, null)) V.show_message(text("\blue [] begins quickly stuffing [O] into []!", user, src), 1) + var/staystill = user.loc + for(var/obj/item/weapon/plant/wheat/metal/M in view(1,user)) + new /obj/item/weapon/ore/iron(src) + del M + sleep(3) + if (user.loc != staystill) break + user << "\blue You finish stuffing [O] into [src]!"*/ + else ..() + src.updateUsrDialog() + +/obj/item/weapon/disk/data/schematic + name = "Manufacturer Schematic Disk" + desc = "Contains schematics for use in a Manufacturing Unit." + var/list/schematics = list() + +// Fabricator Defines + +/obj/machinery/manufacturer/general + name = "General Manufacturer" + desc = "A manufacturing unit calibrated to produce tools and general purpose items." + + New() + ..() + src.available += new /datum/manufacture/screwdriver(src) + src.available += new /datum/manufacture/wirecutters(src) + src.available += new /datum/manufacture/wrench(src) + src.available += new /datum/manufacture/crowbar(src) + src.available += new /datum/manufacture/extinguisher(src) + src.available += new /datum/manufacture/welder(src) + src.available += new /datum/manufacture/weldingmask(src) + src.available += new /datum/manufacture/multitool(src) + src.available += new /datum/manufacture/metal5(src) + src.available += new /datum/manufacture/metalR(src) + src.available += new /datum/manufacture/glass5(src) + src.available += new /datum/manufacture/glassR(src) + src.available += new /datum/manufacture/atmos_can(src) + //src.available += new /datum/manufacture/cable(src) + src.available += new /datum/manufacture/light_bulb(src) + src.available += new /datum/manufacture/light_tube(src) + src.available += new /datum/manufacture/breathmask(src) + src.available += new /datum/manufacture/RCDammo(src) + //src.available += new /datum/manufacture/cola_bottle(src) + //src.hidden += new /datum/manufacture/vuvuzela(src) + //src.hidden += new /datum/manufacture/harmonica(src) + //src.hidden += new /datum/manufacture/bikehorn(src) + //src.hidden += new /datum/manufacture/stunrounds + +/obj/machinery/manufacturer/robotics + name = "Robotics Fabricator" + desc = "A manufacturing unit calibrated to produce robot-related equipment." + acceptdisk = 1 + dl_list = "robotics" + + New() + ..() + src.available += new /datum/manufacture/robo_frame(src) + src.available += new /datum/manufacture/robo_head(src) + src.available += new /datum/manufacture/robo_chest(src) + src.available += new /datum/manufacture/robo_arm_r(src) + src.available += new /datum/manufacture/robo_arm_l(src) + src.available += new /datum/manufacture/robo_leg_r(src) + src.available += new /datum/manufacture/robo_leg_l(src) + src.available += new /datum/manufacture/robo_stmodule(src) + //src.available += new /datum/manufacture/cable(src) + src.available += new /datum/manufacture/powercell(src) + src.available += new /datum/manufacture/crowbar(src) + src.available += new /datum/manufacture/scalpel(src) + src.available += new /datum/manufacture/circular_saw(src) + src.available += new /datum/manufacture/implanter + src.hidden += new /datum/manufacture/flash(src) + +// Schematic Defines +// General/Miscellaneous + +/datum/manufacture/crowbar + name = "Crowbar" + item = /obj/item/weapon/crowbar + cost1 = /obj/item/weapon/ore/iron + cname1 = "Iron" + amount1 = 1 + time = 5 + create = 1 + +/datum/manufacture/screwdriver + name = "Screwdriver" + item = /obj/item/weapon/screwdriver + cost1 = /obj/item/weapon/ore/iron + cname1 = "Iron" + amount1 = 1 + time = 5 + create = 1 + +/datum/manufacture/wirecutters + name = "Wirecutters" + item = /obj/item/weapon/wirecutters + cost1 = /obj/item/weapon/ore/iron + cname1 = "Iron" + amount1 = 1 + time = 5 + create = 1 + +/datum/manufacture/wrench + name = "Wrench" + item = /obj/item/weapon/wrench + cost1 = /obj/item/weapon/ore/iron + cname1 = "Iron" + amount1 = 1 + time = 5 + create = 1 +/* +/datum/manufacture/vuvuzela + name = "Vuvuzela" + item = /obj/item/weapon/vuvuzela + cost1 = /obj/item/weapon/ore/iron + cname1 = "Iron" + amount1 = 1 + time = 5 + create = 1 + +/datum/manufacture/harmonica + name = "Harmonica" + item = /obj/item/weapon/harmonica + cost1 = /obj/item/weapon/ore/iron + cname1 = "Iron" + amount1 = 1 + time = 5 + create = 1 + +/datum/manufacture/cola_bottle + name = "Glass Bottle" + item = /obj/item/weapon/reagent_containers/food/drinks/cola_bottle + cost1 = /obj/item/weapon/ore/glass + cname1 = "Glass" + amount1 = 1 + time = 4 + create = 1 + +/datum/manufacture/bikehorn + name = "Bicycle Horn" + item = /obj/item/weapon/bikehorn + cost1 = /obj/item/weapon/ore/iron + cname1 = "Iron" + amount1 = 1 + time = 5 + create = 1 + +/datum/manufacture/stunrounds + name = ".38 Stunner Rounds" + item = /obj/item/weapon/ammo/bullets/a38/stun + cost1 = /obj/item/weapon/ore/iron + cname1 = "Iron" + amount1 = 7 + cost2 = /obj/item/weapon/ore/silver + cname2 = "Silver" + amount2 = 3 + time = 25 + create = 1 +*/ +/datum/manufacture/extinguisher + name = "Fire Extinguisher" + item = /obj/item/weapon/extinguisher + cost1 = /obj/item/weapon/ore/iron + cname1 = "Iron" + amount1 = 1 + cost2 = /obj/item/weapon/ore/glass + cname2 = "Glass" + amount2 = 1 + time = 8 + create = 1 + +/datum/manufacture/welder + name = "Welding Tool" + item = /obj/item/weapon/weldingtool + cost1 = /obj/item/weapon/ore/iron + cname1 = "Iron" + amount1 = 1 + cost2 = /obj/item/weapon/ore/silver + cname2 = "Silver" + amount2 = 1 + time = 8 + create = 1 + +/datum/manufacture/multitool + name = "Multi Tool" + item = /obj/item/device/multitool + cost1 = /obj/item/weapon/ore/glass + cname1 = "Glass" + amount1 = 1 + cost2 = /obj/item/weapon/ore/silver + cname2 = "Silver" + amount2 = 1 + time = 8 + create = 1 + +/datum/manufacture/weldingmask + name = "Welding Mask" + item = /obj/item/clothing/head/welding + cost1 = /obj/item/weapon/ore/iron + cname1 = "Iron" + amount1 = 2 + cost2 = /obj/item/weapon/ore/glass + cname2 = "Glass" + amount2 = 2 + time = 10 + create = 1 + +/datum/manufacture/light_bulb + name = "Light Bulb" + item = /obj/item/weapon/light/bulb + cost1 = /obj/item/weapon/ore/glass + cname1 = "Glass" + amount1 = 1 + time = 4 + create = 1 + +/datum/manufacture/light_tube + name = "Light Tube" + item = /obj/item/weapon/light/tube + cost1 = /obj/item/weapon/ore/glass + cname1 = "Glass" + amount1 = 1 + time = 4 + create = 1 + +/datum/manufacture/metal5 + name = "Sheet Metal (x5)" + item = /obj/item/stack/sheet/metal + cost1 = /obj/item/weapon/ore/iron + cname1 = "Iron" + amount1 = 5 + time = 8 + create = 5 + +/datum/manufacture/metalR + name = "Reinforced Metal" + item = /obj/item/stack/sheet/plasteel + cost1 = /obj/item/weapon/ore/iron + cname1 = "Iron" + amount1 = 1 + cost2 = /obj/item/weapon/ore/plasma + cname2 = "Plasma" + amount2 = 1 + time = 6 + create = 1 + +/datum/manufacture/glass5 + name = "Glass Panel (x5)" + item = /obj/item/stack/sheet/glass + cost1 = /obj/item/weapon/ore/glass + cname1 = "Glass" + amount1 = 5 + time = 8 + create = 5 + +/datum/manufacture/glassR + name = "Reinforced Glass Panel" + item = /obj/item/stack/sheet/rglass + cost1 = /obj/item/weapon/ore/glass + cname1 = "Glass" + amount1 = 1 + cost2 = /obj/item/weapon/ore/iron + cname2 = "Iron" + amount2 = 1 + time = 12 + create = 1 + +/datum/manufacture/atmos_can + name = "Portable Gas Canister" + item = /obj/machinery/portable_atmospherics/canister + cost1 = /obj/item/weapon/ore/iron + cname1 = "Iron" + amount1 = 5 + time = 10 + create = 1 + +/* +/datum/manufacture/cable + name = "Electrical Cable Piece" + item = /obj/item/weapon/cable_coil/cut + cost1 = /obj/item/weapon/ore/silver + cname1 = "Silver" + amount1 = 1 + time = 3 + create = 1 +*/ +/datum/manufacture/RCD + name = "Rapid Construction Device" + item = /obj/item/weapon/rcd + cost1 = /obj/item/weapon/ore/gold + cname1 = "Gold" + amount1 = 5 + cost2 = /obj/item/weapon/ore/osmium + cname2 = "Platinum" + amount2 = 1 + cost3 = /obj/item/weapon/ore/silver + cname3 = "Silver" + amount3 = 10 + time = 90 + create = 1 + +/datum/manufacture/RCDammo + name = "Compressed Matter Cartridge" + item = /obj/item/weapon/rcd_ammo + cost1 = /obj/item/weapon/ore/osmium + cname1 = "Platinum" + amount1 = 1 + time = 15 + create = 1 + + +/******************** Robotics **************************/ + +/datum/manufacture/robo_frame + name = "Cyborg Frame" + item = /obj/item/robot_parts/robot_suit + cost1 = /obj/item/weapon/ore/iron + cname1 = "Iron" + amount1 = 18 + time = 45 + create = 1 + +/datum/manufacture/robo_chest + name = "Cyborg Chest" + item = /obj/item/robot_parts/chest + cost1 = /obj/item/weapon/ore/iron + cname1 = "Iron" + amount1 = 12 + time = 30 + create = 1 + +/datum/manufacture/robo_head + name = "Cyborg Head" + item = /obj/item/robot_parts/head + cost1 = /obj/item/weapon/ore/iron + cname1 = "Iron" + amount1 = 12 + time = 30 + create = 1 + +/datum/manufacture/robo_arm_r + name = "Cyborg Arm (Right)" + item = /obj/item/robot_parts/r_arm + cost1 = /obj/item/weapon/ore/iron + cname1 = "Iron" + amount1 = 6 + time = 15 + create = 1 + +/datum/manufacture/robo_arm_l + name = "Cyborg Arm (Left)" + item = /obj/item/robot_parts/l_arm + cost1 = /obj/item/weapon/ore/iron + cname1 = "Iron" + amount1 = 6 + time = 15 + create = 1 + +/datum/manufacture/robo_leg_r + name = "Cyborg Leg (Right)" + item = /obj/item/robot_parts/r_leg + cost1 = /obj/item/weapon/ore/iron + cname1 = "Iron" + amount1 = 6 + time = 15 + create = 1 + +/datum/manufacture/robo_leg_l + name = "Cyborg Leg (Left)" + item = /obj/item/robot_parts/l_leg + cost1 = /obj/item/weapon/ore/iron + cname1 = "Iron" + amount1 = 6 + time = 15 + create = 1 + +/datum/manufacture/robo_stmodule + name = "Standard Cyborg Module" + item = /obj/item/weapon/robot_module/standard + cost1 = /obj/item/weapon/ore/silver + cname1 = "Silver" + amount1 = 2 + cost2 = /obj/item/weapon/ore/glass + cname2 = "Glass" + amount2 = 3 + time = 40 + create = 1 + +/datum/manufacture/scalpel + name = "Scalpel" + item = /obj/item/weapon/scalpel + cost1 = /obj/item/weapon/ore/iron + cname1 = "Iron" + amount1 = 1 + time = 5 + create = 1 + +/datum/manufacture/circular_saw + name = "Circular Saw" + item = /obj/item/weapon/circular_saw + cost1 = /obj/item/weapon/ore/iron + cname1 = "Iron" + amount1 = 1 + time = 5 + create = 1 + +/datum/manufacture/powercell + name = "Power Cell" + item = /obj/item/weapon/cell + cost1 = /obj/item/weapon/ore/iron + cname1 = "Iron" + amount1 = 4 + cost2 = /obj/item/weapon/ore/glass + cname2 = "Glass" + amount2 = 4 + cost3 = /obj/item/weapon/ore/silver + cname3 = "Silver" + amount3 = 4 + time = 30 + create = 1 + +/datum/manufacture/flash + name = "Flash" + item = /obj/item/device/flash + cost1 = /obj/item/weapon/ore/glass + cname1 = "Glass" + amount1 = 2 + cost2 = /obj/item/weapon/ore/silver + cname2 = "Silver" + amount2 = 2 + time = 15 + create = 1 + + + +// Robotics Research + +/datum/manufacture/implanter + name = "Implanter" + item = /obj/item/weapon/implanter + cost1 = /obj/item/weapon/ore/iron + cname1 = "Iron" + amount1 = 1 + time = 3 + create = 1 + +/datum/manufacture/secbot + name = "Security Drone" + item = /obj/machinery/bot/secbot + cost1 = /obj/item/weapon/ore/iron + cname1 = "Iron" + amount1 = 10 + cost2 = /obj/item/weapon/ore/silver + cname2 = "Silver" + amount2 = 5 + cost3 = /obj/item/weapon/ore/glass + cname3 = "Glass" + amount3 = 5 + time = 60 + create = 1 + +/datum/manufacture/floorbot + name = "Construction Drone" + item = /obj/machinery/bot/floorbot + cost1 = /obj/item/weapon/ore/iron + cname1 = "Iron" + amount1 = 10 + cost2 = /obj/item/weapon/ore/silver + cname2 = "Silver" + amount2 = 5 + cost3 = /obj/item/weapon/ore/glass + cname3 = "Glass" + amount3 = 5 + time = 60 + create = 1 + +/datum/manufacture/medbot + name = "Medical Drone" + item = /obj/machinery/bot/medbot + cost1 = /obj/item/weapon/ore/iron + cname1 = "Iron" + amount1 = 10 + cost2 = /obj/item/weapon/ore/silver + cname2 = "Silver" + amount2 = 5 + cost3 = /obj/item/weapon/ore/glass + cname3 = "Glass" + amount3 = 5 + time = 60 + create = 1 +/* +/datum/manufacture/firebot + name = "Firefighting Drone" + item = /obj/machinery/bot/firebot + cost1 = /obj/item/weapon/ore/iron + cname1 = "Iron" + amount1 = 10 + cost2 = /obj/item/weapon/ore/silver + cname2 = "Silver" + amount2 = 5 + cost3 = /obj/item/weapon/ore/glass + cname3 = "Glass" + amount3 = 5 + time = 60 + create = 1 +*/ +/datum/manufacture/cleanbot + name = "Sanitation Drone" + item = /obj/machinery/bot/cleanbot + cost1 = /obj/item/weapon/ore/iron + cname1 = "Iron" + amount1 = 10 + cost2 = /obj/item/weapon/ore/silver + cname2 = "Silver" + amount2 = 5 + cost3 = /obj/item/weapon/ore/glass + cname3 = "Glass" + amount3 = 5 + time = 60 + create = 1 +/* +/datum/manufacture/robup_jetpack + name = "Propulsion Upgrade" + item = /obj/item/weapon/roboupgrade/jetpack + cost1 = /obj/item/weapon/ore/silver + cname1 = "Silver" + amount1 = 3 + cost2 = /obj/item/weapon/ore/iron + cname2 = "Iron" + amount2 = 5 + time = 60 + create = 1 + +/datum/manufacture/robup_speed + name = "Speed Upgrade" + item = /obj/item/weapon/roboupgrade/speed + cost1 = /obj/item/weapon/ore/silver + cname1 = "Silver" + amount1 = 3 + cost2 = /obj/item/weapon/ore/glass + cname2 = "Glass" + amount2 = 5 + time = 60 + create = 1 + +/datum/manufacture/robup_recharge + name = "Recharge Pack" + item = /obj/item/weapon/roboupgrade/rechargepack + cost1 = /obj/item/weapon/ore/silver + cname1 = "Silver" + amount1 = 5 + time = 60 + create = 1 + +/datum/manufacture/robup_repairpack + name = "Repair Pack" + item = /obj/item/weapon/roboupgrade/repairpack + cost1 = /obj/item/weapon/ore/silver + cname1 = "Silver" + amount1 = 5 + time = 60 + create = 1 + +/datum/manufacture/robup_physshield + name = "Force Shield Upgrade" + item = /obj/item/weapon/roboupgrade/physshield + cost1 = /obj/item/weapon/ore/diamond + cname1 = "Claretine" + amount1 = 2 + cost2 = /obj/item/weapon/ore/iron + cname2 = "Iron" + amount2 = 10 + time = 90 + create = 1 + +/datum/manufacture/robup_fireshield + name = "Heat Shield Upgrade" + item = /obj/item/weapon/roboupgrade/fireshield + cost1 = /obj/item/weapon/ore/diamond + cname1 = "Claretine" + amount1 = 2 + cost2 = /obj/item/weapon/ore/glass + cname2 = "Glass" + amount2 = 10 + time = 90 + create = 1 + +/datum/manufacture/robup_aware + name = "Operational Upgrade" + item = /obj/item/weapon/roboupgrade/aware + cost1 = /obj/item/weapon/ore/diamond + cname1 = "Claretine" + amount1 = 2 + cost2 = /obj/item/weapon/ore/glass + cname2 = "Glass" + amount2 = 5 + cost3 = /obj/item/weapon/ore/silver + cname3 = "Silver" + amount3 = 5 + time = 90 + create = 1 + +/datum/manufacture/robup_efficiency + name = "Efficiency Upgrade" + item = /obj/item/weapon/roboupgrade/efficiency + cost1 = /obj/item/weapon/ore/osmium + cname1 = "Platinum" + amount1 = 3 + cost2 = /obj/item/weapon/ore/diamond + cname2 = "Claretine" + amount2 = 10 + time = 120 + create = 1 + +/datum/manufacture/robup_repair + name = "Self-Repair Upgrade" + item = /obj/item/weapon/roboupgrade/repair + cost1 = /obj/item/weapon/ore/osmium + cname1 = "Platinum" + amount1 = 3 + cost2 = /obj/item/weapon/ore/gold + cname2 = "Gold" + amount2 = 10 + time = 120 + create = 1 + +/datum/manufacture/robup_teleport + name = "Teleport Upgrade" + item = /obj/item/weapon/roboupgrade/teleport + cost1 = /obj/item/weapon/ore/osmium + cname1 = "Platinum" + amount1 = 3 + cost2 = /obj/item/weapon/ore/hydrogen + cname2 = "Telecrystal" + amount2 = 2 + time = 120 + create = 1 + +/datum/manufacture/robup_expand + name = "Expansion Upgrade" + item = /obj/item/weapon/roboupgrade/expand + cost1 = /obj/item/weapon/ore/osmium + cname1 = "Platinum" + amount1 = 3 + cost2 = /obj/item/weapon/ore/uranium + cname2 = "Cerenkite" + amount2 = 1 + time = 120 + create = 1 + +/datum/manufacture/robup_chargexpand + name = "Charge Expander Upgrade" + item = /obj/item/weapon/roboupgrade/chargeexpand + cost1 = /obj/item/weapon/ore/diamond + cname1 = "Claretine" + amount1 = 5 + time = 70 + create = 1 + +/datum/manufacture/robup_meson + name = "Optical Meson Upgrade" + item = /obj/item/weapon/roboupgrade/opticmeson + cost1 = /obj/item/weapon/ore/glass + cname1 = "Glass" + amount1 = 2 + cost2 = /obj/item/weapon/ore/silver + cname2 = "Silver" + amount2 = 4 + time = 90 + create = 1 + +/datum/manufacture/robup_thermal + name = "Optical Thermal Upgrade" + item = /obj/item/weapon/roboupgrade/opticthermal + cost1 = /obj/item/weapon/ore/glass + cname1 = "Glass" + amount1 = 4 + cost2 = /obj/item/weapon/ore/silver + cname2 = "Silver" + amount2 = 8 + time = 90 + create = 1 + +/datum/manufacture/deafhs + name = "Auditory Headset" + item = /obj/item/device/radio/headset/deaf + cost1 = /obj/item/weapon/ore/silver + cname1 = "Silver" + amount1 = 3 + cost2 = /obj/item/weapon/ore/glass + cname2 = "Glass" + amount2 = 3 + time = 40 + create = 1 + +/datum/manufacture/visor + name = "VISOR Prosthesis" + item = /obj/item/clothing/glasses/visor + cost1 = /obj/item/weapon/ore/silver + cname1 = "Silver" + amount1 = 3 + cost2 = /obj/item/weapon/ore/glass + cname2 = "Glass" + amount2 = 3 + time = 40 + create = 1 + +/datum/manufacture/implant_robotalk + name = "Machine Translator Implant" + item = /obj/item/weapon/implantcase/robotalk + cost1 = /obj/item/weapon/ore/silver + cname1 = "Silver" + amount1 = 3 + cost2 = /obj/item/weapon/ore/glass + cname2 = "Glass" + amount2 = 3 + time = 40 + create = 1 + +/datum/manufacture/implant_bloodmonitor + name = "Blood Monitor Implant" + item = /obj/item/weapon/implantcase/bloodmonitor + cost1 = /obj/item/weapon/ore/silver + cname1 = "Silver" + amount1 = 3 + cost2 = /obj/item/weapon/ore/glass + cname2 = "Glass" + amount2 = 3 + time = 40 + create = 1 +*/ \ No newline at end of file diff --git a/code/modules/mining/materials.dm b/code/modules/mining/materials.dm index 2a0ebdc6d2a..52c557ae61a 100644 --- a/code/modules/mining/materials.dm +++ b/code/modules/mining/materials.dm @@ -136,4 +136,12 @@ value=1 oretype=null sheettype=/obj/item/stack/sheet/mineral/plastic + cointype=null + +/datum/material/fabric + name="Fabric" + id="fabric" + value=20 + oretype=/obj/item/weapon/ore/fabric + sheettype=null cointype=null \ No newline at end of file diff --git a/code/modules/mining/mining_recipes.dm b/code/modules/mining/mining_recipes.dm new file mode 100644 index 00000000000..ebe28c4e083 --- /dev/null +++ b/code/modules/mining/mining_recipes.dm @@ -0,0 +1,252 @@ +/obj/machinery/manufacturer/mining + name = "Mining Fabricator" + desc = "A manufacturing unit calibrated to produce mining related equipment." + acceptdisk = 1 + + New() + ..() + src.available += new /datum/manufacture/pick(src) + src.available += new /datum/manufacture/shovel(src) + src.available += new /datum/manufacture/oresatchel(src) + src.available += new /datum/manufacture/breathmask(src) + src.available += new /datum/manufacture/spacesuit(src) + src.available += new /datum/manufacture/spacehelm(src) + src.available += new /datum/manufacture/eyes_meson(src) + src.hidden += new /datum/manufacture/RCD(src) + src.hidden += new /datum/manufacture/RCDammo(src) + + +// Mining Gear +/datum/manufacture/pick + name = "Pickaxe" + item = /obj/item/weapon/pickaxe + cost1 = /obj/item/weapon/ore/iron + cname1 = "Iron" + amount1 = 5 + time = 5 + create = 1 + +/datum/manufacture/shovel + name = "Shovel" + item = /obj/item/weapon/shovel + cost1 = /obj/item/weapon/ore/iron + cname1 = "Iron" + amount1 = 3 + time = 2 + create = 1 + +/datum/manufacture/spick + name = "Silver Pickaxe" + item = /obj/item/weapon/pickaxe/silver + cost1 = /obj/item/weapon/ore/iron + cname1 = "Iron" + amount1 = 5 + cost2 = /obj/item/weapon/ore/silver + cname2 = "Silver" + amount2 = 5 + time = 10 + create = 1 + +/datum/manufacture/gpick + name = "Gold Pickaxe" + item = /obj/item/weapon/pickaxe/gold + cost1 = /obj/item/weapon/ore/iron + cname1 = "Iron" + amount1 = 5 + cost2 = /obj/item/weapon/ore/gold + cname2 = "Gold" + amount2 = 5 + time = 15 + create = 1 + +/datum/manufacture/dpick + name = "Diamond Pickaxe" + item = /obj/item/weapon/pickaxe/diamond + cost1 = /obj/item/weapon/ore/iron + cname1 = "Iron" + amount1 = 5 + cost2 = /obj/item/weapon/ore/diamond + cname2 = "Uranium" + amount2 = 5 + time = 30 + create = 1 + +/datum/manufacture/jackhammer + name = "Sonic Jackhammer" + item = /obj/item/weapon/pickaxe/jackhammer + cost1 = /obj/item/weapon/ore/gold + cname1 = "Gold" + amount1 = 8 + cost2 = /obj/item/weapon/ore/silver + cname2 = "Silver" + amount2 = 12 + time = 30 + create = 1 + +/datum/manufacture/drill + name = "Hand Drill" + item = /obj/item/weapon/pickaxe/drill + cost1 = /obj/item/weapon/ore/iron + cname1 = "Iron" + amount1 = 15 + time = 20 + create = 1 + +/datum/manufacture/diamonddrill + name = "Diamond Drill" + item = /obj/item/weapon/pickaxe/diamonddrill + cost1 = /obj/item/weapon/ore/iron + cname1 = "Iron" + amount1 = 15 + cost2 = /obj/item/weapon/ore/diamond + cname2 = "Diamond" + amount2 = 15 + cost3 = /obj/item/weapon/ore/silver + cname3 = "Silver" + amount3 = 15 + time = 40 + create = 1 + +/datum/manufacture/cutter + name = "Plasma Cutter" + item = /obj/item/weapon/pickaxe/plasmacutter + cost1 = /obj/item/weapon/ore/iron + cname1 = "Iron" + amount1 = 10 + cost2 = /obj/item/weapon/ore/gold + cname2 = "Gold" + amount2 = 10 + cost3 = /obj/item/weapon/ore/plasma + cname3 = "Plasma" + amount3 = 15 + time = 30 + create = 1 + +/datum/manufacture/eyes_meson + name = "Optical Meson Scanner" + item = /obj/item/clothing/glasses/meson + cost1 = /obj/item/weapon/ore/glass + cname1 = "Glass" + amount1 = 5 + cost2 = /obj/item/weapon/ore/silver + cname2 = "Silver" + amount2 = 3 + time = 10 + create = 1 + +/datum/manufacture/miningsuit + name = "Mining Hardsuit" + item = /obj/item/clothing/suit/space/rig/mining + cost1 = /obj/item/weapon/ore/osmium + cname1 = "Platinum" + amount1 = 30 + cost2 = /obj/item/weapon/ore/iron + cname2 = "Iron" + amount2 = 30 + time = 30 + create = 1 + +/datum/manufacture/mininghelm + name = "Mining Hardsuit Helmet" + item = /obj/item/clothing/head/helmet/space/rig/mining + cost1 = /obj/item/weapon/ore/osmium + cname1 = "Platinum" + amount1 = 30 + cost2 = /obj/item/weapon/ore/iron + cname2 = "Iron" + amount2 = 30 + time = 20 + create = 1 + +/datum/manufacture/breathmask + name = "Breath Mask" + item = /obj/item/clothing/mask/breath + cost1 = /obj/item/weapon/ore/fabric + cname1 = "Fabric" + amount1 = 1 + time = 5 + create = 1 + +/datum/manufacture/spacesuit + name = "Space Suit" + item = /obj/item/clothing/suit/space + cost1 = /obj/item/weapon/ore/fabric + cname1 = "Fabric" + amount1 = 5 + cost2 = /obj/item/weapon/ore/iron + cname2 = "Iron" + amount2 = 5 + time = 15 + create = 1 + +/datum/manufacture/spacehelm + name = "Space Helmet" + item = /obj/item/clothing/head/helmet/space + cost1 = /obj/item/weapon/ore/fabric + cname1 = "Fabric" + amount1 = 5 + cost2 = /obj/item/weapon/ore/glass + cname2 = "Glass" + amount2 = 5 + time = 10 + create = 1 + +/datum/manufacture/oresatchel + name = "Ore Satchel" + item = /obj/item/weapon/storage/bag/ore + cost1 = /obj/item/weapon/ore/fabric + cname1 = "Fabric" + amount1 = 5 + time = 5 + create = 1 + +/datum/manufacture/jetpack + name = "Jetpack" + item = /obj/item/weapon/tank/jetpack + cost1 = /obj/item/weapon/ore/gold + cname1 = "Gold" + amount1 = 15 + cost2 = /obj/item/weapon/ore/silver + cname2 = "Silver" + amount2 = 20 + time = 30 + create = 1 + +//Diskettes! +/obj/item/weapon/disk/data/schematic/mining1 + name = "Mining Schematics Level 1" + desc = "Contains the schematics for a new range of Pickaxes." + + New() + src.schematics += new /datum/manufacture/spick(src) + src.schematics += new /datum/manufacture/gpick(src) + src.schematics += new /datum/manufacture/dpick(src) + +/obj/item/weapon/disk/data/schematic/mining2 + name = "Mining Schematics Level 2" + desc = "Contains the schematics for a new line of drills. And a Plasma Cutter. Has the previous level as well." + + New() + src.schematics += new /datum/manufacture/spick(src) + src.schematics += new /datum/manufacture/gpick(src) + src.schematics += new /datum/manufacture/dpick(src) + src.schematics += new /datum/manufacture/drill(src) + src.schematics += new /datum/manufacture/jackhammer(src) + src.schematics += new /datum/manufacture/diamonddrill(src) + src.schematics += new /datum/manufacture/cutter(src) + +/obj/item/weapon/disk/data/schematic/mining3 + name = "Mining Schematics Level 3" + desc = "Contains the schematics for a new type of Spacesuit, and schematics for a Jetpack. Has the previous levels as well." + + New() + src.schematics += new /datum/manufacture/spick(src) + src.schematics += new /datum/manufacture/gpick(src) + src.schematics += new /datum/manufacture/dpick(src) + src.schematics += new /datum/manufacture/drill(src) + src.schematics += new /datum/manufacture/jackhammer(src) + src.schematics += new /datum/manufacture/diamonddrill(src) + src.schematics += new /datum/manufacture/cutter(src) + src.schematics += new /datum/manufacture/miningsuit(src) + src.schematics += new /datum/manufacture/mininghelm(src) + src.schematics += new /datum/manufacture/jetpack(src) \ No newline at end of file diff --git a/code/modules/mining/ore.dm b/code/modules/mining/ore.dm index 1079e06b0a2..fd3598ae985 100644 --- a/code/modules/mining/ore.dm +++ b/code/modules/mining/ore.dm @@ -69,6 +69,12 @@ origin_tech = "materials=4" oretag="clown" +/obj/item/weapon/ore/fabric + name = "fabric" + icon_state = "fabric" + origin_tech = "materials=1" + oretag = "fabric" + /obj/item/weapon/ore/slag name = "Slag" desc = "Completely useless" diff --git a/code/modules/mining/security_recipes.dm b/code/modules/mining/security_recipes.dm new file mode 100644 index 00000000000..9061c6ee541 --- /dev/null +++ b/code/modules/mining/security_recipes.dm @@ -0,0 +1,128 @@ +/obj/machinery/manufacturer/security + name = "Security Fabricator" + desc = "A manufacturing unit calibrated to produce security and military related equipment." + acceptdisk = 1 + + New() + ..() + src.available += new /datum/manufacture/beret(src) + src.available += new /datum/manufacture/helmet1(src) + src.available += new /datum/manufacture/sunglasses(src) + src.available += new /datum/manufacture/sechud(src) + src.available += new /datum/manufacture/secpants(src) + src.available += new /datum/manufacture/secbelt(src) + src.available += new /datum/manufacture/armor1(src) + src.available += new /datum/manufacture/taser(src) + src.available += new /datum/manufacture/baton(src) + +// Security Gear Tier-0. AKA Clothing and basic as shit gear. +/datum/manufacture/beret + name = "Beret" + item = /obj/item/clothing/head/beret/sec + cost1 = /obj/item/weapon/ore/fabric + cname1 = "Fabric" + amount1 = 2 + time = 3 + create = 1 + +/datum/manufacture/helmet1 + name = "Helmet" + item = /obj/item/clothing/head/helmet + cost1 = /obj/item/weapon/ore/iron + cname1 = "Iron" + amount1 = 10 + cost2 = /obj/item/weapon/ore/fabric + cname2 = "Fabric" + amount2 = 10 + time = 10 + create = 1 + +/datum/manufacture/sunglasses + name = "Sunglasses" + item = /obj/item/clothing/glasses/sunglasses + cost1 = /obj/item/weapon/ore/iron + cname1 = "Iron" + amount1 = 5 + cost2 = /obj/item/weapon/ore/glass + cname2 = "Glass" + amount2 = 10 + time = 8 + create = 1 + +/datum/manufacture/sechud + name = "Security HUD" + item = /obj/item/clothing/glasses/hud/security + cost1 = /obj/item/weapon/ore/osmium + cname1 = "Platinum" + amount1 = 10 + cost2 = /obj/item/weapon/ore/glass + cname2 = "Glass" + amount2 = 15 + time = 12 + create = 1 + +/datum/manufacture/secpants + name = "Security Uniform" + item = /obj/item/clothing/under/rank/security + cost1 = /obj/item/weapon/ore/iron + cname1 = "Iron" + amount1 = 2 + cost2 = /obj/item/weapon/ore/fabric + cname2 = "Fabric" + amount2 = 1 + time = 10 + create = 1 + +/datum/manufacture/secbelt + name = "Security Belt" + item = /obj/item/weapon/storage/belt/security + cost1 = /obj/item/weapon/ore/iron + cname1 = "Iron" + amount1 = 2 + cost2 = /obj/item/weapon/ore/fabric + cname2 = "Fabric" + amount2 = 5 + time = 15 + create = 1 + +/datum/manufacture/armor1 + name = "Armored Vest" + item = /obj/item/clothing/suit/armor/vest + cost1 = /obj/item/weapon/ore/iron + cname1 = "Iron" + amount1 = 15 + cost2 = /obj/item/weapon/ore/fabric + cname2 = "Fabric" + amount2 = 15 + time = 20 + create = 1 + +/datum/manufacture/taser + name = "Taser" + item = /obj/item/weapon/gun/energy/taser + cost1 = /obj/item/weapon/ore/iron + cname1 = "Iron" + amount1 = 15 + cost2 = /obj/item/weapon/ore/glass + cname2 = "Glass" + amount2 = 10 + cost3 = /obj/item/weapon/ore/osmium + cname3 = "Platinum" + amount3 = 20 + time = 25 + create = 1 + +/datum/manufacture/baton + name = "Stun Baton" + item = /obj/item/weapon/melee/baton + cost1 = /obj/item/weapon/ore/iron + cname1 = "Iron" + amount1 = 10 + cost2 = /obj/item/weapon/ore/glass + cname2 = "Glass" + amount2 = 10 + cost3 = /obj/item/weapon/ore/osmium + cname3 = "Platinum" + amount3 = 15 + time = 20 + create = 1 \ No newline at end of file diff --git a/code/modules/mob/living/carbon/species.dm b/code/modules/mob/living/carbon/species.dm index 8ed4f4de722..02ade71adaa 100644 --- a/code/modules/mob/living/carbon/species.dm +++ b/code/modules/mob/living/carbon/species.dm @@ -591,6 +591,7 @@ flesh_color = "#AAAAAA" /datum/species/machine/handle_death(var/mob/living/carbon/human/H) + H.emote("deathgasp") for(var/organ_name in H.organs_by_name) if (organ_name == "head") // do the head last as that's when the user will be transfered to the posibrain continue diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm index cbeb9a349ef..1887b052ad0 100644 --- a/code/modules/mob/living/damage_procs.dm +++ b/code/modules/mob/living/damage_procs.dm @@ -64,6 +64,15 @@ return 1 +/mob/living/carbon/human/apply_effect(var/effect = 0,var/effecttype = STUN, var/blocked = 0) + if((species.flags & IS_SYNTHETIC) && (effecttype == IRRADIATE)) + return + return ..() + + +/mob/living/carbon/apply_effect(var/effect = 0,var/effecttype = STUN, var/blocked = 0) + return ..() + /mob/living/proc/apply_effects(var/stun = 0, var/weaken = 0, var/paralyze = 0, var/irradiate = 0, var/stutter = 0, var/eyeblur = 0, var/drowsy = 0, var/agony = 0, var/blocked = 0) if(blocked >= 2) return 0 if(stun) apply_effect(stun, STUN, blocked) diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index 738fa2331f4..ac73ab9ae59 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -1773,6 +1773,33 @@ datum/design/mesons materials = list("$metal" = 50, "$glass" = 50) build_path = "/obj/item/clothing/glasses/meson" +datum/design/miningblueprint1 + name = "Mining Schematic Disk Version 1" + desc = "Contains the schematics for a new range of Pickaxes." + id = "miningblueprint1" + req_tech = list("materials" = 3) + build_type = PROTOLATHE + materials = list("$metal" = 50, "$glass" = 50) + build_path = "/obj/item/weapon/disk/data/schematic/mining1" + +datum/design/miningblueprint2 + name = "Mining Schematic Disk Version 2" + desc = "Contains the schematics for a new line of drills. And a Plasma Cutter. Has the previous level as well." + id = "miningblueprint2" + req_tech = list("materials" = 5) + build_type = PROTOLATHE + materials = list("$metal" = 50, "$glass" = 50) + build_path = "/obj/item/weapon/disk/data/schematic/mining2" + +datum/design/miningblueprint3 + name = "Mining Schematic Disk Version 3" + desc = "Contains the schematics for a new type of Spacesuit, and schematics for a Jetpack. Has the previous levels as well." + id = "miningblueprint3" + req_tech = list("materials" = 6) + build_type = PROTOLATHE + materials = list("$metal" = 50, "$glass" = 50) + build_path = "/obj/item/weapon/disk/data/schematic/mining3" + ///////////////////////////////////////// //////////////Blue Space///////////////// ///////////////////////////////////////// diff --git a/icons/obj/mining.dmi b/icons/obj/mining.dmi index 56893b00df1cbeaa2027d88a52c4073f90eba9da..142f1f8dc5b1277fe5fe3400f8eab581c7043a7b 100644 GIT binary patch delta 9084 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 delta 8160 zcmX|FcRXBAw7I=2}hc4!S_}rf8rx)0l=WC{u+)+>fT^Su(X=4;6u?jSkB1tkvY%>Gj7>_*>Eou!* z*w&lB9^AZJMZ{Hm->;ezySd7@FK8HV^V#Q=gBlb{dfnyTid@Qt$3|O8Q`;yoT%aUi zY@4}5&ng$w%3hx>OHjIeo~yr;lr@6dOMDf2^GZVGCwX0dRR3~Dr*Q%zB(UaHo)Ag* z^vQ?KrytX4sn|ABEw42l_k2%f665%?U%aI~?paeXvp;;LdMx+1VBoU$-mYzlOm!lH zy7Y%s)|kZeRdM|5AUUDI35WN`&x}+0(B-|-(KX1AJyI8bp7!;Yz2`pJcnHYsOxf3e zJGOojl35D6In2oqAJwM_>3$Zn`0Tho;FBYMGP}rlB&9mG$RYRi+-HN>ASj)PcZ!rb zuG}h-cj~6b7Ph%rp4-63C#Fc*R)blaxG%d;C<58 z)>+*}c#sb{+F*!pWah2a-0fhQ+QPMt$pX_|1S;>^wQ!RTd_+)%3{*);NxN*k89&Y@ zsU!{-&Mk%0lrec*cm<6vWezGTH^t-LeMl9dZa1A~K#JCIXBS7zEf?cWwq_sI)uxF4 z*gd^S`thXp5~+}s8aUe2$(Ecc;IY@lc-bMLRNVH42`#?zeeO9i@{tYCchPad!L{&kyoI8u~;XNo`e_TbTz`L|NVr(lTli8Ss+GAS948!^hGJ?oIo%1lV>H3uK5xy zwPC;G2Qi5UV9ke(5FqSJBE%Jm_BpJfxjf?kz#cxuw|tTvxL+w(HZK%IExcl@XHEyo zB^r#|oa(w?$E~GF#CJZYlnW7zGPBiLiO;pw%ywoSA9uyHDI{eUo(}8h^w+J`3@A5g z9WJnG!8D&p$>^eYcfQFw-Z6+XM1l9YsO+#9)@^JLnmb8E@cQ-T-A8ZBDZZe=-xHG9 zlM*~c!t9{MI%}??p$}*Hg|1~$U*hvP{jecXn0m;OO;+eM8e+28jz_FqvI$tp=gUDS z4Pbg_8_##HaTf!#w*sE_pCE1`tcdLFVGdGIZ?~w{wvAKJEyC0T@5Vp`@Gjmyi?u&+0k^w&TM> z0uv4DwC5<#&E5>Vz)3vK2wpD+e)ktLG`i5tY;AQ3i+51tTm7)xdm!I&wwX5)*AZ}@ zf3iIE96dTV7ExUy5DaeRzYRACk#9%Vs^b(w#P7mUvq=aq9>y@DDRum4Spw8+q!( zvd7;U{f32jHbBic4=MXkoQsp(R;B%@=zzh&>Vg;48;5HM5M!Kdh2Joz$CtK*`TYQB z)%n$LEb^a8X+Tva_LnNtkW_VwP`iB+zu~U0_}kCO!YDOZUp&3qRs6o7{?xs$=goK? z!cw!#6}c2o*9;c=v*y!KqnLkOokl(ulun2(Ki#7_#ZifsB3I{V{`RQg1Ff`kyVKtw z-kjK8-!lVQd&YX$e=|9Sujk-$nhf+;dtJE{W)(BCO8({@^^JMvho2D7KXc%+0S&Wl z$Wc8CQ1PGO}~K`!Z$Hn0_Cl z+3zHGKM7(BwxN+aoX8j&o_l`5VvMx%;=YgwzO1y2>7h)eG%mAOPg-H>sq8zYF-nhr)|$=#fScS6m@p!% zpj3ar3i7>w^(2Cuo{U$BNb3udYB-IC(o&W{I<5!h^b0&YvM*1^RFW`LtQsq}cb`x~ zb<)x$e9q;Sa{|pyFOaU_)Y+r`y1a*2Tm$pbMbK=__4)n3d3i6^$GLt}ZWdBJXZAT? z3ktZ%UD^!AkIybq*O2D!dXnurNtl0W330t839S3d{U8kr zHv}-PH~FC4Ju*5E=~C4K45Xo2F?lAGdb+H!RJwQFt{VTf`i(*wQx zW*CFF)=hQf62ByNM~atuug@@kaUz$^8(hXsAu|`=>CmjJ{E62mWVWRw?W`MN0;sM^o@kv-63)?aHcPbjD z!?E`1Kqb|J4quljx-}0SP{==7wh_r(bA8Cr(wh5YvI$W()25@ zGvT8!Rnt^D(UF{XBaLtGyX2CM-t-FG=D5(!;0cgCQ7UIrUE-oXvA4GD48Th@*KuDa zle(U++LFlqscD;4!hp+m`M7hA@q4%GDIz5YatBI$%x>F)14{A~M$-AF!x@d;6LT@Lj zn5I&km+3GPzky2WUJEa^_I~^2!snt)?CwggPB50lt#P0w3_z{QouK0U1@~tRsW zFMRIOy>aD_1zN*k>(bZ%chE+!s?Nsd9?73Gl)+;6m|>)x)^^Wp87Igv%I+ zObl{@KG&LtE^2u;ks|YUd|~&=Q-9tcI(2$SWgafYE=VWant*nIsIms4ru0jB!?}4K z+oAVbuBu;{;q=ZYK`aL(%)RO4u@eNde&?47rh0BRmZ4n4;Dd{16vMu_N-;zBpY2n* z$8NHgD3Ij9|I3&SzE#$0VW}_{A!#%6_ZU?qxWQ#0zLJC(+9gXfC==Z!&B;VEHir|= z#P>n;$ii}8S75#vu0KH4vXb;Li_PVkY-|uNxVV$gTrk<^3zzpNKd%ZWrBJ0)_FsbW zg*Eb26Mxmkl+gu;X?vJ4>7z^P!7O zl+gRAuxpV|A`ZTz0`dEHq2anS!5syqG60a}Kw5L_CeDL?dh(K^6`5byG+^mF6jgol zuwA(mn&n#mahHs#RZVS0-*MkLxr^l2g>ODQl8_-cvgkOTiUxR9Fdm^h3U%;9C zB0#LUnJHoNAb`0tAG9Z}yYz`}@hQp?yV@KWpvVb(GVJp4x9}U;PZZh(o$|7i5g_<< zRz~mb8OCBazmF&Y569;aiRVt`cYg)(+pk}KKtC7ggEx%C+s2D#Ic-Wf^akQZIJ++J zXK419K?WcR1O8AtHpAM=^X5L!Wl_0=Ol_HbtaF^xp9_ zW`VmZnFWU5&V&3&qo^9w9@c%C6Y4b?!3=(lJd3=${gd@ZBV26s2SkS9;{>Q%c<&C> zh2$&rLcnpbM_t0x;^E0{Im~LE#f>WS3^FF-AzXP6o@Rtw6j5<~V78^uzjQ+DN|)@L znJ=ykOw5~7V>Fk(>`fjgb_5RW*k1U}JbOA_TWI&dFs(t_`)`CmXsaY;$nY3_Zpz83 zS*f>!7xm^DJLjDv{rfR+yCsm=q{2Dp_Hr;B;De(EJ03f8MvUJIP|Q=~%P@F=xcWNx zph{o8-l%pL%dh3(iL@KsYZZSlKFQrvV6C{g$v=ncqTkeR!y-EwZ}*e0f4q zY-@=0tsG`(`s1Y&nn!=>PW3M{DC* zPG;6O1+L2$11F}sZbC_V>KnLEaJcs6q0_sB1ZKs7-P6^Ma>~$yBGlDQkLDB5-9;dHRS#O z<|xxQ6Utu0_JFZ9up0ZBq6+OLi1UMXQYI%SpKIF{gg}r2!&&pG{!i-j5Sf@eRG423 z27xnFh>-IDDw2dY-p&f?L%bVM0bZ?{x8B(6RTh7tLxxMH}BJGk*1I65@eQ;(_OE|v6cTwisQZxo6d_Y*WdA(oRDx>6Yj-Qtg zs%d;Gg3k+?`5RM1vhV)~dZS?&58W31=J6VI?3snS?r^K5$zSP7dxoq{HJVfM#(G?@ zT@ibB&~c0HgSp7B4JjEVkv@pb#N$gYJs*I|;1Zvpbdqu7?fAWA$TU4Z_l|$of#uTG zPL?4t9H^Kv0tstEjQD$8^=@Qf0v4Kv&}oOeY`f1Rm$q+DhAw_;EPqh(*G(jwF^Vn> z0D>M{Q&b7oRWnwQKW^m_Yp_8gvZQ_m)~C9S3_4cAB%!nfGcTq+1YiXFCG-mNe;p($ zDh1FU-AMn}?h=Tu5(;|&mc{7~S^&L2C8EEb=()F0!Q4pcU`#GBb?MJ2_fJ{c|nrLv`8d?ib!xGQG@rIDgDE<1p_vzuj*O!5cQEY>{xv{pn zu~m6KA5p>f5uIaMjXl-83rjwU@!2w;arPQK zW51`kpN3L-vOwlYRBAA#mLpM`b~${jO|q{*ePeC)wBy6TLpi+*3f%8?=N>Z(NYz)a zhi}NmyFAmoufU}<8YG}`SX?GXI@AePAqi`I4E!|U>MlNW4B!jrF1mZv&ZL)`w!$@2 zM+FoJYFnSZ+<&WU27(UmwZxC>S|{@hjd#Q`+4%@2&*I4*+sbAgJ_Klu)!Soupf(>) zV!;Vv5eA)%=3Z-#_nNc~w-Gy*CA@pLR1u4yfgQ`I`+NE5K<+NV z(aBz0_x-28&!_HUw=6*EeYpcYDW5g^&pS{BX_ko}r&1bEz&P*LHnF?BnRg7;OIr5_ zfW#3S^@9>S&4Nm5u|mxz1d18^5aZ7H#YPm{pmsZSv%I*`TJ4t^(Rvkf{rv|9Uj4Vc zS5<`^bf6<4H$>rcP|bcXVk03OW%NhQ1|mR3&5+|ot}Qy%G>qkua)sKQKdW_&nv?r7 z^~x+4P|Y$4%0^b-zn}>1{ujG#;2$9%OlVHt!TeEzM;t(q){}}Z_gBi<+tVaHR#Js( z@uSreEt2{)ci2S(u<5WMLQAn6z-lvx98EdCIMK9=1K@WC7dThD@os5j8=pS(m zF#=`FfxSx}QU8i_UFLflBr0AYHY%(gGr&X62i|Gqp(pz@b<+Cf{;x!*nRiDX;(jjb>F`zxL-tlPrBXthq*ncoTKiw)0Kp;hPsA@`6Nt zzsXziE~-i`b(1FIn6|N4_J8LGQC^gAX{aCOE&aN+N?K&s&rMHya+qWmHzSqG)h>=# zsHn-eQ(*|J;4bo3^J_v3fyHbe`|XaMF|e?jN-2)xjc__f;~THgWcMCaX#BU4TLWAV zuktFrxY~ef;vfPJlJj+WpjkIkObZQ7y@@oiT%*(sp{yz?*+Rb+z^LfxWi7~T%bX+- zMh(d~4X67U^>aQ4wsS=Gaku8-e;^=aFgty~imIL_O6!%Kkm^Rql76d{PLT+rn{1;S zmAG~d?;)ajfz1jceShV_ou52Vf5B+hEgBaR143>Zs;pW{E;l1HR3}|M1-23S1CKP=GqzDWO|jF;C?j6T%u7)#aV9_MHEtYY{0mi z_Pe)FY3&K0-Hz~e`lyQ6Gnx$^Ac4BX_&=-Sj<70mVo7$vBr=Jsg-8|xmnYQM6$rO7 z>b#6z^4(={rZSW zkt~_3JgB&^6Z7!`al&<^@5fgz$5@53w3Q#oE5FY4-od6f3a{0kl%ZAClR$OY(YM5j zSsTrrSpttkyAgqB0<^Rmyupt?c1)_g?d6wJqksZr_luG^=8RH`@c~9=ecG=`_$nA} z9p&{kP0ynW$$p4K>{T|(ixoiLo15Jzx3h0oU#kO3-w>vybkFJbZ&VtaA|AVxpU7#% z{kMoM7#ecbh!`;w0~R(?spw3uUge2GYBQ}S{GGT15>v8@o5vqi;h@vgSud2_K= z*8d;q1XS(SpF!W}O#Lt!(3q100B)kX?%5h}(F3bL;%J(2^&y{3D{kn!EpmrGI|-3T zi;Y{Iq6+Ib)D3`#VOP9@N17%)?CNf`t2}Ty0z(@f_xgo5K!qbbnF#_TPl8ym=^#$@ zIh?~y)>CSZGHa^X-BKe|JQX7@%M5$~1cI(rqSIFi`}T-QnFj~06?KMAtblF;qVltn)&ez0Q9`kV2pbkhyWP4F*Mckk4=b zIebM&&`A^zr3yntH2zk2w$HO|s^Bv{+ppF?ndUFMR4=ia(>E?damR%A<@o{)`vkHH z=EK!OL(ZM}0MJ3goDf3SO%XQ08q0a?YW6+~<{2)d zep<{=mh|Wv#2Ooi<%xsS@ixdnkE`)d{_y{c2{4k~Dx?2v(ukVr^-R@OQ9+qR2rwJf zVIa;V4RO&89B%x#jHT1H>oD1SZ|QG6C%@H-)89TrICa~uI!|93;!(=_r3Sx>TtI^7 zl`M^D$VLyTT}{wOf#Z}22`FWh=Te(N*NFA(=%oC|<=hb_?j z*mN#Zic%e_e>F1En+)*ffmzYtt;7~z!*hSzeIw~&bU8qdg`M;Q0E}HnUDdR6U#VVR zwR}1}j9{Nc3beVSI&OmA^z9qQFsf`u8V!2+J8CpdR(y?^N!V}%r)SHXYZlK^-N+4S_)1YaM|i2OaATzaOSBonSf5qQZ!ae`@J=y7R#LhO;ZKdx0g1 z?YnK+Ih^6nYiAmGO+Jw+);45Wr~SMq8G|dPVSYlP6oh#RUWO9pgGif80sGyT^wGN{ z0RID&&b^6%H6HcZbR`i){2)|8sFcqLvO|z!QS7<;V31@N;w9 zk!-mZEZ=2`;XiWE7xLNdxXa@)HJo5-A)gCZ)c-Jgm&HVMub2c&RgIu)w?~aD=^bP9 zm9XvRlm>*;Le@B@QtY6k4pm(seg?WnU&M#C>H^#fuy@}DJikQq;^>j0D~1_MX1BoT zi}@nlPYENyYje?y7HZp}>e z!0fh8)#x!obB?W`*5B|-HQSQ#UaM~xv*T8uq+k+BI_vhb5x|%Ua^#Nnl^U^KIiVM z-d^=9smoe%XKYrWa#S1I4jM!)cx7>w>T6zPbkP*{^51w$g15#SkD1~~=rri*j3n2B zdIERlIAPFP4e%4Q)liYEYooL-DRbiZzYPQV5SCfkc=} zw8+$b6&1UuUGE`LG=I~{)YQl3MMqt59Z)mUgl~~ygVCi|XlE=8f)zV$d829Vg+Ybi zhVt1ABOlMbE?mGQy4vw<`1xO0eCM6;kki++;PGi12>+LwWbJ|^tO+ z32+l&<(7aktl_uHb+4NDDr5TVJ!tcnCszlH(?C^Zrv*O?a& zaN9*FUF30FLgm_|BK@Ua(3kZuc6BP*ib`q66q#NI6Y~Egxjm4@5_F=pJWK81v_eBh zL_9HT+JEVwOCTIi>IY+(xXnbn01!+^!$7@S%`W190QBR+ A&j0`b diff --git a/icons/obj/surgery.dmi b/icons/obj/surgery.dmi index 2f3eb4b426942e4d59936c29d9c0fd4f18492a5a..72e02ab6152e40bc77bcea759ce7914a660e7c0e 100644 GIT binary patch literal 16489 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 literal 9263 zcmaiaWmp_Rx8~r4V8PwpU4sXAPjGkl0D~t484@f6x1fUtcMa|~ID@;p@8sM2+`YSh z_D6U1(^99aj?{VIQ&Adf@)&3&XaE2JLs8*_7Od_3cc3D}&RWY(C;$K)x4+IuuMgIq zmLB$QUiPjo0DxZxXnNG4hYKC$%<~B^uZ_V{wRy#Zm^nZ42LG!CE2yhFygaDw8S{7# zne}4yD`h>~YhA?m(On;`6&J7?ULppC!N-o)(hVn!?-SD6U<_*q5kPo~;s8c|UQ+eI?sSW`|u z=u&`L$=wOqEl(B16RLf6^yh?{hFWAtZx+($O1ZYq(AfE`wFS19vO8RRMayo9R1+j5 zdI2K6v8%}Hv(&Wez%#_CU(Ae}L``TtKUkk%t3F>HwizXN^ze>vf!YR`TVxJVB5{d7 zw-Y^Xae?y4j_5N69x9<*mcec&v87u_Ny0?ey!8>I?cpvBx@){=>Nbzc3t|8O6+rQW zl#XANcQxmYYwS^j>N`(QX6Y)Jcs_uO6eUS7CVhEPFhDfTZ z#R>mVT}$6IG!I!+YR5I#~2=e3I z=J&q?@wCM6{i>`7q25O;Es%p2>j}Z-xgQ7x^b^O(m`Ojm3ahX~mY0nR)iO%~y?uRC z%SAN(@O9+sSKYr#4GQZ+1xW!=aAmuL?%@4(so?0aFQ+N88D>zx5BdckO1TGIG8CJ(l-Ut)6mjZ zl4qyKC>3}(FwkO5pm7*AP8@wVLksl1!K{;4fpev)f8pizN~r2bjE|3xh>SEW*9Ol< z^QxLPz-?@9rsEm6`PUgslx+(ii50fFuXiJ9YH3Z`waL=XIxHl%$(;1*bz%Wsx%vsS zJnoE&)Uyf1{I7C+PgenC;(@dFQNww?*#{t8>uQ_ITCWOr#?M}D~4-_(W75Tp&QclkhV=Ykg#9}%uj zR?^=Ra!kNP2^7=_Kdl>_b-cbjW(c{5t+e>2`wonZ@VN?-pl6JaGt$vTV3LafyjOJ6 z1)MEjp6-v98or-z_9td#jr~?koUd~v%nrUGKFk}Z3408wj?QiiP9Sw@gfnci3n*-Y zHpuq4DBJ1>vndn%PHJ@`keT`okv*kK7Jhkigb}C=`#l*cDXBvoCzKbA@Zg?@YaPgp zM((txu`y_4SKiI7YF0{CRyHCc0-J;ct#iKG5{`(+3Kf8Wf{B=;Uuj}jXArCJ#e`op zudjg+J#O^_qS^z&yDJQ7K=+yU)$Z)6%W+kOoe#c84X1FXgC)lLC@YX&Q%r*tt*z

E_v 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 diff --git a/nano/templates/pda.tmpl b/nano/templates/pda.tmpl index 8b59e4ac124..b88dda25c61 100644 --- a/nano/templates/pda.tmpl +++ b/nano/templates/pda.tmpl @@ -345,6 +345,16 @@ Used In File(s): \code\game\objects\items\devices\PDA\PDA.dm {{:value.name}}{{:value.rank}}{{:value.active}} {{/if}} {{/for}} + {{/if}} + {{if data.manifest.supp}} + Support + {{for data.manifest["supp"]}} + {{if value.rank == "Head of Personnel"}} + {{:value.name}}{{:value.rank}}{{:value.active}} + {{else}} + {{:value.name}}{{:value.rank}}{{:value.active}} + {{/if}} + {{/for}} {{/if}} {{if data.manifest.civ}} Civilian diff --git a/tools/mapmerge/1prepare_map.bat b/tools/mapmerge/1prepare_map.bat index ec9beaf788b..05fddbce240 100644 --- a/tools/mapmerge/1prepare_map.bat +++ b/tools/mapmerge/1prepare_map.bat @@ -1,4 +1,4 @@ -set MAPFILE=tgstation2.dmm +set MAPFILE=cyberiad.dmm cd ../../maps copy %MAPFILE% %MAPFILE%.backup diff --git a/tools/mapmerge/2clean_map.bat b/tools/mapmerge/2clean_map.bat index 7b1f59e67ec..02590eb48f7 100644 --- a/tools/mapmerge/2clean_map.bat +++ b/tools/mapmerge/2clean_map.bat @@ -1,4 +1,4 @@ -set MAPFILE=tgstation2.dmm +set MAPFILE=cyberiad.dmm java -jar MapPatcher.jar -clean ../../maps/%MAPFILE%.backup ../../maps/%MAPFILE% ../../maps/%MAPFILE% diff --git a/tools/mapmerge/clean_map_git.sh b/tools/mapmerge/clean_map_git.sh index 0a5f4cc786d..59ef079a5a1 100644 --- a/tools/mapmerge/clean_map_git.sh +++ b/tools/mapmerge/clean_map_git.sh @@ -1,6 +1,6 @@ #!/bin/sh -MAPFILE='tgstation2.dmm' +MAPFILE='cyberiad.dmm' git show HEAD:maps/$MAPFILE > tmp.dmm java -jar MapPatcher.jar -clean tmp.dmm '../../maps/'$MAPFILE '../../maps/'$MAPFILE