diff --git a/code/game/dna.dm b/code/game/dna.dm index 04c6a091e5a..4e331c2d961 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%" @@ -828,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,40) - 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"] @@ -899,13 +914,13 @@ current_screen = "mainmenu" if(viable_occupant && connected && connected.occupant==viable_occupant) - viable_occupant.radiation += RADIATION_IRRADIATION_MULTIPLIER*radduration*radstrength - 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, 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/autolathe.dm b/code/game/machinery/autolathe.dm index 6a31eb60051..16f4339e1fd 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,21 +335,24 @@ 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() ..() 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 2498538e4f2..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" @@ -18,19 +21,30 @@ 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() ..() 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() + 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 +146,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 +162,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(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!!! @@ -178,7 +190,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 +224,14 @@ src.connected_message("Clone Rejected: Deceased.") return - else if(src.occupant.cloneloss > src.heal_level) + else if(src.occupant.cloneloss > (100 - src.heal_level)) 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 +240,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 +368,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) @@ -427,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 5400185bd75..3cdb28b5be2 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) @@ -325,7 +352,7 @@ if (subject.suiciding == 1) 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/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 2f30bef8818..401acff9da5 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(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() +/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/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index c985f93d0d1..1efaf3e2498 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. @@ -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 @@ - - 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..6adcad7b422 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 @@ -75,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)" @@ -84,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)" @@ -93,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)" @@ -102,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)" @@ -111,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)" @@ -120,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)" @@ -129,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)" @@ -138,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)" @@ -147,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)" @@ -156,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)" @@ -165,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)" @@ -174,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)" @@ -183,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)" @@ -192,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)" @@ -201,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)" @@ -221,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)" @@ -230,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)" @@ -239,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)" @@ -248,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)" @@ -257,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)" @@ -266,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)" @@ -275,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)" @@ -284,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)" @@ -293,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)" @@ -302,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)" @@ -311,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)" @@ -320,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)" @@ -329,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)" @@ -338,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)" @@ -347,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)" @@ -356,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)" @@ -365,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)" @@ -374,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)" @@ -383,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////////// @@ -395,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)" @@ -404,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)" @@ -413,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)" @@ -422,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)" @@ -431,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)" @@ -440,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)" @@ -449,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)" @@ -458,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)" @@ -467,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)" @@ -476,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)" @@ -485,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.)" @@ -494,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.)" @@ -503,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 @@ -517,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)" @@ -526,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)" @@ -535,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)" @@ -544,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)" @@ -553,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)" @@ -562,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)" @@ -571,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 /////////////////////////////////// @@ -585,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" @@ -594,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/////// @@ -607,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)" @@ -616,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)" @@ -625,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)" @@ -634,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)" @@ -643,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)" @@ -652,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)" @@ -661,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)" @@ -670,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)" @@ -679,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)" @@ -688,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)" @@ -697,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)" @@ -706,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)" @@ -715,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 ///////////// @@ -727,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 @@ -736,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 @@ -745,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 @@ -754,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 @@ -763,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 @@ -772,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 @@ -781,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 @@ -790,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 @@ -799,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 @@ -808,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 @@ -826,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 @@ -835,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 @@ -844,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 @@ -853,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 @@ -862,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 @@ -871,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" @@ -885,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" @@ -894,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//////////////// @@ -907,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" @@ -916,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" @@ -925,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" @@ -934,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" @@ -943,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" @@ -952,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" @@ -961,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" @@ -970,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" @@ -979,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" @@ -988,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,9 +974,9 @@ 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" + build_path = /obj/item/weapon/stock_parts/capacitor/super datum/design/phasic_scanning name = "Phasic Scanning Module" @@ -1007,8 +985,8 @@ 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 - build_path = "/obj/item/weapon/stock_parts/scanning_module/phasic" + reliability = 72 + build_path = /obj/item/weapon/stock_parts/scanning_module/phasic datum/design/pico_mani name = "Pico Manipulator" @@ -1017,8 +995,8 @@ datum/design/pico_mani req_tech = list("materials" = 5, "programming" = 2) build_type = PROTOLATHE materials = list("$metal" = 30) - reliability_base = 73 - build_path = "/obj/item/weapon/stock_parts/manipulator/pico" + reliability = 73 + build_path = /obj/item/weapon/stock_parts/manipulator/pico datum/design/ultra_micro_laser name = "Ultra-High-Power Micro-Laser" @@ -1027,8 +1005,8 @@ 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 - build_path = "/obj/item/weapon/stock_parts/micro_laser/ultra" + reliability = 70 + build_path = /obj/item/weapon/stock_parts/micro_laser/ultra datum/design/super_matter_bin name = "Super Matter Bin" @@ -1037,8 +1015,8 @@ datum/design/super_matter_bin req_tech = list("materials" = 5) build_type = PROTOLATHE materials = list("$metal" = 80) - reliability_base = 75 - build_path = "/obj/item/weapon/stock_parts/matter_bin/super" + reliability = 75 + build_path = /obj/item/weapon/stock_parts/matter_bin/super @@ -1049,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" @@ -1058,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" @@ -1067,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" @@ -1076,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" @@ -1085,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" @@ -1094,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" @@ -1103,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///////////////// @@ -1116,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 @@ -1126,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 @@ -1134,10 +1112,10 @@ 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" + build_path = /obj/item/weapon/cell/super category = "Misc" datum/design/hyper_cell @@ -1145,10 +1123,10 @@ 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" + build_path = /obj/item/weapon/cell/hyper category = "Misc" datum/design/light_replacer @@ -1158,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/////////////// @@ -1171,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" @@ -1180,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" @@ -1189,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" @@ -1198,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" @@ -1207,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" @@ -1216,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" @@ -1225,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 @@ -1235,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,9 +1225,9 @@ 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" + build_path = /obj/item/weapon/circuitboard/pacman datum/design/superpacman name = "SUPERPACMAN-type Generator Board" @@ -1257,9 +1235,9 @@ 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" + build_path = /obj/item/weapon/circuitboard/pacman/super datum/design/mrspacman name = "MRSPACMAN-type Generator Board" @@ -1267,9 +1245,9 @@ 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" + build_path = /obj/item/weapon/circuitboard/pacman/mrs ///////////////////////////////////////// @@ -1283,8 +1261,8 @@ datum/design/mass_spectrometer req_tech = list("biotech" = 2, "magnets" = 2) build_type = PROTOLATHE materials = list("$metal" = 30, "$glass" = 20) - reliability_base = 76 - build_path = "/obj/item/device/mass_spectrometer" + reliability = 76 + build_path = /obj/item/device/mass_spectrometer datum/design/adv_mass_spectrometer name = "Advanced Mass-Spectrometer" @@ -1293,8 +1271,8 @@ datum/design/adv_mass_spectrometer req_tech = list("biotech" = 2, "magnets" = 4) build_type = PROTOLATHE materials = list("$metal" = 30, "$glass" = 20) - reliability_base = 74 - build_path = "/obj/item/device/mass_spectrometer/adv" + reliability = 74 + build_path = /obj/item/device/mass_spectrometer/adv datum/design/mmi name = "Man-Machine Interface" @@ -1303,8 +1281,8 @@ datum/design/mmi req_tech = list("programming" = 2, "biotech" = 3) build_type = PROTOLATHE | MECHFAB materials = list("$metal" = 1000, "$glass" = 500) - reliability_base = 76 - build_path = "/obj/item/device/mmi" + reliability = 76 + build_path = /obj/item/device/mmi category = "Misc" datum/design/mmi_radio @@ -1314,8 +1292,8 @@ datum/design/mmi_radio req_tech = list("programming" = 2, "biotech" = 4) build_type = PROTOLATHE | MECHFAB materials = list("$metal" = 1200, "$glass" = 500) - reliability_base = 74 - build_path = "/obj/item/device/mmi/radio_enabled" + reliability = 74 + build_path = /obj/item/device/mmi/radio_enabled category = "Misc" datum/design/synthetic_flash @@ -1325,8 +1303,8 @@ datum/design/synthetic_flash req_tech = list("magnets" = 3, "combat" = 2) build_type = MECHFAB materials = list("$metal" = 750, "$glass" = 750) - reliability_base = 76 - build_path = "/obj/item/device/flash/synthetic" + reliability = 76 + build_path = /obj/item/device/flash/synthetic category = "Misc" datum/design/bluespacebeaker @@ -1336,8 +1314,8 @@ datum/design/bluespacebeaker req_tech = list("bluespace" = 2, "materials" = 6) build_type = PROTOLATHE materials = list("$metal" = 3000, "$plasma" = 3000, "$diamond" = 500) - reliability_base = 76 - build_path = "/obj/item/weapon/reagent_containers/glass/beaker/bluespace" + reliability = 76 + build_path = /obj/item/weapon/reagent_containers/glass/beaker/bluespace category = "Misc" datum/design/noreactbeaker @@ -1347,8 +1325,8 @@ datum/design/noreactbeaker req_tech = list("materials" = 2) build_type = PROTOLATHE materials = list("$metal" = 3000) - reliability_base = 76 - build_path = "/obj/item/weapon/reagent_containers/glass/beaker/noreact" + reliability = 76 + build_path = /obj/item/weapon/reagent_containers/glass/beaker/noreact category = "Misc" ///////////////////////////////////////// @@ -1362,8 +1340,8 @@ 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 - build_path = "/obj/item/weapon/gun/energy/gun/nuclear" + reliability = 76 + build_path = /obj/item/weapon/gun/energy/gun/nuclear locked = 1 datum/design/stunrevolver @@ -1373,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 @@ -1383,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 @@ -1393,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 @@ -1403,8 +1381,8 @@ 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 - build_path = "/obj/item/weapon/chemsprayer" + reliability = 100 + build_path = /obj/item/weapon/chemsprayer" */ datum/design/rapidsyringe name = "Rapid Syringe Gun" @@ -1413,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" @@ -1422,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" @@ -1431,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 @@ -1441,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" @@ -1450,8 +1428,8 @@ datum/design/large_grenade req_tech = list("combat" = 3, "materials" = 2) build_type = PROTOLATHE materials = list("$metal" = 3000) - reliability_base = 79 - build_path = "/obj/item/weapon/grenade/chem_grenade/large" + reliability = 79 + build_path = /obj/item/weapon/grenade/chem_grenade/large datum/design/smg name = "Submachine Gun" @@ -1460,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 @@ -1470,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 @@ -1480,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)" @@ -1489,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" @@ -1498,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////////////////// @@ -1511,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" @@ -1520,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" @@ -1529,8 +1507,8 @@ 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 - build_path = "/obj/item/weapon/pickaxe/plasmacutter" + reliability = 79 + build_path = /obj/item/weapon/pickaxe/plasmacutter datum/design/pick_diamond name = "Diamond Pickaxe" @@ -1539,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" @@ -1548,8 +1526,8 @@ 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 - build_path = "/obj/item/weapon/pickaxe/diamonddrill" + reliability = 79 + build_path = /obj/item/weapon/pickaxe/diamonddrill datum/design/mesons name = "Optical Meson Scanners" @@ -1558,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///////////////// @@ -1571,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" @@ -1580,8 +1558,8 @@ 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 - build_path = "/obj/item/weapon/storage/backpack/holding" + reliability = 80 + build_path = /obj/item/weapon/storage/backpack/holding datum/design/bluespace_crystal name = "Artificial Bluespace Crystal" @@ -1590,8 +1568,8 @@ datum/design/bluespace_crystal req_tech = list("bluespace" = 4, "materials" = 6) build_type = PROTOLATHE materials = list("$diamond" = 1500, "$plasma" = 1500) - reliability_base = 100 - build_path = "/obj/item/bluespace_crystal/artificial" + reliability = 100 + build_path = /obj/item/bluespace_crystal/artificial ///////////////////////////////////////// /////////////////HUDs//////////////////// @@ -1604,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" @@ -1613,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 ///////////////////////////////////////// @@ -1627,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// @@ -1658,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" ///////////////////////////////////////// @@ -1673,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 diff --git a/code/modules/research/destructive_analyzer.dm b/code/modules/research/destructive_analyzer.dm index 64601cf03de..7cca1ef967f 100644 --- a/code/modules/research/destructive_analyzer.dm +++ b/code/modules/research/destructive_analyzer.dm @@ -16,17 +16,16 @@ 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() 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() @@ -54,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 destructive analyzer 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 destructive analyzer 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 < 90 && O.crit_fail == 0) - usr << "\red Item is neither reliable enough nor 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/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..5da7d4c1adf 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 >= 90) + 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) - 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)) //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)) - 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 + 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. @@ -326,6 +330,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 +356,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 +383,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 +397,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 +417,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 +540,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(..()) @@ -560,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 @@ -708,12 +717,16 @@ 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) 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) @@ -727,32 +740,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 +854,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..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 @@ -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()
+ [left_part] + [list_queue()]