From 8c790d91b4e8f4d2f29dc7020311ad7e53f180fc Mon Sep 17 00:00:00 2001 From: Hatterhat <31829017+Hatterhat@users.noreply.github.com> Date: Mon, 21 Dec 2020 21:34:40 -0600 Subject: [PATCH] A Thing About Digging Sand and Mineral Processor Speed (#7778) * sand digging/mineral processor speed squashed * typo moment + stacker also goes fast Co-authored-by: Hatterhat --- code/__defines/mobs.dm | 2 +- .../objects/items/weapons/storage/bags.dm | 2 +- code/modules/mining/machine_processing.dm | 38 ++++++++++++++++--- code/modules/mining/machine_stacking.dm | 12 ++++++ code/modules/mining/machine_unloading.dm | 13 ++++++- code/modules/mining/mine_items.dm | 5 +++ code/modules/mining/mine_turfs.dm | 25 ++++++------ code/modules/recycling/conveyor2.dm | 22 +++++++++++ 8 files changed, 99 insertions(+), 20 deletions(-) diff --git a/code/__defines/mobs.dm b/code/__defines/mobs.dm index 566ffc6829..2991886a54 100644 --- a/code/__defines/mobs.dm +++ b/code/__defines/mobs.dm @@ -25,7 +25,7 @@ #define BORGMESON 0x1 #define BORGTHERM 0x2 #define BORGXRAY 0x4 -#define BORGMATERIAL 8 +#define BORGMATERIAL 0x8 #define STANCE_ATTACK 11 // Backwards compatability #define STANCE_ATTACKING 12 // Ditto diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm index 7369d39004..1b19bf7a20 100644 --- a/code/game/objects/items/weapons/storage/bags.dm +++ b/code/game/objects/items/weapons/storage/bags.dm @@ -124,7 +124,7 @@ to_chat(user, "You fill the [src].") else if(!silent) to_chat(user, "You fail to pick anything up with \the [src].") - if(istype(user.pulling, /obj/structure/ore_box/)) //Bit of a crappy way to do this, as it doubles spam for the user, but it works. + if(istype(user.pulling, /obj/structure/ore_box)) //Bit of a crappy way to do this, as it doubles spam for the user, but it works. var/obj/structure/ore_box/O = user.pulling O.attackby(src, user) diff --git a/code/modules/mining/machine_processing.dm b/code/modules/mining/machine_processing.dm index c820b5abf4..6775b1709f 100644 --- a/code/modules/mining/machine_processing.dm +++ b/code/modules/mining/machine_processing.dm @@ -65,7 +65,7 @@ dat += "Claim points.
" else dat += "No ID inserted. Insert ID.
" - + dat += "High-speed processing is [(machine.speed_process ? "active" : "inactive")]." dat += "
" for(var/ore in machine.ores_processing) @@ -122,6 +122,10 @@ show_all_ores = !show_all_ores + if(href_list["toggle_speed"]) + + machine.toggle_speed() + if(href_list["choice"]) if(istype(inserted_id)) if(href_list["choice"] == "eject") @@ -163,6 +167,7 @@ var/list/ores_stored[0] var/static/list/alloy_data var/active = FALSE + var/tick = 0 var/points = 0 var/static/list/ore_values = list( @@ -208,6 +213,25 @@ if(src.output) break return +/obj/machinery/mineral/processing_unit/proc/toggle_speed(var/forced) + var/area/refinery_area = get_area(src) + if(forced) + speed_process = forced + else + speed_process = !speed_process // switching gears + if(speed_process) // high gear + STOP_MACHINE_PROCESSING(src) + START_PROCESSING(SSfastprocess, src) + else // low gear + STOP_PROCESSING(SSfastprocess, src) + START_MACHINE_PROCESSING(src) + for(var/obj/machinery/mineral/unloading_machine/unloader in refinery_area.contents) + unloader.toggle_speed() + for(var/obj/machinery/conveyor_switch/cswitch in refinery_area.contents) + cswitch.toggle_speed() + for(var/obj/machinery/mineral/stacking_machine/stacker in refinery_area.contents) + stacker.toggle_speed() + /obj/machinery/mineral/processing_unit/process() if (!src.output || !src.input) @@ -217,11 +241,11 @@ return var/list/tick_alloys = list() + if(speed_process) + tick++ //Grab some more ore to process this tick. - for(var/i = 0,iYou start digging.") playsound(user, 'sound/effects/rustle1.ogg', 50, 1) - if(!do_after(user,40)) return + if(!do_after(user,digspeed)) return to_chat(user, "You dug a hole.") GetDrilled() @@ -543,7 +544,7 @@ turf/simulated/mineral/floor/light_corner if(!density) if(!sand_dug) sand_dug = 1 - for(var/i=0;i<(rand(3)+2);i++) + for(var/i=0;i<5;i++) new/obj/item/weapon/ore/glass(src) update_icon() return diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm index 91b04cf494..37dd909a74 100644 --- a/code/modules/recycling/conveyor2.dm +++ b/code/modules/recycling/conveyor2.dm @@ -40,6 +40,18 @@ default_apply_parts() +/obj/machinery/conveyor/proc/toggle_speed(var/forced) + if(forced) + speed_process = forced + else + speed_process = !speed_process // switching gears + if(speed_process) // high gear + STOP_MACHINE_PROCESSING(src) + START_PROCESSING(SSfastprocess, src) + else // low gear + STOP_PROCESSING(SSfastprocess, src) + START_MACHINE_PROCESSING(src) + /obj/machinery/conveyor/proc/setmove() if(operating == FORWARDS) movedir = forwards @@ -186,6 +198,7 @@ var/list/conveyors // the list of converyors that are controlled by this switch anchored = 1 + var/speed_active = FALSE // are the linked conveyors on SSfastprocess? @@ -200,6 +213,15 @@ if(C.id == id) conveyors += C +/obj/machinery/conveyor_switch/proc/toggle_speed(var/forced) + speed_active = !speed_active // switching gears + if(speed_active) // high gear + for(var/obj/machinery/conveyor/C in conveyors) + C.toggle_speed(TRUE) + else // low gear + for(var/obj/machinery/conveyor/C in conveyors) + C.toggle_speed(FALSE) + // update the icon depending on the position /obj/machinery/conveyor_switch/proc/update()