diff --git a/code/game/objects/items/weapons/circuitboards/machinery/mining_drill.dm b/code/game/objects/items/weapons/circuitboards/machinery/mining_drill.dm index c24b296412..3f97fad2f7 100644 --- a/code/game/objects/items/weapons/circuitboards/machinery/mining_drill.dm +++ b/code/game/objects/items/weapons/circuitboards/machinery/mining_drill.dm @@ -17,4 +17,6 @@ build_path = /obj/machinery/mining/brace board_type = new /datum/frame/frame_types/machine origin_tech = list(TECH_DATA = 1, TECH_ENGINEERING = 1) - req_components = list() + req_components = list( + /obj/item/weapon/stock_parts/manipulator = 1 + ) diff --git a/code/modules/mining/drilling/drill.dm b/code/modules/mining/drilling/drill.dm index b8618ccf86..e1874f1a93 100644 --- a/code/modules/mining/drilling/drill.dm +++ b/code/modules/mining/drilling/drill.dm @@ -11,11 +11,13 @@ icon_state = "mining_drill" circuit = /obj/item/weapon/circuitboard/miningdrill var/braces_needed = 2 - var/list/supports = list() + var/list/obj/machinery/mining/brace/supports = list() var/supported = 0 var/active = 0 var/list/resource_field = list() var/obj/item/device/radio/intercom/faultreporter + var/drill_range = 5 + var/offset = 2 var/list/ore_types = list( "hematite" = /obj/item/weapon/ore/iron, @@ -242,10 +244,14 @@ harvest_speed = 0 capacity = 0 charge_use = 50 + drill_range = 5 + offset = 2 for(var/obj/item/weapon/stock_parts/P in component_parts) if(istype(P, /obj/item/weapon/stock_parts/micro_laser)) harvest_speed = P.rating + if(P.rating >= 5) + harvest_speed *= 2 exotic_drilling = P.rating - 1 if(exotic_drilling >= 1) ore_types |= ore_types_uncommon @@ -254,6 +260,14 @@ else ore_types -= ore_types_uncommon ore_types -= ore_types_rare + if(P.rating > 3) // are we t4+? + // default drill range 5, offset 2 + if(P.rating >= 5) // t5 + drill_range = 9 + offset = 4 + else if(P.rating >= 4) // t4 + drill_range = 7 + offset = 3 if(istype(P, /obj/item/weapon/stock_parts/matter_bin)) capacity = 200 * P.rating if(istype(P, /obj/item/weapon/stock_parts/capacitor)) @@ -271,8 +285,12 @@ else anchored = TRUE - if(supports && supports.len >= braces_needed) - supported = 1 + if(supports) + if(supports.len >= braces_needed) + supported = 1 + else for(var/obj/machinery/mining/brace/check in supports) + if(check.brace_tier > 3) + supported = 1 update_icon() @@ -293,11 +311,11 @@ var/turf/T = get_turf(src) if(!istype(T)) return - var/tx = T.x - 2 - var/ty = T.y - 2 + var/tx = T.x - offset + var/ty = T.y - offset var/turf/simulated/mine_turf - for(var/iy = 0,iy < 5, iy++) - for(var/ix = 0, ix < 5, ix++) + for(var/iy = 0,iy < drill_range, iy++) + for(var/ix = 0, ix < drill_range, ix++) mine_turf = locate(tx + ix, ty + iy, T.z) if(!istype(mine_turf, /turf/space/)) if(mine_turf && mine_turf.has_resources) @@ -334,12 +352,23 @@ desc = "A machinery brace for an industrial drill. It looks easily two feet thick." icon_state = "mining_brace" circuit = /obj/item/weapon/circuitboard/miningdrillbrace + var/brace_tier = 1 var/obj/machinery/mining/drill/connected -/obj/machinery/mining/brace/New() - ..() +/obj/machinery/mining/brace/examine(mob/user) + . = ..() + if(brace_tier > 3) + . += SPAN_NOTICE("The internals of the brace look resilient enough to support a drill by itself.") - component_parts = list() +/obj/machinery/mining/brace/Initialize() + . = ..() + default_apply_parts() + +/obj/machinery/mining/brace/RefreshParts() + ..() + brace_tier = 0 + for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts) + brace_tier += M.rating /obj/machinery/mining/brace/attackby(obj/item/weapon/W as obj, mob/user as mob) if(connected && connected.active) @@ -350,6 +379,8 @@ return if(default_deconstruction_crowbar(user, W)) return + if(default_part_replacement(user,W)) + return if(W.is_wrench())