From 4f8389ec0ea6f9fbfa4d77f79ef23637b0fdbc15 Mon Sep 17 00:00:00 2001 From: Razharas Date: Mon, 23 Dec 2013 21:39:27 +0400 Subject: [PATCH 1/6] Constructable machines will depend on R&D parts DNA scanner: Laser quality lessens the irradiation Manipulator quality drastically improves the precision(9 times with best part) Scanner quality allows to scan suiciders/ling husks, best part enables cloner's autoprocess button, making it scan people in the scanner automatically Clone pod: Manipulator quality improves the speed of cloning Scanning module quality affects with how much health people will be ejected, will they get negative mutation/no mutations/clean of all mutations/random good mutation, at best quality will enable clone console's autoprocess button and will try to clone all the dead people in records automatically, together with best DNA scanner parts cloning console will be able to work in full automatic regime autoscanning people and autocloning them Borg recharger: Capacitors' quality and powercell max charge affect the speed at which borgs recharge Manipulator quality allows borg to be slowly repaired while inside the recharges, best manipulator allows even fire damage to be slowly repaired Portable power generators: Capacitors' quality produce more power Better lasers consume less fuel and reduce heat production PACMAN with best parts can keep whole station powered with about sheet of plamsa per minute(approximately, wasnt potent enough to test) Protolathe: Manipulators quality affects the cost of things(they will also have less m_amt and g_amt to prevent production of infinity metal), best manipulators reduces the cost 5 times (!) Imprinter: Manipulator quality affects the cost, best manipulator reduce cost(acid insluded) 4 times, i.e. 20 boards per 100 units of acid Destructive analyzer: Better parts allow items with less reliability in Redone how reliability is handled, you now see item reliability in the deconstruction menu and deconstructing items that has same or one point less research type level will rise the reliability of all known designs that has one or more research type requarements as the deconstructed item Designs of the same type raise in reliability more Removed reliability_base and reliability_mod completely because they served no purpose Critically broken things rise reliability of the design drastically Whole reliability system is not used a lot but now at least on the R&D part it finally matters Didnt touch telecomms machinery, R&D code is messy but tcomms is just another level, im not high enough to touch it yet Most of things except for pacman are tested ingame, no bugs/runtimes detected --- code/game/dna.dm | 25 ++++- code/game/machinery/autolathe.dm | 47 ++++++--- code/game/machinery/cloning.dm | 36 +++++-- code/game/machinery/computer/cloning.dm | 37 +++++++- code/game/machinery/rechargestation.dm | 41 ++++++-- code/modules/power/port_gen.dm | 15 ++- code/modules/research/circuitprinter.dm | 6 +- code/modules/research/designs.dm | 58 ++++++----- code/modules/research/destructive_analyzer.dm | 5 +- code/modules/research/protolathe.dm | 5 + code/modules/research/rdconsole.dm | 95 ++++++++++--------- code/modules/research/research.dm | 25 ++--- code/modules/research/server.dm | 1 - 13 files changed, 258 insertions(+), 138 deletions(-) diff --git a/code/game/dna.dm b/code/game/dna.dm index 04c6a091e5a..7afa8eef26a 100644 --- a/code/game/dna.dm +++ b/code/game/dna.dm @@ -336,6 +336,9 @@ use_power = 1 idle_power_usage = 50 active_power_usage = 300 + var/damage_coeff + var/scan_level + var/precision_coeff /obj/machinery/dna_scannernew/New() ..() @@ -347,8 +350,20 @@ component_parts += new /obj/item/weapon/stock_parts/console_screen(null) component_parts += new /obj/item/weapon/cable_coil(null, 1) component_parts += new /obj/item/weapon/cable_coil(null, 1) + RefreshParts() +/obj/machinery/dna_scannernew/RefreshParts() + scan_level = 0 + damage_coeff = 0 + precision_coeff = 0 + for(var/obj/item/weapon/stock_parts/scanning_module/P in component_parts) + scan_level += P.rating + for(var/obj/item/weapon/stock_parts/manipulator/P in component_parts) + precision_coeff = P.rating + for(var/obj/item/weapon/stock_parts/micro_laser/P in component_parts) + damage_coeff = P.rating + /obj/machinery/dna_scannernew/proc/toggle_open(mob/user=usr) if(!user) return @@ -582,7 +597,7 @@ if(connected) if(connected.occupant) //set occupant_status message viable_occupant = connected.occupant - if(check_dna_integrity(viable_occupant) && !(NOCLONE in viable_occupant.mutations)) //occupent is viable for dna modification + if(check_dna_integrity(viable_occupant) && (!(NOCLONE in viable_occupant.mutations) || (connected.scan_level == 3))) //occupent is viable for dna modification occupant_status += "[viable_occupant.name] => " switch(viable_occupant.stat) if(CONSCIOUS) occupant_status += "Conscious" @@ -624,7 +639,7 @@ var/stddev = radstrength*RADIATION_STRENGTH_MULTIPLIER status += "
Output Level:
[radstrength]
" status += "
  \> Mutation:
(-[stddev] to +[stddev] = 68%) (-[2*stddev] to +[2*stddev] = 95%)
" - stddev = RADIATION_ACCURACY_MULTIPLIER/radduration + stddev = RADIATION_ACCURACY_MULTIPLIER/(radduration + (connected.precision_coeff ** 2)) var/chance_to_hit switch(stddev) //hardcoded values from a z-table for a normal distribution if(0 to 0.25) chance_to_hit = ">95%" @@ -829,7 +844,7 @@ num = Clamp(num, 1, NUMBER_OF_BUFFERS) var/list/buffer_slot = buffer[num] if(istype(buffer_slot)) - viable_occupant.radiation += rand(15,40) + viable_occupant.radiation += rand(15/(connected.damage_coeff ** 2),40/(connected.damage_coeff ** 2)) switch(href_list["text"]) if("se") if(buffer_slot["SE"]) @@ -899,12 +914,12 @@ current_screen = "mainmenu" if(viable_occupant && connected && connected.occupant==viable_occupant) - viable_occupant.radiation += RADIATION_IRRADIATION_MULTIPLIER*radduration*radstrength + viable_occupant.radiation += (RADIATION_IRRADIATION_MULTIPLIER*radduration*radstrength)/(connected.damage_coeff ** 2) switch(href_list["task"]) if("pulseui") var/len = length(viable_occupant.dna.uni_identity) num = Wrap(num, 1, len+1) - num = randomize_radiation_accuracy(num, radduration, len) + num = randomize_radiation_accuracy(num, radduration + (connected.precision_coeff ** 2), len) var/block = round((num-1)/DNA_BLOCK_SIZE)+1 var/subblock = num - block*DNA_BLOCK_SIZE diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 6a31eb60051..c2a68b9f567 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -89,6 +89,7 @@ var/global/list/autolathe_recipes_hidden = list( \ idle_power_usage = 10 active_power_usage = 100 var/busy = 0 + var/prod_coeff proc wires_win(mob/user as mob) @@ -104,6 +105,7 @@ var/global/list/autolathe_recipes_hidden = list( \ onclose(user, "autolathe_hack") regular_win(mob/user as mob) + var/coeff = 2 ** prod_coeff var/dat as text dat = text("Metal Amount: [src.m_amount] cm3 (MAX: [max_m_amount])
\nGlass Amount: [src.g_amount] cm3 (MAX: [max_g_amount])
") var/list/objs = list() @@ -111,12 +113,13 @@ var/global/list/autolathe_recipes_hidden = list( \ if (src.hacked) objs += src.LL for(var/obj/t in objs) - var/title = "[t.name] ([t.m_amt] m /[t.g_amt] g)" - if (m_amount" - continue - dat += "[title]" if (istype(t, /obj/item/stack)) + var/title = "[t.name] ([t.m_amt] m /[t.g_amt] g)" + if (m_amount" + continue + dat += "[title]" + var/obj/item/stack/S = t var/max_multiplier = min(S.max_amount, S.m_amt?round(m_amount/S.m_amt):INFINITY, S.g_amt?round(g_amount/S.g_amt):INFINITY) if (max_multiplier>1) @@ -127,6 +130,12 @@ var/global/list/autolathe_recipes_hidden = list( \ dat += " x[25]" if (max_multiplier>1) dat += " x[max_multiplier]" + else + var/title = "[t.name] ([t.m_amt/coeff] m /[t.g_amt/coeff] g)" + if (m_amount" + continue + dat += "[title]" dat += "
" user << browse("Autolathe Control Panel[dat]", "window=autolathe_regular") onclose(user, "autolathe_regular") @@ -250,6 +259,7 @@ var/global/list/autolathe_recipes_hidden = list( \ src.add_fingerprint(usr) if (!busy) if(href_list["make"]) + var/coeff = 2 ** prod_coeff var/turf/T = get_step(src.loc, get_dir(src,usr)) var/obj/template = locate(href_list["make"]) var/multiplier = text2num(href_list["multiplier"]) @@ -260,21 +270,27 @@ var/global/list/autolathe_recipes_hidden = list( \ use_power(power) icon_state = "autolathe" flick("autolathe_n",src) - spawn(16) + spawn(16/coeff) use_power(power) - spawn(16) + spawn(16/coeff) use_power(power) - spawn(16) - src.m_amount -= template.m_amt*multiplier - src.g_amount -= template.g_amt*multiplier + spawn(16/coeff) + if(template.type == /obj/item/stack) + src.m_amount -= template.m_amt*multiplier + src.g_amount -= template.g_amt*multiplier + var/obj/new_item = new template.type(T) + var/obj/item/stack/S = new_item + S.amount = multiplier + else + src.m_amount -= template.m_amt/coeff + src.g_amount -= template.g_amt/coeff + var/obj/new_item = new template.type(T) + new_item.m_amt /= coeff + new_item.g_amt /= coeff if(src.m_amount < 0) src.m_amount = 0 if(src.g_amount < 0) src.g_amount = 0 - var/obj/new_item = new template.type(T) - if (multiplier>1) - var/obj/item/stack/S = new_item - S.amount = multiplier busy = 0 src.updateUsrDialog() if(href_list["act"]) @@ -319,11 +335,14 @@ var/global/list/autolathe_recipes_hidden = list( \ RefreshParts() ..() var/tot_rating = 0 + prod_coeff = 0 for(var/obj/item/weapon/stock_parts/matter_bin/MB in component_parts) tot_rating += MB.rating tot_rating *= 25000 max_m_amount = tot_rating * 2 max_g_amount = tot_rating + for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts) + prod_coeff += M.rating - 1 New() ..() diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index 2498538e4f2..21b4645e918 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -18,6 +18,8 @@ var/mess = 0 //Need to clean out it if it's full of exploded clone. var/attempting = 0 //One clone attempt at a time thanks var/eject_wait = 0 //Don't eject them as soon as they are created fuckkk + var/speed_coeff + var/efficiency /obj/machinery/clonepod/New() ..() @@ -30,7 +32,16 @@ component_parts += new /obj/item/weapon/stock_parts/console_screen(src) component_parts += new /obj/item/weapon/cable_coil(src, 1) component_parts += new /obj/item/weapon/cable_coil(src, 1) + RefreshParts() +/obj/machinery/clonepod/RefreshParts() + speed_coeff = 0 + efficiency = 0 + for(var/obj/item/weapon/stock_parts/scanning_module/S in component_parts) + efficiency += S.rating + for(var/obj/item/weapon/stock_parts/manipulator/P in component_parts) + speed_coeff += P.rating + heal_level = (efficiency * 15) + 10 //The return of data disks?? Just for transferring between genetics machine/cloning machine. //TO-DO: Make the genetics machine accept them. @@ -132,8 +143,6 @@ return 0 - src.heal_level = rand(50,90) //Randomizes what health the clone is when ejected - src.attempting = 1 //One at a time!! src.locked = 1 @@ -150,8 +159,8 @@ src.icon_state = "pod_1" //Get the clone body ready - H.adjustCloneLoss(src.heal_level + 100) //new damage var so you can't eject a clone early then stab them to abuse the current damage system --NeoFite - H.adjustBrainLoss(heal_level) + H.adjustCloneLoss(190) //new damage var so you can't eject a clone early then stab them to abuse the current damage system --NeoFite + H.adjustBrainLoss(190) H.Paralyse(4) //Here let's calculate their health so the pod doesn't immediately eject them!!! @@ -178,7 +187,13 @@ // -- End mode specific stuff hardset_dna(H, ui, se, null, mrace) - randmutb(H) //Sometimes the clones come out wrong. + if(efficiency > 2) + for(var/A in bad_se_blocks) + setblock(H.dna.struc_enzymes, A, construct_block(0,2)) + if(efficiency > 5 && prob(20)) + randmutg(H) + if(efficiency < 3 && prob(50)) + randmutb(H) if(H.gender == MALE) H.facial_hair_style = "Full Beard" @@ -206,14 +221,15 @@ src.connected_message("Clone Rejected: Deceased.") return - else if(src.occupant.cloneloss > src.heal_level) + else if(src.occupant.cloneloss > (100 - src.heal_level)) + world.log << "This works" src.occupant.Paralyse(4) //Slowly get that clone healed and finished. - src.occupant.adjustCloneLoss(-heal_level/50) + src.occupant.adjustCloneLoss(-((speed_coeff/2))) //Premature clones may have brain damage. - src.occupant.adjustBrainLoss(-heal_level/100) + src.occupant.adjustBrainLoss(-((speed_coeff/2))) //So clones don't die of oxyloss in a running pod. if (src.occupant.reagents.get_reagent_amount("inaprovaline") < 30) @@ -222,7 +238,7 @@ use_power(7500) //This might need tweaking. return - else if((src.occupant.cloneloss <= src.heal_level) && (!src.eject_wait)) + else if((src.occupant.cloneloss <= (100 - src.heal_level)) && (!src.eject_wait)) src.connected_message("Cloning Process Complete.") src.locked = 0 src.go_out() @@ -350,7 +366,7 @@ return /obj/machinery/clonepod/emp_act(severity) - if(prob(100/severity)) malfunction() + if(prob(100/(severity*efficiency))) malfunction() ..() /obj/machinery/clonepod/ex_act(severity) diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm index 5400185bd75..c83680469cc 100644 --- a/code/game/machinery/computer/cloning.dm +++ b/code/game/machinery/computer/cloning.dm @@ -15,6 +15,7 @@ var/datum/data/record/active_record = null var/obj/item/weapon/disk/data/diskette = null //Mostly so the geneticist can steal everything. var/loading = 0 // Nice loading text + var/autoprocess = 0 /obj/machinery/computer/cloning/New() ..() @@ -23,6 +24,19 @@ return return +/obj/machinery/computer/cloning/process() + if(!(scanner && pod1 && autoprocess)) + return + + if(scanner.occupant && (scanner.scan_level > 2)) + scan_mob(scanner.occupant) + + if(!(pod1.occupant || pod1.mess) && (pod1.efficiency > 5)) + for(var/datum/data/record/R in records) + if(!(pod1.occupant || pod1.mess)) + if(pod1.growclone(R.fields["ckey"], R.fields["name"], R.fields["UI"], R.fields["SE"], R.fields["mind"], R.fields["mrace"])) + records -= R + /obj/machinery/computer/cloning/proc/updatemodules() src.scanner = findscanner() src.pod1 = findcloner() @@ -82,7 +96,13 @@ var/dat = "" dat += "Refresh" - + if(scanner && pod1 && ((scanner.scan_level > 2) || (pod1.efficiency > 5))) + if(!autoprocess) + dat += "Autoprocess" + else + dat += "Stop autoprocess" + else + dat += "Autoprocess" dat += "

Cloning Pod Status

" dat += "
[temp] 
" @@ -200,7 +220,14 @@ if(loading) return - if ((href_list["scan"]) && (!isnull(src.scanner))) + if(href_list["task"]) + switch(href_list["task"]) + if("autoprocess") + autoprocess = 1 + if("stopautoprocess") + autoprocess = 0 + + else if ((href_list["scan"]) && (!isnull(src.scanner))) scantemp = "" loading = 1 @@ -296,7 +323,7 @@ temp = "Clonepod malfunction." else if(!config.revival_cloning) temp = "Unable to initiate cloning cycle." - else if(pod1.growclone(C.fields["ckey"], C.fields["name"], C.fields["UI"], C.fields["SE"], C.fields["mind"], C.fields["mrace"])) + else if(pod1.growclone(null, C.fields["name"], C.fields["UI"], C.fields["SE"], C.fields["mind"], C.fields["mrace"])) temp = "[C.fields["name"]] => Cloning cycle in progress..." records.Remove(C) if(active_record == C) @@ -322,10 +349,10 @@ if (!subject.getorgan(/obj/item/organ/brain)) scantemp = "No signs of intelligence detected." return - if (subject.suiciding == 1) + if (subject.suiciding == 1 && src.scanner.scan_level < 2) scantemp = "Subject's brain is not responding to scanning stimuli." return - if (NOCLONE in subject.mutations) + if (NOCLONE in subject.mutations && src.scanner.scan_level < 2) scantemp = "Subject no longer contains the fundamental materials required to create a living clone." return if ((!subject.ckey) || (!subject.client)) diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm index 2f30bef8818..76dfa89f9e8 100644 --- a/code/game/machinery/rechargestation.dm +++ b/code/game/machinery/rechargestation.dm @@ -13,12 +13,32 @@ var/circuitboard = "/obj/item/weapon/circuitboard/cyborgrecharger" var/locked = 1 req_access = list(access_robotics) + var/recharge_speed + var/repairs /obj/machinery/recharge_station/New() ..() + component_parts = list() + component_parts += new /obj/item/weapon/circuitboard/cyborgrecharger(src) + component_parts += new /obj/item/weapon/stock_parts/capacitor(src) + component_parts += new /obj/item/weapon/stock_parts/capacitor(src) + component_parts += new /obj/item/weapon/stock_parts/manipulator(src) + component_parts += new /obj/item/weapon/cell/high(src) + RefreshParts() build_icon() +/obj/machinery/recharge_station/RefreshParts() + recharge_speed = 0 + repairs = 0 + for(var/obj/item/weapon/stock_parts/capacitor/C in component_parts) + recharge_speed += C.rating * 100 + for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts) + repairs += M.rating - 1 + for(var/obj/item/weapon/cell/C in component_parts) + recharge_speed *= C.maxcharge / 10000 + + /obj/machinery/recharge_station/process() if(!(NOPOWER|BROKEN)) return @@ -230,22 +250,25 @@ /obj/machinery/recharge_station/proc/process_occupant() if(occupant) restock_modules() + if(repairs) + occupant.heal_organ_damage(repairs, repairs - 1) if(occupant.cell) if(occupant.cell.charge >= occupant.cell.maxcharge) occupant.cell.charge = occupant.cell.maxcharge else - occupant.cell.charge = min(occupant.cell.charge + 200, occupant.cell.maxcharge) + occupant.cell.charge = min(occupant.cell.charge + recharge_speed, occupant.cell.maxcharge) /obj/machinery/recharge_station/proc/restock_modules() if(occupant) if(occupant.module && occupant.module.modules) var/list/um = occupant.contents|occupant.module.modules // ^ makes sinle list of active (occupant.contents) and inactive modules (occupant.module.modules) + var/coeff = recharge_speed / 200 for(var/obj/O in um) // Engineering if(istype(O,/obj/item/stack/sheet/metal) || istype(O,/obj/item/stack/sheet/rglass) || istype(O,/obj/item/stack/rods) || istype(O,/obj/item/weapon/cable_coil)|| istype(O,/obj/item/stack/tile/plasteel)) if(O:amount < 50) - O:amount += 1 + O:amount += coeff // Security if(istype(O,/obj/item/device/flash)) if(O:broken) @@ -254,7 +277,7 @@ O:icon_state = "flash" if(istype(O,/obj/item/weapon/gun/energy/taser/cyborg)) if(O:power_supply.charge < O:power_supply.maxcharge) - O:power_supply.give(O:charge_cost) + O:power_supply.give(O:charge_cost * coeff) O:update_icon() else O:charge_tick = 0 @@ -265,16 +288,18 @@ //Service if(istype(O,/obj/item/weapon/reagent_containers/food/condiment/enzyme)) if(O.reagents.get_reagent_amount("enzyme") < 50) - O.reagents.add_reagent("enzyme", 2) + O.reagents.add_reagent("enzyme", 2 * coeff) //Medical if(istype(O,/obj/item/weapon/reagent_containers/glass/bottle/robot)) var/obj/item/weapon/reagent_containers/glass/bottle/robot/B = O if(B.reagent && (B.reagents.get_reagent_amount(B.reagent) < B.volume)) - B.reagents.add_reagent(B.reagent, 2) + B.reagents.add_reagent(B.reagent, 2 * coeff) //Janitor if(istype(O, /obj/item/device/lightreplacer)) var/obj/item/device/lightreplacer/LR = O - LR.Charge(occupant) + var/i = 1 + for(1, i < coeff, i++) + LR.Charge(occupant) if(occupant) if(occupant.module) @@ -285,6 +310,6 @@ if(istype(occupant.module.emag, /obj/item/weapon/reagent_containers/spray)) var/obj/item/weapon/reagent_containers/spray/S = occupant.module.emag if(S.name == "polyacid spray") - S.reagents.add_reagent("pacid", 2) + S.reagents.add_reagent("pacid", 2 * coeff) else if(S.name == "lube spray") - S.reagents.add_reagent("lube", 2) + S.reagents.add_reagent("lube", 2 * coeff) diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm index f8569d10924..edbbf4fd5f4 100644 --- a/code/modules/power/port_gen.dm +++ b/code/modules/power/port_gen.dm @@ -55,6 +55,7 @@ display round(lastgen) and plasmatank amount var/power_gen = 5000 var/recent_fault = 0 var/power_output = 1 + var/consumption = 0 /obj/machinery/power/port_gen/proc/HasFuel() //Placeholder for fuel check. return 1 @@ -129,15 +130,19 @@ display round(lastgen) and plasmatank amount /obj/machinery/power/port_gen/pacman/RefreshParts() var/temp_rating = 0 var/temp_reliability = 0 + var/consumption_coeff = 0 for(var/obj/item/weapon/stock_parts/SP in component_parts) if(istype(SP, /obj/item/weapon/stock_parts/matter_bin)) max_sheets = SP.rating * SP.rating * 50 - else if(istype(SP, /obj/item/weapon/stock_parts/micro_laser) || istype(SP, /obj/item/weapon/stock_parts/capacitor)) + else if(istype(SP, /obj/item/weapon/stock_parts/capacitor)) temp_rating += SP.rating + else + consumption_coeff += SP.rating for(var/obj/item/weapon/CP in component_parts) temp_reliability += CP.reliability reliability = min(round(temp_reliability / 4), 100) - power_gen = round(initial(power_gen) * (max(2, temp_rating) / 2)) + power_gen = round(initial(power_gen) * temp_rating * 2) + consumption = consumption_coeff /obj/machinery/power/port_gen/pacman/examine() ..() @@ -160,7 +165,7 @@ display round(lastgen) and plasmatank amount sheets -= amount /obj/machinery/power/port_gen/pacman/UseFuel() - var/needed_sheets = 1 / (time_per_sheet / power_output) + var/needed_sheets = 1 / (time_per_sheet * consumption / power_output) var/temp = min(needed_sheets, sheet_left) needed_sheets -= temp sheet_left -= temp @@ -175,9 +180,9 @@ display round(lastgen) and plasmatank amount var/bias = 0 if (power_output > 4) upper_limit = 400 - bias = power_output * 3 + bias = power_output - consumption * (4 - consumption) if (heat < lower_limit) - heat += 3 + heat += 4 - consumption else heat += rand(-7 + bias, 7 + bias) if (heat < lower_limit) diff --git a/code/modules/research/circuitprinter.dm b/code/modules/research/circuitprinter.dm index 5ac1762d266..90528dac641 100644 --- a/code/modules/research/circuitprinter.dm +++ b/code/modules/research/circuitprinter.dm @@ -13,6 +13,7 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis). var/gold_amount = 0 var/diamond_amount = 0 var/max_material_amount = 75000.0 + var/efficiency_coeff New() ..() @@ -35,7 +36,10 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis). for(var/obj/item/weapon/stock_parts/matter_bin/M in component_parts) T += M.rating max_material_amount = T * 75000.0 - + T = 0 + for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts) + T += M.rating + efficiency_coeff = T-1 blob_act() if (prob(50)) diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index e2a80bdd9d8..ec427f65ac4 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -22,7 +22,7 @@ The currently supporting non-reagent materials: Don't add new keyword/IDs if they are made from an existing one (such as rods which are made from metal). Only add raw materials. Design Guidlines -- The reliability formula for all R&D built items is reliability_base (a fixed number) + total tech levels required to make it + +- The reliability formula for all R&D built items is reliability (a fixed number) + total tech levels required to make it + reliability_mod (starts at 0, gets improved through experimentation). Example: PACMAN generator. 79 base reliablity + 6 tech (3 plasmatech, 3 powerstorage) + 0 (since it's completely new) = 85% reliability. Reliability is the chance it works CORRECTLY. - When adding new designs, check rdreadme.dm to see what kind of things have already been made and where new stuff is needed. @@ -43,9 +43,7 @@ datum/design //Datum for object designs, used in construction var/name = "Name" //Name of the created object. var/desc = "Desc" //Description of the created object. var/id = "id" //ID of the created object for easy refernece. Alphanumeric, lower-case, no symbols - var/list/req_tech = list() //IDs of that techs the object originated from and the minimum level requirements. - var/reliability_mod = 0 //Reliability modifier of the device at it's starting point. - var/reliability_base = 100 //Base reliability of a device before modifiers. + var/list/req_tech = list() //IDs of that techs the object originated from and the minimum level requirements. //Reliability modifier of the device at it's starting point. var/reliability = 100 //Reliability of the device. var/build_type = null //Flag as to what kind machine the design is built in. See defines. var/list/materials = list() //List of materials. Format: "id" = amount. @@ -57,11 +55,11 @@ datum/design //Datum for object designs, used in construction //A proc to calculate the reliability of a design based on tech levels and innate modifiers. //Input: A list of /datum/tech; Output: The new reliabilty. datum/design/proc/CalcReliability(var/list/temp_techs) - var/new_reliability = reliability_mod + reliability_base + var/new_reliability for(var/datum/tech/T in temp_techs) if(T.id in req_tech) new_reliability += T.level - new_reliability = Clamp(new_reliability, reliability_base, 100) + new_reliability = Clamp(new_reliability, reliability, 100) reliability = new_reliability return @@ -996,7 +994,7 @@ datum/design/super_capacitor id = "super_capacitor" req_tech = list("powerstorage" = 5, "materials" = 4) build_type = PROTOLATHE - reliability_base = 71 + reliability = 71 materials = list("$metal" = 50, "$glass" = 50, "$gold" = 20) build_path = "/obj/item/weapon/stock_parts/capacitor/super" @@ -1007,7 +1005,7 @@ datum/design/phasic_scanning req_tech = list("magnets" = 5, "materials" = 3) build_type = PROTOLATHE materials = list("$metal" = 50, "$glass" = 20, "$silver" = 10) - reliability_base = 72 + reliability = 72 build_path = "/obj/item/weapon/stock_parts/scanning_module/phasic" datum/design/pico_mani @@ -1017,7 +1015,7 @@ datum/design/pico_mani req_tech = list("materials" = 5, "programming" = 2) build_type = PROTOLATHE materials = list("$metal" = 30) - reliability_base = 73 + reliability = 73 build_path = "/obj/item/weapon/stock_parts/manipulator/pico" datum/design/ultra_micro_laser @@ -1027,7 +1025,7 @@ datum/design/ultra_micro_laser req_tech = list("magnets" = 5, "materials" = 5) build_type = PROTOLATHE materials = list("$metal" = 10, "$glass" = 20, "$uranium" = 10) - reliability_base = 70 + reliability = 70 build_path = "/obj/item/weapon/stock_parts/micro_laser/ultra" datum/design/super_matter_bin @@ -1037,7 +1035,7 @@ datum/design/super_matter_bin req_tech = list("materials" = 5) build_type = PROTOLATHE materials = list("$metal" = 80) - reliability_base = 75 + reliability = 75 build_path = "/obj/item/weapon/stock_parts/matter_bin/super" @@ -1134,7 +1132,7 @@ datum/design/super_cell desc = "A power cell that holds 20000 units of energy" id = "super_cell" req_tech = list("powerstorage" = 3, "materials" = 2) - reliability_base = 75 + reliability = 75 build_type = PROTOLATHE | MECHFAB materials = list("$metal" = 700, "$glass" = 70) build_path = "/obj/item/weapon/cell/super" @@ -1145,7 +1143,7 @@ datum/design/hyper_cell desc = "A power cell that holds 30000 units of energy" id = "hyper_cell" req_tech = list("powerstorage" = 5, "materials" = 4) - reliability_base = 70 + reliability = 70 build_type = PROTOLATHE | MECHFAB materials = list("$metal" = 400, "$gold" = 150, "$silver" = 150, "$glass" = 70) build_path = "/obj/item/weapon/cell/hyper" @@ -1247,7 +1245,7 @@ datum/design/pacman id = "pacman" req_tech = list("programming" = 3, "plasmatech" = 3, "powerstorage" = 3, "engineering" = 3) build_type = IMPRINTER - reliability_base = 79 + reliability = 79 materials = list("$glass" = 2000, "sacid" = 20) build_path = "/obj/item/weapon/circuitboard/pacman" @@ -1257,7 +1255,7 @@ datum/design/superpacman id = "superpacman" req_tech = list("programming" = 3, "powerstorage" = 4, "engineering" = 4) build_type = IMPRINTER - reliability_base = 76 + reliability = 76 materials = list("$glass" = 2000, "sacid" = 20) build_path = "/obj/item/weapon/circuitboard/pacman/super" @@ -1267,7 +1265,7 @@ datum/design/mrspacman id = "mrspacman" req_tech = list("programming" = 3, "powerstorage" = 5, "engineering" = 5) build_type = IMPRINTER - reliability_base = 74 + reliability = 74 materials = list("$glass" = 2000, "sacid" = 20) build_path = "/obj/item/weapon/circuitboard/pacman/mrs" @@ -1283,7 +1281,7 @@ datum/design/mass_spectrometer req_tech = list("biotech" = 2, "magnets" = 2) build_type = PROTOLATHE materials = list("$metal" = 30, "$glass" = 20) - reliability_base = 76 + reliability = 76 build_path = "/obj/item/device/mass_spectrometer" datum/design/adv_mass_spectrometer @@ -1293,7 +1291,7 @@ datum/design/adv_mass_spectrometer req_tech = list("biotech" = 2, "magnets" = 4) build_type = PROTOLATHE materials = list("$metal" = 30, "$glass" = 20) - reliability_base = 74 + reliability = 74 build_path = "/obj/item/device/mass_spectrometer/adv" datum/design/mmi @@ -1303,7 +1301,7 @@ datum/design/mmi req_tech = list("programming" = 2, "biotech" = 3) build_type = PROTOLATHE | MECHFAB materials = list("$metal" = 1000, "$glass" = 500) - reliability_base = 76 + reliability = 76 build_path = "/obj/item/device/mmi" category = "Misc" @@ -1314,7 +1312,7 @@ datum/design/mmi_radio req_tech = list("programming" = 2, "biotech" = 4) build_type = PROTOLATHE | MECHFAB materials = list("$metal" = 1200, "$glass" = 500) - reliability_base = 74 + reliability = 74 build_path = "/obj/item/device/mmi/radio_enabled" category = "Misc" @@ -1325,7 +1323,7 @@ datum/design/synthetic_flash req_tech = list("magnets" = 3, "combat" = 2) build_type = MECHFAB materials = list("$metal" = 750, "$glass" = 750) - reliability_base = 76 + reliability = 76 build_path = "/obj/item/device/flash/synthetic" category = "Misc" @@ -1336,7 +1334,7 @@ datum/design/bluespacebeaker req_tech = list("bluespace" = 2, "materials" = 6) build_type = PROTOLATHE materials = list("$metal" = 3000, "$plasma" = 3000, "$diamond" = 500) - reliability_base = 76 + reliability = 76 build_path = "/obj/item/weapon/reagent_containers/glass/beaker/bluespace" category = "Misc" @@ -1347,7 +1345,7 @@ datum/design/noreactbeaker req_tech = list("materials" = 2) build_type = PROTOLATHE materials = list("$metal" = 3000) - reliability_base = 76 + reliability = 76 build_path = "/obj/item/weapon/reagent_containers/glass/beaker/noreact" category = "Misc" @@ -1362,7 +1360,7 @@ datum/design/nuclear_gun req_tech = list("combat" = 3, "materials" = 5, "powerstorage" = 3) build_type = PROTOLATHE materials = list("$metal" = 5000, "$glass" = 1000, "$uranium" = 500) - reliability_base = 76 + reliability = 76 build_path = "/obj/item/weapon/gun/energy/gun/nuclear" locked = 1 @@ -1403,7 +1401,7 @@ datum/design/chemsprayer req_tech = list("combat" = 3, "materials" = 3, "engineering" = 3, "biotech" = 2) build_type = PROTOLATHE materials = list("$metal" = 5000, "$glass" = 1000) - reliability_base = 100 + reliability = 100 build_path = "/obj/item/weapon/chemsprayer" */ datum/design/rapidsyringe @@ -1450,7 +1448,7 @@ datum/design/large_grenade req_tech = list("combat" = 3, "materials" = 2) build_type = PROTOLATHE materials = list("$metal" = 3000) - reliability_base = 79 + reliability = 79 build_path = "/obj/item/weapon/grenade/chem_grenade/large" datum/design/smg @@ -1529,7 +1527,7 @@ datum/design/plasmacutter req_tech = list("materials" = 4, "plasmatech" = 3, "engineering" = 3) build_type = PROTOLATHE materials = list("$metal" = 1500, "$glass" = 500, "$gold" = 500, "$plasma" = 500) - reliability_base = 79 + reliability = 79 build_path = "/obj/item/weapon/pickaxe/plasmacutter" datum/design/pick_diamond @@ -1548,7 +1546,7 @@ datum/design/drill_diamond req_tech = list("materials" = 6, "powerstorage" = 4, "engineering" = 4) build_type = PROTOLATHE materials = list("$metal" = 3000, "$glass" = 1000, "$diamond" = 3750) //Yes, a whole diamond is needed. - reliability_base = 79 + reliability = 79 build_path = "/obj/item/weapon/pickaxe/diamonddrill" datum/design/mesons @@ -1580,7 +1578,7 @@ datum/design/bag_holding req_tech = list("bluespace" = 4, "materials" = 6) build_type = PROTOLATHE materials = list("$gold" = 3000, "$diamond" = 1500, "$uranium" = 250) - reliability_base = 80 + reliability = 80 build_path = "/obj/item/weapon/storage/backpack/holding" datum/design/bluespace_crystal @@ -1590,7 +1588,7 @@ datum/design/bluespace_crystal req_tech = list("bluespace" = 4, "materials" = 6) build_type = PROTOLATHE materials = list("$diamond" = 1500, "$plasma" = 1500) - reliability_base = 100 + reliability = 100 build_path = "/obj/item/bluespace_crystal/artificial" ///////////////////////////////////////// diff --git a/code/modules/research/destructive_analyzer.dm b/code/modules/research/destructive_analyzer.dm index bee0c198916..c0d7d862032 100644 --- a/code/modules/research/destructive_analyzer.dm +++ b/code/modules/research/destructive_analyzer.dm @@ -25,8 +25,7 @@ Note: Must be placed within 3 tiles of the R&D Console /obj/machinery/r_n_d/destructive_analyzer/RefreshParts() var/T = 0 for(var/obj/item/weapon/stock_parts/S in src) - T += S.rating * 0.1 - T = Clamp(T, 0, 1) + T += S.rating decon_mod = T /obj/machinery/r_n_d/destructive_analyzer/meteorhit() @@ -72,7 +71,7 @@ Note: Must be placed within 3 tiles of the R&D Console if (temp_tech.len == 0) user << "\red You cannot deconstruct this item!" return - if(O.reliability < 90 && O.crit_fail == 0) + if(O.reliability < (99-(decon_mod*3)) && O.crit_fail == 0) usr << "\red Item is neither reliable enough or broken enough to learn from." return busy = 1 diff --git a/code/modules/research/protolathe.dm b/code/modules/research/protolathe.dm index ec908f22d73..1e09063ca1d 100644 --- a/code/modules/research/protolathe.dm +++ b/code/modules/research/protolathe.dm @@ -22,6 +22,7 @@ Note: Must be placed west/left of and R&D console to function. var/diamond_amount = 0.0 var/clown_amount = 0.0 var/adamantine_amount = 0.0 + var/efficiency_coeff /obj/machinery/r_n_d/protolathe/New() @@ -50,6 +51,10 @@ Note: Must be placed west/left of and R&D console to function. for(var/obj/item/weapon/stock_parts/matter_bin/M in component_parts) T += M.rating max_material_storage = T * 75000 + T = 0 + for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts) + T += M.rating + efficiency_coeff = T-1 /obj/machinery/r_n_d/protolathe/attackby(var/obj/item/O as obj, var/mob/user as mob) if (shocked) diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index 21f40240320..ac9743cd52e 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -256,15 +256,15 @@ won't update every console in existence) but it's more of a hassle to do. Also, usr <<"\red The destructive analyzer appears to be empty." screen = 1.0 return - if(linked_destroy.loaded_item.reliability >= 90) + if(linked_destroy.loaded_item.reliability >= 99 - (linked_destroy.decon_mod * 3)) var/list/temp_tech = linked_destroy.ConvertReqString2List(linked_destroy.loaded_item.origin_tech) for(var/T in temp_tech) - files.UpdateTech(T, temp_tech[T]) - if(linked_destroy.loaded_item.reliability < 100 && linked_destroy.loaded_item.crit_fail) - files.UpdateDesign(linked_destroy.loaded_item.type) + if(prob(linked_destroy.loaded_item.reliability)) + files.UpdateTech(T, temp_tech[T]) + files.UpdateDesigns(linked_destroy.loaded_item, temp_tech, src) if(linked_lathe) //Also sends salvaged materials to a linked protolathe, if any. - linked_lathe.m_amount += min((linked_lathe.max_material_storage - linked_lathe.TotalMaterials()), (linked_destroy.loaded_item.m_amt*linked_destroy.decon_mod)) - linked_lathe.g_amount += min((linked_lathe.max_material_storage - linked_lathe.TotalMaterials()), (linked_destroy.loaded_item.g_amt*linked_destroy.decon_mod)) + linked_lathe.m_amount += min((linked_lathe.max_material_storage - linked_lathe.TotalMaterials()), (linked_destroy.loaded_item.m_amt*(linked_destroy.decon_mod/10))) + linked_lathe.g_amount += min((linked_lathe.max_material_storage - linked_lathe.TotalMaterials()), (linked_destroy.loaded_item.g_amt*(linked_destroy.decon_mod/10))) linked_destroy.loaded_item = null for(var/obj/I in linked_destroy.contents) for(var/mob/M in I.contents) @@ -326,6 +326,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, sync = !sync else if(href_list["build"]) //Causes the Protolathe to build something. + var/coeff = linked_lathe.efficiency_coeff var/g2g = 1 if(linked_lathe) var/datum/design/being_built = null @@ -351,23 +352,23 @@ won't update every console in existence) but it's more of a hassle to do. Also, break switch(M) if("$metal") - linked_lathe.m_amount = max(0, (linked_lathe.m_amount-being_built.materials[M])) + linked_lathe.m_amount = max(0, (linked_lathe.m_amount-(being_built.materials[M]/coeff))) if("$glass") - linked_lathe.g_amount = max(0, (linked_lathe.g_amount-being_built.materials[M])) + linked_lathe.g_amount = max(0, (linked_lathe.g_amount-(being_built.materials[M]/coeff))) if("$gold") - linked_lathe.gold_amount = max(0, (linked_lathe.gold_amount-being_built.materials[M])) + linked_lathe.gold_amount = max(0, (linked_lathe.gold_amount-(being_built.materials[M]/coeff))) if("$silver") - linked_lathe.silver_amount = max(0, (linked_lathe.silver_amount-being_built.materials[M])) + linked_lathe.silver_amount = max(0, (linked_lathe.silver_amount-(being_built.materials[M]/coeff))) if("$plasma") - linked_lathe.plasma_amount = max(0, (linked_lathe.plasma_amount-being_built.materials[M])) + linked_lathe.plasma_amount = max(0, (linked_lathe.plasma_amount-(being_built.materials[M]/coeff))) if("$uranium") - linked_lathe.uranium_amount = max(0, (linked_lathe.uranium_amount-being_built.materials[M])) + linked_lathe.uranium_amount = max(0, (linked_lathe.uranium_amount-(being_built.materials[M]/coeff))) if("$diamond") - linked_lathe.diamond_amount = max(0, (linked_lathe.diamond_amount-being_built.materials[M])) + linked_lathe.diamond_amount = max(0, (linked_lathe.diamond_amount-(being_built.materials[M]/coeff))) if("$clown") - linked_lathe.clown_amount = max(0, (linked_lathe.clown_amount-being_built.materials[M])) + linked_lathe.clown_amount = max(0, (linked_lathe.clown_amount-(being_built.materials[M]/coeff))) else - linked_lathe.reagents.remove_reagent(M, being_built.materials[M]) + linked_lathe.reagents.remove_reagent(M, being_built.materials[M]/coeff) var/P = being_built.build_path //lets save these values before the spawn() just in case. Nobody likes runtimes. var/R = being_built.reliability @@ -378,6 +379,8 @@ won't update every console in existence) but it's more of a hassle to do. Also, if( new_item.type == /obj/item/weapon/storage/backpack/holding ) new_item.investigate_log("built by [key]","singulo") new_item.reliability = R + new_item.m_amt /= coeff + new_item.g_amt /= coeff if(linked_lathe.hacked) R = max((reliability / 2), 0) if(O) var/obj/item/weapon/storage/lockbox/L = new/obj/item/weapon/storage/lockbox(linked_lathe.loc) @@ -390,6 +393,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, updateUsrDialog() else if(href_list["imprint"]) //Causes the Circuit Imprinter to build something. + var/coeff = 2 ** linked_imprinter.efficiency_coeff if(linked_imprinter) var/datum/design/being_built = null for(var/datum/design/D in files.known_designs) @@ -409,20 +413,19 @@ won't update every console in existence) but it's more of a hassle to do. Also, for(var/M in being_built.materials) switch(M) if("$glass") - linked_imprinter.g_amount = max(0, (linked_imprinter.g_amount-being_built.materials[M])) + linked_imprinter.g_amount = max(0, (linked_imprinter.g_amount-being_built.materials[M]/coeff)) if("$gold") - linked_imprinter.gold_amount = max(0, (linked_imprinter.gold_amount-being_built.materials[M])) + linked_imprinter.gold_amount = max(0, (linked_imprinter.gold_amount-being_built.materials[M]/coeff)) if("$diamond") - linked_imprinter.diamond_amount = max(0, (linked_imprinter.diamond_amount-being_built.materials[M])) + linked_imprinter.diamond_amount = max(0, (linked_imprinter.diamond_amount-being_built.materials[M]/coeff)) else - linked_imprinter.reagents.remove_reagent(M, being_built.materials[M]) + linked_imprinter.reagents.remove_reagent(M, being_built.materials[M]/coeff) var/P = being_built.build_path //lets save these values before the spawn() just in case. Nobody likes runtimes. var/R = being_built.reliability spawn(16) var/obj/new_item = new P(src) new_item.reliability = R - if(linked_imprinter.hacked) R = max((reliability / 2), 0) new_item.loc = linked_imprinter.loc linked_imprinter.busy = 0 screen = 4.1 @@ -533,23 +536,23 @@ won't update every console in existence) but it's more of a hassle to do. Also, /obj/machinery/computer/rdconsole/proc/check_mat(datum/design/being_built, var/M) switch(M) if("$metal") - return (linked_lathe.m_amount - being_built.materials[M] >= 0) ? 1 : 0 + return (linked_lathe.m_amount - (being_built.materials[M]/linked_lathe.efficiency_coeff) >= 0) ? 1 : 0 if("$glass") - return (linked_lathe.g_amount - being_built.materials[M] >= 0) ? 1 : 0 + return (linked_lathe.g_amount - (being_built.materials[M]/linked_lathe.efficiency_coeff) >= 0) ? 1 : 0 if("$gold") - return (linked_lathe.gold_amount - being_built.materials[M] >= 0) ? 1 : 0 + return (linked_lathe.gold_amount - (being_built.materials[M]/linked_lathe.efficiency_coeff) >= 0) ? 1 : 0 if("$silver") - return (linked_lathe.silver_amount - being_built.materials[M] >= 0) ? 1 : 0 + return (linked_lathe.silver_amount - (being_built.materials[M]/linked_lathe.efficiency_coeff) >= 0) ? 1 : 0 if("$plasma") - return (linked_lathe.plasma_amount - being_built.materials[M] >= 0) ? 1 : 0 + return (linked_lathe.plasma_amount - (being_built.materials[M]/linked_lathe.efficiency_coeff) >= 0) ? 1 : 0 if("$uranium") - return (linked_lathe.uranium_amount - being_built.materials[M] >= 0) ? 1 : 0 + return (linked_lathe.uranium_amount - (being_built.materials[M]/linked_lathe.efficiency_coeff) >= 0) ? 1 : 0 if("$diamond") - return (linked_lathe.diamond_amount - being_built.materials[M] >= 0) ? 1 : 0 + return (linked_lathe.diamond_amount - (being_built.materials[M]/linked_lathe.efficiency_coeff) >= 0) ? 1 : 0 if("$clown") - return (linked_lathe.clown_amount - being_built.materials[M] >= 0) ? 1 : 0 + return (linked_lathe.clown_amount - (being_built.materials[M]/linked_lathe.efficiency_coeff) >= 0) ? 1 : 0 else - return linked_lathe.reagents.remove_reagent(M, being_built.materials[M]) + return linked_lathe.reagents.remove_reagent(M, (being_built.materials[M]/linked_lathe.efficiency_coeff)) /obj/machinery/computer/rdconsole/attack_hand(mob/user as mob) if(..()) @@ -708,6 +711,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, dat += "Main Menu
" dat += "Deconstruction Menu
" dat += "Name: [linked_destroy.loaded_item.name]
" + dat += "Reliability: [linked_destroy.loaded_item.reliability]
" dat += "Origin Tech:
" var/list/temp_tech = linked_destroy.ConvertReqString2List(linked_destroy.loaded_item.origin_tech) for(var/T in temp_tech) @@ -727,32 +731,33 @@ won't update every console in existence) but it's more of a hassle to do. Also, dat += "Protolathe Menu:

" dat += "Material Amount: [linked_lathe.TotalMaterials()] cm3 (MAX: [linked_lathe.max_material_storage])
" dat += "Chemical Volume: [linked_lathe.reagents.total_volume] (MAX: [linked_lathe.reagents.maximum_volume])
" + var/coeff = linked_lathe.efficiency_coeff for(var/datum/design/D in files.known_designs) if(!(D.build_type & PROTOLATHE)) continue var/temp_dat = "[D.name]" var/check_materials = 1 for(var/M in D.materials) - temp_dat += " [D.materials[M]] [CallMaterialName(M)]" + temp_dat += " [D.materials[M]/coeff] [CallMaterialName(M)]" if(copytext(M, 1, 2) == "$") switch(M) if("$glass") - if(D.materials[M] > linked_lathe.g_amount) check_materials = 0 + if(D.materials[M]/coeff > linked_lathe.g_amount) check_materials = 0 if("$metal") - if(D.materials[M] > linked_lathe.m_amount) check_materials = 0 + if(D.materials[M]/coeff > linked_lathe.m_amount) check_materials = 0 if("$gold") - if(D.materials[M] > linked_lathe.gold_amount) check_materials = 0 + if(D.materials[M]/coeff > linked_lathe.gold_amount) check_materials = 0 if("$silver") - if(D.materials[M] > linked_lathe.silver_amount) check_materials = 0 + if(D.materials[M]/coeff > linked_lathe.silver_amount) check_materials = 0 if("$plasma") - if(D.materials[M] > linked_lathe.plasma_amount) check_materials = 0 + if(D.materials[M]/coeff > linked_lathe.plasma_amount) check_materials = 0 if("$uranium") - if(D.materials[M] > linked_lathe.uranium_amount) check_materials = 0 + if(D.materials[M]/coeff > linked_lathe.uranium_amount) check_materials = 0 if("$diamond") - if(D.materials[M] > linked_lathe.diamond_amount) check_materials = 0 + if(D.materials[M]/coeff > linked_lathe.diamond_amount) check_materials = 0 if("$clown") - if(D.materials[M] > linked_lathe.clown_amount) check_materials = 0 - else if (!linked_lathe.reagents.has_reagent(M, D.materials[M])) + if(D.materials[M]/coeff > linked_lathe.clown_amount) check_materials = 0 + else if (!linked_lathe.reagents.has_reagent(M, D.materials[M]/coeff)) check_materials = 0 if (check_materials) dat += "* [temp_dat]
" @@ -840,23 +845,23 @@ won't update every console in existence) but it's more of a hassle to do. Also, dat += "Circuit Imprinter Menu:

" dat += "Material Amount: [linked_imprinter.TotalMaterials()] cm3
" dat += "Chemical Volume: [linked_imprinter.reagents.total_volume]
" - + var/coeff = 2 ** linked_imprinter.efficiency_coeff for(var/datum/design/D in files.known_designs) if(!(D.build_type & IMPRINTER)) continue var/temp_dat = "[D.name]" var/check_materials = 1 for(var/M in D.materials) - temp_dat += " [D.materials[M]] [CallMaterialName(M)]" + temp_dat += " [D.materials[M]/coeff] [CallMaterialName(M)]" if(copytext(M, 1, 2) == "$") switch(M) if("$glass") - if(D.materials[M] > linked_imprinter.g_amount) check_materials = 0 + if(D.materials[M]/coeff > linked_imprinter.g_amount) check_materials = 0 if("$gold") - if(D.materials[M] > linked_imprinter.gold_amount) check_materials = 0 + if(D.materials[M]/coeff > linked_imprinter.gold_amount) check_materials = 0 if("$diamond") - if(D.materials[M] > linked_imprinter.diamond_amount) check_materials = 0 - else if (!linked_imprinter.reagents.has_reagent(M, D.materials[M])) + if(D.materials[M]/coeff > linked_imprinter.diamond_amount) check_materials = 0 + else if (!linked_imprinter.reagents.has_reagent(M, D.materials[M]/coeff)) check_materials = 0 if (check_materials) dat += "* [temp_dat]
" diff --git a/code/modules/research/research.dm b/code/modules/research/research.dm index 7938720c0c9..f65bbad5142 100644 --- a/code/modules/research/research.dm +++ b/code/modules/research/research.dm @@ -118,8 +118,8 @@ research holder datum. /datum/research/proc/AddDesign2Known(var/datum/design/D) for(var/datum/design/known in known_designs) if(D.id == known.id) - if(D.reliability_mod > known.reliability_mod) - known.reliability_mod = D.reliability_mod + if(D.reliability > known.reliability) + known.reliability = D.reliability return known_designs += D return @@ -144,17 +144,20 @@ research holder datum. /datum/research/proc/UpdateTech(var/ID, var/level) for(var/datum/tech/KT in known_tech) if(KT.id == ID) - if(KT.level <= level) KT.level = max((KT.level + 1), (level - 1)) + if(KT.level <= level) + KT.level = max((KT.level + 1), (level - 1)) return -/datum/research/proc/UpdateDesign(var/path) - for(var/datum/design/KD in known_designs) - if(KD.build_path == path) - KD.reliability_mod += rand(1,2) - break - return - - +/datum/research/proc/UpdateDesigns(var/obj/item/I, var/list/temp_tech) + for(var/T in temp_tech) + if(temp_tech[T] - 1 >= known_tech[T]) + for(var/datum/design/D in known_designs) + if(D.req_tech[T]) + D.reliability = min(100, D.reliability + prob(35)) + if(D.build_path == I.type) + D.reliability = min(100, D.reliability + rand(1,3)) + if(I.crit_fail) + D.reliability = min(100, D.reliability + rand(3, 5)) /*************************************************************** diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm index b90917b53e1..4c4daca528d 100644 --- a/code/modules/research/server.dm +++ b/code/modules/research/server.dm @@ -250,7 +250,6 @@ if(choice == "Continue") for(var/datum/design/D in temp_server.files.known_designs) if(D.id == href_list["reset_design"]) - D.reliability_mod = 0 temp_server.files.known_designs -= D break temp_server.files.RefreshResearch() From d8a6cd530f4bb955532a47970f3c07bfba4367e4 Mon Sep 17 00:00:00 2001 From: Razharas Date: Mon, 23 Dec 2013 22:00:43 +0400 Subject: [PATCH 2/6] Quick paths fix post haste Coderbus make me do this --- code/modules/research/designs.dm | 342 +++++++++++++++---------------- 1 file changed, 161 insertions(+), 181 deletions(-) diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index ec427f65ac4..6adcad7b422 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -73,7 +73,7 @@ datum/design/seccamera req_tech = list("programming" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/security" + build_path = /obj/item/weapon/circuitboard/security datum/design/aicore name = "Circuit Design (AI Core)" @@ -82,7 +82,7 @@ datum/design/aicore req_tech = list("programming" = 4, "biotech" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/aicore" + build_path = /obj/item/weapon/circuitboard/aicore datum/design/aiupload name = "Circuit Design (AI Upload)" @@ -91,7 +91,7 @@ datum/design/aiupload req_tech = list("programming" = 4) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/aiupload" + build_path = /obj/item/weapon/circuitboard/aiupload datum/design/borgupload name = "Circuit Design (Cyborg Upload)" @@ -100,7 +100,7 @@ datum/design/borgupload req_tech = list("programming" = 4) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/borgupload" + build_path = /obj/item/weapon/circuitboard/borgupload datum/design/med_data name = "Circuit Design (Medical Records)" @@ -109,7 +109,7 @@ datum/design/med_data req_tech = list("programming" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/med_data" + build_path = /obj/item/weapon/circuitboard/med_data datum/design/operating name = "Circuit Design (Operating Computer)" @@ -118,7 +118,7 @@ datum/design/operating req_tech = list("programming" = 2, "biotech" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/operating" + build_path = /obj/item/weapon/circuitboard/operating datum/design/pandemic name = "Circuit Design (PanD.E.M.I.C. 2200)" @@ -127,7 +127,7 @@ datum/design/pandemic req_tech = list("programming" = 2, "biotech" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/pandemic" + build_path = /obj/item/weapon/circuitboard/pandemic datum/design/scan_console name = "Circuit Design (DNA Machine)" @@ -136,7 +136,7 @@ datum/design/scan_console req_tech = list("programming" = 2, "biotech" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/scan_consolenew" + build_path = /obj/item/weapon/circuitboard/scan_consolenew datum/design/comconsole name = "Circuit Design (Communications)" @@ -145,7 +145,7 @@ datum/design/comconsole req_tech = list("programming" = 2, "magnets" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/communications" + build_path = /obj/item/weapon/circuitboard/communications datum/design/idcardconsole name = "Circuit Design (ID Console)" @@ -154,7 +154,7 @@ datum/design/idcardconsole req_tech = list("programming" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/card" + build_path = /obj/item/weapon/circuitboard/card datum/design/crewconsole name = "Circuit Design (Crew monitoring computer)" @@ -163,7 +163,7 @@ datum/design/crewconsole req_tech = list("programming" = 3, "magnets" = 2, "biotech" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/crew" + build_path = /obj/item/weapon/circuitboard/crew datum/design/teleconsole name = "Circuit Design (Teleporter Console)" @@ -172,7 +172,7 @@ datum/design/teleconsole req_tech = list("programming" = 3, "bluespace" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/teleporter" + build_path = /obj/item/weapon/circuitboard/teleporter datum/design/secdata name = "Circuit Design (Security Records Console)" @@ -181,7 +181,7 @@ datum/design/secdata req_tech = list("programming" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/secure_data" + build_path = /obj/item/weapon/circuitboard/secure_data datum/design/atmosalerts name = "Circuit Design (Atmosphere Alert)" @@ -190,7 +190,7 @@ datum/design/atmosalerts req_tech = list("programming" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/atmos_alert" + build_path = /obj/item/weapon/circuitboard/atmos_alert datum/design/air_management name = "Circuit Design (Atmospheric Monitor)" @@ -199,18 +199,7 @@ datum/design/air_management req_tech = list("programming" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/air_management" - - -datum/design/general_alert - name = "Circuit Design (Station Alert Console)" - desc = "Allows for the construction of circuit boards used to build a Station Alert console." - id = "station_alert" - req_tech = list("programming" = 2) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/station_alert" - + build_path = /obj/item/weapon/circuitboard/air_management datum/design/robocontrol name = "Circuit Design (Robotics Control Console)" @@ -219,7 +208,7 @@ datum/design/robocontrol req_tech = list("programming" = 4) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/robotics" + build_path = /obj/item/weapon/circuitboard/robotics datum/design/clonecontrol name = "Circuit Design (Cloning Machine Console)" @@ -228,7 +217,7 @@ datum/design/clonecontrol req_tech = list("programming" = 3, "biotech" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/cloning" + build_path = /obj/item/weapon/circuitboard/cloning datum/design/clonepod name = "Circuit Design (Clone Pod)" @@ -237,7 +226,7 @@ datum/design/clonepod req_tech = list("programming" = 3, "biotech" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/clonepod" + build_path = /obj/item/weapon/circuitboard/clonepod datum/design/clonescanner name = "Circuit Design (Cloning Scanner)" @@ -246,7 +235,7 @@ datum/design/clonescanner req_tech = list("programming" = 3, "biotech" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/clonescanner" + build_path = /obj/item/weapon/circuitboard/clonescanner datum/design/arcadebattle name = "Circuit Design (Battle Arcade Machine)" @@ -255,7 +244,7 @@ datum/design/arcadebattle req_tech = list("programming" = 1) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/arcade/battle" + build_path = /obj/item/weapon/circuitboard/arcade/battle datum/design/orion_trail name = "Circuit Design (Orion Trail Arcade Machine)" @@ -264,7 +253,7 @@ datum/design/orion_trail req_tech = list("programming" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/arcade/orion_trail" + build_path = /obj/item/weapon/circuitboard/arcade/orion_trail datum/design/powermonitor name = "Circuit Design (Power Monitor)" @@ -273,7 +262,7 @@ datum/design/powermonitor req_tech = list("programming" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/powermonitor" + build_path = /obj/item/weapon/circuitboard/powermonitor datum/design/solarcontrol name = "Circuit Design (Solar Control)" @@ -282,7 +271,7 @@ datum/design/solarcontrol req_tech = list("programming" = 2, "powerstorage" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/solar_control" + build_path = /obj/item/weapon/circuitboard/solar_control datum/design/prisonmanage name = "Circuit Design (Prisoner Management Console)" @@ -291,7 +280,7 @@ datum/design/prisonmanage req_tech = list("programming" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/prisoner" + build_path = /obj/item/weapon/circuitboard/prisoner datum/design/mechacontrol name = "Circuit Design (Exosuit Control Console)" @@ -300,7 +289,7 @@ datum/design/mechacontrol req_tech = list("programming" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha_control" + build_path = /obj/item/weapon/circuitboard/mecha_control datum/design/mechapower name = "Circuit Design (Mech Bay Power Control Console)" @@ -309,7 +298,7 @@ datum/design/mechapower req_tech = list("programming" = 2, "powerstorage" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mech_bay_power_console" + build_path = /obj/item/weapon/circuitboard/mech_bay_power_console datum/design/rdconsole name = "Circuit Design (R&D Console)" @@ -318,7 +307,7 @@ datum/design/rdconsole req_tech = list("programming" = 4) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/rdconsole" + build_path = /obj/item/weapon/circuitboard/rdconsole datum/design/ordercomp name = "Circuit Design (Supply ordering console)" @@ -327,7 +316,7 @@ datum/design/ordercomp req_tech = list("programming" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/ordercomp" + build_path = /obj/item/weapon/circuitboard/ordercomp datum/design/supplycomp name = "Circuit Design (Supply shuttle console)" @@ -336,7 +325,7 @@ datum/design/supplycomp req_tech = list("programming" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/supplycomp" + build_path = /obj/item/weapon/circuitboard/supplycomp datum/design/mining name = "Circuit Design (Outpost Status Display)" @@ -345,7 +334,7 @@ datum/design/mining req_tech = list("programming" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mining" + build_path = /obj/item/weapon/circuitboard/mining datum/design/comm_monitor name = "Circuit Design (Telecommunications Monitoring Console)" @@ -354,7 +343,7 @@ datum/design/comm_monitor req_tech = list("programming" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/comm_monitor" + build_path = /obj/item/weapon/circuitboard/comm_monitor datum/design/comm_server name = "Circuit Design (Telecommunications Server Monitoring Console)" @@ -363,7 +352,7 @@ datum/design/comm_server req_tech = list("programming" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/comm_server" + build_path = /obj/item/weapon/circuitboard/comm_server datum/design/message_monitor name = "Circuit Design (Messaging Monitor Console)" @@ -372,7 +361,7 @@ datum/design/message_monitor req_tech = list("programming" = 5) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/message_monitor" + build_path = /obj/item/weapon/circuitboard/message_monitor datum/design/aifixer name = "Circuit Design (AI Integrity Restorer)" @@ -381,7 +370,7 @@ datum/design/aifixer req_tech = list("programming" = 3, "biotech" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/aifixer" + build_path = /obj/item/weapon/circuitboard/aifixer /////////////////////////////////// //////////AI Module Disks////////// @@ -393,7 +382,7 @@ datum/design/safeguard_module req_tech = list("programming" = 3, "materials" = 4) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20, "$gold" = 100) - build_path = "/obj/item/weapon/aiModule/safeguard" + build_path = /obj/item/weapon/aiModule/safeguard datum/design/onehuman_module name = "Module Design (OneHuman)" @@ -402,7 +391,7 @@ datum/design/onehuman_module req_tech = list("programming" = 4, "materials" = 6) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20, "$diamond" = 100) - build_path = "/obj/item/weapon/aiModule/oneHuman" + build_path = /obj/item/weapon/aiModule/oneHuman datum/design/protectstation_module name = "Module Design (ProtectStation)" @@ -411,7 +400,7 @@ datum/design/protectstation_module req_tech = list("programming" = 3, "materials" = 6) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20, "$gold" = 100) - build_path = "/obj/item/weapon/aiModule/protectStation" + build_path = /obj/item/weapon/aiModule/protectStation /*datum/design/notele_module name = "Module Design (TeleporterOffline Module)" @@ -420,7 +409,7 @@ datum/design/protectstation_module req_tech = list("programming" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20, "$gold" = 100) - build_path = "/obj/item/weapon/aiModule/teleporterOffline"*/ + build_path = /obj/item/weapon/aiModule/teleporterOffline"*/ datum/design/quarantine_module name = "Module Design (Quarantine)" @@ -429,7 +418,7 @@ datum/design/quarantine_module req_tech = list("programming" = 3, "biotech" = 2, "materials" = 4) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20, "$gold" = 100) - build_path = "/obj/item/weapon/aiModule/quarantine" + build_path = /obj/item/weapon/aiModule/quarantine datum/design/oxygen_module name = "Module Design (OxygenIsToxicToHumans)" @@ -438,7 +427,7 @@ datum/design/oxygen_module req_tech = list("programming" = 3, "biotech" = 2, "materials" = 4) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20, "$gold" = 100) - build_path = "/obj/item/weapon/aiModule/oxygen" + build_path = /obj/item/weapon/aiModule/oxygen datum/design/freeform_module name = "Module Design (Freeform)" @@ -447,7 +436,7 @@ datum/design/freeform_module req_tech = list("programming" = 4, "materials" = 4) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20, "$gold" = 100) - build_path = "/obj/item/weapon/aiModule/freeform" + build_path = /obj/item/weapon/aiModule/freeform datum/design/reset_module name = "Module Design (Reset)" @@ -456,7 +445,7 @@ datum/design/reset_module req_tech = list("programming" = 3, "materials" = 6) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20, "$gold" = 100) - build_path = "/obj/item/weapon/aiModule/reset" + build_path = /obj/item/weapon/aiModule/reset datum/design/purge_module name = "Module Design (Purge)" @@ -465,7 +454,7 @@ datum/design/purge_module req_tech = list("programming" = 4, "materials" = 6) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20, "$diamond" = 100) - build_path = "/obj/item/weapon/aiModule/purge" + build_path = /obj/item/weapon/aiModule/purge datum/design/freeformcore_module name = "Core Module Design (Freeform)" @@ -474,7 +463,7 @@ datum/design/freeformcore_module req_tech = list("programming" = 4, "materials" = 6) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20, "$diamond" = 100) - build_path = "/obj/item/weapon/aiModule/freeformcore" + build_path = /obj/item/weapon/aiModule/freeformcore datum/design/asimov name = "Core Module Design (Asimov)" @@ -483,7 +472,7 @@ datum/design/asimov req_tech = list("programming" = 3, "materials" = 6) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20, "$diamond" = 100) - build_path = "/obj/item/weapon/aiModule/asimov" + build_path = /obj/item/weapon/aiModule/asimov datum/design/paladin_module name = "Core Module Design (P.A.L.A.D.I.N.)" @@ -492,7 +481,7 @@ datum/design/paladin_module req_tech = list("programming" = 4, "materials" = 6) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20, "$diamond" = 100) - build_path = "/obj/item/weapon/aiModule/paladin" + build_path = /obj/item/weapon/aiModule/paladin datum/design/tyrant_module name = "Core Module Design (T.Y.R.A.N.T.)" @@ -501,7 +490,7 @@ datum/design/tyrant_module req_tech = list("programming" = 4, "syndicate" = 2, "materials" = 6) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20, "$diamond" = 100) - build_path = "/obj/item/weapon/aiModule/tyrant" + build_path = /obj/item/weapon/aiModule/tyrant @@ -515,7 +504,7 @@ datum/design/subspace_receiver req_tech = list("programming" = 2, "engineering" = 2, "bluespace" = 1) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/telecomms/receiver" + build_path = /obj/item/weapon/circuitboard/telecomms/receiver datum/design/telecomms_bus name = "Circuit Design (Bus Mainframe)" @@ -524,7 +513,7 @@ datum/design/telecomms_bus req_tech = list("programming" = 2, "engineering" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/telecomms/bus" + build_path = /obj/item/weapon/circuitboard/telecomms/bus datum/design/telecomms_hub name = "Circuit Design (Hub Mainframe)" @@ -533,7 +522,7 @@ datum/design/telecomms_hub req_tech = list("programming" = 2, "engineering" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/telecomms/hub" + build_path = /obj/item/weapon/circuitboard/telecomms/hub datum/design/telecomms_relay name = "Circuit Design (Relay Mainframe)" @@ -542,7 +531,7 @@ datum/design/telecomms_relay req_tech = list("programming" = 2, "engineering" = 2, "bluespace" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/telecomms/relay" + build_path = /obj/item/weapon/circuitboard/telecomms/relay datum/design/telecomms_processor name = "Circuit Design (Processor Unit)" @@ -551,7 +540,7 @@ datum/design/telecomms_processor req_tech = list("programming" = 2, "engineering" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/telecomms/processor" + build_path = /obj/item/weapon/circuitboard/telecomms/processor datum/design/telecomms_server name = "Circuit Design (Server Mainframe)" @@ -560,7 +549,7 @@ datum/design/telecomms_server req_tech = list("programming" = 2, "engineering" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/telecomms/server" + build_path = /obj/item/weapon/circuitboard/telecomms/server datum/design/subspace_broadcaster name = "Circuit Design (Subspace Broadcaster)" @@ -569,7 +558,7 @@ datum/design/subspace_broadcaster req_tech = list("programming" = 2, "engineering" = 2, "bluespace" = 1) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/telecomms/broadcaster" + build_path = /obj/item/weapon/circuitboard/telecomms/broadcaster /////////////////////////////////// @@ -583,7 +572,7 @@ datum/design/intellicard req_tech = list("programming" = 4, "materials" = 4) build_type = PROTOLATHE materials = list("$glass" = 1000, "$gold" = 200) - build_path = "/obj/item/device/aicard" + build_path = /obj/item/device/aicard datum/design/paicard name = "Personal Artificial Intelligence Card" @@ -592,7 +581,7 @@ datum/design/paicard req_tech = list("programming" = 2) build_type = PROTOLATHE materials = list("$glass" = 500, "$metal" = 500) - build_path = "/obj/item/device/paicard" + build_path = /obj/item/device/paicard /////////////////////////////////// //////////Mecha Module Disks/////// @@ -605,7 +594,7 @@ datum/design/ripley_main req_tech = list("programming" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha/ripley/main" + build_path = /obj/item/weapon/circuitboard/mecha/ripley/main datum/design/ripley_peri name = "Circuit Design (APLU \"Ripley\" Peripherals Control module)" @@ -614,7 +603,7 @@ datum/design/ripley_peri req_tech = list("programming" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha/ripley/peripherals" + build_path = /obj/item/weapon/circuitboard/mecha/ripley/peripherals datum/design/odysseus_main name = "Circuit Design (\"Odysseus\" Central Control module)" @@ -623,7 +612,7 @@ datum/design/odysseus_main req_tech = list("programming" = 3,"biotech" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha/odysseus/main" + build_path = /obj/item/weapon/circuitboard/mecha/odysseus/main datum/design/odysseus_peri name = "Circuit Design (\"Odysseus\" Peripherals Control module)" @@ -632,7 +621,7 @@ datum/design/odysseus_peri req_tech = list("programming" = 3,"biotech" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha/odysseus/peripherals" + build_path = /obj/item/weapon/circuitboard/mecha/odysseus/peripherals datum/design/gygax_main name = "Circuit Design (\"Gygax\" Central Control module)" @@ -641,7 +630,7 @@ datum/design/gygax_main req_tech = list("programming" = 4) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha/gygax/main" + build_path = /obj/item/weapon/circuitboard/mecha/gygax/main datum/design/gygax_peri name = "Circuit Design (\"Gygax\" Peripherals Control module)" @@ -650,7 +639,7 @@ datum/design/gygax_peri req_tech = list("programming" = 4) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha/gygax/peripherals" + build_path = /obj/item/weapon/circuitboard/mecha/gygax/peripherals datum/design/gygax_targ name = "Circuit Design (\"Gygax\" Weapons & Targeting Control module)" @@ -659,7 +648,7 @@ datum/design/gygax_targ req_tech = list("programming" = 4, "combat" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha/gygax/targeting" + build_path = /obj/item/weapon/circuitboard/mecha/gygax/targeting datum/design/durand_main name = "Circuit Design (\"Durand\" Central Control module)" @@ -668,7 +657,7 @@ datum/design/durand_main req_tech = list("programming" = 4) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha/durand/main" + build_path = /obj/item/weapon/circuitboard/mecha/durand/main datum/design/durand_peri name = "Circuit Design (\"Durand\" Peripherals Control module)" @@ -677,7 +666,7 @@ datum/design/durand_peri req_tech = list("programming" = 4) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha/durand/peripherals" + build_path = /obj/item/weapon/circuitboard/mecha/durand/peripherals datum/design/durand_targ name = "Circuit Design (\"Durand\" Weapons & Targeting Control module)" @@ -686,7 +675,7 @@ datum/design/durand_targ req_tech = list("programming" = 4, "combat" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha/durand/targeting" + build_path = /obj/item/weapon/circuitboard/mecha/durand/targeting datum/design/honker_main name = "Circuit Design (\"H.O.N.K\" Central Control module)" @@ -695,7 +684,7 @@ datum/design/honker_main req_tech = list("programming" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha/honker/main" + build_path = /obj/item/weapon/circuitboard/mecha/honker/main datum/design/honker_peri name = "Circuit Design (\"H.O.N.K\" Peripherals Control module)" @@ -704,7 +693,7 @@ datum/design/honker_peri req_tech = list("programming" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha/honker/peripherals" + build_path = /obj/item/weapon/circuitboard/mecha/honker/peripherals datum/design/honker_targ name = "Circuit Design (\"H.O.N.K\" Weapons & Targeting Control module)" @@ -713,7 +702,7 @@ datum/design/honker_targ req_tech = list("programming" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha/honker/targeting" + build_path = /obj/item/weapon/circuitboard/mecha/honker/targeting //////////////////////////////////////// /////////// Mecha Equpment ///////////// @@ -725,7 +714,7 @@ datum/design/mech_scattershot id = "mech_scattershot" build_type = MECHFAB req_tech = list("combat" = 4) - build_path = "/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot" + build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot category = "Exosuit Equipment" datum/design/mech_laser @@ -734,7 +723,7 @@ datum/design/mech_laser id = "mech_laser" build_type = MECHFAB req_tech = list("combat" = 3, "magnets" = 3) - build_path = "/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser" + build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser category = "Exosuit Equipment" datum/design/mech_laser_heavy @@ -743,7 +732,7 @@ datum/design/mech_laser_heavy id = "mech_laser_heavy" build_type = MECHFAB req_tech = list("combat" = 4, "magnets" = 4) - build_path = "/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/heavy" + build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/heavy category = "Exosuit Equipment" datum/design/mech_grenade_launcher @@ -752,7 +741,7 @@ datum/design/mech_grenade_launcher id = "mech_grenade_launcher" build_type = MECHFAB req_tech = list("combat" = 3) - build_path = "/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang" + build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang category = "Exosuit Equipment" datum/design/clusterbang_launcher @@ -761,7 +750,7 @@ datum/design/clusterbang_launcher id = "clusterbang_launcher" build_type = MECHFAB req_tech = list("combat"= 5, "materials" = 5, "syndicate" = 3) - build_path = "/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/clusterbang" + build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/clusterbang category = "Exosuit Equipment" datum/design/mech_wormhole_gen @@ -770,7 +759,7 @@ datum/design/mech_wormhole_gen id = "mech_wormhole_gen" build_type = MECHFAB req_tech = list("bluespace" = 3, "magnets" = 2) - build_path = "/obj/item/mecha_parts/mecha_equipment/wormhole_generator" + build_path = /obj/item/mecha_parts/mecha_equipment/wormhole_generator category = "Exosuit Equipment" datum/design/mech_teleporter @@ -779,7 +768,7 @@ datum/design/mech_teleporter id = "mech_teleporter" build_type = MECHFAB req_tech = list("bluespace" = 10, "magnets" = 5) - build_path = "/obj/item/mecha_parts/mecha_equipment/teleporter" + build_path = /obj/item/mecha_parts/mecha_equipment/teleporter category = "Exosuit Equipment" datum/design/mech_rcd @@ -788,7 +777,7 @@ datum/design/mech_rcd id = "mech_rcd" build_type = MECHFAB req_tech = list("materials" = 4, "bluespace" = 3, "magnets" = 4, "powerstorage"=4, "engineering" = 4) - build_path = "/obj/item/mecha_parts/mecha_equipment/tool/rcd" + build_path = /obj/item/mecha_parts/mecha_equipment/tool/rcd category = "Exosuit Equipment" datum/design/mech_gravcatapult @@ -797,7 +786,7 @@ datum/design/mech_gravcatapult id = "mech_gravcatapult" build_type = MECHFAB req_tech = list("bluespace" = 2, "magnets" = 3, "engineering" = 3) - build_path = "/obj/item/mecha_parts/mecha_equipment/gravcatapult" + build_path = /obj/item/mecha_parts/mecha_equipment/gravcatapult category = "Exosuit Equipment" datum/design/mech_repair_droid @@ -806,16 +795,7 @@ datum/design/mech_repair_droid id = "mech_repair_droid" build_type = MECHFAB req_tech = list("magnets" = 3, "programming" = 3, "engineering" = 3) - build_path = "/obj/item/mecha_parts/mecha_equipment/repair_droid" - category = "Exosuit Equipment" - -datum/design/mech_plasma_generator - name = "Exosuit Module Design (Plasma Converter Module)" - desc = "Exosuit-mounted plasma converter." - id = "mech_plasma_generator" - build_type = MECHFAB - req_tech = list("plasmatech" = 2, "powerstorage"= 2, "engineering" = 2) - build_path = "/obj/item/mecha_parts/mecha_equipment/plasma_generator" + build_path = /obj/item/mecha_parts/mecha_equipment/repair_droid category = "Exosuit Equipment" datum/design/mech_energy_relay @@ -824,7 +804,7 @@ datum/design/mech_energy_relay id = "mech_energy_relay" build_type = MECHFAB req_tech = list("magnets" = 4, "powerstorage" = 3) - build_path = "/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay" + build_path = /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay category = "Exosuit Equipment" datum/design/mech_ccw_armor @@ -833,7 +813,7 @@ datum/design/mech_ccw_armor id = "mech_ccw_armor" build_type = MECHFAB req_tech = list("materials" = 5, "combat" = 4) - build_path = "/obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster" + build_path = /obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster category = "Exosuit Equipment" datum/design/mech_proj_armor @@ -842,7 +822,7 @@ datum/design/mech_proj_armor id = "mech_proj_armor" build_type = MECHFAB req_tech = list("materials" = 5, "combat" = 5, "engineering"=3) - build_path = "/obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster" + build_path = /obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster category = "Exosuit Equipment" datum/design/mech_syringe_gun @@ -851,7 +831,7 @@ datum/design/mech_syringe_gun id = "mech_syringe_gun" build_type = MECHFAB req_tech = list("materials" = 3, "biotech"=4, "magnets"=4, "programming"=3) - build_path = "/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun" + build_path = /obj/item/mecha_parts/mecha_equipment/tool/syringe_gun category = "Exosuit Equipment" datum/design/mech_diamond_drill @@ -860,7 +840,7 @@ datum/design/mech_diamond_drill id = "mech_diamond_drill" build_type = MECHFAB req_tech = list("materials" = 4, "engineering" = 3) - build_path = "/obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill" + build_path = /obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill category = "Exosuit Equipment" datum/design/mech_generator_nuclear @@ -869,7 +849,7 @@ datum/design/mech_generator_nuclear id = "mech_generator_nuclear" build_type = MECHFAB req_tech = list("powerstorage"= 3, "engineering" = 3, "materials" = 3) - build_path = "/obj/item/mecha_parts/mecha_equipment/generator/nuclear" + build_path = /obj/item/mecha_parts/mecha_equipment/generator/nuclear category = "Exosuit Equipment" @@ -883,7 +863,7 @@ datum/design/design_disk req_tech = list("programming" = 1) build_type = PROTOLATHE | AUTOLATHE materials = list("$metal" = 30, "$glass" = 10) - build_path = "/obj/item/weapon/disk/design_disk" + build_path = /obj/item/weapon/disk/design_disk datum/design/tech_disk name = "Technology Data Storage Disk" @@ -892,7 +872,7 @@ datum/design/tech_disk req_tech = list("programming" = 1) build_type = PROTOLATHE | AUTOLATHE materials = list("$metal" = 30, "$glass" = 10) - build_path = "/obj/item/weapon/disk/tech_disk" + build_path = /obj/item/weapon/disk/tech_disk //////////////////////////////////////// /////////////Stock Parts//////////////// @@ -905,7 +885,7 @@ datum/design/basic_capacitor req_tech = list("powerstorage" = 1) build_type = PROTOLATHE | AUTOLATHE materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/weapon/stock_parts/capacitor" + build_path = /obj/item/weapon/stock_parts/capacitor datum/design/basic_scanning name = "Basic Scanning Module" @@ -914,7 +894,7 @@ datum/design/basic_scanning req_tech = list("magnets" = 1) build_type = PROTOLATHE | AUTOLATHE materials = list("$metal" = 50, "$glass" = 20) - build_path = "/obj/item/weapon/stock_parts/scanning_module" + build_path = /obj/item/weapon/stock_parts/scanning_module datum/design/micro_mani name = "Micro Manipulator" @@ -923,7 +903,7 @@ datum/design/micro_mani req_tech = list("materials" = 1, "programming" = 1) build_type = PROTOLATHE | AUTOLATHE materials = list("$metal" = 30) - build_path = "/obj/item/weapon/stock_parts/manipulator" + build_path = /obj/item/weapon/stock_parts/manipulator datum/design/basic_micro_laser name = "Basic Micro-Laser" @@ -932,7 +912,7 @@ datum/design/basic_micro_laser req_tech = list("magnets" = 1) build_type = PROTOLATHE | AUTOLATHE materials = list("$metal" = 10, "$glass" = 20) - build_path = "/obj/item/weapon/stock_parts/micro_laser" + build_path = /obj/item/weapon/stock_parts/micro_laser datum/design/basic_matter_bin name = "Basic Matter Bin" @@ -941,7 +921,7 @@ datum/design/basic_matter_bin req_tech = list("materials" = 1) build_type = PROTOLATHE | AUTOLATHE materials = list("$metal" = 80) - build_path = "/obj/item/weapon/stock_parts/matter_bin" + build_path = /obj/item/weapon/stock_parts/matter_bin datum/design/adv_capacitor name = "Advanced Capacitor" @@ -950,7 +930,7 @@ datum/design/adv_capacitor req_tech = list("powerstorage" = 3) build_type = PROTOLATHE materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/weapon/stock_parts/capacitor/adv" + build_path = /obj/item/weapon/stock_parts/capacitor/adv datum/design/adv_scanning name = "Advanced Scanning Module" @@ -959,7 +939,7 @@ datum/design/adv_scanning req_tech = list("magnets" = 3) build_type = PROTOLATHE materials = list("$metal" = 50, "$glass" = 20) - build_path = "/obj/item/weapon/stock_parts/scanning_module/adv" + build_path = /obj/item/weapon/stock_parts/scanning_module/adv datum/design/nano_mani name = "Nano Manipulator" @@ -968,7 +948,7 @@ datum/design/nano_mani req_tech = list("materials" = 3, "programming" = 2) build_type = PROTOLATHE materials = list("$metal" = 30) - build_path = "/obj/item/weapon/stock_parts/manipulator/nano" + build_path = /obj/item/weapon/stock_parts/manipulator/nano datum/design/high_micro_laser name = "High-Power Micro-Laser" @@ -977,7 +957,7 @@ datum/design/high_micro_laser req_tech = list("magnets" = 3) build_type = PROTOLATHE materials = list("$metal" = 10, "$glass" = 20) - build_path = "/obj/item/weapon/stock_parts/micro_laser/high" + build_path = /obj/item/weapon/stock_parts/micro_laser/high datum/design/adv_matter_bin name = "Advanced Matter Bin" @@ -986,7 +966,7 @@ datum/design/adv_matter_bin req_tech = list("materials" = 3) build_type = PROTOLATHE materials = list("$metal" = 80) - build_path = "/obj/item/weapon/stock_parts/matter_bin/adv" + build_path = /obj/item/weapon/stock_parts/matter_bin/adv datum/design/super_capacitor name = "Super Capacitor" @@ -996,7 +976,7 @@ datum/design/super_capacitor build_type = PROTOLATHE reliability = 71 materials = list("$metal" = 50, "$glass" = 50, "$gold" = 20) - build_path = "/obj/item/weapon/stock_parts/capacitor/super" + build_path = /obj/item/weapon/stock_parts/capacitor/super datum/design/phasic_scanning name = "Phasic Scanning Module" @@ -1006,7 +986,7 @@ datum/design/phasic_scanning build_type = PROTOLATHE materials = list("$metal" = 50, "$glass" = 20, "$silver" = 10) reliability = 72 - build_path = "/obj/item/weapon/stock_parts/scanning_module/phasic" + build_path = /obj/item/weapon/stock_parts/scanning_module/phasic datum/design/pico_mani name = "Pico Manipulator" @@ -1016,7 +996,7 @@ datum/design/pico_mani build_type = PROTOLATHE materials = list("$metal" = 30) reliability = 73 - build_path = "/obj/item/weapon/stock_parts/manipulator/pico" + build_path = /obj/item/weapon/stock_parts/manipulator/pico datum/design/ultra_micro_laser name = "Ultra-High-Power Micro-Laser" @@ -1026,7 +1006,7 @@ datum/design/ultra_micro_laser build_type = PROTOLATHE materials = list("$metal" = 10, "$glass" = 20, "$uranium" = 10) reliability = 70 - build_path = "/obj/item/weapon/stock_parts/micro_laser/ultra" + build_path = /obj/item/weapon/stock_parts/micro_laser/ultra datum/design/super_matter_bin name = "Super Matter Bin" @@ -1036,7 +1016,7 @@ datum/design/super_matter_bin build_type = PROTOLATHE materials = list("$metal" = 80) reliability = 75 - build_path = "/obj/item/weapon/stock_parts/matter_bin/super" + build_path = /obj/item/weapon/stock_parts/matter_bin/super @@ -1047,7 +1027,7 @@ datum/design/subspace_ansible req_tech = list("programming" = 2, "magnets" = 2, "materials" = 2, "bluespace" = 1) build_type = PROTOLATHE materials = list("$metal" = 80, "$silver" = 20) - build_path = "/obj/item/weapon/stock_parts/subspace/ansible" + build_path = /obj/item/weapon/stock_parts/subspace/ansible datum/design/hyperwave_filter name = "Hyperwave Filter" @@ -1056,7 +1036,7 @@ datum/design/hyperwave_filter req_tech = list("programming" = 2, "magnets" = 2) build_type = PROTOLATHE materials = list("$metal" = 40, "$silver" = 10) - build_path = "/obj/item/weapon/stock_parts/subspace/filter" + build_path = /obj/item/weapon/stock_parts/subspace/filter datum/design/subspace_amplifier name = "Subspace Amplifier" @@ -1065,7 +1045,7 @@ datum/design/subspace_amplifier req_tech = list("programming" = 2, "magnets" = 2, "materials" = 2, "bluespace" = 1) build_type = PROTOLATHE materials = list("$metal" = 10, "$gold" = 30, "$uranium" = 15) - build_path = "/obj/item/weapon/stock_parts/subspace/amplifier" + build_path = /obj/item/weapon/stock_parts/subspace/amplifier datum/design/subspace_treatment name = "Subspace Treatment Disk" @@ -1074,7 +1054,7 @@ datum/design/subspace_treatment req_tech = list("programming" = 2, "magnets" = 1, "materials" = 2, "bluespace" = 1) build_type = PROTOLATHE materials = list("$metal" = 10, "$silver" = 20) - build_path = "/obj/item/weapon/stock_parts/subspace/treatment" + build_path = /obj/item/weapon/stock_parts/subspace/treatment datum/design/subspace_analyzer name = "Subspace Analyzer" @@ -1083,7 +1063,7 @@ datum/design/subspace_analyzer req_tech = list("programming" = 2, "magnets" = 2, "materials" = 2, "bluespace" = 1) build_type = PROTOLATHE materials = list("$metal" = 10, "$gold" = 15) - build_path = "/obj/item/weapon/stock_parts/subspace/analyzer" + build_path = /obj/item/weapon/stock_parts/subspace/analyzer datum/design/subspace_crystal name = "Ansible Crystal" @@ -1092,7 +1072,7 @@ datum/design/subspace_crystal req_tech = list("magnets" = 2, "materials" = 2, "bluespace" = 1) build_type = PROTOLATHE materials = list("$glass" = 1000, "$silver" = 20, "$gold" = 20) - build_path = "/obj/item/weapon/stock_parts/subspace/crystal" + build_path = /obj/item/weapon/stock_parts/subspace/crystal datum/design/subspace_transmitter name = "Subspace Transmitter" @@ -1101,7 +1081,7 @@ datum/design/subspace_transmitter req_tech = list("magnets" = 3, "materials" = 3, "bluespace" = 2) build_type = PROTOLATHE materials = list("$glass" = 100, "$silver" = 10, "$uranium" = 15) - build_path = "/obj/item/weapon/stock_parts/subspace/transmitter" + build_path = /obj/item/weapon/stock_parts/subspace/transmitter //////////////////////////////////////// //////////////////Power///////////////// @@ -1114,7 +1094,7 @@ datum/design/basic_cell req_tech = list("powerstorage" = 1) build_type = PROTOLATHE | AUTOLATHE |MECHFAB materials = list("$metal" = 700, "$glass" = 50) - build_path = "/obj/item/weapon/cell" + build_path = /obj/item/weapon/cell category = "Misc" datum/design/high_cell @@ -1124,7 +1104,7 @@ datum/design/high_cell req_tech = list("powerstorage" = 2) build_type = PROTOLATHE | AUTOLATHE | MECHFAB materials = list("$metal" = 700, "$glass" = 60) - build_path = "/obj/item/weapon/cell/high" + build_path = /obj/item/weapon/cell/high category = "Misc" datum/design/super_cell @@ -1135,7 +1115,7 @@ datum/design/super_cell reliability = 75 build_type = PROTOLATHE | MECHFAB materials = list("$metal" = 700, "$glass" = 70) - build_path = "/obj/item/weapon/cell/super" + build_path = /obj/item/weapon/cell/super category = "Misc" datum/design/hyper_cell @@ -1146,7 +1126,7 @@ datum/design/hyper_cell reliability = 70 build_type = PROTOLATHE | MECHFAB materials = list("$metal" = 400, "$gold" = 150, "$silver" = 150, "$glass" = 70) - build_path = "/obj/item/weapon/cell/hyper" + build_path = /obj/item/weapon/cell/hyper category = "Misc" datum/design/light_replacer @@ -1156,7 +1136,7 @@ datum/design/light_replacer req_tech = list("magnets" = 3, "materials" = 4) build_type = PROTOLATHE materials = list("$metal" = 1500, "$silver" = 150, "$glass" = 3000) - build_path = "/obj/item/device/lightreplacer" + build_path = /obj/item/device/lightreplacer //////////////////////////////////////// //////////////MISC Boards/////////////// @@ -1169,7 +1149,7 @@ datum/design/destructive_analyzer req_tech = list("programming" = 2, "magnets" = 2, "engineering" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/destructive_analyzer" + build_path = /obj/item/weapon/circuitboard/destructive_analyzer datum/design/protolathe name = "Protolathe Board" @@ -1178,7 +1158,7 @@ datum/design/protolathe req_tech = list("programming" = 2, "engineering" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/protolathe" + build_path = /obj/item/weapon/circuitboard/protolathe datum/design/circuit_imprinter name = "Circuit Imprinter Board" @@ -1187,7 +1167,7 @@ datum/design/circuit_imprinter req_tech = list("programming" = 2, "engineering" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/circuit_imprinter" + build_path = /obj/item/weapon/circuitboard/circuit_imprinter datum/design/autolathe name = "Autolathe Board" @@ -1196,7 +1176,7 @@ datum/design/autolathe req_tech = list("programming" = 2, "engineering" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/autolathe" + build_path = /obj/item/weapon/circuitboard/autolathe datum/design/rdservercontrol name = "R&D Server Control Console Board" @@ -1205,7 +1185,7 @@ datum/design/rdservercontrol req_tech = list("programming" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/rdservercontrol" + build_path = /obj/item/weapon/circuitboard/rdservercontrol datum/design/rdserver name = "R&D Server Board" @@ -1214,7 +1194,7 @@ datum/design/rdserver req_tech = list("programming" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/rdserver" + build_path = /obj/item/weapon/circuitboard/rdserver datum/design/mechfab name = "Exosuit Fabricator Board" @@ -1223,7 +1203,7 @@ datum/design/mechfab req_tech = list("programming" = 3, "engineering" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mechfab" + build_path = /obj/item/weapon/circuitboard/mechfab datum/design/cyborgrecharger @@ -1233,7 +1213,7 @@ datum/design/cyborgrecharger req_tech = list("powerstorage" = 3, "engineering" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/cyborgrecharger" + build_path = /obj/item/weapon/circuitboard/cyborgrecharger ///////////////////////////////////////// ////////////Power Stuff////////////////// @@ -1247,7 +1227,7 @@ datum/design/pacman build_type = IMPRINTER reliability = 79 materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/pacman" + build_path = /obj/item/weapon/circuitboard/pacman datum/design/superpacman name = "SUPERPACMAN-type Generator Board" @@ -1257,7 +1237,7 @@ datum/design/superpacman build_type = IMPRINTER reliability = 76 materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/pacman/super" + build_path = /obj/item/weapon/circuitboard/pacman/super datum/design/mrspacman name = "MRSPACMAN-type Generator Board" @@ -1267,7 +1247,7 @@ datum/design/mrspacman build_type = IMPRINTER reliability = 74 materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/pacman/mrs" + build_path = /obj/item/weapon/circuitboard/pacman/mrs ///////////////////////////////////////// @@ -1282,7 +1262,7 @@ datum/design/mass_spectrometer build_type = PROTOLATHE materials = list("$metal" = 30, "$glass" = 20) reliability = 76 - build_path = "/obj/item/device/mass_spectrometer" + build_path = /obj/item/device/mass_spectrometer datum/design/adv_mass_spectrometer name = "Advanced Mass-Spectrometer" @@ -1292,7 +1272,7 @@ datum/design/adv_mass_spectrometer build_type = PROTOLATHE materials = list("$metal" = 30, "$glass" = 20) reliability = 74 - build_path = "/obj/item/device/mass_spectrometer/adv" + build_path = /obj/item/device/mass_spectrometer/adv datum/design/mmi name = "Man-Machine Interface" @@ -1302,7 +1282,7 @@ datum/design/mmi build_type = PROTOLATHE | MECHFAB materials = list("$metal" = 1000, "$glass" = 500) reliability = 76 - build_path = "/obj/item/device/mmi" + build_path = /obj/item/device/mmi category = "Misc" datum/design/mmi_radio @@ -1313,7 +1293,7 @@ datum/design/mmi_radio build_type = PROTOLATHE | MECHFAB materials = list("$metal" = 1200, "$glass" = 500) reliability = 74 - build_path = "/obj/item/device/mmi/radio_enabled" + build_path = /obj/item/device/mmi/radio_enabled category = "Misc" datum/design/synthetic_flash @@ -1324,7 +1304,7 @@ datum/design/synthetic_flash build_type = MECHFAB materials = list("$metal" = 750, "$glass" = 750) reliability = 76 - build_path = "/obj/item/device/flash/synthetic" + build_path = /obj/item/device/flash/synthetic category = "Misc" datum/design/bluespacebeaker @@ -1335,7 +1315,7 @@ datum/design/bluespacebeaker build_type = PROTOLATHE materials = list("$metal" = 3000, "$plasma" = 3000, "$diamond" = 500) reliability = 76 - build_path = "/obj/item/weapon/reagent_containers/glass/beaker/bluespace" + build_path = /obj/item/weapon/reagent_containers/glass/beaker/bluespace category = "Misc" datum/design/noreactbeaker @@ -1346,7 +1326,7 @@ datum/design/noreactbeaker build_type = PROTOLATHE materials = list("$metal" = 3000) reliability = 76 - build_path = "/obj/item/weapon/reagent_containers/glass/beaker/noreact" + build_path = /obj/item/weapon/reagent_containers/glass/beaker/noreact category = "Misc" ///////////////////////////////////////// @@ -1361,7 +1341,7 @@ datum/design/nuclear_gun build_type = PROTOLATHE materials = list("$metal" = 5000, "$glass" = 1000, "$uranium" = 500) reliability = 76 - build_path = "/obj/item/weapon/gun/energy/gun/nuclear" + build_path = /obj/item/weapon/gun/energy/gun/nuclear locked = 1 datum/design/stunrevolver @@ -1371,7 +1351,7 @@ datum/design/stunrevolver req_tech = list("combat" = 3, "materials" = 3, "powerstorage" = 2) build_type = PROTOLATHE materials = list("$metal" = 4000) - build_path = "/obj/item/weapon/gun/energy/stunrevolver" + build_path = /obj/item/weapon/gun/energy/stunrevolver locked = 1 datum/design/lasercannon @@ -1381,7 +1361,7 @@ datum/design/lasercannon req_tech = list("combat" = 4, "materials" = 3, "powerstorage" = 3) build_type = PROTOLATHE materials = list("$metal" = 10000, "$glass" = 1000, "$diamond" = 2000) - build_path = "/obj/item/weapon/gun/energy/lasercannon" + build_path = /obj/item/weapon/gun/energy/lasercannon locked = 1 datum/design/decloner @@ -1391,7 +1371,7 @@ datum/design/decloner req_tech = list("combat" = 8, "materials" = 7, "biotech" = 5, "powerstorage" = 6) build_type = PROTOLATHE materials = list("$gold" = 5000,"$uranium" = 10000, "mutagen" = 40) - build_path = "/obj/item/weapon/gun/energy/decloner" + build_path = /obj/item/weapon/gun/energy/decloner locked = 1 /* datum/design/chemsprayer @@ -1402,7 +1382,7 @@ datum/design/chemsprayer build_type = PROTOLATHE materials = list("$metal" = 5000, "$glass" = 1000) reliability = 100 - build_path = "/obj/item/weapon/chemsprayer" + build_path = /obj/item/weapon/chemsprayer" */ datum/design/rapidsyringe name = "Rapid Syringe Gun" @@ -1411,7 +1391,7 @@ datum/design/rapidsyringe req_tech = list("combat" = 3, "materials" = 3, "engineering" = 3, "biotech" = 2) build_type = PROTOLATHE materials = list("$metal" = 5000, "$glass" = 1000) - build_path = "/obj/item/weapon/gun/syringe/rapidsyringe" + build_path = /obj/item/weapon/gun/syringe/rapidsyringe /* datum/design/largecrossbow name = "Energy Crossbow" @@ -1420,7 +1400,7 @@ datum/design/largecrossbow req_tech = list("combat" = 4, "materials" = 5, "engineering" = 3, "biotech" = 4, "syndicate" = 3) build_type = PROTOLATHE materials = list("$metal" = 5000, "$glass" = 1000, "$uranium" = 1000, "$silver" = 1000) - build_path = "/obj/item/weapon/gun/energy/crossbow/largecrossbow" + build_path = /obj/item/weapon/gun/energy/crossbow/largecrossbow" */ datum/design/temp_gun name = "Temperature Gun" @@ -1429,7 +1409,7 @@ datum/design/temp_gun req_tech = list("combat" = 3, "materials" = 4, "powerstorage" = 3, "magnets" = 2) build_type = PROTOLATHE materials = list("$metal" = 5000, "$glass" = 500, "$silver" = 3000) - build_path = "/obj/item/weapon/gun/energy/temperature" + build_path = /obj/item/weapon/gun/energy/temperature locked = 1 datum/design/flora_gun @@ -1439,7 +1419,7 @@ datum/design/flora_gun req_tech = list("materials" = 2, "biotech" = 3, "powerstorage" = 3) build_type = PROTOLATHE materials = list("$metal" = 2000, "$glass" = 500, "$uranium" = 500) - build_path = "/obj/item/weapon/gun/energy/floragun" + build_path = /obj/item/weapon/gun/energy/floragun datum/design/large_grenade name = "Large Grenade" @@ -1449,7 +1429,7 @@ datum/design/large_grenade build_type = PROTOLATHE materials = list("$metal" = 3000) reliability = 79 - build_path = "/obj/item/weapon/grenade/chem_grenade/large" + build_path = /obj/item/weapon/grenade/chem_grenade/large datum/design/smg name = "Submachine Gun" @@ -1458,7 +1438,7 @@ datum/design/smg req_tech = list("combat" = 4, "materials" = 3) build_type = PROTOLATHE materials = list("$metal" = 8000, "$silver" = 2000, "$diamond" = 1000) - build_path = "/obj/item/weapon/gun/projectile/automatic" + build_path = /obj/item/weapon/gun/projectile/automatic locked = 1 datum/design/xray @@ -1468,7 +1448,7 @@ datum/design/xray req_tech = list("combat" = 6, "materials" = 5, "biotech" = 5, "powerstorage" = 4) build_type = PROTOLATHE materials = list("$gold" = 5000,"$uranium" = 10000, "$metal" = 4000) - build_path = "/obj/item/weapon/gun/energy/xray" + build_path = /obj/item/weapon/gun/energy/xray locked = 1 datum/design/ammo_9mm @@ -1478,7 +1458,7 @@ datum/design/ammo_9mm req_tech = list("combat" = 4, "materials" = 3) build_type = PROTOLATHE materials = list("$metal" = 3750, "$silver" = 100) - build_path = "/obj/item/ammo_box/c9mm" + build_path = /obj/item/ammo_box/c9mm datum/design/mag_smg name = "Submachine Gun Magazine (9mm)" @@ -1487,7 +1467,7 @@ datum/design/mag_smg req_tech = list("combat" = 4, "materials" = 3) build_type = PROTOLATHE materials = list("$metal" = 3750, "$silver" = 100) - build_path = "/obj/item/ammo_box/magazine/msmg9mm" + build_path = /obj/item/ammo_box/magazine/msmg9mm datum/design/stunshell name = "Stun Shell" @@ -1496,7 +1476,7 @@ datum/design/stunshell req_tech = list("combat" = 3, "materials" = 3) build_type = PROTOLATHE materials = list("$metal" = 4000) - build_path = "/obj/item/ammo_casing/shotgun/stunshell" + build_path = /obj/item/ammo_casing/shotgun/stunshell ///////////////////////////////////////// /////////////////Mining////////////////// @@ -1509,7 +1489,7 @@ datum/design/jackhammer req_tech = list("materials" = 3, "powerstorage" = 2, "engineering" = 2) build_type = PROTOLATHE materials = list("$metal" = 2000, "$glass" = 500, "$silver" = 500) - build_path = "/obj/item/weapon/pickaxe/jackhammer" + build_path = /obj/item/weapon/pickaxe/jackhammer datum/design/drill name = "Mining Drill" @@ -1518,7 +1498,7 @@ datum/design/drill req_tech = list("materials" = 2, "powerstorage" = 3, "engineering" = 2) build_type = PROTOLATHE materials = list("$metal" = 6000, "$glass" = 1000) //expensive, but no need for miners. - build_path = "/obj/item/weapon/pickaxe/drill" + build_path = /obj/item/weapon/pickaxe/drill datum/design/plasmacutter name = "Plasma Cutter" @@ -1528,7 +1508,7 @@ datum/design/plasmacutter build_type = PROTOLATHE materials = list("$metal" = 1500, "$glass" = 500, "$gold" = 500, "$plasma" = 500) reliability = 79 - build_path = "/obj/item/weapon/pickaxe/plasmacutter" + build_path = /obj/item/weapon/pickaxe/plasmacutter datum/design/pick_diamond name = "Diamond Pickaxe" @@ -1537,7 +1517,7 @@ datum/design/pick_diamond req_tech = list("materials" = 6) build_type = PROTOLATHE materials = list("$diamond" = 3000) - build_path = "/obj/item/weapon/pickaxe/diamond" + build_path = /obj/item/weapon/pickaxe/diamond datum/design/drill_diamond name = "Diamond Mining Drill" @@ -1547,7 +1527,7 @@ datum/design/drill_diamond build_type = PROTOLATHE materials = list("$metal" = 3000, "$glass" = 1000, "$diamond" = 3750) //Yes, a whole diamond is needed. reliability = 79 - build_path = "/obj/item/weapon/pickaxe/diamonddrill" + build_path = /obj/item/weapon/pickaxe/diamonddrill datum/design/mesons name = "Optical Meson Scanners" @@ -1556,7 +1536,7 @@ datum/design/mesons req_tech = list("magnets" = 2, "engineering" = 2) build_type = PROTOLATHE materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/clothing/glasses/meson" + build_path = /obj/item/clothing/glasses/meson ///////////////////////////////////////// //////////////Blue Space///////////////// @@ -1569,7 +1549,7 @@ datum/design/beacon req_tech = list("bluespace" = 1) build_type = PROTOLATHE materials = list ("$metal" = 20, "$glass" = 10) - build_path = "/obj/item/device/radio/beacon" + build_path = /obj/item/device/radio/beacon datum/design/bag_holding name = "Bag of Holding" @@ -1579,7 +1559,7 @@ datum/design/bag_holding build_type = PROTOLATHE materials = list("$gold" = 3000, "$diamond" = 1500, "$uranium" = 250) reliability = 80 - build_path = "/obj/item/weapon/storage/backpack/holding" + build_path = /obj/item/weapon/storage/backpack/holding datum/design/bluespace_crystal name = "Artificial Bluespace Crystal" @@ -1589,7 +1569,7 @@ datum/design/bluespace_crystal build_type = PROTOLATHE materials = list("$diamond" = 1500, "$plasma" = 1500) reliability = 100 - build_path = "/obj/item/bluespace_crystal/artificial" + build_path = /obj/item/bluespace_crystal/artificial ///////////////////////////////////////// /////////////////HUDs//////////////////// @@ -1602,7 +1582,7 @@ datum/design/health_hud req_tech = list("biotech" = 2, "magnets" = 3) build_type = PROTOLATHE materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/clothing/glasses/hud/health" + build_path = /obj/item/clothing/glasses/hud/health datum/design/security_hud name = "Security HUD" @@ -1611,7 +1591,7 @@ datum/design/security_hud req_tech = list("magnets" = 3, "combat" = 2) build_type = PROTOLATHE materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/clothing/glasses/hud/security" + build_path = /obj/item/clothing/glasses/hud/security locked = 1 ///////////////////////////////////////// @@ -1625,7 +1605,7 @@ datum/design/security_hud build_type = PROTOLATHE req_tech = list("materials" = 1) materials = list("$gold" = 3000, "iron" = 15, "copper" = 10, "$silver" = 2500) - build_path = "/obj/item/weapon/banhammer" */ + build_path = /obj/item/weapon/banhammer" */ //////////////////////////////////////// //Disks for transporting design datums// @@ -1656,7 +1636,7 @@ datum/design/borg_syndicate_module id = "borg_syndicate_module" build_type = MECHFAB req_tech = list("combat" = 4, "syndicate" = 3) - build_path = "/obj/item/borg/upgrade/syndicate" + build_path = /obj/item/borg/upgrade/syndicate category = "Cyborg Upgrade Modules" ///////////////////////////////////////// @@ -1671,4 +1651,4 @@ datum/design/welding_mask req_tech = list("materials" = 2, "engineering" = 2) build_type = PROTOLATHE materials = list("$metal" = 4000, "$glass" = 2000) - build_path = "/obj/item/clothing/mask/gas/welding" + build_path = /obj/item/clothing/mask/gas/welding From 908f28dab6bb148a4f86ffe2fb13e9adf4bc886d Mon Sep 17 00:00:00 2001 From: Razharas Date: Mon, 23 Dec 2013 22:30:38 +0400 Subject: [PATCH 3/6] More machinery and type path fixes Not parts are in null and not in machinery --- code/game/machinery/autolathe.dm | 12 +++---- code/game/machinery/cloning.dm | 16 ++++----- code/game/machinery/constructable_frame.dm | 36 +++++++++---------- code/game/machinery/rechargestation.dm | 10 +++--- code/game/mecha/mech_fabricator.dm | 12 +++---- code/modules/research/destructive_analyzer.dm | 8 ++--- code/modules/research/server.dm | 8 ++--- 7 files changed, 51 insertions(+), 51 deletions(-) diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index c2a68b9f567..16f4339e1fd 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -347,12 +347,12 @@ var/global/list/autolathe_recipes_hidden = list( \ New() ..() component_parts = list() - component_parts += new /obj/item/weapon/circuitboard/autolathe(src) - component_parts += new /obj/item/weapon/stock_parts/matter_bin(src) - component_parts += new /obj/item/weapon/stock_parts/matter_bin(src) - component_parts += new /obj/item/weapon/stock_parts/matter_bin(src) - component_parts += new /obj/item/weapon/stock_parts/manipulator(src) - component_parts += new /obj/item/weapon/stock_parts/console_screen(src) + component_parts += new /obj/item/weapon/circuitboard/autolathe(null) + component_parts += new /obj/item/weapon/stock_parts/matter_bin(null) + component_parts += new /obj/item/weapon/stock_parts/matter_bin(null) + component_parts += new /obj/item/weapon/stock_parts/matter_bin(null) + component_parts += new /obj/item/weapon/stock_parts/manipulator(null) + component_parts += new /obj/item/weapon/stock_parts/console_screen(null) RefreshParts() src.L = autolathe_recipes diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index 21b4645e918..223b3b9f970 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -24,14 +24,14 @@ /obj/machinery/clonepod/New() ..() component_parts = list() - component_parts += new /obj/item/weapon/circuitboard/clonepod(src) - component_parts += new /obj/item/weapon/stock_parts/scanning_module(src) - component_parts += new /obj/item/weapon/stock_parts/scanning_module(src) - component_parts += new /obj/item/weapon/stock_parts/manipulator(src) - component_parts += new /obj/item/weapon/stock_parts/manipulator(src) - component_parts += new /obj/item/weapon/stock_parts/console_screen(src) - component_parts += new /obj/item/weapon/cable_coil(src, 1) - component_parts += new /obj/item/weapon/cable_coil(src, 1) + component_parts += new /obj/item/weapon/circuitboard/clonepod(null) + component_parts += new /obj/item/weapon/stock_parts/scanning_module(null) + component_parts += new /obj/item/weapon/stock_parts/scanning_module(null) + component_parts += new /obj/item/weapon/stock_parts/manipulator(null) + component_parts += new /obj/item/weapon/stock_parts/manipulator(null) + component_parts += new /obj/item/weapon/stock_parts/console_screen(null) + component_parts += new /obj/item/weapon/cable_coil(null, 1) + component_parts += new /obj/item/weapon/cable_coil(null, 1) RefreshParts() /obj/machinery/clonepod/RefreshParts() diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index ebe0566804d..17b64808df7 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -162,7 +162,7 @@ to destroy them and players will be able to make replacements. */ /obj/item/weapon/circuitboard/destructive_analyzer name = "circuit board (Destructive Analyzer)" - build_path = "/obj/machinery/r_n_d/destructive_analyzer" + build_path = /obj/machinery/r_n_d/destructive_analyzer board_type = "machine" origin_tech = "magnets=2;engineering=2;programming=2" req_components = list( @@ -172,7 +172,7 @@ to destroy them and players will be able to make replacements. /obj/item/weapon/circuitboard/autolathe name = "circuit board (Autolathe)" - build_path = "/obj/machinery/autolathe" + build_path = /obj/machinery/autolathe board_type = "machine" origin_tech = "engineering=2;programming=2" req_components = list( @@ -182,7 +182,7 @@ to destroy them and players will be able to make replacements. /obj/item/weapon/circuitboard/protolathe name = "circuit board (Protolathe)" - build_path = "/obj/machinery/r_n_d/protolathe" + build_path = /obj/machinery/r_n_d/protolathe board_type = "machine" origin_tech = "engineering=2;programming=2" req_components = list( @@ -193,7 +193,7 @@ to destroy them and players will be able to make replacements. /obj/item/weapon/circuitboard/circuit_imprinter name = "circuit board (Circuit Imprinter)" - build_path = "/obj/machinery/r_n_d/circuit_imprinter" + build_path = /obj/machinery/r_n_d/circuit_imprinter board_type = "machine" origin_tech = "engineering=2;programming=2" req_components = list( @@ -203,7 +203,7 @@ to destroy them and players will be able to make replacements. /obj/item/weapon/circuitboard/pacman name = "circuit board (PACMAN-type Generator)" - build_path = "/obj/machinery/power/port_gen/pacman" + build_path = /obj/machinery/power/port_gen/pacman board_type = "machine" origin_tech = "programming=3:powerstorage=3;plasmatech=3;engineering=3" req_components = list( @@ -214,7 +214,7 @@ to destroy them and players will be able to make replacements. /obj/item/weapon/circuitboard/pacman/super name = "circuit board (SUPERPACMAN-type Generator)" - build_path = "/obj/machinery/power/port_gen/pacman/super" + build_path = /obj/machinery/power/port_gen/pacman/super origin_tech = "programming=3;powerstorage=4;engineering=4" /obj/item/weapon/circuitboard/pacman/mrs @@ -224,7 +224,7 @@ to destroy them and players will be able to make replacements. obj/item/weapon/circuitboard/rdserver name = "circuit board (R&D Server)" - build_path = "/obj/machinery/r_n_d/server" + build_path = /obj/machinery/r_n_d/server board_type = "machine" origin_tech = "programming=3" req_components = list( @@ -233,7 +233,7 @@ obj/item/weapon/circuitboard/rdserver /obj/item/weapon/circuitboard/mechfab name = "circuit board (Exosuit Fabricator)" - build_path = "/obj/machinery/mecha_part_fabricator" + build_path = /obj/machinery/mecha_part_fabricator board_type = "machine" origin_tech = "programming=3;engineering=3" req_components = list( @@ -244,7 +244,7 @@ obj/item/weapon/circuitboard/rdserver /obj/item/weapon/circuitboard/clonepod name = "circuit board (Clone Pod)" - build_path = "/obj/machinery/clonepod" + build_path = /obj/machinery/clonepod board_type = "machine" origin_tech = "programming=3;biotech=3" req_components = list( @@ -255,7 +255,7 @@ obj/item/weapon/circuitboard/rdserver /obj/item/weapon/circuitboard/clonescanner name = "circuit board (Cloning Scanner)" - build_path = "/obj/machinery/dna_scannernew" + build_path = /obj/machinery/dna_scannernew board_type = "machine" origin_tech = "programming=2;biotech=2" req_components = list( @@ -267,7 +267,7 @@ obj/item/weapon/circuitboard/rdserver /obj/item/weapon/circuitboard/cyborgrecharger name = "circuit board (Cyborg Recharger)" - build_path = "/obj/machinery/recharge_station" + build_path = /obj/machinery/recharge_station board_type = "machine" origin_tech = "powerstorage=3;engineering=3" req_components = list( @@ -279,7 +279,7 @@ obj/item/weapon/circuitboard/rdserver /obj/item/weapon/circuitboard/telecomms/receiver name = "circuit board (Subspace Receiver)" - build_path = "/obj/machinery/telecomms/receiver" + build_path = /obj/machinery/telecomms/receiver board_type = "machine" origin_tech = "programming=2;engineering=2;bluespace=1" req_components = list( @@ -290,7 +290,7 @@ obj/item/weapon/circuitboard/rdserver /obj/item/weapon/circuitboard/telecomms/hub name = "circuit board (Hub Mainframe)" - build_path = "/obj/machinery/telecomms/hub" + build_path = /obj/machinery/telecomms/hub board_type = "machine" origin_tech = "programming=2;engineering=2" req_components = list( @@ -300,7 +300,7 @@ obj/item/weapon/circuitboard/rdserver /obj/item/weapon/circuitboard/telecomms/relay name = "circuit board (Relay Mainframe)" - build_path = "/obj/machinery/telecomms/relay" + build_path = /obj/machinery/telecomms/relay board_type = "machine" origin_tech = "programming=2;engineering=2;bluespace=2" req_components = list( @@ -310,7 +310,7 @@ obj/item/weapon/circuitboard/rdserver /obj/item/weapon/circuitboard/telecomms/bus name = "circuit board (Bus Mainframe)" - build_path = "/obj/machinery/telecomms/bus" + build_path = /obj/machinery/telecomms/bus board_type = "machine" origin_tech = "programming=2;engineering=2" req_components = list( @@ -320,7 +320,7 @@ obj/item/weapon/circuitboard/rdserver /obj/item/weapon/circuitboard/telecomms/processor name = "circuit board (Processor Unit)" - build_path = "/obj/machinery/telecomms/processor" + build_path = /obj/machinery/telecomms/processor board_type = "machine" origin_tech = "programming=2;engineering=2" req_components = list( @@ -333,7 +333,7 @@ obj/item/weapon/circuitboard/rdserver /obj/item/weapon/circuitboard/telecomms/server name = "circuit board (Telecommunication Server)" - build_path = "/obj/machinery/telecomms/server" + build_path = /obj/machinery/telecomms/server board_type = "machine" origin_tech = "programming=2;engineering=2" req_components = list( @@ -343,7 +343,7 @@ obj/item/weapon/circuitboard/rdserver /obj/item/weapon/circuitboard/telecomms/broadcaster name = "circuit board (Subspace Broadcaster)" - build_path = "/obj/machinery/telecomms/broadcaster" + build_path = /obj/machinery/telecomms/broadcaster board_type = "machine" origin_tech = "programming=2;engineering=2;bluespace=1" req_components = list( diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm index 76dfa89f9e8..401acff9da5 100644 --- a/code/game/machinery/rechargestation.dm +++ b/code/game/machinery/rechargestation.dm @@ -20,11 +20,11 @@ /obj/machinery/recharge_station/New() ..() component_parts = list() - component_parts += new /obj/item/weapon/circuitboard/cyborgrecharger(src) - component_parts += new /obj/item/weapon/stock_parts/capacitor(src) - component_parts += new /obj/item/weapon/stock_parts/capacitor(src) - component_parts += new /obj/item/weapon/stock_parts/manipulator(src) - component_parts += new /obj/item/weapon/cell/high(src) + component_parts += new /obj/item/weapon/circuitboard/cyborgrecharger(null) + component_parts += new /obj/item/weapon/stock_parts/capacitor(null) + component_parts += new /obj/item/weapon/stock_parts/capacitor(null) + component_parts += new /obj/item/weapon/stock_parts/manipulator(null) + component_parts += new /obj/item/weapon/cell/high(null) RefreshParts() build_icon() diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index 864ff0f51d2..299ec78727f 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -133,12 +133,12 @@ /obj/machinery/mecha_part_fabricator/New() ..() component_parts = list() - component_parts += new /obj/item/weapon/circuitboard/mechfab(src) - component_parts += new /obj/item/weapon/stock_parts/matter_bin(src) - component_parts += new /obj/item/weapon/stock_parts/matter_bin(src) - component_parts += new /obj/item/weapon/stock_parts/manipulator(src) - component_parts += new /obj/item/weapon/stock_parts/micro_laser(src) - component_parts += new /obj/item/weapon/stock_parts/console_screen(src) + component_parts += new /obj/item/weapon/circuitboard/mechfab(null) + component_parts += new /obj/item/weapon/stock_parts/matter_bin(null) + component_parts += new /obj/item/weapon/stock_parts/matter_bin(null) + component_parts += new /obj/item/weapon/stock_parts/manipulator(null) + component_parts += new /obj/item/weapon/stock_parts/micro_laser(null) + component_parts += new /obj/item/weapon/stock_parts/console_screen(null) RefreshParts() // part_sets["Cyborg Upgrade Modules"] = typesof(/obj/item/borg/upgrade/) - /obj/item/borg/upgrade/ // Eh. This does it dymaically, but to support having the items referenced otherwhere in the code but not being constructable, going to do it manaully. diff --git a/code/modules/research/destructive_analyzer.dm b/code/modules/research/destructive_analyzer.dm index c0d7d862032..5aea5e32fd9 100644 --- a/code/modules/research/destructive_analyzer.dm +++ b/code/modules/research/destructive_analyzer.dm @@ -16,10 +16,10 @@ Note: Must be placed within 3 tiles of the R&D Console /obj/machinery/r_n_d/destructive_analyzer/New() ..() component_parts = list() - component_parts += new /obj/item/weapon/circuitboard/destructive_analyzer(src) - component_parts += new /obj/item/weapon/stock_parts/scanning_module(src) - component_parts += new /obj/item/weapon/stock_parts/manipulator(src) - component_parts += new /obj/item/weapon/stock_parts/micro_laser(src) + component_parts += new /obj/item/weapon/circuitboard/destructive_analyzer(null) + component_parts += new /obj/item/weapon/stock_parts/scanning_module(null) + component_parts += new /obj/item/weapon/stock_parts/manipulator(null) + component_parts += new /obj/item/weapon/stock_parts/micro_laser(null) RefreshParts() /obj/machinery/r_n_d/destructive_analyzer/RefreshParts() diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm index 4c4daca528d..ca14c2201d0 100644 --- a/code/modules/research/server.dm +++ b/code/modules/research/server.dm @@ -17,10 +17,10 @@ /obj/machinery/r_n_d/server/New() ..() component_parts = list() - component_parts += new /obj/item/weapon/circuitboard/rdserver(src) - component_parts += new /obj/item/weapon/stock_parts/scanning_module(src) - component_parts += new /obj/item/weapon/cable_coil(src, 1) - component_parts += new /obj/item/weapon/cable_coil(src, 1) + component_parts += new /obj/item/weapon/circuitboard/rdserver(null) + component_parts += new /obj/item/weapon/stock_parts/scanning_module(null) + component_parts += new /obj/item/weapon/cable_coil(null, 1) + component_parts += new /obj/item/weapon/cable_coil(null, 1) RefreshParts() src.initialize(); //Agouri From fb93b9ae4fbbf2ed7f150e9d9fb16a741ea6b5b4 Mon Sep 17 00:00:00 2001 From: Razharas Date: Wed, 25 Dec 2013 02:15:58 +0400 Subject: [PATCH 4/6] Mech fabricator tweak Now upgrading laser part to best quality doesnt reset time coeff back to initial level 4% cost reduction per laser quality level(8% total) -> 15% cost reduction per manipulator quality level(30% total) 4% time reduction per manipulator quality level(was broken) -> 25% time reduction per manipulator quality level(50% total) Made right part of fabricator window a bit wider, more convinient this way --- code/game/mecha/mech_fabricator.dm | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index 299ec78727f..37e5547b75a 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -162,18 +162,16 @@ T = 0 for(var/obj/item/weapon/stock_parts/micro_laser/Ma in component_parts) T += Ma.rating - if(T >= 1) - T -= 1 + T -= 1 var/diff - diff = round(initial(resource_coeff) - (initial(resource_coeff)*(T))/25,0.01) + diff = round(initial(resource_coeff) - (initial(resource_coeff)*(T))/6,0.01) if(resource_coeff!=diff) resource_coeff = diff T = 0 for(var/obj/item/weapon/stock_parts/manipulator/Ml in component_parts) T += Ml.rating - if(T>= 2) - T -= 2 - diff = round(initial(time_coeff) - (initial(time_coeff)*(T))/25,0.01) + T -= 1 + diff = round(initial(time_coeff) - (initial(time_coeff)*(T))/4,0.01) if(time_coeff!=diff) time_coeff = diff @@ -358,6 +356,8 @@ src.being_built = new part.type(src) src.desc = "It's building [src.being_built]." src.remove_resources(part) + part.m_amt = get_resource_cost_w_coeff(part,"metal") + part.g_amt = get_resource_cost_w_coeff(part,"glass") src.overlays += "fab-active" src.use_power = 2 src.updateUsrDialog() @@ -581,10 +581,10 @@ - - From 579be8953f325eacc6ca321fa7bf1b38b5ac14ef Mon Sep 17 00:00:00 2001 From: Razharas Date: Mon, 30 Dec 2013 03:56:45 +0400 Subject: [PATCH 5/6] Tweak of destructive analyzer and span classes Now instead of flat out refusing low reliability things it will be able to take them inside and show the potential technology and reliability level It will also be able to deconstruct them, but if reliability is too low it will show you that usual message but in the console window instead of chat Changed all the \red to span class in destructive analyzer's file --- code/modules/research/destructive_analyzer.dm | 15 ++++++--------- code/modules/research/rdconsole.dm | 15 ++++++++++++--- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/code/modules/research/destructive_analyzer.dm b/code/modules/research/destructive_analyzer.dm index 5aea5e32fd9..7cca1ef967f 100644 --- a/code/modules/research/destructive_analyzer.dm +++ b/code/modules/research/destructive_analyzer.dm @@ -53,32 +53,29 @@ Note: Must be placed within 3 tiles of the R&D Console default_deconstruction_crowbar() return 1 else - user << "\red You can't load the [src.name] while it's opened." + user << "You can't load the [src.name] while it's opened." return 1 if (disabled) return if (!linked_console) - user << "\red The protolathe must be linked to an R&D console first!" + user << "The protolathe must be linked to an R&D console first!" return if (busy) - user << "\red The protolathe is busy right now." + user << " The protolathe is busy right now." return if (istype(O, /obj/item) && !loaded_item) if(!O.origin_tech) - user << "\red This doesn't seem to have a tech origin!" + user << " This doesn't seem to have a tech origin!" return var/list/temp_tech = ConvertReqString2List(O.origin_tech) if (temp_tech.len == 0) - user << "\red You cannot deconstruct this item!" - return - if(O.reliability < (99-(decon_mod*3)) && O.crit_fail == 0) - usr << "\red Item is neither reliable enough or broken enough to learn from." + user << " You cannot deconstruct this item!" return busy = 1 loaded_item = O user.drop_item() O.loc = src - user << "\blue You add the [O.name] to the machine!" + user << "You add the [O.name] to the machine!" flick("d_analyzer_la", src) spawn(10) icon_state = "d_analyzer_l" diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index ac9743cd52e..587c71c94d9 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -256,16 +256,21 @@ won't update every console in existence) but it's more of a hassle to do. Also, usr <<"\red The destructive analyzer appears to be empty." screen = 1.0 return - if(linked_destroy.loaded_item.reliability >= 99 - (linked_destroy.decon_mod * 3)) + if((linked_destroy.loaded_item.reliability >= 99 - (linked_destroy.decon_mod * 3)) || linked_destroy.loaded_item.crit_fail) var/list/temp_tech = linked_destroy.ConvertReqString2List(linked_destroy.loaded_item.origin_tech) for(var/T in temp_tech) if(prob(linked_destroy.loaded_item.reliability)) files.UpdateTech(T, temp_tech[T]) files.UpdateDesigns(linked_destroy.loaded_item, temp_tech, src) + screen = 1.0 + else + screen = 2.3 if(linked_lathe) //Also sends salvaged materials to a linked protolathe, if any. linked_lathe.m_amount += min((linked_lathe.max_material_storage - linked_lathe.TotalMaterials()), (linked_destroy.loaded_item.m_amt*(linked_destroy.decon_mod/10))) linked_lathe.g_amount += min((linked_lathe.max_material_storage - linked_lathe.TotalMaterials()), (linked_destroy.loaded_item.g_amt*(linked_destroy.decon_mod/10))) linked_destroy.loaded_item = null + else + screen = 1.0 for(var/obj/I in linked_destroy.contents) for(var/mob/M in I.contents) M.death() @@ -282,7 +287,6 @@ won't update every console in existence) but it's more of a hassle to do. Also, del(I) linked_destroy.icon_state = "d_analyzer" use_power(250) - screen = 1.0 updateUsrDialog() else if(href_list["lock"]) //Lock the console from use by anyone without tox access. @@ -563,7 +567,9 @@ won't update every console in existence) but it's more of a hassle to do. Also, files.RefreshResearch() switch(screen) //A quick check to make sure you get the right screen when a device is disconnected. if(2 to 2.9) - if(linked_destroy == null) + if(screen == 2.3) + ; + else if(linked_destroy == null) screen = 2.0 else if(linked_destroy.loaded_item == null) screen = 2.1 @@ -718,6 +724,9 @@ won't update every console in existence) but it's more of a hassle to do. Also, dat += "* [CallTechName(T)] [temp_tech[T]]
" dat += "
Deconstruct Item || " dat += "Eject Item || " + if(2.3) + dat += "Item is neither reliable enough or broken enough to learn from.

" + dat += "Main Menu" /////////////////////PROTOLATHE SCREENS///////////////////////// if(3.0) From 06d1969fef5dc5054f025ca50389a225459ef2dc Mon Sep 17 00:00:00 2001 From: Razharas Date: Thu, 2 Jan 2014 09:27:51 +0400 Subject: [PATCH 6/6] Fixed some issues No more suicider cloning Added comments to the DNA and R&D wizardry Added CLONE_INITIAL_DAMAGE define for the ammount of clone and brain loss clones initially have in clonepod Removed debug garbage --- code/game/dna.dm | 14 +++++++------- code/game/machinery/cloning.dm | 12 ++++++++---- code/game/machinery/computer/cloning.dm | 2 +- code/modules/research/rdconsole.dm | 12 ++++++------ 4 files changed, 22 insertions(+), 18 deletions(-) diff --git a/code/game/dna.dm b/code/game/dna.dm index 7afa8eef26a..4e331c2d961 100644 --- a/code/game/dna.dm +++ b/code/game/dna.dm @@ -843,9 +843,9 @@ if(num && viable_occupant) num = Clamp(num, 1, NUMBER_OF_BUFFERS) var/list/buffer_slot = buffer[num] - if(istype(buffer_slot)) - viable_occupant.radiation += rand(15/(connected.damage_coeff ** 2),40/(connected.damage_coeff ** 2)) - switch(href_list["text"]) + if(istype(buffer_slot)) //15 and 40 are just magic numbers that were here before so i didnt touch them, they are initial boundaries of damage + viable_occupant.radiation += rand(15/(connected.damage_coeff ** 2),40/(connected.damage_coeff ** 2)) //Each laser level reduces damage by lvl^2, so no effect on 1 lvl, 4 times less damage on 2 and 9 times less damage on 3 + switch(href_list["text"]) //Numbers are this high because other way upgrading laser is just not worth the hassle, and i cant think of anything better to inmrove if("se") if(buffer_slot["SE"]) viable_occupant.dna.struc_enzymes = buffer_slot["SE"] @@ -914,13 +914,13 @@ current_screen = "mainmenu" if(viable_occupant && connected && connected.occupant==viable_occupant) - viable_occupant.radiation += (RADIATION_IRRADIATION_MULTIPLIER*radduration*radstrength)/(connected.damage_coeff ** 2) - switch(href_list["task"]) + viable_occupant.radiation += (RADIATION_IRRADIATION_MULTIPLIER*radduration*radstrength)/(connected.damage_coeff ** 2) //Read comment in "transferbuffer" section above for explanation + switch(href_list["task"]) //Same thing as there but values are even lower, on best part they are about 0.0*, effectively no damage if("pulseui") var/len = length(viable_occupant.dna.uni_identity) num = Wrap(num, 1, len+1) - num = randomize_radiation_accuracy(num, radduration + (connected.precision_coeff ** 2), len) - + num = randomize_radiation_accuracy(num, radduration + (connected.precision_coeff ** 2), len) //Each manipulator level above 1 makes randomization as accurate as selected time + manipulator lvl^2 + //Value is this high for the same reason as with laser - not worth the hassle of upgrading if the bonus is low var/block = round((num-1)/DNA_BLOCK_SIZE)+1 var/subblock = num - block*DNA_BLOCK_SIZE last_change = "UI #[block]-[subblock]; " diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index 223b3b9f970..a1fbdcb16c0 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -3,6 +3,9 @@ //Potential replacement for genetics revives or something I dunno (?) +#define CLONE_INITIAL_DAMAGE 190 //Clones in clonepods start with 190 cloneloss damage and 190 brainloss damage, thats just logical + + /obj/machinery/clonepod anchored = 1 name = "cloning pod" @@ -159,8 +162,8 @@ src.icon_state = "pod_1" //Get the clone body ready - H.adjustCloneLoss(190) //new damage var so you can't eject a clone early then stab them to abuse the current damage system --NeoFite - H.adjustBrainLoss(190) + H.adjustCloneLoss(CLONE_INITIAL_DAMAGE ) //Yeah, clones start with very low health, not with random, because why would they start with random health + H.adjustBrainLoss(CLONE_INITIAL_DAMAGE ) H.Paralyse(4) //Here let's calculate their health so the pod doesn't immediately eject them!!! @@ -222,7 +225,6 @@ return else if(src.occupant.cloneloss > (100 - src.heal_level)) - world.log << "This works" src.occupant.Paralyse(4) //Slowly get that clone healed and finished. @@ -443,4 +445,6 @@ /* EMP grenade/spell effect if(istype(A, /obj/machinery/clonepod)) A:malfunction() -*/ \ No newline at end of file +*/ + +#undef CLONE_INITIAL_DAMAGE \ No newline at end of file diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm index c83680469cc..3cdb28b5be2 100644 --- a/code/game/machinery/computer/cloning.dm +++ b/code/game/machinery/computer/cloning.dm @@ -349,7 +349,7 @@ if (!subject.getorgan(/obj/item/organ/brain)) scantemp = "No signs of intelligence detected." return - if (subject.suiciding == 1 && src.scanner.scan_level < 2) + if (subject.suiciding == 1) scantemp = "Subject's brain is not responding to scanning stimuli." return if (NOCLONE in subject.mutations && src.scanner.scan_level < 2) diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index 587c71c94d9..5da7d4c1adf 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -259,12 +259,12 @@ won't update every console in existence) but it's more of a hassle to do. Also, if((linked_destroy.loaded_item.reliability >= 99 - (linked_destroy.decon_mod * 3)) || linked_destroy.loaded_item.crit_fail) var/list/temp_tech = linked_destroy.ConvertReqString2List(linked_destroy.loaded_item.origin_tech) for(var/T in temp_tech) - if(prob(linked_destroy.loaded_item.reliability)) - files.UpdateTech(T, temp_tech[T]) - files.UpdateDesigns(linked_destroy.loaded_item, temp_tech, src) - screen = 1.0 - else - screen = 2.3 + if(prob(linked_destroy.loaded_item.reliability)) //If deconstructed item is not reliable enough its just being wasted, else it is pocessed + files.UpdateTech(T, temp_tech[T]) //Check if deconstructed item has research levels higher/same/one less than current ones + files.UpdateDesigns(linked_destroy.loaded_item, temp_tech, src) //If if such reseach type found all the known designs are checked for having this research type in them + screen = 1.0 //If design have it it gains some reliability + else //Same design always gain quality + screen = 2.3 //Crit fail gives the same design a lot of reliability, like really a lot if(linked_lathe) //Also sends salvaged materials to a linked protolathe, if any. linked_lathe.m_amount += min((linked_lathe.max_material_storage - linked_lathe.TotalMaterials()), (linked_destroy.loaded_item.m_amt*(linked_destroy.decon_mod/10))) linked_lathe.g_amount += min((linked_lathe.max_material_storage - linked_lathe.TotalMaterials()), (linked_destroy.loaded_item.g_amt*(linked_destroy.decon_mod/10)))
+ [left_part] + [list_queue()]