From 93f5d97eedf9a4c1b108963647b30b634964bea8 Mon Sep 17 00:00:00 2001 From: Crazylemon64 Date: Fri, 19 Feb 2016 10:57:57 -0800 Subject: [PATCH 1/5] Mining drones will now collect sand --- code/modules/mining/equipment_locker.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mining/equipment_locker.dm b/code/modules/mining/equipment_locker.dm index d721310c140..738a40c20a6 100644 --- a/code/modules/mining/equipment_locker.dm +++ b/code/modules/mining/equipment_locker.dm @@ -721,7 +721,7 @@ speak_emote = list("states") wanted_objects = list(/obj/item/weapon/ore/diamond, /obj/item/weapon/ore/gold, /obj/item/weapon/ore/silver, /obj/item/weapon/ore/plasma, /obj/item/weapon/ore/uranium, /obj/item/weapon/ore/iron, - /obj/item/weapon/ore/bananium) + /obj/item/weapon/ore/bananium, /obj/item/weapon/ore/glass) /mob/living/simple_animal/hostile/mining_drone/attackby(obj/item/I as obj, mob/user as mob, params) if(istype(I, /obj/item/weapon/weldingtool)) From 7c3c27dde226cad294ab27b06dba94c7d4f0bcdf Mon Sep 17 00:00:00 2001 From: Crazylemon Date: Fri, 19 Feb 2016 14:23:53 -0800 Subject: [PATCH 2/5] RIPLEY should now be able to actually drill for sand --- code/modules/mining/mine_turfs.dm | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index be291902af4..5001c6da09e 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -502,6 +502,12 @@ var/global/list/rockTurfEdgeCache O.attackby(W,user) return +/turf/simulated/floor/plating/airless/asteroid/gets_drilled() + if(!dug) + gets_dug() + else + ..() + /turf/simulated/floor/plating/airless/asteroid/proc/gets_dug() if(dug) return From bc2e01349f5e91436b6232298877a01b9976c550 Mon Sep 17 00:00:00 2001 From: Crazylemon64 Date: Fri, 19 Feb 2016 17:51:15 -0800 Subject: [PATCH 3/5] Drilling the ground makes noise, and the fuel generators work off ore too now You can also load your generators straight from the ore box, but this will be highly inefficient, as the ore reclaimer will be able to multiply the materials present by a large factor --- code/game/mecha/equipment/tools/tools.dm | 70 ++++++++++++++++-------- code/modules/mining/mine_turfs.dm | 3 +- 2 files changed, 48 insertions(+), 25 deletions(-) diff --git a/code/game/mecha/equipment/tools/tools.dm b/code/game/mecha/equipment/tools/tools.dm index c482eac5412..eff175922cb 100644 --- a/code/game/mecha/equipment/tools/tools.dm +++ b/code/game/mecha/equipment/tools/tools.dm @@ -838,8 +838,10 @@ range = MELEE var/datum/global_iterator/pr_mech_generator var/coeff = 100 - var/obj/item/stack/sheet/fuel + var/fuel_type = MAT_PLASMA var/max_fuel = 150000 + var/fuel_name = "plasma" // Our fuel name as a string + var/fuel_amount = 0 var/fuel_per_cycle_idle = 25 var/fuel_per_cycle_active = 200 var/power_per_cycle = 20 @@ -851,8 +853,7 @@ return proc/init() - fuel = new /obj/item/stack/sheet/mineral/plasma(src) - fuel.amount = 0 + fuel_amount = 0 pr_mech_generator = new /datum/global_iterator/mecha_generator(list(src),0) pr_mech_generator.set_delay(equip_cooldown) return @@ -877,7 +878,7 @@ get_equip_info() var/output = ..() if(output) - return "[output] \[[fuel]: [round(fuel.amount*fuel.perunit,0.1)] cm3\] - [pr_mech_generator.active()?"Dea":"A"]ctivate" + return "[output] \[[fuel_name]: [round(fuel_amount,0.1)] cm3\] - [pr_mech_generator.active()?"Dea":"A"]ctivate" return action(target) @@ -885,36 +886,58 @@ var/result = load_fuel(target) var/message if(isnull(result)) - message = "[fuel] traces in target minimal. [target] cannot be used as fuel." + message = "[fuel_name] traces in target minimal. [target] cannot be used as fuel." else if(!result) message = "Unit is full." else - message = "[result] unit\s of [fuel] successfully loaded." + message = "[result] unit\s of [fuel_name] successfully loaded." send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",src.get_equip_info()) occupant_message(message) return - proc/load_fuel(var/obj/item/stack/sheet/P) - if(P.type == fuel.type && P.amount) - var/to_load = max(max_fuel - fuel.amount*fuel.perunit,0) - if(to_load) - var/units = min(max(round(to_load / P.perunit),1),P.amount) - if(units) - fuel.amount += units - P.use(units) - return units - else - return 0 + proc/load_fuel(var/obj/item/I) + if(istype(I) && (fuel_type in I.materials)) + if(istype(I, /obj/item/stack/sheet)) + var/obj/item/stack/sheet/P = I + var/to_load = max(max_fuel - P.amount*P.perunit,0) + if(to_load) + var/units = min(max(round(to_load / P.perunit),1),P.amount) + if(units) + var/added_fuel = units * P.perunit + fuel_amount += added_fuel + P.use(units) + return added_fuel + else + return 0 + else // Some other object containing our fuel's type, so we just eat it (ores mainly) + var/to_load = max(min(I.materials[fuel_type], max_fuel - fuel_amount),0) + if(to_load == 0) + return 0 + fuel_amount += to_load + qdel(I) + return to_load + else if(istype(I, /obj/structure/ore_box)) + var/total_fuel_added = 0 + for(var/baz in I.contents) // Istypeless loop + var/obj/item/O = baz + if(fuel_type in O.materials) + var/fuel_added_this_loop = 0 + fuel_added_this_loop = load_fuel(O) + if(fuel_added_this_loop <= 0) + break + total_fuel_added += fuel_added_this_loop + return total_fuel_added return attackby(weapon,mob/user, params) var/result = load_fuel(weapon) + var/weapon_name = "[weapon]" if(isnull(result)) - user.visible_message("[user] tries to shove [weapon] into [src]. What a dumb-ass.","[fuel] traces minimal. [weapon] cannot be used as fuel.") + user.visible_message("[user] tries to shove [weapon_name] into [src], but \the [src] rejects it.","[fuel_name] traces in target minimal. [weapon_name] cannot be used as fuel.") else if(!result) user << "Unit is full." else - user.visible_message("[user] loads [src] with [fuel].","[result] unit\s of [fuel] successfully loaded.") + user.visible_message("[user] loads [src] with \the [weapon_name].","[result] unit\s of [fuel_name] successfully loaded.") return critfail() @@ -942,7 +965,7 @@ stop() EG.set_ready_state(1) return 0 - if(EG.fuel.amount<=0) + if(EG.fuel_amount<=0) stop() EG.log_message("Deactivated - no fuel.") EG.set_ready_state(1) @@ -962,7 +985,7 @@ if(cur_chargeYou start digging..." - playsound(src, 'sound/effects/shovel_dig.ogg', 50, 1) //FUCK YO RUSTLE I GOT'S THE DIGS SOUND HERE sleep(20) if ((user.loc == T && user.get_active_hand() == W)) @@ -487,7 +486,6 @@ var/global/list/rockTurfEdgeCache return user << "You start digging..." - playsound(src, 'sound/effects/shovel_dig.ogg', 50, 1) //FUCK YO RUSTLE I GOT'S THE DIGS SOUND HERE sleep(P.digspeed) if ((user.loc == T && user.get_active_hand() == W)) @@ -517,6 +515,7 @@ var/global/list/rockTurfEdgeCache new/obj/item/weapon/ore/glass(src) new/obj/item/weapon/ore/glass(src) dug = 1 + playsound(src, 'sound/effects/shovel_dig.ogg', 50, 1) //FUCK YO RUSTLE I GOT'S THE DIGS SOUND HERE icon_plating = "asteroid_dug" icon_state = "asteroid_dug" return From 7bc2d2d4f300789923022f3edc61104c48d368c2 Mon Sep 17 00:00:00 2001 From: Crazylemon64 Date: Fri, 19 Feb 2016 19:32:48 -0800 Subject: [PATCH 4/5] Buffs the plasma generator to be even close to the uranium generator --- code/game/mecha/equipment/tools/tools.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/game/mecha/equipment/tools/tools.dm b/code/game/mecha/equipment/tools/tools.dm index eff175922cb..7e31cbb90e5 100644 --- a/code/game/mecha/equipment/tools/tools.dm +++ b/code/game/mecha/equipment/tools/tools.dm @@ -842,9 +842,9 @@ var/max_fuel = 150000 var/fuel_name = "plasma" // Our fuel name as a string var/fuel_amount = 0 - var/fuel_per_cycle_idle = 25 - var/fuel_per_cycle_active = 200 - var/power_per_cycle = 20 + var/fuel_per_cycle_idle = 10 + var/fuel_per_cycle_active = 100 + var/power_per_cycle = 30 reliability = 1000 New() From 475051b35968ba55652354a28a9488d05a1e1292 Mon Sep 17 00:00:00 2001 From: Crazylemon64 Date: Fri, 19 Feb 2016 20:19:39 -0800 Subject: [PATCH 5/5] You now only reload one ore at a time from an ore box --- code/game/mecha/equipment/tools/tools.dm | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/code/game/mecha/equipment/tools/tools.dm b/code/game/mecha/equipment/tools/tools.dm index 7e31cbb90e5..83e23606fcc 100644 --- a/code/game/mecha/equipment/tools/tools.dm +++ b/code/game/mecha/equipment/tools/tools.dm @@ -917,16 +917,13 @@ qdel(I) return to_load else if(istype(I, /obj/structure/ore_box)) - var/total_fuel_added = 0 + var/fuel_added = 0 for(var/baz in I.contents) // Istypeless loop var/obj/item/O = baz if(fuel_type in O.materials) - var/fuel_added_this_loop = 0 - fuel_added_this_loop = load_fuel(O) - if(fuel_added_this_loop <= 0) - break - total_fuel_added += fuel_added_this_loop - return total_fuel_added + fuel_added = load_fuel(O) + break + return fuel_added return attackby(weapon,mob/user, params)