mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-14 02:43:16 +00:00
DNA scanner: Laser quality lessens the irradiation Manipulator quality drastically improves the precision(9 times with best part) Scanner quality allows to scan suiciders/ling husks, best part enables cloner's autoprocess button, making it scan people in the scanner automatically Clone pod: Manipulator quality improves the speed of cloning Scanning module quality affects with how much health people will be ejected, will they get negative mutation/no mutations/clean of all mutations/random good mutation, at best quality will enable clone console's autoprocess button and will try to clone all the dead people in records automatically, together with best DNA scanner parts cloning console will be able to work in full automatic regime autoscanning people and autocloning them Borg recharger: Capacitors' quality and powercell max charge affect the speed at which borgs recharge Manipulator quality allows borg to be slowly repaired while inside the recharges, best manipulator allows even fire damage to be slowly repaired Portable power generators: Capacitors' quality produce more power Better lasers consume less fuel and reduce heat production PACMAN with best parts can keep whole station powered with about sheet of plamsa per minute(approximately, wasnt potent enough to test) Protolathe: Manipulators quality affects the cost of things(they will also have less m_amt and g_amt to prevent production of infinity metal), best manipulators reduces the cost 5 times (!) Imprinter: Manipulator quality affects the cost, best manipulator reduce cost(acid insluded) 4 times, i.e. 20 boards per 100 units of acid Destructive analyzer: Better parts allow items with less reliability in Redone how reliability is handled, you now see item reliability in the deconstruction menu and deconstructing items that has same or one point less research type level will rise the reliability of all known designs that has one or more research type requarements as the deconstructed item Designs of the same type raise in reliability more Removed reliability_base and reliability_mod completely because they served no purpose Critically broken things rise reliability of the design drastically Whole reliability system is not used a lot but now at least on the R&D part it finally matters Didnt touch telecomms machinery, R&D code is messy but tcomms is just another level, im not high enough to touch it yet Most of things except for pacman are tested ingame, no bugs/runtimes detected
131 lines
4.7 KiB
Plaintext
131 lines
4.7 KiB
Plaintext
/*///////////////Circuit Imprinter (By Darem)////////////////////////
|
|
Used to print new circuit boards (for computers and similar systems) and AI modules. Each circuit board pattern are stored in
|
|
a /datum/desgin on the linked R&D console. You can then print them out in a fasion similar to a regular lathe. However, instead of
|
|
using metal and glass, it uses glass and reagents (usually sulfuric acis).
|
|
|
|
*/
|
|
/obj/machinery/r_n_d/circuit_imprinter
|
|
name = "Circuit Imprinter"
|
|
icon_state = "circuit_imprinter"
|
|
flags = OPENCONTAINER
|
|
|
|
var/g_amount = 0
|
|
var/gold_amount = 0
|
|
var/diamond_amount = 0
|
|
var/max_material_amount = 75000.0
|
|
var/efficiency_coeff
|
|
|
|
New()
|
|
..()
|
|
component_parts = list()
|
|
component_parts += new /obj/item/weapon/circuitboard/circuit_imprinter(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/reagent_containers/glass/beaker(src)
|
|
component_parts += new /obj/item/weapon/reagent_containers/glass/beaker(src)
|
|
RefreshParts()
|
|
|
|
RefreshParts()
|
|
var/T = 0
|
|
for(var/obj/item/weapon/reagent_containers/glass/G in component_parts)
|
|
T += G.reagents.maximum_volume
|
|
var/datum/reagents/R = new/datum/reagents(T) //Holder for the reagents used as materials.
|
|
reagents = R
|
|
R.my_atom = src
|
|
T = 0
|
|
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))
|
|
del(src)
|
|
|
|
meteorhit()
|
|
del(src)
|
|
return
|
|
|
|
proc/TotalMaterials()
|
|
return g_amount + gold_amount + diamond_amount
|
|
|
|
attackby(var/obj/item/O as obj, var/mob/user as mob)
|
|
if (shocked)
|
|
shock(user,50)
|
|
if (istype(O, /obj/item/weapon/screwdriver))
|
|
if(linked_console)
|
|
linked_console.linked_imprinter = null
|
|
linked_console = null
|
|
default_deconstruction_screwdriver(user, "circuit_imprinter_t", "circuit_imprinter")
|
|
return
|
|
if (panel_open)
|
|
if(istype(O, /obj/item/weapon/crowbar))
|
|
playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1)
|
|
var/obj/machinery/constructable_frame/machine_frame/M = new /obj/machinery/constructable_frame/machine_frame(src.loc)
|
|
M.state = 2
|
|
M.icon_state = "box_1"
|
|
for(var/obj/I in component_parts)
|
|
if(istype(I, /obj/item/weapon/reagent_containers/glass/beaker))
|
|
reagents.trans_to(I, reagents.total_volume)
|
|
if(I.reliability != 100 && crit_fail)
|
|
I.crit_fail = 1
|
|
I.loc = src.loc
|
|
if(g_amount >= 3750)
|
|
var/obj/item/stack/sheet/glass/G = new /obj/item/stack/sheet/glass(src.loc)
|
|
G.amount = round(g_amount / 3750)
|
|
if(gold_amount >= 2000)
|
|
var/obj/item/stack/sheet/mineral/gold/G = new /obj/item/stack/sheet/mineral/gold(src.loc)
|
|
G.amount = round(gold_amount / 2000)
|
|
if(diamond_amount >= 2000)
|
|
var/obj/item/stack/sheet/mineral/diamond/G = new /obj/item/stack/sheet/mineral/diamond(src.loc)
|
|
G.amount = round(diamond_amount / 2000)
|
|
del(src)
|
|
return
|
|
else
|
|
user << "\red You can't load the [src.name] while it's opened."
|
|
return
|
|
if (disabled)
|
|
return
|
|
if (!linked_console)
|
|
user << "\The [name] must be linked to an R&D console first!"
|
|
return
|
|
if (O.is_open_container())
|
|
return
|
|
if (!istype(O, /obj/item/stack/sheet/glass) && !istype(O, /obj/item/stack/sheet/mineral/gold) && !istype(O, /obj/item/stack/sheet/mineral/diamond))
|
|
user << "\red You cannot insert this item into the [name]!"
|
|
return
|
|
if (stat)
|
|
return
|
|
if (busy)
|
|
user << "\red The [name] is busy. Please wait for completion of previous operation."
|
|
return
|
|
var/obj/item/stack/sheet/stack = O
|
|
if ((TotalMaterials() + stack.perunit) > max_material_amount)
|
|
user << "\red The [name] is full. Please remove glass from the protolathe in order to insert more."
|
|
return
|
|
|
|
var/amount = round(input("How many sheets do you want to add?") as num)
|
|
if(amount < 0)
|
|
amount = 0
|
|
if(amount == 0)
|
|
return
|
|
if(amount > stack.amount)
|
|
amount = min(stack.amount, round((max_material_amount-TotalMaterials())/stack.perunit))
|
|
|
|
busy = 1
|
|
use_power(max(1000, (3750*amount/10)))
|
|
spawn(16)
|
|
user << "\blue You add [amount] sheets to the [src.name]."
|
|
if(istype(stack, /obj/item/stack/sheet/glass))
|
|
g_amount += amount * 3750
|
|
else if(istype(stack, /obj/item/stack/sheet/mineral/gold))
|
|
gold_amount += amount * 2000
|
|
else if(istype(stack, /obj/item/stack/sheet/mineral/diamond))
|
|
diamond_amount += amount * 2000
|
|
stack.use(amount)
|
|
busy = 0
|
|
src.updateUsrDialog()
|