[MIRROR] Stock Part Datumization Complete [MDB IGNORE] (#18639)

* Stock Part Datumization Complete (#72559)

So i accidently reverted all my commits in #72511 when resolving a merge
conflict So ummm yeah fuck my bad anyway

Finishes what was started in #71693 and completes the
[initiative](https://github.com/tgstation/dev-cycles-initiative/issues/1)

Except for `obj/item/stock_parts/cell` and its subtypes. All machines
now use `datum/stock_part` for its requested components & component
parts

Not sure if i caught every machine & stuff in the game so merge with
caution
🆑
code: datum stock part for every obj stock part
refactor: all machines & dependent experiments to use datum stock parts
/🆑

* Fixes a teeny tiny Funce mistake :)

Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
This commit is contained in:
SkyratBot
2023-01-19 23:09:19 +01:00
committed by GitHub
parent 666ec11b53
commit 902caab964
55 changed files with 534 additions and 407 deletions
@@ -267,8 +267,8 @@
var/delay_multiplier = 6.7 // magic number from wheelchair code
var/obj/vehicle/ridden/wheelchair/motorized/our_chair = parent
for(var/obj/item/stock_parts/manipulator/M in our_chair.contents)
speed += M.rating
for(var/datum/stock_part/manipulator/manipulator in our_chair.component_parts)
speed += manipulator.tier
vehicle_move_delay = round(CONFIG_GET(number/movedelay/run_delay) * delay_multiplier) / speed
return ..()
+4 -4
View File
@@ -340,14 +340,14 @@
/obj/machinery/autolathe/RefreshParts()
. = ..()
var/mat_capacity = 0
for(var/obj/item/stock_parts/matter_bin/new_matter_bin in component_parts)
mat_capacity += new_matter_bin.rating*75000
for(var/datum/stock_part/matter_bin/new_matter_bin in component_parts)
mat_capacity += new_matter_bin.tier * 75000
var/datum/component/material_container/materials = GetComponent(/datum/component/material_container)
materials.max_amount = mat_capacity
var/efficiency=1.8
for(var/obj/item/stock_parts/manipulator/new_manipulator in component_parts)
efficiency -= new_manipulator.rating*0.2
for(var/datum/stock_part/manipulator/new_manipulator in component_parts)
efficiency -= new_manipulator.tier * 0.2
creation_efficiency = max(1,efficiency) // creation_efficiency goes 1.6 -> 1.4 -> 1.2 -> 1 per level of manipulator efficiency
/obj/machinery/autolathe/examine(mob/user)
+2 -2
View File
@@ -135,8 +135,8 @@
/obj/machinery/cell_charger/RefreshParts()
. = ..()
charge_rate = 250
for(var/obj/item/stock_parts/capacitor/C in component_parts)
charge_rate *= C.rating
for(var/datum/stock_part/capacitor/capacitor in component_parts)
charge_rate *= capacitor.tier
/obj/machinery/cell_charger/process(delta_time)
if(!charging || !anchored || (machine_stat & (BROKEN|NOPOWER)))
@@ -268,7 +268,6 @@
new_machine.circuit.moveToNullspace()
QDEL_NULL(new_machine.circuit)
for(var/obj/old_part in new_machine.component_parts)
// Move to nullspace and delete.
old_part.moveToNullspace()
qdel(old_part)
+2 -2
View File
@@ -71,8 +71,8 @@
/obj/machinery/dish_drive/RefreshParts()
. = ..()
var/total_rating = 0
for(var/obj/item/stock_parts/S in component_parts)
total_rating += S.rating
for(var/datum/stock_part/stock_part in component_parts)
total_rating += stock_part.tier
if(total_rating >= 9)
update_mode_power_usage(ACTIVE_POWER_USE, 0)
else
+4 -4
View File
@@ -23,10 +23,10 @@
precision_coeff = 0
for(var/datum/stock_part/scanning_module/scanning_module in component_parts)
scan_level += scanning_module.tier
for(var/obj/item/stock_parts/matter_bin/M in component_parts)
precision_coeff = M.rating
for(var/obj/item/stock_parts/micro_laser/P in component_parts)
damage_coeff = P.rating
for(var/datum/stock_part/matter_bin/matter_bin in component_parts)
precision_coeff = matter_bin.tier
for(var/datum/stock_part/micro_laser/micro_laser in component_parts)
damage_coeff = micro_laser.tier
/obj/machinery/dna_scannernew/examine(mob/user)
. = ..()
+2 -2
View File
@@ -39,8 +39,8 @@
/obj/machinery/fat_sucker/RefreshParts()
. = ..()
var/rating = 0
for(var/obj/item/stock_parts/micro_laser/L in component_parts)
rating += L.rating
for(var/datum/stock_part/micro_laser/micro_laser in component_parts)
rating += micro_laser.tier
bite_size = initial(bite_size) + rating * 2.5
nutrient_to_meat = initial(nutrient_to_meat) - rating * 5
+2 -2
View File
@@ -25,8 +25,8 @@
. = ..()
interval = 0
var/max_time = 40
for(var/obj/item/stock_parts/micro_laser/L in component_parts)
max_time -= L.rating
for(var/datum/stock_part/micro_laser/micro_laser in component_parts)
max_time -= micro_laser.tier
interval = max(max_time,1)
/obj/machinery/harvester/update_icon_state()
+2 -2
View File
@@ -209,8 +209,8 @@ Possible to do for anyone motivated enough:
/obj/machinery/holopad/RefreshParts()
. = ..()
var/holograph_range = 4
for(var/obj/item/stock_parts/capacitor/B in component_parts)
holograph_range += 1 * B.rating
for(var/datum/stock_part/capacitor/capacitor in component_parts)
holograph_range += 1 * capacitor.tier
holo_range = holograph_range
/obj/machinery/holopad/examine(mob/user)
+2 -2
View File
@@ -26,8 +26,8 @@
/obj/machinery/launchpad/RefreshParts()
. = ..()
var/max_range_multiplier = 0
for(var/obj/item/stock_parts/manipulator/M in component_parts)
max_range_multiplier += M.rating
for(var/datum/stock_part/manipulator/manipulator in component_parts)
max_range_multiplier += manipulator.tier
range = initial(range)
range *= max_range_multiplier
+2 -2
View File
@@ -255,8 +255,8 @@
reagents.maximum_volume += our_beaker.volume
our_beaker.reagents.trans_to(src, our_beaker.reagents.total_volume)
production_coefficient = 1.25
for(var/obj/item/stock_parts/manipulator/our_manipulator in component_parts)
production_coefficient -= our_manipulator.rating * 0.25
for(var/datum/stock_part/manipulator/our_manipulator in component_parts)
production_coefficient -= our_manipulator.tier * 0.25
production_coefficient = clamp(production_coefficient, 0, 1) // coefficient goes from 1 -> 0.75 -> 0.5 -> 0.25
/obj/machinery/limbgrower/examine(mob/user)
+2 -2
View File
@@ -41,8 +41,8 @@
/obj/machinery/medipen_refiller/RefreshParts()
. = ..()
var/new_volume = 100
for(var/obj/item/stock_parts/matter_bin/bin in component_parts)
new_volume += (100 * bin.rating)
for(var/datum/stock_part/matter_bin/matter_bin in component_parts)
new_volume += (100 * matter_bin.tier)
if(!reagents)
create_reagents(new_volume, TRANSPARENT)
reagents.maximum_volume = new_volume
+4 -4
View File
@@ -42,12 +42,12 @@
/obj/machinery/quantumpad/RefreshParts()
. = ..()
var/E = 0
for(var/obj/item/stock_parts/capacitor/C in component_parts)
E += C.rating
for(var/datum/stock_part/capacitor/capacitor in component_parts)
E += capacitor.tier
power_efficiency = E
E = 0
for(var/obj/item/stock_parts/manipulator/M in component_parts)
E += M.rating
for(var/datum/stock_part/manipulator/manipulator in component_parts)
E += manipulator.tier
teleport_speed = initial(teleport_speed)
teleport_speed -= (E*10)
teleport_cooldown = initial(teleport_cooldown)
+2 -2
View File
@@ -23,8 +23,8 @@
/obj/machinery/recharger/RefreshParts()
. = ..()
for(var/obj/item/stock_parts/capacitor/C in component_parts)
recharge_coeff = C.rating
for(var/datum/stock_part/capacitor/capacitor in component_parts)
recharge_coeff = capacitor.tier
/obj/machinery/recharger/examine(mob/user)
. = ..()
+6 -6
View File
@@ -35,12 +35,12 @@
. = ..()
recharge_speed = 0
repairs = 0
for(var/obj/item/stock_parts/capacitor/C in component_parts)
recharge_speed += C.rating * 100
for(var/obj/item/stock_parts/manipulator/M in component_parts)
repairs += M.rating - 1
for(var/obj/item/stock_parts/cell/C in component_parts)
recharge_speed *= C.maxcharge / 10000
for(var/datum/stock_part/capacitor/capacitor in component_parts)
recharge_speed += capacitor.tier * 100
for(var/datum/stock_part/manipulator/matter_bin in component_parts)
repairs += matter_bin.tier - 1
for(var/obj/item/stock_parts/cell/cell in component_parts)
recharge_speed *= cell.maxcharge / 10000
/obj/machinery/recharge_station/examine(mob/user)
. = ..()
+2 -2
View File
@@ -53,8 +53,8 @@
/obj/machinery/recycler/RefreshParts()
. = ..()
var/amt_made = 0
for(var/obj/item/stock_parts/manipulator/M in component_parts)
amt_made = 12.5 * M.rating //% of materials salvaged
for(var/datum/stock_part/manipulator/manipulator in component_parts)
amt_made = 12.5 * manipulator.tier //% of materials salvaged
amount_produced = min(50, amt_made) + 50
var/datum/component/butchering/butchering = GetComponent(/datum/component/butchering/recycler)
butchering.effectiveness = amount_produced
+4 -4
View File
@@ -64,14 +64,14 @@
/obj/machinery/sleeper/RefreshParts()
. = ..()
var/matterbin_rating
for(var/obj/item/stock_parts/matter_bin/matterbins in component_parts)
matterbin_rating += matterbins.rating
for(var/datum/stock_part/matter_bin/matterbins in component_parts)
matterbin_rating += matterbins.tier
efficiency = initial(efficiency) * matterbin_rating
min_health = initial(min_health) * matterbin_rating
available_chems.Cut()
for(var/obj/item/stock_parts/manipulator/manipulators in component_parts)
for(var/i in 1 to manipulators.rating)
for(var/datum/stock_part/manipulator/manipulators in component_parts)
for(var/i in 1 to manipulators.tier)
available_chems |= possible_chems[i]
reset_chem_buttons()
+8 -8
View File
@@ -158,10 +158,10 @@
. = ..()
var/laser = 0
var/cap = 0
for(var/obj/item/stock_parts/micro_laser/M in component_parts)
laser += M.rating
for(var/obj/item/stock_parts/capacitor/M in component_parts)
cap += M.rating
for(var/datum/stock_part/micro_laser/micro_laser in component_parts)
laser += micro_laser.tier
for(var/datum/stock_part/capacitor/capacitor in component_parts)
cap += capacitor.tier
heating_power = laser * 40000
@@ -445,10 +445,10 @@
. = ..()
var/lasers_rating = 0
var/capacitors_rating = 0
for(var/obj/item/stock_parts/micro_laser/laser in component_parts)
lasers_rating += laser.rating
for(var/obj/item/stock_parts/capacitor/capacitor in component_parts)
capacitors_rating += capacitor.rating
for(var/datum/stock_part/micro_laser/laser in component_parts)
lasers_rating += laser.tier
for(var/datum/stock_part/capacitor/capacitor in component_parts)
capacitors_rating += capacitor.tier
heating_power = lasers_rating * 20000
+4 -4
View File
@@ -26,8 +26,8 @@
/obj/machinery/teleport/hub/RefreshParts()
. = ..()
var/A = 0
for(var/obj/item/stock_parts/matter_bin/M in component_parts)
A += M.rating
for(var/datum/stock_part/matter_bin/matter_bin in component_parts)
A += matter_bin.tier
accuracy = A
/obj/machinery/teleport/hub/examine(mob/user)
@@ -142,8 +142,8 @@
/obj/machinery/teleport/station/RefreshParts()
. = ..()
var/E
for(var/obj/item/stock_parts/capacitor/C in component_parts)
E += C.rating
for(var/datum/stock_part/capacitor/C in component_parts)
E += C.tier
efficiency = E - 1
/obj/machinery/teleport/station/examine(mob/user)
@@ -6,7 +6,7 @@
build_path = /obj/machinery/bsa/back //No freebies!
specific_parts = TRUE
req_components = list(
/obj/item/stock_parts/capacitor/quadratic = 5,
/datum/stock_part/capacitor/quadratic = 5,
/obj/item/stack/cable_coil = 2)
/obj/item/circuitboard/machine/bsa/front
@@ -15,7 +15,7 @@
build_path = /obj/machinery/bsa/front
specific_parts = TRUE
req_components = list(
/obj/item/stock_parts/manipulator/femto = 5,
/datum/stock_part/manipulator/femto = 5,
/obj/item/stack/cable_coil = 2)
/obj/item/circuitboard/machine/bsa/middle
@@ -32,8 +32,8 @@
build_path = /obj/machinery/dna_vault //No freebies!
specific_parts = TRUE
req_components = list(
/obj/item/stock_parts/capacitor/super = 5,
/obj/item/stock_parts/manipulator/pico = 5,
/datum/stock_part/capacitor/super = 5,
/datum/stock_part/manipulator/pico = 5,
/obj/item/stack/cable_coil = 2)
//Engineering
@@ -51,15 +51,15 @@
greyscale_colors = CIRCUIT_COLOR_ENGINEERING
build_path = /obj/machinery/autolathe
req_components = list(
/obj/item/stock_parts/matter_bin = 3,
/obj/item/stock_parts/manipulator = 1,
/datum/stock_part/matter_bin = 3,
/datum/stock_part/manipulator = 1,
/obj/item/stack/sheet/glass = 1)
/obj/item/circuitboard/machine/grounding_rod
name = "Grounding Rod"
greyscale_colors = CIRCUIT_COLOR_ENGINEERING
build_path = /obj/machinery/power/energy_accumulator/grounding_rod
req_components = list(/obj/item/stock_parts/capacitor = 1)
req_components = list(/datum/stock_part/capacitor = 1)
needs_anchored = FALSE
@@ -68,92 +68,92 @@
greyscale_colors = CIRCUIT_COLOR_ENGINEERING
build_path = /obj/machinery/telecomms/broadcaster
req_components = list(
/obj/item/stock_parts/manipulator = 2,
/datum/stock_part/manipulator = 2,
/obj/item/stack/cable_coil = 1,
/obj/item/stock_parts/subspace/filter = 1,
/obj/item/stock_parts/subspace/crystal = 1,
/obj/item/stock_parts/micro_laser = 2)
/datum/stock_part/filter = 1,
/datum/stock_part/crystal = 1,
/datum/stock_part/micro_laser = 2)
/obj/item/circuitboard/machine/telecomms/bus
name = "Bus Mainframe"
greyscale_colors = CIRCUIT_COLOR_ENGINEERING
build_path = /obj/machinery/telecomms/bus
req_components = list(
/obj/item/stock_parts/manipulator = 2,
/datum/stock_part/manipulator = 2,
/obj/item/stack/cable_coil = 1,
/obj/item/stock_parts/subspace/filter = 1)
/datum/stock_part/filter = 1)
/obj/item/circuitboard/machine/telecomms/hub
name = "Hub Mainframe"
greyscale_colors = CIRCUIT_COLOR_ENGINEERING
build_path = /obj/machinery/telecomms/hub
req_components = list(
/obj/item/stock_parts/manipulator = 2,
/datum/stock_part/manipulator = 2,
/obj/item/stack/cable_coil = 2,
/obj/item/stock_parts/subspace/filter = 2)
/datum/stock_part/filter = 2)
/obj/item/circuitboard/machine/telecomms/message_server
name = "Messaging Server"
greyscale_colors = CIRCUIT_COLOR_ENGINEERING
build_path = /obj/machinery/telecomms/message_server
req_components = list(
/obj/item/stock_parts/manipulator = 2,
/datum/stock_part/manipulator = 2,
/obj/item/stack/cable_coil = 1,
/obj/item/stock_parts/subspace/filter = 3)
/datum/stock_part/filter = 3)
/obj/item/circuitboard/machine/telecomms/processor
name = "Processor Unit"
greyscale_colors = CIRCUIT_COLOR_ENGINEERING
build_path = /obj/machinery/telecomms/processor
req_components = list(
/obj/item/stock_parts/manipulator = 3,
/obj/item/stock_parts/subspace/filter = 1,
/obj/item/stock_parts/subspace/treatment = 2,
/obj/item/stock_parts/subspace/analyzer = 1,
/datum/stock_part/manipulator = 3,
/datum/stock_part/filter = 1,
/datum/stock_part/treatment = 2,
/datum/stock_part/analyzer = 1,
/obj/item/stack/cable_coil = 2,
/obj/item/stock_parts/subspace/amplifier = 1)
/datum/stock_part/amplifier = 1)
/obj/item/circuitboard/machine/telecomms/receiver
name = "Subspace Receiver"
greyscale_colors = CIRCUIT_COLOR_ENGINEERING
build_path = /obj/machinery/telecomms/receiver
req_components = list(
/obj/item/stock_parts/subspace/ansible = 1,
/obj/item/stock_parts/subspace/filter = 1,
/obj/item/stock_parts/manipulator = 2,
/obj/item/stock_parts/micro_laser = 1)
/datum/stock_part/ansible = 1,
/datum/stock_part/filter = 1,
/datum/stock_part/manipulator = 2,
/datum/stock_part/micro_laser = 1)
/obj/item/circuitboard/machine/telecomms/relay
name = "Relay Mainframe"
greyscale_colors = CIRCUIT_COLOR_ENGINEERING
build_path = /obj/machinery/telecomms/relay
req_components = list(
/obj/item/stock_parts/manipulator = 2,
/datum/stock_part/manipulator = 2,
/obj/item/stack/cable_coil = 2,
/obj/item/stock_parts/subspace/filter = 2)
/datum/stock_part/filter = 2)
/obj/item/circuitboard/machine/telecomms/server
name = "Telecommunication Server"
greyscale_colors = CIRCUIT_COLOR_ENGINEERING
build_path = /obj/machinery/telecomms/server
req_components = list(
/obj/item/stock_parts/manipulator = 2,
/datum/stock_part/manipulator = 2,
/obj/item/stack/cable_coil = 1,
/obj/item/stock_parts/subspace/filter = 1)
/datum/stock_part/filter = 1)
/obj/item/circuitboard/machine/tesla_coil
name = "Tesla Controller"
greyscale_colors = CIRCUIT_COLOR_ENGINEERING
desc = "Does not let you shoot lightning from your hands."
build_path = /obj/machinery/power/energy_accumulator/tesla_coil
req_components = list(/obj/item/stock_parts/capacitor = 1)
req_components = list(/datum/stock_part/capacitor = 1)
needs_anchored = FALSE
/obj/item/circuitboard/machine/cell_charger
name = "Cell Charger"
greyscale_colors = CIRCUIT_COLOR_ENGINEERING
build_path = /obj/machinery/cell_charger
req_components = list(/obj/item/stock_parts/capacitor = 1)
req_components = list(/datum/stock_part/capacitor = 1)
needs_anchored = FALSE
/obj/item/circuitboard/machine/circulator
@@ -167,8 +167,8 @@
greyscale_colors = CIRCUIT_COLOR_ENGINEERING
build_path = /obj/machinery/power/emitter
req_components = list(
/obj/item/stock_parts/micro_laser = 1,
/obj/item/stock_parts/manipulator = 1)
/datum/stock_part/micro_laser = 1,
/datum/stock_part/manipulator = 1)
needs_anchored = FALSE
/obj/item/circuitboard/machine/generator
@@ -183,7 +183,7 @@
build_path = /obj/machinery/ntnet_relay
req_components = list(
/obj/item/stack/cable_coil = 2,
/obj/item/stock_parts/subspace/filter = 1)
/datum/stock_part/filter = 1)
/obj/item/circuitboard/machine/pacman
name = "PACMAN-type Generator"
@@ -245,7 +245,7 @@
build_path = /obj/machinery/power/rtg
req_components = list(
/obj/item/stack/cable_coil = 5,
/obj/item/stock_parts/capacitor = 1,
/datum/stock_part/capacitor = 1,
/obj/item/stack/sheet/mineral/uranium = 10) // We have no Pu-238, and this is the closest thing to it.
/obj/item/circuitboard/machine/rtg/advanced
@@ -253,8 +253,8 @@
build_path = /obj/machinery/power/rtg/advanced
req_components = list(
/obj/item/stack/cable_coil = 5,
/obj/item/stock_parts/capacitor = 1,
/obj/item/stock_parts/micro_laser = 1,
/datum/stock_part/capacitor = 1,
/datum/stock_part/micro_laser = 1,
/obj/item/stack/sheet/mineral/uranium = 10,
/obj/item/stack/sheet/mineral/plasma = 5)
@@ -272,7 +272,7 @@
req_components = list(
/obj/item/stack/cable_coil = 5,
/obj/item/stock_parts/cell = 5,
/obj/item/stock_parts/capacitor = 1)
/datum/stock_part/capacitor = 1)
def_components = list(/obj/item/stock_parts/cell = /obj/item/stock_parts/cell/high/empty)
/obj/item/circuitboard/machine/techfab/department/engineering
@@ -286,8 +286,8 @@
build_path = /obj/machinery/atmospherics/components/unary/thermomachine/freezer
var/pipe_layer = PIPING_LAYER_DEFAULT
req_components = list(
/obj/item/stock_parts/matter_bin = 2,
/obj/item/stock_parts/micro_laser = 2,
/datum/stock_part/matter_bin = 2,
/datum/stock_part/micro_laser = 2,
/obj/item/stack/cable_coil = 1,
/obj/item/stack/sheet/glass = 1)
@@ -371,8 +371,8 @@
greyscale_colors = CIRCUIT_COLOR_GENERIC
build_path = /obj/machinery/rnd/production/circuit_imprinter
req_components = list(
/obj/item/stock_parts/matter_bin = 1,
/obj/item/stock_parts/manipulator = 1,
/datum/stock_part/matter_bin = 1,
/datum/stock_part/manipulator = 1,
/obj/item/reagent_containers/cup/beaker = 2)
/obj/item/circuitboard/machine/circuit_imprinter/offstation
@@ -388,7 +388,7 @@
name = "AI Holopad"
greyscale_colors = CIRCUIT_COLOR_GENERIC
build_path = /obj/machinery/holopad
req_components = list(/obj/item/stock_parts/capacitor = 1)
req_components = list(/datum/stock_part/capacitor = 1)
needs_anchored = FALSE //wew lad
var/secure = FALSE
@@ -414,7 +414,7 @@
build_path = /obj/machinery/launchpad
req_components = list(
/obj/item/stack/ore/bluespace_crystal = 1,
/obj/item/stock_parts/manipulator = 1)
/datum/stock_part/manipulator = 1)
def_components = list(/obj/item/stack/ore/bluespace_crystal = /obj/item/stack/ore/bluespace_crystal/artificial)
/obj/item/circuitboard/machine/protolathe
@@ -422,8 +422,8 @@
greyscale_colors = CIRCUIT_COLOR_GENERIC
build_path = /obj/machinery/rnd/production/protolathe
req_components = list(
/obj/item/stock_parts/matter_bin = 2,
/obj/item/stock_parts/manipulator = 2,
/datum/stock_part/matter_bin = 2,
/datum/stock_part/manipulator = 2,
/obj/item/reagent_containers/cup/beaker = 2)
/obj/item/circuitboard/machine/protolathe/offstation
@@ -440,13 +440,13 @@
greyscale_colors = CIRCUIT_COLOR_GENERIC
build_path = /obj/machinery/reagentgrinder/constructed
req_components = list(
/obj/item/stock_parts/manipulator = 1)
/datum/stock_part/manipulator = 1)
needs_anchored = FALSE
/obj/item/circuitboard/machine/smartfridge
name = "Smartfridge"
build_path = /obj/machinery/smartfridge
req_components = list(/obj/item/stock_parts/matter_bin = 1)
req_components = list(/datum/stock_part/matter_bin = 1)
var/static/list/fridges_name_paths = list(/obj/machinery/smartfridge = "plant produce",
/obj/machinery/smartfridge/food = "food",
/obj/machinery/smartfridge/drinks = "drinks",
@@ -486,8 +486,8 @@
greyscale_colors = CIRCUIT_COLOR_GENERIC
build_path = /obj/machinery/space_heater/constructed
req_components = list(
/obj/item/stock_parts/micro_laser = 1,
/obj/item/stock_parts/capacitor = 1,
/datum/stock_part/micro_laser = 1,
/datum/stock_part/capacitor = 1,
/obj/item/stack/cable_coil = 3)
needs_anchored = FALSE
@@ -496,8 +496,8 @@
greyscale_colors = CIRCUIT_COLOR_GENERIC
build_path = /obj/machinery/electrolyzer
req_components = list(
/obj/item/stock_parts/manipulator = 2,
/obj/item/stock_parts/capacitor = 2,
/datum/stock_part/manipulator = 2,
/datum/stock_part/capacitor = 2,
/obj/item/stack/cable_coil = 5,
/obj/item/stack/sheet/glass = 1)
@@ -509,8 +509,8 @@
greyscale_colors = CIRCUIT_COLOR_GENERIC
build_path = /obj/machinery/rnd/production/techfab
req_components = list(
/obj/item/stock_parts/matter_bin = 2,
/obj/item/stock_parts/manipulator = 2,
/datum/stock_part/matter_bin = 2,
/datum/stock_part/manipulator = 2,
/obj/item/reagent_containers/cup/beaker = 2)
/obj/item/circuitboard/machine/techfab/department
@@ -621,9 +621,9 @@
greyscale_colors = CIRCUIT_COLOR_GENERIC
build_path = /obj/machinery/piratepad/civilian
req_components = list(
/obj/item/stock_parts/card_reader = 1,
/datum/stock_part/card_reader = 1,
/datum/stock_part/scanning_module = 1,
/obj/item/stock_parts/micro_laser = 1
/datum/stock_part/micro_laser = 1
)
/obj/item/circuitboard/machine/fax
@@ -631,10 +631,10 @@
greyscale_colors = CIRCUIT_COLOR_GENERIC
build_path = /obj/machinery/fax
req_components = list(
/obj/item/stock_parts/subspace/crystal = 1,
/datum/stock_part/crystal = 1,
/datum/stock_part/scanning_module = 1,
/obj/item/stock_parts/micro_laser = 1,
/obj/item/stock_parts/manipulator = 1,)
/datum/stock_part/micro_laser = 1,
/datum/stock_part/manipulator = 1,)
//Medical
@@ -643,9 +643,9 @@
greyscale_colors = CIRCUIT_COLOR_MEDICAL
build_path = /obj/machinery/chem_dispenser
req_components = list(
/obj/item/stock_parts/matter_bin = 2,
/obj/item/stock_parts/capacitor = 1,
/obj/item/stock_parts/manipulator = 1,
/datum/stock_part/matter_bin = 2,
/datum/stock_part/capacitor = 1,
/datum/stock_part/manipulator = 1,
/obj/item/stack/sheet/glass = 1,
/obj/item/stock_parts/cell = 1)
def_components = list(/obj/item/stock_parts/cell = /obj/item/stock_parts/cell/high)
@@ -655,9 +655,9 @@
build_path = /obj/machinery/chem_dispenser/fullupgrade
specific_parts = TRUE
req_components = list(
/obj/item/stock_parts/matter_bin/bluespace = 2,
/obj/item/stock_parts/capacitor/quadratic = 2,
/obj/item/stock_parts/manipulator/femto = 2,
/datum/stock_part/matter_bin/bluespace = 2,
/datum/stock_part/capacitor/quadratic = 2,
/datum/stock_part/manipulator/femto = 2,
/obj/item/stack/sheet/glass = 1,
/obj/item/stock_parts/cell/bluespace = 1,
)
@@ -666,9 +666,9 @@
build_path = /obj/machinery/chem_dispenser/mutagensaltpeter
specific_parts = TRUE
req_components = list(
/obj/item/stock_parts/matter_bin/bluespace = 2,
/obj/item/stock_parts/capacitor/quadratic = 2,
/obj/item/stock_parts/manipulator/femto = 2,
/datum/stock_part/matter_bin/bluespace = 2,
/datum/stock_part/capacitor/quadratic = 2,
/datum/stock_part/manipulator/femto = 2,
/obj/item/stack/sheet/glass = 1,
/obj/item/stock_parts/cell/bluespace = 1,
)
@@ -680,9 +680,9 @@
build_path = /obj/machinery/chem_dispenser/abductor
specific_parts = TRUE
req_components = list(
/obj/item/stock_parts/matter_bin/bluespace = 2,
/obj/item/stock_parts/capacitor/quadratic = 2,
/obj/item/stock_parts/manipulator/femto = 2,
/datum/stock_part/matter_bin/bluespace = 2,
/datum/stock_part/capacitor/quadratic = 2,
/datum/stock_part/manipulator/femto = 2,
/obj/item/stack/sheet/glass = 1,
/obj/item/stock_parts/cell/bluespace = 1,
)
@@ -693,7 +693,7 @@
greyscale_colors = CIRCUIT_COLOR_MEDICAL
build_path = /obj/machinery/chem_heater
req_components = list(
/obj/item/stock_parts/micro_laser = 1,
/datum/stock_part/micro_laser = 1,
/obj/item/stack/sheet/glass = 1)
/obj/item/circuitboard/machine/chem_mass_spec
@@ -701,7 +701,7 @@
greyscale_colors = CIRCUIT_COLOR_MEDICAL
build_path = /obj/machinery/chem_mass_spec
req_components = list(
/obj/item/stock_parts/micro_laser = 1,
/datum/stock_part/micro_laser = 1,
/obj/item/stack/cable_coil = 5)
/obj/item/circuitboard/machine/chem_master
@@ -711,7 +711,7 @@
desc = "You can turn the \"mode selection\" dial using a screwdriver."
req_components = list(
/obj/item/reagent_containers/cup/beaker = 2,
/obj/item/stock_parts/manipulator = 1,
/datum/stock_part/manipulator = 1,
/obj/item/stack/sheet/glass = 1)
needs_anchored = FALSE
@@ -733,7 +733,7 @@
greyscale_colors = CIRCUIT_COLOR_MEDICAL
build_path = /obj/machinery/atmospherics/components/unary/cryo_cell
req_components = list(
/obj/item/stock_parts/matter_bin = 1,
/datum/stock_part/matter_bin = 1,
/obj/item/stack/cable_coil = 1,
/obj/item/stack/sheet/glass = 4)
@@ -741,14 +741,14 @@
name = "Lipid Extractor"
greyscale_colors = CIRCUIT_COLOR_MEDICAL
build_path = /obj/machinery/fat_sucker
req_components = list(/obj/item/stock_parts/micro_laser = 1,
req_components = list(/datum/stock_part/micro_laser = 1,
/obj/item/kitchen/fork = 1)
/obj/item/circuitboard/machine/harvester
name = "Harvester"
greyscale_colors = CIRCUIT_COLOR_MEDICAL
build_path = /obj/machinery/harvester
req_components = list(/obj/item/stock_parts/micro_laser = 4)
req_components = list(/datum/stock_part/micro_laser = 4)
/obj/item/circuitboard/machine/medical_kiosk
name = "Medical Kiosk"
@@ -779,7 +779,7 @@
greyscale_colors = CIRCUIT_COLOR_MEDICAL
build_path = /obj/machinery/limbgrower
req_components = list(
/obj/item/stock_parts/manipulator = 1,
/datum/stock_part/manipulator = 1,
/obj/item/reagent_containers/cup/beaker = 2,
/obj/item/stack/sheet/glass = 1)
@@ -788,7 +788,7 @@
greyscale_colors = CIRCUIT_COLOR_MEDICAL
build_path = /obj/machinery/limbgrower
req_components = list(
/obj/item/stock_parts/manipulator/femto = 1,
/datum/stock_part/manipulator/femto = 1,
/obj/item/reagent_containers/cup/beaker/bluespace = 2,
/obj/item/stack/sheet/glass = 1)
@@ -802,16 +802,16 @@
greyscale_colors = CIRCUIT_COLOR_MEDICAL
build_path = /obj/machinery/sleeper
req_components = list(
/obj/item/stock_parts/matter_bin = 1,
/obj/item/stock_parts/manipulator = 1,
/datum/stock_part/matter_bin = 1,
/datum/stock_part/manipulator = 1,
/obj/item/stack/cable_coil = 1,
/obj/item/stack/sheet/glass = 2)
/obj/item/circuitboard/machine/sleeper/fullupgrade
build_path = /obj/machinery/sleeper/syndie/fullupgrade
req_components = list(
/obj/item/stock_parts/matter_bin/bluespace = 1,
/obj/item/stock_parts/manipulator/femto = 1,
/datum/stock_part/matter_bin/bluespace = 1,
/datum/stock_part/manipulator/femto = 1,
/obj/item/stack/cable_coil = 1,
/obj/item/stack/sheet/glass = 2)
@@ -824,9 +824,9 @@
greyscale_colors = CIRCUIT_COLOR_MEDICAL
build_path = /obj/machinery/smoke_machine
req_components = list(
/obj/item/stock_parts/matter_bin = 2,
/obj/item/stock_parts/capacitor = 1,
/obj/item/stock_parts/manipulator = 1,
/datum/stock_part/matter_bin = 2,
/datum/stock_part/capacitor = 1,
/datum/stock_part/manipulator = 1,
/obj/item/stack/sheet/glass = 1,
/obj/item/stock_parts/cell = 1)
needs_anchored = FALSE
@@ -837,15 +837,15 @@
build_path = /obj/machinery/stasis
req_components = list(
/obj/item/stack/cable_coil = 3,
/obj/item/stock_parts/manipulator = 1,
/obj/item/stock_parts/capacitor = 1)
/datum/stock_part/manipulator = 1,
/datum/stock_part/capacitor = 1)
/obj/item/circuitboard/machine/medipen_refiller
name = "Medipen Refiller"
greyscale_colors = CIRCUIT_COLOR_MEDICAL
build_path = /obj/machinery/medipen_refiller
req_components = list(
/obj/item/stock_parts/matter_bin = 1)
/datum/stock_part/matter_bin = 1)
/obj/item/circuitboard/machine/techfab/department/medical
name = "\improper Departmental Techfab - Medical"
@@ -864,9 +864,9 @@
greyscale_colors = CIRCUIT_COLOR_SCIENCE
build_path = /obj/machinery/recharge_station
req_components = list(
/obj/item/stock_parts/capacitor = 2,
/datum/stock_part/capacitor = 2,
/obj/item/stock_parts/cell = 1,
/obj/item/stock_parts/manipulator = 1)
/datum/stock_part/manipulator = 1)
def_components = list(/obj/item/stock_parts/cell = /obj/item/stock_parts/cell/high)
/obj/item/circuitboard/machine/destructive_analyzer
@@ -875,8 +875,8 @@
build_path = /obj/machinery/rnd/destructive_analyzer
req_components = list(
/datum/stock_part/scanning_module = 1,
/obj/item/stock_parts/manipulator = 1,
/obj/item/stock_parts/micro_laser = 1)
/datum/stock_part/manipulator = 1,
/datum/stock_part/micro_laser = 1)
/obj/item/circuitboard/machine/experimentor
name = "E.X.P.E.R.I-MENTOR"
@@ -884,8 +884,8 @@
build_path = /obj/machinery/rnd/experimentor
req_components = list(
/datum/stock_part/scanning_module = 1,
/obj/item/stock_parts/manipulator = 2,
/obj/item/stock_parts/micro_laser = 2)
/datum/stock_part/manipulator = 2,
/datum/stock_part/micro_laser = 2)
/obj/item/circuitboard/machine/mech_recharger
name = "Mechbay Recharger"
@@ -893,16 +893,16 @@
build_path = /obj/machinery/mech_bay_recharge_port
req_components = list(
/obj/item/stack/cable_coil = 2,
/obj/item/stock_parts/capacitor = 5)
/datum/stock_part/capacitor = 5)
/obj/item/circuitboard/machine/mechfab
name = "Exosuit Fabricator"
greyscale_colors = CIRCUIT_COLOR_SCIENCE
build_path = /obj/machinery/mecha_part_fabricator
req_components = list(
/obj/item/stock_parts/matter_bin = 2,
/obj/item/stock_parts/manipulator = 1,
/obj/item/stock_parts/micro_laser = 1,
/datum/stock_part/matter_bin = 2,
/datum/stock_part/manipulator = 1,
/datum/stock_part/micro_laser = 1,
/obj/item/stack/sheet/glass = 1)
/obj/item/circuitboard/machine/monkey_recycler
@@ -910,8 +910,8 @@
greyscale_colors = CIRCUIT_COLOR_SCIENCE
build_path = /obj/machinery/monkey_recycler
req_components = list(
/obj/item/stock_parts/matter_bin = 1,
/obj/item/stock_parts/manipulator = 1)
/datum/stock_part/matter_bin = 1,
/datum/stock_part/manipulator = 1)
needs_anchored = FALSE
/obj/item/circuitboard/machine/processor/slime
@@ -930,8 +930,8 @@
build_path = /obj/machinery/quantumpad
req_components = list(
/obj/item/stack/ore/bluespace_crystal = 1,
/obj/item/stock_parts/capacitor = 1,
/obj/item/stock_parts/manipulator = 1,
/datum/stock_part/capacitor = 1,
/datum/stock_part/manipulator = 1,
/obj/item/stack/cable_coil = 1)
def_components = list(/obj/item/stack/ore/bluespace_crystal = /obj/item/stack/ore/bluespace_crystal/artificial)
@@ -954,7 +954,7 @@
build_path = /obj/machinery/teleport/hub
req_components = list(
/obj/item/stack/ore/bluespace_crystal = 3,
/obj/item/stock_parts/matter_bin = 1)
/datum/stock_part/matter_bin = 1)
def_components = list(/obj/item/stack/ore/bluespace_crystal = /obj/item/stack/ore/bluespace_crystal/artificial)
/obj/item/circuitboard/machine/teleporter_station
@@ -963,7 +963,7 @@
build_path = /obj/machinery/teleport/station
req_components = list(
/obj/item/stack/ore/bluespace_crystal = 2,
/obj/item/stock_parts/capacitor = 2,
/datum/stock_part/capacitor = 2,
/obj/item/stack/sheet/glass = 1)
def_components = list(/obj/item/stack/ore/bluespace_crystal = /obj/item/stack/ore/bluespace_crystal/artificial)
@@ -973,8 +973,8 @@
build_path = /obj/machinery/dna_scannernew
req_components = list(
/datum/stock_part/scanning_module = 1,
/obj/item/stock_parts/matter_bin = 1,
/obj/item/stock_parts/micro_laser = 1,
/datum/stock_part/matter_bin = 1,
/datum/stock_part/micro_laser = 1,
/obj/item/stack/sheet/glass = 1,
/obj/item/stack/cable_coil = 2)
@@ -984,8 +984,8 @@
build_path = /obj/machinery/dna_infuser
req_components = list(
/datum/stock_part/scanning_module = 1,
/obj/item/stock_parts/matter_bin = 1,
/obj/item/stock_parts/micro_laser = 1,
/datum/stock_part/matter_bin = 1,
/datum/stock_part/micro_laser = 1,
/obj/item/stack/cable_coil = 2,
)
@@ -1012,7 +1012,7 @@
name = "Weapon Recharger"
greyscale_colors = CIRCUIT_COLOR_SECURITY
build_path = /obj/machinery/recharger
req_components = list(/obj/item/stock_parts/capacitor = 1)
req_components = list(/datum/stock_part/capacitor = 1)
needs_anchored = FALSE
/obj/item/circuitboard/machine/techfab/department/security
@@ -1027,8 +1027,8 @@
greyscale_colors = CIRCUIT_COLOR_SERVICE
build_path = /obj/machinery/biogenerator
req_components = list(
/obj/item/stock_parts/matter_bin = 1,
/obj/item/stock_parts/manipulator = 1,
/datum/stock_part/matter_bin = 1,
/datum/stock_part/manipulator = 1,
/obj/item/stack/cable_coil = 1,
/obj/item/stack/sheet/glass = 1)
@@ -1040,9 +1040,9 @@
/obj/item/circuitboard/machine/chem_dispenser/drinks/fullupgrade
build_path = /obj/machinery/chem_dispenser/drinks/fullupgrade
req_components = list(
/obj/item/stock_parts/matter_bin/bluespace = 2,
/obj/item/stock_parts/capacitor/quadratic = 2,
/obj/item/stock_parts/manipulator/femto = 2,
/datum/stock_part/matter_bin/bluespace = 2,
/datum/stock_part/capacitor/quadratic = 2,
/datum/stock_part/manipulator/femto = 2,
/obj/item/stack/sheet/glass = 1,
/obj/item/stock_parts/cell/bluespace = 1,
)
@@ -1055,9 +1055,9 @@
/obj/item/circuitboard/machine/chem_dispenser/drinks/beer/fullupgrade
build_path = /obj/machinery/chem_dispenser/drinks/beer/fullupgrade
req_components = list(
/obj/item/stock_parts/matter_bin/bluespace = 2,
/obj/item/stock_parts/capacitor/quadratic = 2,
/obj/item/stock_parts/manipulator/femto = 2,
/datum/stock_part/matter_bin/bluespace = 2,
/datum/stock_part/capacitor/quadratic = 2,
/datum/stock_part/manipulator/femto = 2,
/obj/item/stack/sheet/glass = 1,
/obj/item/stock_parts/cell/bluespace = 1,
)
@@ -1071,21 +1071,21 @@
name = "Deep Fryer"
greyscale_colors = CIRCUIT_COLOR_SERVICE
build_path = /obj/machinery/deepfryer
req_components = list(/obj/item/stock_parts/micro_laser = 1)
req_components = list(/datum/stock_part/micro_laser = 1)
needs_anchored = FALSE
/obj/item/circuitboard/machine/griddle
name = "Griddle"
greyscale_colors = CIRCUIT_COLOR_SERVICE
build_path = /obj/machinery/griddle
req_components = list(/obj/item/stock_parts/micro_laser = 1)
req_components = list(/datum/stock_part/micro_laser = 1)
needs_anchored = FALSE
/obj/item/circuitboard/machine/oven
name = "Oven"
greyscale_colors = CIRCUIT_COLOR_SERVICE
build_path = /obj/machinery/oven
req_components = list(/obj/item/stock_parts/micro_laser = 1)
req_components = list(/datum/stock_part/micro_laser = 1)
needs_anchored = FALSE
/obj/item/circuitboard/machine/dish_drive
@@ -1094,8 +1094,8 @@
build_path = /obj/machinery/dish_drive
req_components = list(
/obj/item/stack/sheet/glass = 1,
/obj/item/stock_parts/manipulator = 1,
/obj/item/stock_parts/matter_bin = 2)
/datum/stock_part/manipulator = 1,
/datum/stock_part/matter_bin = 2)
var/suction = TRUE
var/transmit = TRUE
needs_anchored = FALSE
@@ -1120,8 +1120,8 @@
greyscale_colors = CIRCUIT_COLOR_SERVICE
build_path = /obj/machinery/gibber
req_components = list(
/obj/item/stock_parts/matter_bin = 1,
/obj/item/stock_parts/manipulator = 1)
/datum/stock_part/matter_bin = 1,
/datum/stock_part/manipulator = 1)
needs_anchored = FALSE
/obj/item/circuitboard/machine/hydroponics
@@ -1129,8 +1129,8 @@
greyscale_colors = CIRCUIT_COLOR_SERVICE
build_path = /obj/machinery/hydroponics/constructable
req_components = list(
/obj/item/stock_parts/matter_bin = 2,
/obj/item/stock_parts/manipulator = 1,
/datum/stock_part/matter_bin = 2,
/datum/stock_part/manipulator = 1,
/obj/item/stack/sheet/glass = 1)
needs_anchored = FALSE
@@ -1139,8 +1139,8 @@
greyscale_colors = CIRCUIT_COLOR_SERVICE
build_path = /obj/machinery/microwave
req_components = list(
/obj/item/stock_parts/micro_laser = 1,
/obj/item/stock_parts/matter_bin = 1,
/datum/stock_part/micro_laser = 1,
/datum/stock_part/matter_bin = 1,
/obj/item/stack/cable_coil = 2,
/obj/item/stack/sheet/glass = 2)
needs_anchored = FALSE
@@ -1150,8 +1150,8 @@
greyscale_colors = CIRCUIT_COLOR_SERVICE
build_path = /obj/machinery/processor
req_components = list(
/obj/item/stock_parts/matter_bin = 1,
/obj/item/stock_parts/manipulator = 1)
/datum/stock_part/matter_bin = 1,
/datum/stock_part/manipulator = 1)
needs_anchored = FALSE
/obj/item/circuitboard/machine/processor/screwdriver_act(mob/living/user, obj/item/tool)
@@ -1175,7 +1175,7 @@
greyscale_colors = CIRCUIT_COLOR_SERVICE
build_path = /obj/machinery/recycler
req_components = list(
/obj/item/stock_parts/manipulator = 1)
/datum/stock_part/manipulator = 1)
needs_anchored = FALSE
/obj/item/circuitboard/machine/seed_extractor
@@ -1183,8 +1183,8 @@
greyscale_colors = CIRCUIT_COLOR_SERVICE
build_path = /obj/machinery/seed_extractor
req_components = list(
/obj/item/stock_parts/matter_bin = 1,
/obj/item/stock_parts/manipulator = 1)
/datum/stock_part/matter_bin = 1,
/datum/stock_part/manipulator = 1)
needs_anchored = FALSE
/obj/item/circuitboard/machine/techfab/department/service
@@ -1197,7 +1197,7 @@
greyscale_colors = CIRCUIT_COLOR_SERVICE
build_path = /obj/structure/displaycase/forsale
req_components = list(
/obj/item/stock_parts/card_reader = 1)
/datum/stock_part/card_reader = 1)
//Supply
/obj/item/circuitboard/machine/ore_redemption
@@ -1206,9 +1206,9 @@
build_path = /obj/machinery/mineral/ore_redemption
req_components = list(
/obj/item/stack/sheet/glass = 1,
/obj/item/stock_parts/matter_bin = 1,
/obj/item/stock_parts/micro_laser = 1,
/obj/item/stock_parts/manipulator = 1,
/datum/stock_part/matter_bin = 1,
/datum/stock_part/micro_laser = 1,
/datum/stock_part/manipulator = 1,
/obj/item/assembly/igniter = 1)
needs_anchored = FALSE
@@ -1228,8 +1228,8 @@
greyscale_colors = CIRCUIT_COLOR_SUPPLY
build_path = /obj/machinery/mineral/stacking_machine
req_components = list(
/obj/item/stock_parts/manipulator = 2,
/obj/item/stock_parts/matter_bin = 2)
/datum/stock_part/manipulator = 2,
/datum/stock_part/matter_bin = 2)
/obj/item/circuitboard/machine/stacking_unit_console
name = "Stacking Machine Console"
@@ -1250,9 +1250,9 @@
build_path = /obj/machinery/rnd/bepis
req_components = list(
/obj/item/stack/cable_coil = 5,
/obj/item/stock_parts/capacitor = 1,
/obj/item/stock_parts/manipulator = 1,
/obj/item/stock_parts/micro_laser = 1,
/datum/stock_part/capacitor = 1,
/datum/stock_part/manipulator = 1,
/datum/stock_part/micro_laser = 1,
/datum/stock_part/scanning_module = 1)
//Misc
@@ -1261,8 +1261,8 @@
greyscale_colors = CIRCUIT_COLOR_SUPPLY
build_path = /obj/machinery/sheetifier
req_components = list(
/obj/item/stock_parts/manipulator = 2,
/obj/item/stock_parts/matter_bin = 2)
/datum/stock_part/manipulator = 2,
/datum/stock_part/matter_bin = 2)
needs_anchored = FALSE
/obj/item/circuitboard/machine/restaurant_portal
@@ -1280,19 +1280,19 @@
name_extension = "(Void Core)"
build_path = /obj/machinery/power/rtg/abductor
req_components = list(
/obj/item/stock_parts/capacitor = 1,
/obj/item/stock_parts/micro_laser = 1,
/datum/stock_part/capacitor = 1,
/datum/stock_part/micro_laser = 1,
/obj/item/stock_parts/cell/infinite/abductor = 1)
def_components = list(
/obj/item/stock_parts/capacitor = /obj/item/stock_parts/capacitor/quadratic,
/obj/item/stock_parts/micro_laser = /obj/item/stock_parts/micro_laser/quadultra)
/datum/stock_part/capacitor = /datum/stock_part/capacitor/quadratic,
/datum/stock_part/micro_laser = /datum/stock_part/micro_laser/quadultra)
/obj/item/circuitboard/machine/hypnochair
name = "Enhanced Interrogation Chamber"
greyscale_colors = CIRCUIT_COLOR_SECURITY
build_path = /obj/machinery/hypnochair
req_components = list(
/obj/item/stock_parts/micro_laser = 2,
/datum/stock_part/micro_laser = 2,
/datum/stock_part/scanning_module = 2
)
@@ -1302,7 +1302,7 @@
build_path = /obj/machinery/plumbing/receiver
req_components = list(
/obj/item/stack/ore/bluespace_crystal = 1,
/obj/item/stock_parts/capacitor = 2,
/datum/stock_part/capacitor = 2,
/obj/item/stack/sheet/glass = 1)
def_components = list(/obj/item/stack/ore/bluespace_crystal = /obj/item/stack/ore/bluespace_crystal/artificial)
needs_anchored = FALSE
@@ -1311,8 +1311,8 @@
name = "Skill Station"
build_path = /obj/machinery/skill_station
req_components = list(
/obj/item/stock_parts/matter_bin = 2,
/obj/item/stock_parts/micro_laser = 2,
/datum/stock_part/matter_bin = 2,
/datum/stock_part/micro_laser = 2,
/datum/stock_part/scanning_module = 2
)
@@ -1321,16 +1321,16 @@
greyscale_colors = CIRCUIT_COLOR_SCIENCE
build_path = /obj/machinery/destructive_scanner
req_components = list(
/obj/item/stock_parts/micro_laser = 2,
/obj/item/stock_parts/matter_bin = 1,
/obj/item/stock_parts/manipulator = 2)
/datum/stock_part/micro_laser = 2,
/datum/stock_part/matter_bin = 1,
/datum/stock_part/manipulator = 2)
/obj/item/circuitboard/machine/doppler_array
name = "Tachyon-Doppler Research Array"
greyscale_colors = CIRCUIT_COLOR_SCIENCE
build_path = /obj/machinery/doppler_array
req_components = list(
/obj/item/stock_parts/micro_laser = 2,
/datum/stock_part/micro_laser = 2,
/datum/stock_part/scanning_module = 4)
/obj/item/circuitboard/machine/exoscanner
@@ -1338,7 +1338,7 @@
greyscale_colors = CIRCUIT_COLOR_SCIENCE
build_path = /obj/machinery/exoscanner
req_components = list(
/obj/item/stock_parts/micro_laser = 4,
/datum/stock_part/micro_laser = 4,
/datum/stock_part/scanning_module = 4)
/obj/item/circuitboard/machine/exodrone_launcher
@@ -1346,7 +1346,7 @@
greyscale_colors = CIRCUIT_COLOR_SCIENCE
build_path = /obj/machinery/exodrone_launcher
req_components = list(
/obj/item/stock_parts/micro_laser = 4,
/datum/stock_part/micro_laser = 4,
/datum/stock_part/scanning_module = 4)
/obj/item/circuitboard/machine/ecto_sniffer
@@ -1363,7 +1363,7 @@
req_components = list(
/obj/item/stack/sheet/plasteel = 15,
/datum/stock_part/scanning_module = 1,
/obj/item/stock_parts/manipulator = 1,
/datum/stock_part/manipulator = 1,
)
/obj/item/circuitboard/machine/tank_compressor
@@ -1382,9 +1382,9 @@
req_components = list(
/obj/item/stack/sheet/glass = 1,
/obj/item/reagent_containers/cup/beaker = 2,
/obj/item/stock_parts/water_recycler = 1,
/obj/item/stock_parts/capacitor = 1,
/obj/item/stock_parts/micro_laser = 1,
/datum/stock_part/water_recycler = 1,
/datum/stock_part/capacitor = 1,
/datum/stock_part/micro_laser = 1,
)
/obj/item/circuitboard/machine/coffeemaker/impressa
@@ -1394,7 +1394,7 @@
req_components = list(
/obj/item/stack/sheet/glass = 1,
/obj/item/reagent_containers/cup/beaker = 2,
/obj/item/stock_parts/water_recycler = 1,
/obj/item/stock_parts/capacitor/adv = 1,
/obj/item/stock_parts/micro_laser/high = 2,
/datum/stock_part/water_recycler = 1,
/datum/stock_part/capacitor/adv = 1,
/datum/stock_part/micro_laser/high = 2,
)
@@ -144,14 +144,14 @@
/obj/machinery/electrolyzer/RefreshParts()
. = ..()
var/manipulator = 0
var/power = 0
var/cap = 0
for(var/obj/item/stock_parts/manipulator/M in component_parts)
manipulator += M.rating
for(var/obj/item/stock_parts/capacitor/M in component_parts)
cap += M.rating
for(var/datum/stock_part/manipulator/manipulator in component_parts)
power += manipulator.tier
for(var/datum/stock_part/capacitor/capacitor in component_parts)
cap += capacitor.tier
working_power = manipulator //used in the amount of moles processed
working_power = power //used in the amount of moles processed
efficiency = (cap + 1) * 0.5 //used in the amount of charge in power cell uses
@@ -153,8 +153,8 @@
/obj/machinery/atmospherics/components/unary/cryo_cell/RefreshParts()
. = ..()
var/C
for(var/obj/item/stock_parts/matter_bin/M in component_parts)
C += M.rating
for(var/datum/stock_part/matter_bin/M in component_parts)
C += M.tier
efficiency = initial(efficiency) * C
sleep_factor = initial(sleep_factor) * C
@@ -63,13 +63,13 @@
/obj/machinery/atmospherics/components/unary/thermomachine/RefreshParts()
. = ..()
var/calculated_bin_rating = 0
for(var/obj/item/stock_parts/matter_bin/bin in component_parts)
calculated_bin_rating += bin.rating
for(var/datum/stock_part/matter_bin/bin in component_parts)
calculated_bin_rating += bin.tier
heat_capacity = 5000 * ((calculated_bin_rating - 1) ** 2)
var/calculated_laser_rating = 0
for(var/obj/item/stock_parts/micro_laser/laser in component_parts)
calculated_laser_rating += laser.rating
for(var/datum/stock_part/micro_laser/laser in component_parts)
calculated_laser_rating += laser.tier
min_temperature = max(T0C - (base_cooling + calculated_laser_rating * 15), TCMB) //73.15K with T1 stock parts
max_temperature = T20C + (base_heating * calculated_laser_rating) //573.15K with T1 stock parts
+4 -4
View File
@@ -4,8 +4,8 @@
build_path = /obj/machinery/ltsrbt
req_components = list(
/obj/item/stack/ore/bluespace_crystal = 2,
/obj/item/stock_parts/subspace/ansible = 1,
/obj/item/stock_parts/micro_laser = 1,
/datum/stock_part/ansible = 1,
/datum/stock_part/micro_laser = 1,
/datum/stock_part/scanning_module = 2)
def_components = list(/obj/item/stack/ore/bluespace_crystal = /obj/item/stack/ore/bluespace_crystal/artificial)
@@ -56,8 +56,8 @@
recharge_cooldown = recharge_time
power_efficiency = 0
for(var/obj/item/stock_parts/micro_laser/laser in component_parts)
power_efficiency += laser.rating
for(var/datum/stock_part/micro_laser/laser in component_parts)
power_efficiency += laser.tier
// Shouldn't happen but you never know.
if(!power_efficiency)
power_efficiency = 1
@@ -262,7 +262,7 @@
/obj/machinery/chem_heater = 3,
/obj/machinery/power/emitter = 3
)
required_stock_part = /obj/item/stock_parts/micro_laser/high
required_stock_part = /datum/stock_part/micro_laser/high
/datum/experiment/scanning/points/machinery_pinpoint_scan/tier2_capacitors
name = "Advanced Capacitors Benchmark"
@@ -278,7 +278,7 @@
/obj/machinery/chem_dispenser/drinks = 3, /*actually having only the chem dispenser works for scanning soda/booze dispensers but im not quite sure how would i go about actually pointing that out w/o these two lines*/
/obj/machinery/chem_dispenser/drinks/beer = 3
)
required_stock_part = /obj/item/stock_parts/capacitor/adv
required_stock_part = /datum/stock_part/capacitor/adv
/datum/experiment/scanning/points/machinery_pinpoint_scan/tier2_scanmodules
name = "Advanced Scanning Modules Calibration"
@@ -291,7 +291,7 @@
/obj/machinery/piratepad/civilian = 2,
/obj/machinery/rnd/bepis = 3
)
required_stock_part = /obj/item/stock_parts/scanning_module/adv
required_stock_part = /datum/stock_part/scanning_module/adv
/datum/experiment/scanning/points/machinery_pinpoint_scan/tier3_cells
name = "Power Cells Capacity Test"
@@ -319,7 +319,7 @@
/obj/machinery/chem_heater = 2,
/obj/machinery/chem_mass_spec = 3
)
required_stock_part = /obj/item/stock_parts/micro_laser/ultra
required_stock_part = /datum/stock_part/micro_laser/ultra
/datum/experiment/scanning/random/mecha_damage_scan
name = "Exosuit Materials 1: Stress Failure Test"
@@ -65,8 +65,8 @@
/obj/machinery/coffeemaker/RefreshParts()
. = ..()
speed = 0
for(var/obj/item/stock_parts/micro_laser/laser in component_parts)
speed += laser.rating
for(var/datum/stock_part/micro_laser/laser in component_parts)
speed += laser.tier
/obj/machinery/coffeemaker/examine(mob/user)
. = ..()
@@ -68,8 +68,8 @@ GLOBAL_LIST_INIT(oilfry_blacklisted_items, typecacheof(list(
/obj/machinery/deepfryer/RefreshParts()
. = ..()
var/oil_efficiency = 0
for(var/obj/item/stock_parts/micro_laser/laser in component_parts)
oil_efficiency += laser.rating
for(var/datum/stock_part/micro_laser/laser in component_parts)
oil_efficiency += laser.tier
oil_use = initial(oil_use) - (oil_efficiency * 0.00475)
fry_speed = oil_efficiency
@@ -27,19 +27,19 @@
. = ..()
gibtime = 40
meat_produced = initial(meat_produced)
for(var/obj/item/stock_parts/matter_bin/B in component_parts)
meat_produced += B.rating
for(var/obj/item/stock_parts/manipulator/M in component_parts)
gibtime -= 5 * M.rating
if(M.rating >= 2)
for(var/datum/stock_part/matter_bin/matter_bin in component_parts)
meat_produced += matter_bin.tier
for(var/datum/stock_part/manipulator/manipulator in component_parts)
gibtime -= 5 * manipulator.tier
if(manipulator.tier >= 2)
ignore_clothing = TRUE
/obj/machinery/gibber/examine(mob/user)
. = ..()
if(in_range(user, src) || isobserver(user))
. += span_notice("The status display reads: Outputting <b>[meat_produced]</b> meat slab(s) after <b>[gibtime*0.1]</b> seconds of processing.")
for(var/obj/item/stock_parts/manipulator/M in component_parts)
if(M.rating >= 2)
for(var/datum/stock_part/manipulator/manipulator in component_parts)
if(manipulator.tier >= 2)
. += span_notice("[src] has been upgraded to process inorganic materials.")
/obj/machinery/gibber/update_overlays()
@@ -85,10 +85,10 @@
/obj/machinery/microwave/RefreshParts()
. = ..()
efficiency = 0
for(var/obj/item/stock_parts/micro_laser/M in component_parts)
efficiency += M.rating
for(var/obj/item/stock_parts/matter_bin/M in component_parts)
max_n_of_items = 10 * M.rating
for(var/datum/stock_part/micro_laser/micro_laser in component_parts)
efficiency += micro_laser.tier
for(var/datum/stock_part/matter_bin/matter_bin in component_parts)
max_n_of_items = 10 * matter_bin.tier
break
/obj/machinery/microwave/examine(mob/user)
@@ -28,11 +28,10 @@ GLOBAL_LIST_EMPTY(monkey_recyclers)
/obj/machinery/monkey_recycler/RefreshParts() //Ranges from 0.2 to 0.8 per monkey recycled
. = ..()
cube_production = 0
for(var/obj/item/stock_parts/manipulator/B in component_parts)
//cube_production += B.rating * 0.1 //ORIGINAL
cube_production += B.rating * 0.2 //SKYRAT EDIT CHANGE - buffs to allow 1.2 cubes per monkey at T4
for(var/obj/item/stock_parts/matter_bin/M in component_parts)
cube_production += M.rating * 0.1
for(var/datum/stock_part/manipulator/manipulator in component_parts)
cube_production += manipulator.tier * 0.2 // SKYRAT EDIT CHANGE - buffs to allow 1.2 cubes per monkey at T4 - ORIGINAL: cube_production += manipulator.tier * 0.1
for(var/datum/stock_part/matter_bin/matter_bin in component_parts)
cube_production += matter_bin.tier * 0.2 // SKYRAT EDIT CHANGE - buffs to allow 1.2 cubes per monkey at T4 - ORIGINAL: cube_production += matter_bin.tier * 0.1
/obj/machinery/monkey_recycler/examine(mob/user)
. = ..()
@@ -40,10 +40,10 @@
/obj/machinery/processor/RefreshParts()
. = ..()
for(var/obj/item/stock_parts/matter_bin/B in component_parts)
rating_amount = B.rating
for(var/obj/item/stock_parts/manipulator/M in component_parts)
rating_speed = M.rating
for(var/datum/stock_part/matter_bin/matter_bin in component_parts)
rating_amount = matter_bin.tier
for(var/datum/stock_part/manipulator/manipulator in component_parts)
rating_speed = manipulator.tier
/obj/machinery/processor/examine(mob/user)
. = ..()
@@ -34,8 +34,8 @@
/obj/machinery/smartfridge/RefreshParts()
. = ..()
for(var/obj/item/stock_parts/matter_bin/B in component_parts)
max_n_of_items = 1500 * B.rating
for(var/datum/stock_part/matter_bin/matter_bin in component_parts)
max_n_of_items = 1500 * matter_bin.tier
/obj/machinery/smartfridge/examine(mob/user)
. = ..()
@@ -269,19 +269,6 @@
base_build_path = /obj/machinery/smartfridge/drying_rack //should really be seeing this without admin fuckery.
var/drying = FALSE
/obj/machinery/smartfridge/drying_rack/Initialize(mapload)
. = ..()
// Cache the old_parts first, we'll delete it after we've changed component_parts to a new list.
// This stops handle_atom_del being called on every part when not necessary.
var/list/old_parts = component_parts.Copy()
component_parts = null
circuit = null
QDEL_LIST(old_parts)
RefreshParts()
/obj/machinery/smartfridge/drying_rack/on_deconstruction()
new /obj/item/stack/sheet/mineral/wood(drop_location(), 10)
..()
@@ -458,9 +445,9 @@
/obj/machinery/smartfridge/organ/RefreshParts()
. = ..()
for(var/obj/item/stock_parts/matter_bin/B in component_parts)
max_n_of_items = 20 * B.rating
repair_rate = max(0, STANDARD_ORGAN_HEALING * (B.rating - 1) * 0.5)
for(var/datum/stock_part/matter_bin/matter_bin in component_parts)
max_n_of_items = 20 * matter_bin.tier
repair_rate = max(0, STANDARD_ORGAN_HEALING * (matter_bin.tier - 1) * 0.5)
/obj/machinery/smartfridge/organ/process(delta_time)
for(var/obj/item/organ/organ in contents)
+6 -6
View File
@@ -86,13 +86,13 @@
var/new_max_items = 10
var/new_processed_items_per_cycle = 0
for(var/obj/item/stock_parts/matter_bin/bin in component_parts)
new_max_items += MAX_ITEMS_PER_RATING * bin.rating
for(var/datum/stock_part/matter_bin/bin in component_parts)
new_max_items += MAX_ITEMS_PER_RATING * bin.tier
for(var/obj/item/stock_parts/manipulator/manipulator in component_parts)
new_productivity += manipulator.rating
new_efficiency += manipulator.rating
new_processed_items_per_cycle += PROCESSED_ITEMS_PER_RATING * manipulator.rating
for(var/datum/stock_part/manipulator/manipulator in component_parts)
new_productivity += manipulator.tier
new_efficiency += manipulator.tier
new_processed_items_per_cycle += PROCESSED_ITEMS_PER_RATING * manipulator.tier
max_items = new_max_items
efficiency = new_efficiency
+4 -4
View File
@@ -162,10 +162,10 @@
/obj/machinery/hydroponics/constructable/RefreshParts()
. = ..()
var/tmp_capacity = 0
for (var/obj/item/stock_parts/matter_bin/M in component_parts)
tmp_capacity += M.rating
for (var/obj/item/stock_parts/manipulator/M in component_parts)
rating = M.rating
for (var/datum/stock_part/matter_bin/matter_bin in component_parts)
tmp_capacity += matter_bin.tier
for (var/datum/stock_part/manipulator/manipulator in component_parts)
rating = manipulator.tier
maxwater = tmp_capacity * 50 // Up to 300
maxnutri = (tmp_capacity * 5) + STATIC_NUTRIENT_CAPACITY // Up to 50 Maximum
reagents.maximum_volume = maxnutri
+4 -4
View File
@@ -90,10 +90,10 @@
/obj/machinery/seed_extractor/RefreshParts()
. = ..()
for(var/obj/item/stock_parts/matter_bin/B in component_parts)
max_seeds = initial(max_seeds) * B.rating
for(var/obj/item/stock_parts/manipulator/M in component_parts)
seed_multiplier = initial(seed_multiplier) * M.rating
for(var/datum/stock_part/matter_bin/matter_bin in component_parts)
max_seeds = initial(max_seeds) * matter_bin.tier
for(var/datum/stock_part/manipulator/manipulator in component_parts)
seed_multiplier = initial(seed_multiplier) * manipulator.tier
/obj/machinery/seed_extractor/examine(mob/user)
. = ..()
+2 -2
View File
@@ -28,8 +28,8 @@
/obj/machinery/power/rtg/RefreshParts()
. = ..()
var/part_level = 0
for(var/obj/item/stock_parts/SP in component_parts)
part_level += SP.rating
for(var/datum/stock_part/stock_part in component_parts)
part_level += stock_part.tier
power_gen = initial(power_gen) * part_level
+6 -6
View File
@@ -87,15 +87,15 @@
var/fire_shoot_delay = 12 SECONDS
var/min_fire_delay = 2.4 SECONDS
var/power_usage = 350
for(var/obj/item/stock_parts/micro_laser/laser in component_parts)
max_fire_delay -= 2 SECONDS * laser.rating
min_fire_delay -= 0.4 SECONDS * laser.rating
fire_shoot_delay -= 2 SECONDS * laser.rating
for(var/datum/stock_part/micro_laser/laser in component_parts)
max_fire_delay -= 2 SECONDS * laser.tier
min_fire_delay -= 0.4 SECONDS * laser.tier
fire_shoot_delay -= 2 SECONDS * laser.tier
maximum_fire_delay = max_fire_delay
minimum_fire_delay = min_fire_delay
fire_delay = fire_shoot_delay
for(var/obj/item/stock_parts/manipulator/manipulator in component_parts)
power_usage -= 50 * manipulator.rating
for(var/datum/stock_part/manipulator/manipulator in component_parts)
power_usage -= 50 * manipulator.tier
update_mode_power_usage(ACTIVE_POWER_USE, power_usage)
/obj/machinery/power/emitter/examine(mob/user)
+2 -2
View File
@@ -65,8 +65,8 @@
var/IO = 0
var/MC = 0
var/C
for(var/obj/item/stock_parts/capacitor/CP in component_parts)
IO += CP.rating
for(var/datum/stock_part/capacitor/capacitor in component_parts)
IO += capacitor.tier
input_level_max = initial(input_level_max) * IO
output_level_max = initial(output_level_max) * IO
for(var/obj/item/stock_parts/cell/PC in component_parts)
+3 -3
View File
@@ -42,9 +42,9 @@
. = ..()
var/power_multiplier = 0
zap_cooldown = 100
for(var/obj/item/stock_parts/capacitor/C in component_parts)
power_multiplier += C.rating
zap_cooldown -= (C.rating * 20)
for(var/datum/stock_part/capacitor/capacitor in component_parts)
power_multiplier += capacitor.tier
zap_cooldown -= (capacitor.tier * 20)
input_power_multiplier = max(1 * (power_multiplier / 8), 0.25) //Max out at 50% efficency.
/obj/machinery/power/energy_accumulator/tesla_coil/examine(mob/user)
@@ -471,24 +471,28 @@
recharge_amount = initial(recharge_amount)
var/newpowereff = 0.0666666
var/parts_rating = 0
for(var/obj/item/stock_parts/cell/P in component_parts)
cell = P
for(var/obj/item/stock_parts/matter_bin/M in component_parts)
newpowereff += 0.0166666666*M.rating
parts_rating += M.rating
for(var/obj/item/stock_parts/capacitor/C in component_parts)
recharge_amount *= C.rating
parts_rating += C.rating
for(var/obj/item/stock_parts/manipulator/M in component_parts)
if (M.rating > 1)
for(var/obj/item/stock_parts/cell/stock_cell in component_parts)
cell = stock_cell
for(var/datum/stock_part/matter_bin/matter_bin in component_parts)
newpowereff += 0.0166666666 * matter_bin.tier
parts_rating += matter_bin.tier
for(var/datum/stock_part/capacitor/capacitor in component_parts)
recharge_amount *= capacitor.tier
parts_rating += capacitor.tier
for(var/datum/stock_part/manipulator/manipulator in component_parts)
/* SKYRAT EDIT - ORIGINAL
if (manipulator.tier > 3)
dispensable_reagents |= upgrade_reagents
*/
//SKYRAT EDIT START
if (M.rating > 2)
if (manipulator.tier > 1)
dispensable_reagents |= upgrade_reagents
if (manipulator.tier > 2)
dispensable_reagents |= upgrade_reagents2
if (M.rating > 3)
if (manipulator.tier > 3)
dispensable_reagents |= upgrade_reagents3
//SKYRAT EDIT END
parts_rating += M.rating
parts_rating += manipulator.tier
powerefficiency = round(newpowereff, 0.01)
/obj/machinery/chem_dispenser/proc/replace_beaker(mob/living/user, obj/item/reagent_containers/new_beaker)
@@ -91,8 +91,8 @@
/obj/machinery/chem_heater/RefreshParts()
. = ..()
heater_coefficient = 0.1
for(var/obj/item/stock_parts/micro_laser/M in component_parts)
heater_coefficient *= M.rating
for(var/datum/stock_part/micro_laser/micro_laser in component_parts)
heater_coefficient *= micro_laser.tier
/obj/machinery/chem_heater/examine(mob/user)
. = ..()
@@ -55,8 +55,8 @@ This will not clean any inverted reagents. Inverted reagents will still be corre
/obj/machinery/chem_mass_spec/RefreshParts()
. = ..()
cms_coefficient = 1
for(var/obj/item/stock_parts/micro_laser/laser in component_parts)
cms_coefficient /= laser.rating
for(var/datum/stock_part/micro_laser/laser in component_parts)
cms_coefficient /= laser.tier
/obj/machinery/chem_mass_spec/deconstruct(disassembled)
if(beaker1)
@@ -67,8 +67,8 @@
/obj/machinery/reagentgrinder/RefreshParts()
. = ..()
speed = 1
for(var/obj/item/stock_parts/manipulator/M in component_parts)
speed = M.rating
for(var/datum/stock_part/manipulator/manipulator in component_parts)
speed = manipulator.tier
/obj/machinery/reagentgrinder/examine(mob/user)
. = ..()
@@ -38,8 +38,8 @@
. = ..()
create_reagents(REAGENTS_BASE_VOLUME, INJECTABLE)
AddComponent(/datum/component/plumbing/simple_demand)
for(var/obj/item/stock_parts/matter_bin/B in component_parts)
reagents.maximum_volume += REAGENTS_BASE_VOLUME * B.rating
for(var/datum/stock_part/matter_bin/B in component_parts)
reagents.maximum_volume += REAGENTS_BASE_VOLUME * B.tier
if(is_operational)
begin_processing()
@@ -54,8 +54,8 @@
/obj/machinery/smoke_machine/RefreshParts()
. = ..()
var/new_volume = REAGENTS_BASE_VOLUME
for(var/obj/item/stock_parts/matter_bin/B in component_parts)
new_volume += REAGENTS_BASE_VOLUME * B.rating
for(var/datum/stock_part/matter_bin/B in component_parts)
new_volume += REAGENTS_BASE_VOLUME * B.tier
if(!reagents)
create_reagents(new_volume, INJECTABLE)
reagents.maximum_volume = new_volume
@@ -63,11 +63,11 @@
reagents.expose(loc, TOUCH) // if someone manages to downgrade it without deconstructing
reagents.clear_reagents()
efficiency = 18
for(var/obj/item/stock_parts/capacitor/C in component_parts)
efficiency += 2 * C.rating
for(var/datum/stock_part/capacitor/C in component_parts)
efficiency += 2 * C.tier
max_range = 1
for(var/obj/item/stock_parts/manipulator/M in component_parts)
max_range += M.rating
for(var/datum/stock_part/manipulator/M in component_parts)
max_range += M.tier
max_range = max(3, max_range)
/obj/machinery/smoke_machine/on_set_is_operational(old_value)
+6 -6
View File
@@ -92,14 +92,14 @@
var/M = 0
var/L = 0
var/S = 0
for(var/obj/item/stock_parts/capacitor/Cap in component_parts)
C += ((Cap.rating - 1) * 0.1)
for(var/datum/stock_part/capacitor/capacitor in component_parts)
C += ((capacitor.tier - 1) * 0.1)
power_saver = 1 - C
for(var/obj/item/stock_parts/manipulator/Manip in component_parts)
M += ((Manip.rating - 1) * PART_CASH_OFFSET_AMOUNT)
for(var/datum/stock_part/manipulator/manipulator in component_parts)
M += ((manipulator.tier - 1) * PART_CASH_OFFSET_AMOUNT)
positive_cash_offset = M
for(var/obj/item/stock_parts/micro_laser/Laser in component_parts)
L += ((Laser.rating - 1) * PART_CASH_OFFSET_AMOUNT)
for(var/datum/stock_part/micro_laser/Laser in component_parts)
L += ((Laser.tier - 1) * PART_CASH_OFFSET_AMOUNT)
negative_cash_offset = L
for(var/datum/stock_part/scanning_module/scanning_module in component_parts)
S += ((scanning_module.tier - 1) * 0.25)
@@ -16,8 +16,8 @@ Note: Must be placed within 3 tiles of the R&D Console
/obj/machinery/rnd/destructive_analyzer/RefreshParts()
. = ..()
var/T = 0
for(var/obj/item/stock_parts/S in component_parts)
T += S.rating
for(var/datum/stock_part/stock_part in component_parts)
T += stock_part.tier
decon_mod = T
/obj/machinery/rnd/destructive_analyzer/proc/ConvertReqString2List(list/source_list)
+4 -4
View File
@@ -110,12 +110,12 @@
. = ..()
malfunction_probability_coeff = malfunction_probability_coeff_modifier
resetTime = initial(resetTime)
for(var/obj/item/stock_parts/manipulator/M in component_parts)
resetTime = max(1, resetTime - M.rating)
for(var/datum/stock_part/manipulator/manipulator in component_parts)
resetTime = max(1, resetTime - manipulator.tier)
for(var/datum/stock_part/scanning_module/scanning_module in component_parts)
malfunction_probability_coeff += scanning_module.tier * 2
for(var/obj/item/stock_parts/micro_laser/M in component_parts)
malfunction_probability_coeff += M.rating
for(var/datum/stock_part/micro_laser/micro_laser in component_parts)
malfunction_probability_coeff += micro_laser.tier
/obj/machinery/rnd/experimentor/examine(mob/user)
. = ..()
@@ -200,15 +200,15 @@
if(materials)
var/total_storage = 0
for(var/obj/item/stock_parts/matter_bin/bin in component_parts)
total_storage += bin.rating * 75000
for(var/datum/stock_part/matter_bin/bin in component_parts)
total_storage += bin.tier * 75000
materials.set_local_size(total_storage)
var/total_rating = 1.2
for(var/obj/item/stock_parts/manipulator/manipulator in component_parts)
total_rating -= manipulator.rating * 0.1
for(var/datum/stock_part/manipulator/manipulator in component_parts)
total_rating -= manipulator.tier * 0.1
efficiency_coeff = max(total_rating, 0)
@@ -11,8 +11,8 @@
var/rating = 0
for(var/obj/item/stock_parts/manipulator/manipulator in component_parts)
rating += manipulator.rating // There is only one.
for(var/datum/stock_part/manipulator/manipulator in component_parts)
rating += manipulator.tier // There is only one.
efficiency_coeff = 0.5 ** max(rating - 1, 0) // One sheet, half sheet, quarter sheet, eighth sheet.
@@ -72,14 +72,129 @@ GLOBAL_LIST_INIT(stock_part_datums, generate_stock_part_datums())
physical_object_type = /obj/item/stock_parts/scanning_module
physical_object_base_type = /obj/item/stock_parts/scanning_module
/datum/stock_part/scanning_module/tier2
/datum/stock_part/scanning_module/adv
tier = 2
physical_object_type = /obj/item/stock_parts/scanning_module/adv
/datum/stock_part/scanning_module/tier3
/datum/stock_part/scanning_module/phasic
tier = 3
physical_object_type = /obj/item/stock_parts/scanning_module/phasic
/datum/stock_part/scanning_module/tier4
/datum/stock_part/scanning_module/triphasic
tier = 4
physical_object_type = /obj/item/stock_parts/scanning_module/triphasic
/datum/stock_part/capacitor
tier = 1
physical_object_type = /obj/item/stock_parts/capacitor
physical_object_base_type = /obj/item/stock_parts/capacitor
/datum/stock_part/capacitor/adv
tier = 2
physical_object_type = /obj/item/stock_parts/capacitor/adv
/datum/stock_part/capacitor/super
tier = 3
physical_object_type = /obj/item/stock_parts/capacitor/super
/datum/stock_part/capacitor/quadratic
tier = 4
physical_object_type = /obj/item/stock_parts/capacitor/quadratic
/datum/stock_part/manipulator
tier = 1
physical_object_type = /obj/item/stock_parts/manipulator
physical_object_base_type = /obj/item/stock_parts/manipulator
/datum/stock_part/manipulator/nano
tier = 2
physical_object_type = /obj/item/stock_parts/manipulator/nano
/datum/stock_part/manipulator/pico
tier = 3
physical_object_type = /obj/item/stock_parts/manipulator/pico
/datum/stock_part/manipulator/femto
tier = 4
physical_object_type = /obj/item/stock_parts/manipulator/femto
/datum/stock_part/micro_laser
tier = 1
physical_object_type = /obj/item/stock_parts/micro_laser
physical_object_base_type = /obj/item/stock_parts/micro_laser
/datum/stock_part/micro_laser/high
tier = 2
physical_object_type = /obj/item/stock_parts/micro_laser/high
/datum/stock_part/micro_laser/ultra
tier = 3
physical_object_type = /obj/item/stock_parts/micro_laser/ultra
/datum/stock_part/micro_laser/quadultra
tier = 4
physical_object_type = /obj/item/stock_parts/micro_laser/quadultra
/datum/stock_part/matter_bin
tier = 1
physical_object_type = /obj/item/stock_parts/matter_bin
physical_object_base_type = /obj/item/stock_parts/matter_bin
/datum/stock_part/matter_bin/adv
tier = 2
physical_object_type = /obj/item/stock_parts/matter_bin/adv
/datum/stock_part/matter_bin/super
tier = 3
physical_object_type = /obj/item/stock_parts/matter_bin/super
/datum/stock_part/matter_bin/bluespace
tier = 4
physical_object_type = /obj/item/stock_parts/matter_bin/bluespace
/// Subspace stock parts
/datum/stock_part/ansible
tier = 1
physical_object_type = /obj/item/stock_parts/subspace/ansible
physical_object_base_type = /obj/item/stock_parts/subspace/ansible
/datum/stock_part/filter
tier = 1
physical_object_type = /obj/item/stock_parts/subspace/filter
physical_object_base_type = /obj/item/stock_parts/subspace/filter
/datum/stock_part/amplifier
tier = 1
physical_object_type = /obj/item/stock_parts/subspace/amplifier
physical_object_base_type = /obj/item/stock_parts/subspace/amplifier
/datum/stock_part/treatment
tier = 1
physical_object_type = /obj/item/stock_parts/subspace/treatment
physical_object_base_type = /obj/item/stock_parts/subspace/treatment
/datum/stock_part/analyzer
tier = 1
physical_object_type = /obj/item/stock_parts/subspace/analyzer
physical_object_base_type = /obj/item/stock_parts/subspace/analyzer
/datum/stock_part/crystal
tier = 1
physical_object_type = /obj/item/stock_parts/subspace/crystal
physical_object_base_type = /obj/item/stock_parts/subspace/crystal
/datum/stock_part/transmitter
tier = 1
physical_object_type = /obj/item/stock_parts/subspace/transmitter
physical_object_base_type = /obj/item/stock_parts/subspace/transmitter
/datum/stock_part/card_reader
tier = 1
physical_object_type = /obj/item/stock_parts/card_reader
physical_object_base_type = /obj/item/stock_parts/card_reader
/datum/stock_part/water_recycler
tier = 1
physical_object_type = /obj/item/stock_parts/water_recycler
physical_object_base_type = /obj/item/stock_parts/water_recycler
+2 -2
View File
@@ -43,8 +43,8 @@
/obj/machinery/mech_bay_recharge_port/RefreshParts()
. = ..()
var/total_rating = 0
for(var/obj/item/stock_parts/capacitor/cap in component_parts)
total_rating += cap.rating
for(var/datum/stock_part/capacitor/capacitor in component_parts)
total_rating += capacitor.tier
recharge_power = total_rating * 12.5
/obj/machinery/mech_bay_recharge_port/examine(mob/user)
@@ -90,20 +90,20 @@
var/T = 0
//maximum stocking amount (default 300000, 600000 at T4)
for(var/obj/item/stock_parts/matter_bin/M in component_parts)
T += M.rating
rmat.set_local_size((200000 + (T*50000)))
for(var/datum/stock_part/matter_bin/matter_bin in component_parts)
T += matter_bin.tier
rmat.set_local_size((200000 + (T * 50000)))
//resources adjustment coefficient (1 -> 0.85 -> 0.7 -> 0.55)
T = 1.15
for(var/obj/item/stock_parts/micro_laser/Ma in component_parts)
T -= Ma.rating*0.15
for(var/datum/stock_part/micro_laser/micro_laser in component_parts)
T -= micro_laser.tier * 0.15
component_coeff = T
//building time adjustment coefficient (1 -> 0.8 -> 0.6)
T = -1
for(var/obj/item/stock_parts/manipulator/Ml in component_parts)
T += Ml.rating
for(var/datum/stock_part/manipulator/manipulator in component_parts)
T += manipulator.tier
time_coeff = round(initial(time_coeff) - (initial(time_coeff)*(T))/5,0.01)
// Adjust the build time of any item currently being built.
+38 -21
View File
@@ -15,40 +15,49 @@
var/panel_open = FALSE
///Parts used in building the wheelchair
var/list/required_parts = list(
/obj/item/stock_parts/manipulator,
/obj/item/stock_parts/manipulator,
/obj/item/stock_parts/capacitor,
/datum/stock_part/manipulator,
/datum/stock_part/manipulator,
/datum/stock_part/capacitor,
)
///power cell we draw power from
var/obj/item/stock_parts/cell/power_cell
///stock parts for this chair
var/list/component_parts = list()
/obj/vehicle/ridden/wheelchair/motorized/make_ridable()
AddElement(/datum/element/ridable, /datum/component/riding/vehicle/wheelchair/motorized)
/obj/vehicle/ridden/wheelchair/motorized/CheckParts(list/parts_list)
. = ..()
for(var/obj/item/stock_parts/part in parts_list)
// find macthing datum/stock_part for this part and add to component list
var/datum/stock_part/newstockpart = GLOB.stock_part_datums_per_object[part.type]
if(isnull(newstockpart))
CRASH("No corresponding datum/stock_part for [part.type]")
component_parts += newstockpart
// delete this part
part.moveToNullspace()
qdel(part)
refresh_parts()
/obj/vehicle/ridden/wheelchair/motorized/proc/refresh_parts()
speed = 1 // Should never be under 1
for(var/obj/item/stock_parts/manipulator/M in contents)
speed += M.rating
for(var/datum/stock_part/manipulator/manipulator in component_parts)
speed += manipulator.tier
var/chair_icon = "motorized_wheelchair[speed > delay_multiplier ? "_fast" : ""]"
if(icon_state != chair_icon)
wheels_overlay = image(icon, chair_icon + "_overlay", ABOVE_MOB_LAYER)
wheels_overlay = image(icon, chair_icon + "_overlay", ABOVE_MOB_LAYER)
icon_state = chair_icon
for(var/obj/item/stock_parts/capacitor/C in contents)
power_efficiency = C.rating
for(var/datum/stock_part/capacitor/capacitor in component_parts)
power_efficiency = capacitor.tier
/obj/vehicle/ridden/wheelchair/motorized/get_cell()
return power_cell
/obj/vehicle/ridden/wheelchair/motorized/atom_destruction(damage_flag)
var/turf/T = get_turf(src)
for(var/atom/movable/atom_content as anything in contents)
atom_content.forceMove(T)
for(var/datum/stock_part/part in component_parts)
new part.physical_object_type(drop_location())
return ..()
/obj/vehicle/ridden/wheelchair/motorized/relaymove(mob/living/user, direction)
@@ -93,18 +102,27 @@
if(!istype(I, /obj/item/stock_parts))
return ..()
var/obj/item/stock_parts/newstockpart = I
for(var/obj/item/stock_parts/oldstockpart in contents)
var/datum/stock_part/newstockpart = GLOB.stock_part_datums_per_object[I.type]
if(isnull(newstockpart))
CRASH("No corresponding datum/stock_part for [newstockpart.type]")
for(var/datum/stock_part/oldstockpart in component_parts)
var/type_to_check
for(var/pathtype in required_parts)
if(ispath(oldstockpart.type, pathtype))
type_to_check = pathtype
break
if(istype(newstockpart, type_to_check) && istype(oldstockpart, type_to_check))
if(newstockpart.get_part_rating() > oldstockpart.get_part_rating())
newstockpart.forceMove(src)
user.put_in_hands(oldstockpart)
user.visible_message(span_notice("[user] replaces [oldstockpart] with [newstockpart] in [src]."), span_notice("You replace [oldstockpart] with [newstockpart]."))
if(newstockpart.tier > oldstockpart.tier)
// delete the part in the users hand and add the datum part to the component_list
I.moveToNullspace()
qdel(I)
component_parts += newstockpart
// create an new instance of the old datum stock part physical type & put it in the users hand
var/obj/item/stock_parts/part = new oldstockpart.physical_object_type
user.put_in_hands(part)
component_parts -= oldstockpart
// user message
user.visible_message(span_notice("[user] replaces [oldstockpart.name()] with [newstockpart.name()] in [src]."), span_notice("You replace [oldstockpart.name()] with [newstockpart.name()]."))
break
refresh_parts()
@@ -115,9 +133,8 @@
to_chat(user, span_notice("You detach the wheels and deconstruct the chair."))
new /obj/item/stack/rods(drop_location(), 8)
new /obj/item/stack/sheet/iron(drop_location(), 10)
var/turf/T = get_turf(src)
for(var/atom/movable/atom_content as anything in contents)
atom_content.forceMove(T)
for(var/datum/stock_part/part in component_parts)
new part.physical_object_type(drop_location())
qdel(src)
return TRUE
+13 -13
View File
@@ -77,9 +77,9 @@
/obj/machinery/component_printer/proc/calculate_efficiency()
var/rating = 0
for(var/obj/item/stock_parts/manipulator/manipulator in component_parts)
for(var/datum/stock_part/manipulator/manipulator in component_parts)
///we do -1 because normal manipulators rating of 1 gives us 1-1=0 i.e no decrement in cost
rating += manipulator.rating-1
rating += manipulator.tier-1
///linear interpolation between full cost i.e 1 & 1/8th the cost i.e 0.125
///we do it in 6 steps because maximum rating of 2 manipulators is 8 but -1 gives us 6
@@ -89,8 +89,8 @@
if(materials)
var/total_storage = 0
for(var/obj/item/stock_parts/matter_bin/bin in component_parts)
total_storage += bin.rating * 75000
for(var/datum/stock_part/matter_bin/bin in component_parts)
total_storage += bin.tier * 75000
materials.set_local_size(total_storage)
@@ -223,8 +223,8 @@
greyscale_colors = CIRCUIT_COLOR_SCIENCE
build_path = /obj/machinery/component_printer
req_components = list(
/obj/item/stock_parts/matter_bin = 2,
/obj/item/stock_parts/manipulator = 2,
/datum/stock_part/matter_bin = 2,
/datum/stock_part/manipulator = 2,
)
/obj/machinery/debug_component_printer
@@ -350,20 +350,20 @@
if(materials)
var/total_storage = 0
for(var/obj/item/stock_parts/matter_bin/bin in component_parts)
total_storage += bin.rating * 75000
for(var/datum/stock_part/matter_bin/bin in component_parts)
total_storage += bin.tier * 75000
materials.set_local_size(total_storage)
var/rating = 0
for(var/obj/item/stock_parts/manipulator/manipulator in component_parts)
for(var/datum/stock_part/manipulator/manipulator in component_parts)
///we do -1 because normal manipulators rating of 1 gives us 1-1=0 i.e no decrement in cost
rating += manipulator.rating-1
rating += manipulator.tier - 1
///linear interpolation between full cost i.e 1 & 1/8th the cost i.e 0.125
///we do it in 6 steps because maximum rating of 2 manipulators is 8 but -1 gives us 6
var/coff=1.0+((0.125-1.0)*(rating/6))
var/coff = 1.0 + ((0.125 - 1.0) * (rating/6))
return coff
@@ -535,6 +535,6 @@
greyscale_colors = CIRCUIT_COLOR_SCIENCE
build_path = /obj/machinery/module_duplicator
req_components = list(
/obj/item/stock_parts/matter_bin = 2,
/obj/item/stock_parts/manipulator = 2,
/datum/stock_part/matter_bin = 2,
/datum/stock_part/manipulator = 2,
)
+9 -3
View File
@@ -409,13 +409,13 @@ if [ "$pcre2_support" -eq 1 ]; then
echo
echo -e "${RED}ERROR: TIMER_OVERRIDE used without TIMER_UNIQUE.${NC}"
st=1
fi
fi;
part "trailing newlines"
if $grep -PU '[^\n]$(?!\n)' $code_files; then
echo
echo -e "${RED}ERROR: File(s) with no trailing newline detected, please add one.${NC}"
st=1
fi
fi;
part "docking_port varedits"
if $grep -PU '^/obj/docking_port/mobile.*\{\n[^}]*(width|height|dwidth|dheight)[^}]*[}]' $map_files; then
echo
@@ -423,10 +423,16 @@ if [ "$pcre2_support" -eq 1 ]; then
echo -e "\t\tPlease remove the width, height, dwidth, and dheight varedits from the docking_port.${NC}"
st=1
fi;
part "datum stockpart sanity"
if $grep -P 'for\b.*/obj/item/stock_parts/(?!cell)(?![\w_]+ in )' $code_files; then
echo
echo -e "${RED}ERROR: Should be using datum/stock_part instead"
st=1
fi;
else
echo -e "${RED}pcre2 not supported, skipping checks requiring pcre2"
echo -e "if you want to run these checks install ripgrep with pcre2 support.${NC}"
fi
fi;
if [ $st = 0 ]; then
echo