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 56893b00df1..142f1f8dc5b 100644 Binary files a/icons/obj/mining.dmi and b/icons/obj/mining.dmi differ diff --git a/icons/obj/surgery.dmi b/icons/obj/surgery.dmi index 2f3eb4b4269..72e02ab6152 100644 Binary files a/icons/obj/surgery.dmi and b/icons/obj/surgery.dmi differ 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