From 95a6f9d613d3173858c231008d55a03116b5b47f Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sat, 7 Jun 2014 23:07:49 +0930 Subject: [PATCH 1/6] First pass on ore distribution map and stationary drilling rig. Added sprites for stationary drilling gear. Added skeleton ores for coal, adamantine, mythril. Updated some icons. Expanded mining rig functionality. Changed adamantine and mythril to osmium and metallic hydrogen. Added ore distribution map generation to master controller. Added upgrading to stationary drills, tweaked other stuff. Rewriting the ore processor and how ores handle information. Also rewrote the ore stacker. --- baystation12.dme | 7 +- code/controllers/master_controller.dm | 4 + .../objects/items/stacks/sheets/mineral.dm | 28 + code/game/turfs/turf.dm | 4 + code/modules/food/recipes_microwave.dm | 8 - code/modules/mining/alloys.dm | 27 + .../mining/{ores_coins.dm => coins.dm} | 72 --- code/modules/mining/drilling/distribution.dm | 248 ++++++++ code/modules/mining/drilling/drill.dm | 382 ++++++++++++ code/modules/mining/machine_processing.dm | 557 ++++++------------ code/modules/mining/machine_stacking.dm | 452 ++------------ code/modules/mining/mine_turfs.dm | 2 + code/modules/mining/minerals.dm | 2 +- code/modules/mining/ore.dm | 81 +++ code/modules/mining/ore_datum.dm | 51 ++ code/modules/mining/satchel_ore_boxdm.dm | 4 - icons/obj/mining_drill.dmi | Bin 0 -> 3198 bytes 17 files changed, 1066 insertions(+), 863 deletions(-) create mode 100644 code/modules/mining/alloys.dm rename code/modules/mining/{ores_coins.dm => coins.dm} (56%) create mode 100644 code/modules/mining/drilling/distribution.dm create mode 100644 code/modules/mining/drilling/drill.dm create mode 100644 code/modules/mining/ore.dm create mode 100644 code/modules/mining/ore_datum.dm create mode 100644 icons/obj/mining_drill.dmi diff --git a/baystation12.dme b/baystation12.dme index 31e245b184..ade2cc5136 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -851,6 +851,8 @@ #include "code\modules\maps\swapmaps.dm" #include "code\modules\maps\writer.dm" #include "code\modules\mining\abandonedcrates.dm" +#include "code\modules\mining\alloys.dm" +#include "code\modules\mining\coins.dm" #include "code\modules\mining\machine_input_output_plates.dm" #include "code\modules\mining\machine_processing.dm" #include "code\modules\mining\machine_stacking.dm" @@ -861,8 +863,11 @@ #include "code\modules\mining\minerals.dm" #include "code\modules\mining\mint.dm" #include "code\modules\mining\money_bag.dm" -#include "code\modules\mining\ores_coins.dm" +#include "code\modules\mining\ore.dm" +#include "code\modules\mining\ore_datum.dm" #include "code\modules\mining\satchel_ore_boxdm.dm" +#include "code\modules\mining\drilling\distribution.dm" +#include "code\modules\mining\drilling\drill.dm" #include "code\modules\mob\abilities.dm" #include "code\modules\mob\death.dm" #include "code\modules\mob\emote.dm" diff --git a/code/controllers/master_controller.dm b/code/controllers/master_controller.dm index eff3a8d62e..99c6397285 100644 --- a/code/controllers/master_controller.dm +++ b/code/controllers/master_controller.dm @@ -78,6 +78,10 @@ datum/controller/game_controller/proc/setup() for(var/i=0, i(range*0.60)) + deep_count++ + else if(cell>(range*0.40)) + rare_count++ + else + surface_count++ + + if(surface_count < MIN_SURFACE_COUNT || surface_count > MAX_SURFACE_COUNT) return 0 + if(rare_count < MIN_RARE_COUNT || rare_count > MAX_RARE_COUNT) return 0 + if(deep_count < MIN_DEEP_COUNT || deep_count > MAX_DEEP_COUNT) return 0 + return 1 + +//Halfassed diamond-square algorithm with some fuckery since it's a single dimension array. +/datum/ore_distribution/proc/populate_distribution_map() + + //Seed beginning values. + + var/x = 1 + var/y = 1 + var/size = real_size-1 + + map[MAP_TOP_LEFT] = (range/3)+rand(range/5) + map[MAP_TOP_RIGHT] = (range/3)+rand(range/5) + map[MAP_BOTTOM_LEFT] = (range/3)+rand(range/5) + map[MAP_BOTTOM_RIGHT] = (range/3)+rand(range/5) + + //Fill in and smooth it out. + var/attempts = 0 + do + attempts++ + generate_distribution_map(1,1,size) + while(attempts < ITERATE_BEFORE_FAIL && !map_is_sane()) + + if(attempts >= ITERATE_BEFORE_FAIL) + world << "Could not generate a sane distribution map. Aborting." + map = null + return + else + apply_to_asteroid() + +/datum/ore_distribution/proc/clear_distribution_map() + for(var/x = 1, x <= real_size, x++) + for(var/y = 1, y <= real_size, y++) + map[MAP_CELL] = 0 + +/datum/ore_distribution/proc/generate_distribution_map(var/x,var/y,var/input_size) + + var/size = input_size + + map[MAP_MID_TOP] = (map[MAP_TOP_LEFT] + map[MAP_TOP_RIGHT])/2 + map[MAP_MID_RIGHT] = (map[MAP_BOTTOM_RIGHT] + map[MAP_TOP_RIGHT])/2 + map[MAP_MID_BOTTOM] = (map[MAP_BOTTOM_LEFT] + map[MAP_BOTTOM_RIGHT])/2 + map[MAP_MID_LEFT] = (map[MAP_TOP_LEFT] + map[MAP_BOTTOM_RIGHT])/2 + map[MAP_CENTRE] = (map[MAP_MID_LEFT]+map[MAP_MID_RIGHT]+map[MAP_MID_BOTTOM]+map[MAP_MID_TOP])/4 + + if(prob(random_variance_chance)) + map[MAP_CENTRE] *= (rand(1) ? (1.0-random_element) : (1.0+random_element)) + map[MAP_CENTRE] = max(0,min(range,map[MAP_CENTRE])) + + if(size>3) + generate_distribution_map(x,y,input_size/2) + generate_distribution_map(x+(input_size/2),y,input_size/2) + generate_distribution_map(x,y+(input_size/2),input_size/2) + generate_distribution_map(x+(input_size/2),y+(input_size/2),input_size/2) + +/datum/ore_distribution/proc/apply_to_asteroid() + + var/origin_x = 13 + var/origin_y = 32 + var/limit_x = 217 + var/limit_y = 223 + var/asteroid_z = 5 + + var/tx = origin_x + var/ty = origin_y + + for(var/y = 1, y <= real_size, y++) + + for(var/x = 1, x <= real_size, x++) + + var/turf/target_turf + + for(var/i=0,i limit_x || ty+i > limit_y) + continue + + target_turf = locate(tx+j, ty+i, asteroid_z) + + if(target_turf.has_resources) + + var/printcolor + if(map[MAP_CELL] > (range*0.60)) + printcolor = "#FF0000" + else if(map[MAP_CELL] > (range*0.40)) + printcolor = "#00FF00" + else + printcolor = "#0000FF" + target_turf.color = "#[printcolor]" + target_turf.resources = list() + + target_turf.resources["silicates"] = rand(RESOURCE_HIGH_MIN,RESOURCE_HIGH_MAX) + target_turf.resources["carbonaceous rock"] = rand(RESOURCE_HIGH_MIN,RESOURCE_HIGH_MAX) + + if(map[MAP_CELL] > (range*0.60)) + target_turf.resources["iron"] = 0 + target_turf.resources["gold"] = 0 + target_turf.resources["silver"] = 0 + target_turf.resources["uranium"] = rand(RESOURCE_HIGH_MIN,RESOURCE_HIGH_MAX) + target_turf.resources["diamond"] = rand(RESOURCE_HIGH_MIN,RESOURCE_HIGH_MAX) + target_turf.resources["phoron"] = rand(RESOURCE_MID_MIN,RESOURCE_MID_MAX) + target_turf.resources["osmium"] = rand(RESOURCE_MID_MIN,RESOURCE_MID_MAX) + target_turf.resources["hydrogen"] = rand(RESOURCE_MID_MIN,RESOURCE_MID_MAX) + else if(map[MAP_CELL] > (range*0.40)) + target_turf.resources["iron"] = rand(RESOURCE_MID_MIN,RESOURCE_MID_MAX) + target_turf.resources["gold"] = rand(RESOURCE_MID_MIN,RESOURCE_MID_MAX) + target_turf.resources["silver"] = rand(RESOURCE_MID_MIN,RESOURCE_MID_MAX) + target_turf.resources["uranium"] = rand(RESOURCE_MID_MIN,RESOURCE_MID_MAX) + target_turf.resources["diamond"] = rand(RESOURCE_MID_MIN,RESOURCE_MID_MAX) + target_turf.resources["phoron"] = rand(RESOURCE_LOW_MIN,RESOURCE_LOW_MAX) + target_turf.resources["osmium"] = rand(RESOURCE_LOW_MIN,RESOURCE_LOW_MAX) + target_turf.resources["hydrogen"] = rand(RESOURCE_LOW_MIN,RESOURCE_LOW_MAX) + else + target_turf.resources["iron"] = rand(RESOURCE_LOW_MIN,RESOURCE_LOW_MAX) + target_turf.resources["gold"] = rand(RESOURCE_LOW_MIN,RESOURCE_LOW_MAX) + target_turf.resources["silver"] = rand(RESOURCE_LOW_MIN,RESOURCE_LOW_MAX) + target_turf.resources["uranium"] = rand(RESOURCE_LOW_MIN,RESOURCE_LOW_MAX) + target_turf.resources["diamond"] = rand(RESOURCE_LOW_MIN,RESOURCE_LOW_MAX) + target_turf.resources["phoron"] = 0 + target_turf.resources["osmium"] = 0 + target_turf.resources["hydrogen"] = 0 + + tx += chunk_size + tx = origin_x + ty += chunk_size + +/datum/ore_distribution/proc/print_map() + world << "---" + var/string = "" + for(var/y = 1, y <= real_size, y++) + for(var/x = 1, x <= real_size, x++) + + var/printcolor + if(map[MAP_CELL] > (range*0.60)) + printcolor = "#FF0000" + else if(map[MAP_CELL] > (range*0.40)) + printcolor = "#00FF00" + else + printcolor = "#0000FF" + string += "#" + + world << string + string = "" + world << "---" + +#undef MAP_CELL +#undef MAP_CENTRE +#undef MAP_TOP_LEFT +#undef MAP_TOP_RIGHT +#undef MAP_BOTTOM_LEFT +#undef MAP_BOTTOM_RIGHT +#undef MAP_MID_TOP +#undef MAP_MID_BOTTOM +#undef MAP_MID_LEFT +#undef MAP_MID_RIGHT + +#undef MIN_SURFACE_COUNT +#undef MAX_SURFACE_COUNT +#undef MIN_RARE_COUNT +#undef MAX_RARE_COUNT +#undef MIN_DEEP_COUNT +#undef MAX_DEEP_COUNT +#undef ITERATE_BEFORE_FAIL + +#undef RESOURCE_HIGH_MAX +#undef RESOURCE_HIGH_MIN +#undef RESOURCE_MID_MAX +#undef RESOURCE_MID_MIN +#undef RESOURCE_LOW_MAX +#undef RESOURCE_LOW_MIN \ No newline at end of file diff --git a/code/modules/mining/drilling/drill.dm b/code/modules/mining/drilling/drill.dm new file mode 100644 index 0000000000..f19cc76d4b --- /dev/null +++ b/code/modules/mining/drilling/drill.dm @@ -0,0 +1,382 @@ +/obj/machinery/mining + icon = 'icons/obj/mining_drill.dmi' + anchored = 0 + use_power = 0 //The drill takes power directly from a cell. + density = 1 + layer = MOB_LAYER+0.1 //So it draws over mobs in the tile north of it. + +/obj/machinery/mining/drill + name = "mining drill head" + desc = "An enormous drill." + icon_state = "mining_drill" + var/braces_needed = 2 + var/list/supports = list() + var/supported = 0 + var/active = 0 + var/list/resource_field = list() + var/open = 0 + + var/ore_types = list( + "iron" = /obj/item/weapon/ore/iron, + "uranium" = /obj/item/weapon/ore/uranium, + "gold" = /obj/item/weapon/ore/gold, + "silver" = /obj/item/weapon/ore/silver, + "diamond" = /obj/item/weapon/ore/diamond, + "phoron" = /obj/item/weapon/ore/phoron, + "osmium" = /obj/item/weapon/ore/osmium, + "hydrogen" = /obj/item/weapon/ore/hydrogen, + "silicates" = /obj/item/weapon/ore/glass, + "carbonaceous rock" = /obj/item/weapon/ore/coal + ) + + //Upgrades + var/obj/item/weapon/stock_parts/matter_bin/storage + var/obj/item/weapon/stock_parts/micro_laser/cutter + var/obj/item/weapon/stock_parts/capacitor/cellmount + var/obj/item/weapon/cell/cell + + //Flags + var/need_update_field = 0 + var/need_player_check = 0 + +/obj/machinery/mining/drill/New() + + ..() + + storage = new(src) + cutter = new(src) + cellmount = new(src) + + cell = new(src) + cell.maxcharge = 10000 + cell.charge = cell.maxcharge + +/obj/machinery/mining/drill/process() + + if(need_player_check) + return + + check_supports() + + if(!active) return + + if(!anchored || !use_cell_power()) + system_error("system configuration or charge error") + return + + if(need_update_field) + get_resource_field() + + if(world.time % 10 == 0) + update_icon() + + if(!active) + return + + //Drill through the flooring, if any. + if(istype(get_turf(src),/turf/simulated/floor/plating/airless/asteroid)) + var/turf/simulated/floor/plating/airless/asteroid/T = get_turf(src) + if(!T.dug) + T.gets_dug() + else if(istype(get_turf(src),/turf/simulated/floor)) + var/turf/simulated/floor/T = get_turf(src) + T.ex_act(2.0) + + //Dig out the tasty ores. + if(resource_field.len) + var/turf/harvesting = pick(resource_field) + + while(resource_field.len && !harvesting.resources) + harvesting.has_resources = 0 + harvesting.resources = null + resource_field -= harvesting + harvesting = pick(resource_field) + + if(!harvesting) return + + var/total_harvest = get_harvest_capacity() //Ore harvest-per-tick. + var/found_resource = 0 //If this doesn't get set, the area is depleted and the drill errors out. + + for(var/metal in ore_types) + + if(contents.len >= get_storage_capacity()) + active = 0 + need_player_check = 1 + update_icon() + return + + if(contents.len + total_harvest >= get_storage_capacity()) + total_harvest = get_storage_capacity() - contents.len + + if(total_harvest <= 0) break + if(harvesting.resources[metal]) + + found_resource = 1 + + var/create_ore = 0 + if(harvesting.resources[metal] >= total_harvest) + harvesting.resources[metal] -= total_harvest + create_ore = total_harvest + total_harvest = 0 + else + total_harvest -= harvesting.resources[metal] + create_ore = harvesting.resources[metal] + harvesting.resources[metal] = 0 + + for(var/i=1,i<=create_ore,i++) + var/oretype = ore_types[metal] + new oretype(src) + + if(!found_resource) + harvesting.has_resources = 0 + harvesting.resources = null + resource_field -= harvesting + else + active = 0 + need_player_check = 1 + update_icon() + +/obj/machinery/mining/drill/attack_ai(var/mob/user as mob) + return src.attack_hand(user) + +/obj/machinery/mining/drill/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(istype(W,/obj/item/weapon/screwdriver)) + if(active) return + open = !open + user << "\blue You [open ? "open" : "close"] the maintenance panel." //TODO: Sprite. + return + else + if(!open || active) return ..() + if(istype(W,/obj/item/weapon/crowbar)) + if(storage) + user << "You slip the bolt and pry out \the [storage]." + storage.loc = get_turf(src) + storage = null + else if(cutter) + user << "You carefully detatch and pry out \the [cutter]." + cutter.loc = get_turf(src) + cutter = null + else if(cellmount) + user << "You yank out a few wires and pry out \the [cellmount]." + cellmount.loc = get_turf(src) + cellmount.loc = null + else if(cell) + user << "You pry out \the [cell]." + cell.loc = get_turf(src) + cell = null + else + user << "There's nothing inside the drilling rig to remove." + return + else if(istype(W,/obj/item/weapon/stock_parts/matter_bin)) + if(storage) + user << "The drill already has a matter bin installed." + else + W.loc = src + storage = W + user << "You install \the [W]." + return + else if(istype(W,/obj/item/weapon/stock_parts/micro_laser)) + if(cutter) + user << "The drill already has a cutting head installed." + else + W.loc = src + cutter = W + user << "You install \the [W]." + return + else if(istype(W,/obj/item/weapon/stock_parts/capacitor)) + if(cellmount) + user << "The drill already has a cell capacitor installed." + else + W.loc = src + cellmount = W + user << "You install \the [W]." + return + else if(istype(W,/obj/item/weapon/cell)) + if(cell) + user << "The drill already has a cell installed." + else + W.loc = src + cell = W + user << "You install \the [W]." + return + ..() +/obj/machinery/mining/drill/attack_hand(mob/user as mob) + check_supports() + + if(need_player_check) + user << "You hit the manual override and reset the drill's error checking." + need_player_check = 0 + if(anchored) get_resource_field() + update_icon() + return + + else if(supported) + if(use_cell_power()) + active = !active + if(active) + user << "\blue You engage \the [src] and it lurches downwards, grinding noisily." + need_update_field = 1 + else + user << "\blue You disengage \the [src] and it shudders to a grinding halt." + else + user << "\blue The drill is unpowered." + else + user << "\blue Turning on a piece of industrial machinery without sufficient bracing is a bad idea." + + update_icon() + +/obj/machinery/mining/drill/update_icon() + if(need_player_check) + icon_state = "mining_drill_error" + else if(active) + icon_state = "mining_drill_active" + else if(supported) + icon_state = "mining_drill_braced" + else + icon_state = "mining_drill" + return + +/obj/machinery/mining/drill/proc/check_supports() + + supported = 0 + + if((!supports || !supports.len) && initial(anchored) == 0) + icon_state = "mining_drill" + anchored = 0 + active = 0 + else + anchored = 1 + + if(supports && supports.len >= braces_needed) + supported = 1 + + update_icon() + +/obj/machinery/mining/drill/proc/system_error(var/error) + + if(error) src.visible_message("\red \The [src] flashes a '[error]' warning.") + need_player_check = 1 + active = 0 + update_icon() + +/obj/machinery/mining/drill/proc/get_harvest_capacity() + return 3 * (cutter ? cutter.rating : 0) + +/obj/machinery/mining/drill/proc/get_storage_capacity() + return 100 * (storage ? storage.rating : 0) + +/obj/machinery/mining/drill/proc/get_charge_use() + return 100 - (20 * (cellmount ? cellmount.rating : 0)) + +/obj/machinery/mining/drill/proc/get_resource_field() + + resource_field = list() + need_update_field = 0 + + var/turf/T = get_turf(src) + if(!istype(T)) return + + var/tx = T.x-2 + var/ty = T.y-2 + var/turf/mine_turf + for(var/iy=0,iy<5,iy++) + for(var/ix=0,ix<5,ix++) + mine_turf = locate(tx+ix,ty+iy,T.z) + if(mine_turf && istype(mine_turf) && mine_turf.has_resources) + resource_field += mine_turf + + if(!resource_field.len) + system_error("resources depleted") + +/obj/machinery/mining/drill/proc/use_cell_power() + if(!cell) return 0 + var/req = get_charge_use() + if(cell.charge >= req) + cell.use(req) + return 1 + return 0 + +/obj/machinery/mining/drill/verb/unload() + set name = "Unload Drill" + set category = "Object" + set src in oview(1) + + if(usr.stat) return + + var/obj/structure/ore_box/B = locate() in orange(1) + if(B) + for(var/obj/item/weapon/ore/O in contents) + O.loc = B + usr << "\red You unload the drill's storage cache into the ore box." + else + usr << "\red You must move an ore box up to the drill before you can unload it." + + +/obj/machinery/mining/brace + name = "mining drill brace" + desc = "A machinery brace for an industrial drill. It looks easily two feet thick." + icon_state = "mining_brace" + var/obj/machinery/mining/drill/connected + +/obj/machinery/mining/brace/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(istype(W,/obj/item/weapon/wrench)) + + if(istype(get_turf(src),/turf/space)) + user << "\blue You can't anchor something to empty space. Idiot." + return + + if(connected && connected.active) + user << "\blue You can't unanchor the brace of a running drill!" + return + + playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1) + user << "\blue You [anchored ? "un" : ""]anchor the brace." + + anchored = !anchored + if(anchored) + connect() + else + disconnect() + +/obj/machinery/mining/brace/proc/connect() + + var/turf/T = get_step(get_turf(src), src.dir) + for(var/thing in T.contents) + if(istype(thing,/obj/machinery/mining/drill)) + connected = thing + break + + if(!connected) return + + if(!connected.supports) connected.supports = list() + + icon_state = "mining_brace_active" + + connected.supports += src + connected.check_supports() + +/obj/machinery/mining/brace/proc/disconnect() + + if(!connected) return + + if(!connected.supports) connected.supports = list() + + icon_state = "mining_brace" + + connected.supports -= src + connected.check_supports() + connected = null + +/obj/machinery/mining/brace/verb/rotate() + set name = "Rotate" + set category = "Object" + set src in oview(1) + + if(usr.stat) return + + if (src.anchored) + usr << "It is anchored in place!" + return 0 + + src.dir = turn(src.dir, 90) + return 1 \ No newline at end of file diff --git a/code/modules/mining/machine_processing.dm b/code/modules/mining/machine_processing.dm index b41ff4ab16..dec66231b5 100644 --- a/code/modules/mining/machine_processing.dm +++ b/code/modules/mining/machine_processing.dm @@ -1,12 +1,3 @@ -#define ORE_PROC_GOLD 1 -#define ORE_PROC_SILVER 2 -#define ORE_PROC_DIAMOND 4 -#define ORE_PROC_GLASS 8 -#define ORE_PROC_PHORON 16 -#define ORE_PROC_URANIUM 32 -#define ORE_PROC_IRON 64 -#define ORE_PROC_CLOWN 128 - /**********************Mineral processing unit console**************************/ /obj/machinery/mineral/processing_unit_console @@ -15,175 +6,92 @@ icon_state = "console" density = 1 anchored = 1 + var/obj/machinery/mineral/processing_unit/machine = null var/machinedir = EAST + var/show_all_ores = 0 /obj/machinery/mineral/processing_unit_console/New() ..() spawn(7) src.machine = locate(/obj/machinery/mineral/processing_unit, get_step(src, machinedir)) if (machine) - machine.CONSOLE = src + machine.console = src else del(src) -/obj/machinery/mineral/processing_unit_console/process() - updateDialog() - /obj/machinery/mineral/processing_unit_console/attack_hand(mob/user) add_fingerprint(user) interact(user) /obj/machinery/mineral/processing_unit_console/interact(mob/user) + + if(..()) + return + + if(!allowed(user)) + user << "\red Access denied." + return + user.set_machine(src) - var/dat = "Smelter control console

" - //iron - if(machine.ore_iron || machine.ore_glass || machine.ore_phoron || machine.ore_uranium || machine.ore_gold || machine.ore_silver || machine.ore_diamond || machine.ore_clown || machine.ore_adamantine) - if(machine.ore_iron) - if (machine.selected & ORE_PROC_IRON) - dat += text("Smelting ") - else - dat += text("Not smelting ") - dat += text("Iron: [machine.ore_iron]
") + var/dat = "

Ore processor console

" + + dat += "
" + + for(var/ore in machine.ores_processing) + + if(!machine.ores_stored[ore] && !show_all_ores) continue + + dat += "" + dat += "
[capitalize(ore)][machine.ores_stored[ore]]not processing" + if(1) + dat += "orange'>smelting" + if(2) + dat += "blue'>compressing" + if(3) + dat += "gray'>alloying" else - machine.selected &= ~ORE_PROC_IRON - - //sand - glass - if(machine.ore_glass) - if (machine.selected & ORE_PROC_GLASS) - dat += text("Smelting ") - else - dat += text("Not smelting ") - dat += text("Sand: [machine.ore_glass]
") - else - machine.selected &= ~ORE_PROC_GLASS - - //phoron - if(machine.ore_phoron) - if (machine.selected & ORE_PROC_PHORON) - dat += text("Smelting ") - else - dat += text("Not smelting ") - dat += text("Phoron: [machine.ore_phoron]
") - else - machine.selected &= ~ORE_PROC_PHORON - - //uranium - if(machine.ore_uranium) - if (machine.selected & ORE_PROC_URANIUM) - dat += text("Smelting ") - else - dat += text("Not smelting ") - dat += text("Uranium: [machine.ore_uranium]
") - else - machine.selected &= ~ORE_PROC_URANIUM - - //gold - if(machine.ore_gold) - if (machine.selected & ORE_PROC_GOLD) - dat += text("Smelting ") - else - dat += text("Not smelting ") - dat += text("Gold: [machine.ore_gold]
") - else - machine.selected &= ~ORE_PROC_GOLD - - //silver - if(machine.ore_silver) - if (machine.selected & ORE_PROC_SILVER) - dat += text("Smelting ") - else - dat += text("Not smelting ") - dat += text("Silver: [machine.ore_silver]
") - else - machine.selected &= ~ORE_PROC_SILVER - - //diamond - if(machine.ore_diamond) - if (machine.selected & ORE_PROC_DIAMOND) - dat += text("Smelting ") - else - dat += text("Not smelting ") - dat += text("Diamond: [machine.ore_diamond]
") - else - machine.selected &= ~ORE_PROC_DIAMOND - - //bananium - if(machine.ore_clown) - if (machine.selected & ORE_PROC_CLOWN) - dat += text("Smelting ") - else - dat += text("Not smelting ") - dat += text("Bananium: [machine.ore_clown]
") - else - machine.selected &= ~ORE_PROC_CLOWN - - //On or off - dat += text("Machine is currently ") - if (machine.on==1) - dat += text("On ") - else - dat += text("Off ") - else - dat+="---No Materials Loaded---" - - - user << browse("[dat]", "window=console_processing_unit") - onclose(user, "console_processing_unit") + dat += "red'>not processing" + dat += "
.
\[change\]

" + dat += "Currently displaying [show_all_ores ? "all ore types" : "only available ore types"]. \[[show_all_ores ? "show less" : "show more"]\]
" + dat += "The ore processor is currently [(machine.active ? "processing" : "disabled")]." + user << browse(dat, "window=processor_console;size=400x500") + onclose(user, "computer") + return /obj/machinery/mineral/processing_unit_console/Topic(href, href_list) if(..()) return usr.set_machine(src) src.add_fingerprint(usr) - if(href_list["sel_iron"]) - if (href_list["sel_iron"] == "yes") - machine.selected |= ORE_PROC_IRON - else - machine.selected &= ~ORE_PROC_IRON - if(href_list["sel_glass"]) - if (href_list["sel_glass"] == "yes") - machine.selected |= ORE_PROC_GLASS - else - machine.selected &= ~ORE_PROC_GLASS - if(href_list["sel_phoron"]) - if (href_list["sel_phoron"] == "yes") - machine.selected |= ORE_PROC_PHORON - else - machine.selected &= ~ORE_PROC_PHORON - if(href_list["sel_uranium"]) - if (href_list["sel_uranium"] == "yes") - machine.selected |= ORE_PROC_URANIUM - else - machine.selected &= ~ORE_PROC_URANIUM - if(href_list["sel_gold"]) - if (href_list["sel_gold"] == "yes") - machine.selected |= ORE_PROC_GOLD - else - machine.selected &= ~ORE_PROC_GOLD - if(href_list["sel_silver"]) - if (href_list["sel_silver"] == "yes") - machine.selected |= ORE_PROC_SILVER - else - machine.selected &= ~ORE_PROC_SILVER - if(href_list["sel_diamond"]) - if (href_list["sel_diamond"] == "yes") - machine.selected |= ORE_PROC_DIAMOND - else - machine.selected &= ~ORE_PROC_DIAMOND - if(href_list["sel_clown"]) - if (href_list["sel_clown"] == "yes") - machine.selected |= ORE_PROC_CLOWN - else - machine.selected &= ~ORE_PROC_CLOWN - if(href_list["set_on"]) - if (href_list["set_on"] == "on") - machine.on = 1 - else - machine.on = 0 + if(href_list["toggle_smelting"]) + + var/choice = input("What setting do you wish to use for processing [href_list["toggle_smelting"]]?") as null|anything in list("Smelting","Compressing","Alloying","Nothing") + if(!choice) return + + switch(choice) + if("Nothing") choice = 0 + if("Smelting") choice = 1 + if("Compressing") choice = 2 + if("Alloying") choice = 3 + + machine.ores_processing[href_list["toggle_smelting"]] = choice + + if(href_list["toggle_power"]) + + machine.active = !machine.active + + if(href_list["toggle_ores"]) + + show_all_ores = !show_all_ores + src.updateUsrDialog() return @@ -191,271 +99,142 @@ /obj/machinery/mineral/processing_unit - name = "furnace" + name = "material processor" //This isn't actually a goddamn furnace, we're in space and it's processing platinum and flammable phoron... icon = 'icons/obj/machines/mining_machines.dmi' icon_state = "furnace" density = 1 - anchored = 1.0 - luminosity = 3 //Big fire with window, yeah it puts out a little light. + anchored = 1 + luminosity = 3 var/obj/machinery/mineral/input = null var/obj/machinery/mineral/output = null - var/obj/machinery/mineral/CONSOLE = null - var/ore_gold = 0; - var/ore_silver = 0; - var/ore_diamond = 0; - var/ore_glass = 0; - var/ore_phoron = 0; - var/ore_uranium = 0; - var/ore_iron = 0; - var/ore_clown = 0; - var/ore_adamantine = 0; - var/selected = 0 -/* - var/selected_gold = 0 - var/selected_silver = 0 - var/selected_diamond = 0 - var/selected_glass = 0 - var/selected_plasma = 0 - var/selected_uranium = 0 - var/selected_iron = 0 - var/selected_clown = 0 -*/ - var/on = 0 //0 = off, 1 =... oh you know! - + var/obj/machinery/mineral/console = null + var/sheets_per_tick = 10 + var/list/ores_processing[0] + var/list/ores_stored[0] + var/list/ore_data[0] + var/list/alloy_data[0] + var/active = 0 /obj/machinery/mineral/processing_unit/New() + ..() - spawn( 5 ) + + //TODO: Ore and alloy global storage datum. + for(var/alloytype in typesof(/datum/alloy)-/datum/alloy) + alloy_data += new alloytype() + + for(var/oretype in typesof(/datum/ore)-/datum/ore) + var/datum/ore/OD = new oretype() + ore_data[OD.oretag] = OD + ores_processing[OD.oretag] = 0 + ores_stored[OD.oretag] = 0 + + //Locate our output and input machinery. + spawn(5) for (var/dir in cardinal) src.input = locate(/obj/machinery/mineral/input, get_step(src, dir)) if(src.input) break for (var/dir in cardinal) src.output = locate(/obj/machinery/mineral/output, get_step(src, dir)) if(src.output) break - processing_objects.Add(src) return return /obj/machinery/mineral/processing_unit/process() - if (src.output && src.input) - var/i - for (i = 0; i < 10; i++) - if (on) + if (!active || !src.output || !src.input) return + var/list/tick_alloys = list() - if (selected == ORE_PROC_GLASS) - if (ore_glass > 0) - ore_glass--; - new /obj/item/stack/sheet/glass(output.loc) - else - on = 0 - continue - if (selected == ORE_PROC_GLASS + ORE_PROC_IRON) - if (ore_glass > 0 && ore_iron > 0) - ore_glass--; - ore_iron--; - new /obj/item/stack/sheet/rglass(output.loc) - else - on = 0 - continue - if (selected == ORE_PROC_GOLD) - if (ore_gold > 0) - ore_gold--; - new /obj/item/stack/sheet/mineral/gold(output.loc) - else - on = 0 - continue - if (selected == ORE_PROC_SILVER) - if (ore_silver > 0) - ore_silver--; - new /obj/item/stack/sheet/mineral/silver(output.loc) - else - on = 0 - continue - if (selected == ORE_PROC_DIAMOND) - if (ore_diamond > 0) - ore_diamond--; - new /obj/item/stack/sheet/mineral/diamond(output.loc) - else - on = 0 - continue - if (selected == ORE_PROC_PHORON) - if (ore_phoron > 0) - ore_phoron--; - new /obj/item/stack/sheet/mineral/phoron(output.loc) - else - on = 0 - continue - if (selected == ORE_PROC_URANIUM) - if (ore_uranium > 0) - ore_uranium--; - new /obj/item/stack/sheet/mineral/uranium(output.loc) - else - on = 0 - continue - if (selected == ORE_PROC_IRON) - if (ore_iron > 0) - ore_iron--; - new /obj/item/stack/sheet/metal(output.loc) - else - on = 0 - continue - if (selected == ORE_PROC_IRON + ORE_PROC_PHORON) - if (ore_iron > 0 && ore_phoron > 0) - ore_iron--; - ore_phoron--; - new /obj/item/stack/sheet/plasteel(output.loc) - else - on = 0 - continue - if (selected == ORE_PROC_CLOWN) - if (ore_clown > 0) - ore_clown--; - new /obj/item/stack/sheet/mineral/clown(output.loc) - else - on = 0 - continue - /* - if (selected == ORE_PROC_GLASS + ORE_PROC_PHORON) - if (ore_glass > 0 && ore_plasma > 0) - ore_glass--; - ore_plasma--; - new /obj/item/stack/sheet/glass/plasmaglass(output.loc) - else - on = 0 - continue - if (selected == ORE_PROC_GLASS + ORE_PROC_IRON + ORE_PROC_PHORON) - if (ore_glass > 0 && ore_plasma > 0 && ore_iron > 0) - ore_glass--; - ore_iron--; - ore_plasma--; - new /obj/item/stack/sheet/glass/plasmarglass(output.loc) - else - on = 0 - continue - */ + //Process our stored ores and spit out sheets. + var/sheets = 0 + for(var/metal in ores_stored) + if(sheets >= sheets_per_tick) break - if (selected == ORE_PROC_URANIUM + ORE_PROC_DIAMOND) - if (ore_uranium >= 2 && ore_diamond >= 1) - ore_uranium -= 2 - ore_diamond -= 1 - new /obj/item/stack/sheet/mineral/adamantine(output.loc) + if(ores_stored[metal] > 0 && ores_processing[metal] != 0) + + var/datum/ore/O = ore_data[metal] + + if(!O) continue + + if(ores_processing[metal] == 3 && O.alloy) //Alloying. + var/can_make_alloy = 0 + var/datum/alloy/alloying + + for(var/datum/alloy/A in alloy_data) + if(A.metaltag in tick_alloys) continue + tick_alloys += A.metaltag + + if(!isnull(A.requires[metal]) && ores_stored[metal] >= A.requires[metal]) //We have enough of our first metal, we're off to a good start. + alloying = A + can_make_alloy = 0 + var/enough_metal = 1 + + for(var/needs_metal in A.requires) + + //Check if we're alloying the needed metal and have it stored. + if(ores_processing[needs_metal] != 3 || ores_stored[needs_metal] < A.requires[needs_metal]) + enough_metal = 0 + break + + if(!enough_metal) + can_make_alloy = 0 + else + can_make_alloy = 1 + break + + if(!alloying) + sheets++ + return + + if(!can_make_alloy) + continue else - on = 0 - continue - if (selected == ORE_PROC_SILVER + ORE_PROC_PHORON) - if (ore_silver >= 1 && ore_phoron >= 3) - ore_silver -= 1 - ore_phoron -= 3 - new /obj/item/stack/sheet/mineral/mythril(output.loc) - else - on = 0 + var/total + for(var/needs_metal in alloying.requires) + ores_stored[needs_metal] -= alloying.requires[needs_metal] + total += alloying.requires[needs_metal] + total = round(total*alloying.product_mod) + sheets += total-1 + + for(var/i=0,i0) can_make-- + + if(!can_make || ores_stored[metal] < 1) continue + for(var/i=0,iStacking unit console

") + dat += text("

Stacking unit console


") - if(machine.ore_iron) - dat += text("Iron: [machine.ore_iron] Release
") - if(machine.ore_plasteel) - dat += text("Plasteel: [machine.ore_plasteel] Release
") - if(machine.ore_glass) - dat += text("Glass: [machine.ore_glass] Release
") - if(machine.ore_rglass) - dat += text("Reinforced Glass: [machine.ore_rglass] Release
") - if(machine.ore_phoron) - dat += text("Phoron: [machine.ore_phoron] Release
") - if(machine.ore_phoronglass) - dat += text("Phoron Glass: [machine.ore_phoronglass] Release
") - if(machine.ore_phoronrglass) - dat += text("Reinforced Phoron Glass: [machine.ore_phoronrglass] Release
") - if(machine.ore_gold) - dat += text("Gold: [machine.ore_gold] Release
") - if(machine.ore_silver) - dat += text("Silver: [machine.ore_silver] Release
") - if(machine.ore_uranium) - dat += text("Uranium: [machine.ore_uranium] Release
") - if(machine.ore_diamond) - dat += text("Diamond: [machine.ore_diamond] Release
") - if(machine.ore_wood) - dat += text("Wood: [machine.ore_wood] Release
") - if(machine.ore_cardboard) - dat += text("Cardboard: [machine.ore_cardboard] Release
") - if(machine.ore_cloth) - dat += text("Cloth: [machine.ore_cloth] Release
") - if(machine.ore_leather) - dat += text("Leather: [machine.ore_leather] Release
") - if(machine.ore_clown) - dat += text("Bananium: [machine.ore_clown] Release
") - if(machine.ore_adamantine) - dat += text ("Adamantine: [machine.ore_adamantine] Release
") - if(machine.ore_mythril) - dat += text ("Mythril: [machine.ore_mythril] Release
") - - dat += text("
Stacking: [machine.stack_amt]

") + for(var/stacktype in machine.stack_storage) + if(machine.stack_storage[stacktype] > 0) + dat += "" + dat += "
[capitalize(stacktype)]:[machine.stack_storage[stacktype]]\[release\]

" + dat += text("
Stacking: [machine.stack_amt] \[change\]

") user << browse("[dat]", "window=console_stacking_machine") onclose(user, "console_stacking_machine") + /obj/machinery/mineral/stacking_unit_console/Topic(href, href_list) if(..()) return - usr.set_machine(src) - src.add_fingerprint(usr) - if(href_list["release"]) - switch(href_list["release"]) - if ("phoron") - if (machine.ore_phoron > 0) - var/obj/item/stack/sheet/mineral/phoron/G = new /obj/item/stack/sheet/mineral/phoron - G.amount = machine.ore_phoron - G.loc = machine.output.loc - machine.ore_phoron = 0 - if ("phoronglass") - if (machine.ore_phoronglass > 0) - var/obj/item/stack/sheet/glass/phoronglass/G = new /obj/item/stack/sheet/glass/phoronglass - G.amount = machine.ore_phoronglass - G.loc = machine.output.loc - machine.ore_phoronglass = 0 - if ("phoronrglass") - if (machine.ore_phoronrglass > 0) - var/obj/item/stack/sheet/glass/phoronrglass/G = new /obj/item/stack/sheet/glass/phoronrglass - G.amount = machine.ore_phoronrglass - G.loc = machine.output.loc - machine.ore_phoronrglass = 0 - if ("uranium") - if (machine.ore_uranium > 0) - var/obj/item/stack/sheet/mineral/uranium/G = new /obj/item/stack/sheet/mineral/uranium - G.amount = machine.ore_uranium - G.loc = machine.output.loc - machine.ore_uranium = 0 - if ("glass") - if (machine.ore_glass > 0) - var/obj/item/stack/sheet/glass/G = new /obj/item/stack/sheet/glass - G.amount = machine.ore_glass - G.loc = machine.output.loc - machine.ore_glass = 0 - if ("rglass") - if (machine.ore_rglass > 0) - var/obj/item/stack/sheet/rglass/G = new /obj/item/stack/sheet/rglass - G.amount = machine.ore_rglass - G.loc = machine.output.loc - machine.ore_rglass = 0 - if ("gold") - if (machine.ore_gold > 0) - var/obj/item/stack/sheet/mineral/gold/G = new /obj/item/stack/sheet/mineral/gold - G.amount = machine.ore_gold - G.loc = machine.output.loc - machine.ore_gold = 0 - if ("silver") - if (machine.ore_silver > 0) - var/obj/item/stack/sheet/mineral/silver/G = new /obj/item/stack/sheet/mineral/silver - G.amount = machine.ore_silver - G.loc = machine.output.loc - machine.ore_silver = 0 - if ("diamond") - if (machine.ore_diamond > 0) - var/obj/item/stack/sheet/mineral/diamond/G = new /obj/item/stack/sheet/mineral/diamond - G.amount = machine.ore_diamond - G.loc = machine.output.loc - machine.ore_diamond = 0 - if ("iron") - if (machine.ore_iron > 0) - var/obj/item/stack/sheet/metal/G = new /obj/item/stack/sheet/metal - G.amount = machine.ore_iron - G.loc = machine.output.loc - machine.ore_iron = 0 - if ("plasteel") - if (machine.ore_plasteel > 0) - var/obj/item/stack/sheet/plasteel/G = new /obj/item/stack/sheet/plasteel - G.amount = machine.ore_plasteel - G.loc = machine.output.loc - machine.ore_plasteel = 0 - if ("wood") - if (machine.ore_wood > 0) - var/obj/item/stack/sheet/wood/G = new /obj/item/stack/sheet/wood - G.amount = machine.ore_wood - G.loc = machine.output.loc - machine.ore_wood = 0 - if ("cardboard") - if (machine.ore_cardboard > 0) - var/obj/item/stack/sheet/cardboard/G = new /obj/item/stack/sheet/cardboard - G.amount = machine.ore_cardboard - G.loc = machine.output.loc - machine.ore_cardboard = 0 - if ("cloth") - if (machine.ore_cloth > 0) - var/obj/item/stack/sheet/cloth/G = new /obj/item/stack/sheet/cloth - G.amount = machine.ore_cloth - G.loc = machine.output.loc - machine.ore_cloth = 0 - if ("leather") - if (machine.ore_leather > 0) - var/obj/item/stack/sheet/leather/G = new /obj/item/stack/sheet/leather - G.amount = machine.ore_diamond - G.loc = machine.output.loc - machine.ore_leather = 0 - if ("clown") - if (machine.ore_clown > 0) - var/obj/item/stack/sheet/mineral/clown/G = new /obj/item/stack/sheet/mineral/clown - G.amount = machine.ore_clown - G.loc = machine.output.loc - machine.ore_clown = 0 - if ("adamantine") - if (machine.ore_adamantine > 0) - var/obj/item/stack/sheet/mineral/adamantine/G = new /obj/item/stack/sheet/mineral/adamantine - G.amount = machine.ore_adamantine - G.loc = machine.output.loc - machine.ore_adamantine = 0 - if ("mythril") - if (machine.ore_mythril > 0) - var/obj/item/stack/sheet/mineral/mythril/G = new /obj/item/stack/sheet/mineral/mythril - G.amount = machine.ore_mythril - G.loc = machine.output.loc - machine.ore_mythril = 0 - src.updateUsrDialog() - return + if(href_list["change_stack"]) + var/choice = input("What would you like to set the stack amount to?") as null|anything in list(1,5,10,20,50) + if(!choice) return + machine.stack_amt = choice + + if(href_list["release_stack"]) + if(machine.stack_storage[href_list["release_stack"]] > 0) + var/stacktype = machine.stack_paths[href_list["release_stack"]] + var/obj/item/stack/sheet/S = new stacktype (get_turf(machine.output)) + S.amount = machine.stack_storage[href_list["release_stack"]] + machine.stack_storage[href_list["release_stack"]] = 0 + + src.add_fingerprint(usr) + src.updateUsrDialog() + + return /**********************Mineral stacking unit**************************/ @@ -202,33 +71,29 @@ icon_state = "stacker" density = 1 anchored = 1.0 - var/obj/machinery/mineral/stacking_unit_console/CONSOLE - var/stk_types = list() - var/stk_amt = list() + var/obj/machinery/mineral/stacking_unit_console/console var/obj/machinery/mineral/input = null var/obj/machinery/mineral/output = null - var/ore_gold = 0; - var/ore_silver = 0; - var/ore_diamond = 0; - var/ore_phoron = 0; - var/ore_phoronglass = 0; - var/ore_phoronrglass = 0; - var/ore_iron = 0; - var/ore_uranium = 0; - var/ore_clown = 0; - var/ore_glass = 0; - var/ore_rglass = 0; - var/ore_plasteel = 0; - var/ore_wood = 0 - var/ore_cardboard = 0 - var/ore_cloth = 0; - var/ore_leather = 0; - var/ore_adamantine = 0; - var/ore_mythril = 0; - var/stack_amt = 50; //ammount to stack before releassing + var/list/stack_storage[0] + var/list/stack_paths[0] + var/stack_amt = 50; // Amount to stack before releassing /obj/machinery/mineral/stacking_machine/New() ..() + + for(var/stacktype in typesof(/obj/item/stack/sheet/mineral)-/obj/item/stack/sheet/mineral) + var/obj/item/stack/S = new stacktype(src) + stack_storage[S.name] = 0 + stack_paths[S.name] = stacktype + del(S) + + stack_storage["glass"] = 0 + stack_paths["glass"] = /obj/item/stack/sheet/glass + stack_storage["metal"] = 0 + stack_paths["metal"] = /obj/item/stack/sheet/metal + stack_storage["plasteel"] = 0 + stack_paths["plasteel"] = /obj/item/stack/sheet/plasteel + spawn( 5 ) for (var/dir in cardinal) src.input = locate(/obj/machinery/mineral/input, get_step(src, dir)) @@ -236,220 +101,31 @@ for (var/dir in cardinal) src.output = locate(/obj/machinery/mineral/output, get_step(src, dir)) if(src.output) break - processing_objects.Add(src) return return /obj/machinery/mineral/stacking_machine/process() if (src.output && src.input) - var/obj/item/stack/O - while (locate(/obj/item, input.loc)) - O = locate(/obj/item/stack, input.loc) - if(isnull(O)) - var/obj/item/I = locate(/obj/item, input.loc) - if (istype(I,/obj/item/weapon/ore/slag)) - I.loc = null + var/turf/T = get_turf(input) + for(var/obj/item/O in T.contents) + if(!O) return + if(istype(O,/obj/item/stack)) + if(!isnull(stack_storage[O.name])) + stack_storage[O.name]++ + O.loc = null else - I.loc = output.loc - continue - if (istype(O,/obj/item/stack/sheet/metal)) - ore_iron+= O.amount - O.loc = null - //del(O) - continue - if (istype(O,/obj/item/stack/sheet/mineral/diamond)) - ore_diamond+= O.amount - O.loc = null - //del(O) - continue - if (istype(O,/obj/item/stack/sheet/mineral/phoron)) - ore_phoron+= O.amount - O.loc = null - //del(O) - continue - if (istype(O,/obj/item/stack/sheet/mineral/gold)) - ore_gold+= O.amount - O.loc = null - //del(O) - continue - if (istype(O,/obj/item/stack/sheet/mineral/silver)) - ore_silver+= O.amount - O.loc = null - //del(O) - continue - if (istype(O,/obj/item/stack/sheet/mineral/clown)) - ore_clown+= O.amount - O.loc = null - //del(O) - continue - if (istype(O,/obj/item/stack/sheet/mineral/uranium)) - ore_uranium+= O.amount - O.loc = null - //del(O) - continue - if (istype(O,/obj/item/stack/sheet/glass/phoronglass)) - ore_phoronglass+= O.amount - O.loc = null - //del(O) - continue - if (istype(O,/obj/item/stack/sheet/glass/phoronrglass)) - ore_phoronrglass+= O.amount - O.loc = null - //del(O) - continue - if (istype(O,/obj/item/stack/sheet/glass)) - ore_glass+= O.amount - O.loc = null - //del(O) - continue - if (istype(O,/obj/item/stack/sheet/rglass)) - ore_rglass+= O.amount - O.loc = null - //del(O) - continue - if (istype(O,/obj/item/stack/sheet/plasteel)) - ore_plasteel+= O.amount - O.loc = null - //del(O) - continue - if (istype(O,/obj/item/stack/sheet/mineral/adamantine)) - ore_adamantine+= O.amount - O.loc = null - //del(O) - continue - if (istype(O,/obj/item/stack/sheet/mineral/mythril)) - ore_mythril+= O.amount - O.loc = null - //del(O) - continue - if (istype(O,/obj/item/stack/sheet/cardboard)) - ore_cardboard+= O.amount - O.loc = null - //del(O) - continue - if (istype(O,/obj/item/stack/sheet/wood)) - ore_wood+= O.amount - O.loc = null - //del(O) - continue - if (istype(O,/obj/item/stack/sheet/cloth)) - ore_cloth+= O.amount - O.loc = null - //del(O) - continue - if (istype(O,/obj/item/stack/sheet/leather)) - ore_leather+= O.amount - O.loc = null - //del(O) - continue - O.loc = src.output.loc + O.loc = output.loc + else + O.loc = output.loc - if (ore_gold >= stack_amt) - var/obj/item/stack/sheet/mineral/gold/G = new /obj/item/stack/sheet/mineral/gold - G.amount = stack_amt - G.loc = output.loc - ore_gold -= stack_amt - return - if (ore_silver >= stack_amt) - var/obj/item/stack/sheet/mineral/silver/G = new /obj/item/stack/sheet/mineral/silver - G.amount = stack_amt - G.loc = output.loc - ore_silver -= stack_amt - return - if (ore_diamond >= stack_amt) - var/obj/item/stack/sheet/mineral/diamond/G = new /obj/item/stack/sheet/mineral/diamond - G.amount = stack_amt - G.loc = output.loc - ore_diamond -= stack_amt - return - if (ore_phoron >= stack_amt) - var/obj/item/stack/sheet/mineral/phoron/G = new /obj/item/stack/sheet/mineral/phoron - G.amount = stack_amt - G.loc = output.loc - ore_phoron -= stack_amt - return - if (ore_iron >= stack_amt) - var/obj/item/stack/sheet/metal/G = new /obj/item/stack/sheet/metal - G.amount = stack_amt - G.loc = output.loc - ore_iron -= stack_amt - return - if (ore_clown >= stack_amt) - var/obj/item/stack/sheet/mineral/clown/G = new /obj/item/stack/sheet/mineral/clown - G.amount = stack_amt - G.loc = output.loc - ore_clown -= stack_amt - return - if (ore_uranium >= stack_amt) - var/obj/item/stack/sheet/mineral/uranium/G = new /obj/item/stack/sheet/mineral/uranium - G.amount = stack_amt - G.loc = output.loc - ore_uranium -= stack_amt - return - if (ore_glass >= stack_amt) - var/obj/item/stack/sheet/glass/G = new /obj/item/stack/sheet/glass - G.amount = stack_amt - G.loc = output.loc - ore_glass -= stack_amt - return - if (ore_rglass >= stack_amt) - var/obj/item/stack/sheet/rglass/G = new /obj/item/stack/sheet/rglass - G.amount = stack_amt - G.loc = output.loc - ore_rglass -= stack_amt - return - if (ore_phoronglass >= stack_amt) - var/obj/item/stack/sheet/glass/phoronglass/G = new /obj/item/stack/sheet/glass/phoronglass - G.amount = stack_amt - G.loc = output.loc - ore_phoronglass -= stack_amt - return - if (ore_phoronrglass >= stack_amt) - var/obj/item/stack/sheet/glass/phoronrglass/G = new /obj/item/stack/sheet/glass/phoronrglass - G.amount = stack_amt - G.loc = output.loc - ore_phoronrglass -= stack_amt - return - if (ore_plasteel >= stack_amt) - var/obj/item/stack/sheet/plasteel/G = new /obj/item/stack/sheet/plasteel - G.amount = stack_amt - G.loc = output.loc - ore_plasteel -= stack_amt - return - if (ore_wood >= stack_amt) - var/obj/item/stack/sheet/wood/G = new /obj/item/stack/sheet/wood - G.amount = stack_amt - G.loc = output.loc - ore_wood -= stack_amt - return - if (ore_cardboard >= stack_amt) - var/obj/item/stack/sheet/cardboard/G = new /obj/item/stack/sheet/cardboard - G.amount = stack_amt - G.loc = output.loc - ore_cardboard -= stack_amt - return - if (ore_cloth >= stack_amt) - var/obj/item/stack/sheet/cloth/G = new /obj/item/stack/sheet/cloth - G.amount = stack_amt - G.loc = output.loc - ore_cloth -= stack_amt - return - if (ore_leather >= stack_amt) - var/obj/item/stack/sheet/leather/G = new /obj/item/stack/sheet/leather - G.amount = stack_amt - G.loc = output.loc - ore_leather -= stack_amt - return - if (ore_adamantine >= stack_amt) - var/obj/item/stack/sheet/mineral/adamantine/G = new /obj/item/stack/sheet/mineral/adamantine - G.amount = stack_amt - G.loc = output.loc - ore_adamantine -= stack_amt - return - if (ore_mythril >= stack_amt) - var/obj/item/stack/sheet/mineral/mythril/G = new /obj/item/stack/sheet/mineral/mythril - G.amount = stack_amt - G.loc = output.loc - ore_mythril -= stack_amt - return + //Output amounts that are past stack_amt. + for(var/sheet in stack_storage) + if(stack_storage[sheet] >= stack_amt) + var/stacktype = stack_paths[sheet] + var/obj/item/stack/sheet/S = new stacktype (get_turf(output)) + S.amount = stack_amt + stack_storage[sheet] -= stack_amt + + console.updateUsrDialog() return + diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index 88363da800..4c1d4150a0 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -27,6 +27,7 @@ var/list/artifact_spawn = list() // Runtime fix for geometry loading before cont var/obj/item/weapon/last_find var/datum/artifact_find/artifact_find + has_resources = 1 New() . = ..() @@ -392,6 +393,7 @@ var/list/artifact_spawn = list() // Runtime fix for geometry loading before cont temperature = T0C icon_plating = "asteroid" var/dug = 0 //0 = has not yet been dug, 1 = has already been dug + has_resources = 1 /turf/simulated/floor/plating/airless/asteroid/New() var/proper_name = name diff --git a/code/modules/mining/minerals.dm b/code/modules/mining/minerals.dm index fb7378ae84..30db226207 100644 --- a/code/modules/mining/minerals.dm +++ b/code/modules/mining/minerals.dm @@ -69,4 +69,4 @@ mineral/clown name = "Clown" result_amount = 3 spread = 0 - ore = /obj/item/weapon/ore/clown \ No newline at end of file + ore = /obj/item/weapon/ore/slag \ No newline at end of file diff --git a/code/modules/mining/ore.dm b/code/modules/mining/ore.dm new file mode 100644 index 0000000000..8c537252d5 --- /dev/null +++ b/code/modules/mining/ore.dm @@ -0,0 +1,81 @@ +/obj/item/weapon/ore + name = "rock" + icon = 'icons/obj/mining.dmi' + icon_state = "ore2" + var/datum/geosample/geologic_data + var/oretag + +/obj/item/weapon/ore/uranium + name = "pitchblende" + icon_state = "Uranium ore" + origin_tech = "materials=5" + oretag = "uranium" + +/obj/item/weapon/ore/iron + name = "hematite" + icon_state = "Iron ore" + origin_tech = "materials=1" + oretag = "hematite" + +/obj/item/weapon/ore/coal + name = "carbonaceous rock" + icon_state = "Iron ore" //TODO + origin_tech = "materials=1" + oretag = "coal" + +/obj/item/weapon/ore/glass + name = "impure silicates" + icon_state = "Glass ore" + origin_tech = "materials=1" + oretag = "sand" + +/obj/item/weapon/ore/phoron + name = "phoron crystals" + icon_state = "Phoron ore" + origin_tech = "materials=2" + oretag = "phoron" + +/obj/item/weapon/ore/silver + name = "native silver ore" + icon_state = "Silver ore" + origin_tech = "materials=3" + oretag = "silver" + +/obj/item/weapon/ore/gold + name = "native gold ore" + icon_state = "Gold ore" + origin_tech = "materials=4" + oretag = "gold" + +/obj/item/weapon/ore/diamond + name = "diamonds" + icon_state = "Diamond ore" + origin_tech = "materials=6" + oretag = "diamond" + +/obj/item/weapon/ore/osmium + name = "raw platinum" + icon_state = "slag" //TODO + oretag = "platinum" + +/obj/item/weapon/ore/hydrogen + name = "raw hydrogen" + icon_state = "slag" //TODO + oretag = "hydrogen" + +/obj/item/weapon/ore/slag + name = "Slag" + desc = "Completely useless" + icon_state = "slag" + oretag = "slag" + +/obj/item/weapon/ore/New() + pixel_x = rand(0,16)-8 + pixel_y = rand(0,8)-8 + +/obj/item/weapon/ore/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(istype(W,/obj/item/device/core_sampler)) + var/obj/item/device/core_sampler/C = W + C.sample_item(src, user) + else + return ..() \ No newline at end of file diff --git a/code/modules/mining/ore_datum.dm b/code/modules/mining/ore_datum.dm new file mode 100644 index 0000000000..d05b5fcb16 --- /dev/null +++ b/code/modules/mining/ore_datum.dm @@ -0,0 +1,51 @@ +/datum/ore + var/oretag + var/alloy + var/smelts_to + var/compresses_to + +/datum/ore/uranium + smelts_to = /obj/item/stack/sheet/mineral/uranium + oretag = "uranium" + +/datum/ore/iron + smelts_to = /obj/item/stack/sheet/mineral/iron + alloy = 1 + oretag = "hematite" + +/datum/ore/coal + smelts_to = /obj/item/stack/sheet/mineral/plastic + alloy = 1 + oretag = "coal" + +/datum/ore/glass + smelts_to = /obj/item/stack/sheet/glass + compresses_to = /obj/item/stack/sheet/mineral/sandstone + oretag = "sand" + +/datum/ore/phoron + smelts_to = /obj/item/stack/sheet/mineral/phoron + oretag = "phoron" + +/datum/ore/silver + smelts_to = /obj/item/stack/sheet/mineral/silver + oretag = "silver" + +/datum/ore/gold + smelts_to = /obj/item/stack/sheet/mineral/gold + oretag = "gold" + +/datum/ore/diamond + smelts_to = /obj/item/stack/sheet/mineral/diamond + oretag = "diamond" + +/datum/ore/osmium + smelts_to = /obj/item/stack/sheet/mineral/platinum + compresses_to = /obj/item/stack/sheet/mineral/osmium + alloy = 1 + oretag = "platinum" + +/datum/ore/hydrogen + smelts_to = /obj/item/stack/sheet/mineral/tritium + compresses_to = /obj/item/stack/sheet/mineral/mhydrogen + oretag = "hydrogen" diff --git a/code/modules/mining/satchel_ore_boxdm.dm b/code/modules/mining/satchel_ore_boxdm.dm index a4b6378d4c..f02b179718 100644 --- a/code/modules/mining/satchel_ore_boxdm.dm +++ b/code/modules/mining/satchel_ore_boxdm.dm @@ -151,8 +151,4 @@ if (istype(O, /obj/item/weapon/ore/strangerock)) amt_strange++ continue - if (istype(O, /obj/item/weapon/ore/clown)) - amt_clown++ - continue - return \ No newline at end of file diff --git a/icons/obj/mining_drill.dmi b/icons/obj/mining_drill.dmi new file mode 100644 index 0000000000000000000000000000000000000000..7a9ad6b057f8972726285c30e2deeddf642025f8 GIT binary patch literal 3198 zcmV-^41x2BP)@RLjB9*&Yry~jk8f{& z7#QFH0EA;>|I7f1fnb>c0GfzDd~;KFRaJIl8@inlFfd+TUQA3(ARix_@mpp90004WQchCV=-0C=2JR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex6# za*U0*I5Sc+(=$pyG8SCLC5a`eK&Db|W?p7qdVESzW=@V07iUUlQ87^1kc%^|C^0t` z!p5pNKB*`%IW>heJ&DOBnPsWi^_T!fQ*#n4LBcv}D7t%rMn4#n2CS zGD4>bUKfKEW4IVqkFtWRp9?tL0fgal>0KeAPyhf5d`Uz>RCt{2TMfI@wiUMINLB-P zP&$%q4!Qk=(r!?C2Q6%4bX&W1z9RhpU$gUJIaVw=c49l*^F)^mN!}Cb)zQ(BeBL%m zToYbP8f`>eLK7mLrL!5noXyls34t&B;$T5&Pn;q6L`bcamiTI>vMkfGAHHk-aO5Y1 z)W7mgpmj|2l{4E_xtWyDa+?szoKu91%Y)pW*D8vYbzK_!YN8=wef#23~AfOCwD)s<)Mp9RZ>N$2$$K}

Pb$AwRW13a2RUic_xTL>K-(=CfjZ6}P>N>=L9%o+#PizCpesH* zfNv1bJluJpxyJqshQVjG7^r!GLxQ86*O(7WxZ6+%!{HmmGY>}scv|soo^y41SYn!> z4o1b9Ky_MCt~QU%qemGXmt_Yd;?4v9c?~#P)MhXmjt>U(yo?rQt|x}%rfdQn5~7hv zPHt$Qi@U~yrwC8Do7$DDqF^l8M*?)m^hsZSj5<4sHn0x1zy?+%9XfA#uX5fWGcKe+O?$7 z#>W3Q^nxSn{iot5*ZYUj3r?u_52P0ySMMKAFA&Go`-jsDj;!|&tQTB=`sp>jIFnxR z+2>z;@%d-H>is?Sf-k>p(+j?O{N(GepFI9b_Ne#w(+i${^UYHquj>Wh{^5_$ojgw0su%pg1pXS+3%-5v_QCV#e|z%!`yTavUoXgRZrb#QcR#&) z_0v-i_w<76$8VoKd;1tSV&{5)KfU1H%a`xk^n&ZZ|Kp!OU-zo__tXo1`B%GM@b6!L z{m(@&sNP)kf{R`-wO(+z-e0bv&LVh6y}-khKK1_8?c;Vm;E-P6;Ypu*zeyR7dZ3eD zkTpEex!w;Q5S~TwZhC=_*Y$#f^?vApa2duAeLskMdciUE{yyIi;htV_OufI)_d~d+ z7i_rRpY^Ht_tFajxThD)HnlbGSnoeoPw@1D&8%D_J}f)c`%l#qE_%U5FSzIh7ro%3 z7hLp$2?YC33)yOeQh1Qj%jIIZ5URmI-eTKbxg-Q@c4HkL6T(0v4goI{Hp!viIQ1u_5^s1SqO6*@Q%GC%@4 zuVSG7WgMSlpw@8N%Y`a12KI5;WFW&RxtdUqdZ6epk@pdG=A!usr@()C{z1!jTjXE096d^Z?nY304&gc3_yZ36lTq4 z*}?`vSr{*+O3rjJMkC5AJeUV?{1m-x%O>#;I@vlCen+1>8(1Gzc&7>xfEZX}3`7V7 z^MFh-$O~hO_cXKj`1Ag~HEKs7H5NW1h)pbf0U}_Z0LFk0Wjey;t&5*qxktdHKw#Hs z!qxwrgT+$CpY56{aGTT!NEZX^G6wb;NDMYUjWKu*dO+6vi&1*O12Uy0;1P&Gy2k*5 z#=84}Eo#vNQ-wZF-2*gTaC>FK{}E5!!qAs?tHcD{jVDYXwax?93tvm$vdX@<%G5k# zYbLdi4H;UVNo@t##pR6$mmo->^niaQq2T6z4%thXtS>hPd{2i@uC}w=Ddt5P>KZGEBpU z?m!7YeHQMv5g4Y3Lt(=R1IPfd3Bz4bu1xtZwU;Mbpin1teN$n}*e<674cK9>q<`vH zi54i*2`1a1B|&EY7;=!M+gFM^t$x_ILHnKH@q-(YE@L)8l_E6k0oodP(Ax4v7pU32 zXL)GPHd}aqPS&i=(L-mW0j|sOk7Wl=KfWvpv;&&%XH@;&|apShCsYbH$iJH(@jMnR;HVbK%`7J9f5F}ZbAaVGToE}f@QiX2?Wb@ zQxXW4=}LHXy`Vi0Or#e?^T0HEL8MHVwCDxpv*b{ELAXrUrWa7bV>^sq5G~WS=>;_p zoU9i_%XDpe0nDBpFoa$ZEz`B>1#St3&KbZ7g)#|u%b=9;7~1Y2))35z~Qm{@gY*Kj<+H7 z0?4vRfD(4^=l>z}0=t!VyCoWS+n2x)dO_&{q|x64L+Aykcwi8{;CK%Vq!%3RfuZz* kqdhQ`UU0kzPSOkh3vfW?o@0~ZQvd(}07*qoM6N<$f-Ae#v;Y7A literal 0 HcmV?d00001 From d8f77fc4a19c6bfd28d87b7f5861d21efb4d2244 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sat, 7 Jun 2014 23:45:42 +0930 Subject: [PATCH 2/6] Added a couple of stationary drills and a 'workshop' to the asteroid. --- maps/tgstation2.dmm | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/maps/tgstation2.dmm b/maps/tgstation2.dmm index 251c9bf597..7634d1d720 100644 --- a/maps/tgstation2.dmm +++ b/maps/tgstation2.dmm @@ -8647,6 +8647,13 @@ "dko" = (/obj/machinery/door/airlock/mining{name = "Mining Station Storage"; req_access_txt = "48"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/space,/area/mine/living_quarters) "dkp" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/machinery/camera{c_tag = "Crew Area Hallway"; network = list("MINE")},/turf/simulated/floor,/area/mine/living_quarters) "dkq" = (/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/turf/simulated/floor,/area/mine/living_quarters) +"dkr" = (/obj/machinery/mining/brace,/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/explored) +"dks" = (/obj/structure/table/reinforced,/obj/machinery/cell_charger,/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 10},/area/mine/explored) +"dkt" = (/obj/structure/table/reinforced,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 8},/area/mine/explored) +"dku" = (/obj/machinery/mining/brace,/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/explored) +"dkv" = (/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/structure/table/reinforced,/obj/item/weapon/wrench,/obj/item/weapon/screwdriver,/obj/item/weapon/crowbar,/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 9},/area/mine/explored) +"dkw" = (/obj/machinery/mining/drill,/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/explored) +"dkx" = (/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 5},/area/mine/explored) "dqx" = (/turf/simulated/floor/plating/airless/asteroid,/area) "dqT" = (/turf/simulated/mineral,/area/mine/unexplored) "dqU" = (/turf/space,/area/syndicate_station/mining) @@ -11738,13 +11745,13 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHndHndHndHndHndH aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHndHndHndHndHndHndHndHndHndHndHndHndHVdHVdHVdHVdHVdHVdHndHndHndHndHndHndHndHndBvdCidCidCidGXdIFdHDdHDdHDdHDdHDdHDdIGdIrdIHdIIdHndHndHndHndHndBvdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadIxdIBdIJdRtdRqdIMdIxdsadsadsadsadqTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsadsadsadsadsadsadsadqTdqTdBvdCidCidCidHSdCidBvdqTdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHndHndHndHndHndHndHndHndHndHndHndHVdHVdHVdHndHVdHVdHVdHndHndHndHndHndHndBvdBvdBvdCidCidCidCidHndHndHndHndHndHndIqdIrdItdHndHndHndCidCidCidBvdqTdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadFrdINdIOdsadIPdIxdIxdIxdRvdIxdIxdIxdsadsadsadqTdqTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsadsadsadsadsadsadsadsadqTdqTdBvdCidCidCidHSdCidBvdBvdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHndHndHndHndHndHndHndHndHndHndHVdHVdHndHndHndHndHndHndHndHndHndHndqTdqTdBvdBvdCidCidCidHndHndHndHndHndHndHndIqdIrdItdHndCidCidCidCidCidBvdBvdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadIRdIOdISdsadIPdITdIUdIPdMvdIPdBvdBvdqTdqTdqTdqTdqTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqTdsadsadsadsadsadsadsadsadqTdqTdBvdBvdCidCidHSdCidCidBvdBvdBvdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHVdqTdqTdBvdBvdBvdCidCidHndHndHndHndHndHndHndIWdIrdItdCidCidCidCidCidCidCidBvdqTdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadFrdDQdqTdIPdIXdIYdIZdMvdIPdCidBvdBvdqTdqTdqTdqTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqTdqTdsadsadsadsadsadsadsadsadqTdqTdqTdBvdCidCidHSdCidCidCidCidBvdBvdBvdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHVdHVdHVdqTdqTdHndHndHndHndHndHndHndHndHndHndHndIndIpdIndCidCidCidCidCidCidCidBvdBvdqTdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadJadsadqTdIPdIPdIPdIPdRxdIPdCidCidBvdBvdDQdBvdBvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqTdqTdsadsadsadsadqTdqTdqTdqTdqTdqTdBvdBvdCidHSdCidCidCidCidCidCidBvdBvdqTdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHndHndHVdHVdHVdHndHndHndHndHndHndHndHndHndHndHndHndHndHVdHVdHVdqTdqTdHndHndHndHndHndHndHndHndHndCidCidIodCidIodCidCidCidCidCidCidCidCidBvdqTdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadJcdsadsadIPdITdJddIPdMvdJedCidCidCidCidJfdCidBvdBvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdBvdBvdCidHSdCidCidCidCidCidCidCidBvdBvdBvdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHVdHVdHVdHVdHVdHVdHndHndHndHndHndHndHndHndHndHndHVdHVdHVdHVdHVdHndHndHndHndHndHndHndHndHndCidCidCidCidCidCidCidCidJgdJgdJgdCidCidCidBvdqTdqTdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadJcdsadsadIPdIXdIYdJhdMvdJidCidCidCidCidCidCidCidCidCiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqTdqTdqTdqTdqTdqTdqTdBvdBvdDQdBvdBvdCidCidHSdCidCidCidCidCidCidCidCidGpdBvdBvdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHVdHVdHVdHVdHVdHVdHVdHVdHndHndHndHndHndHndHndHVdHVdHVdHVdHVdHVdHndHndHndHndHndHndHndHndHndCidCidCidCidCidCidCidCidJjdJkdJldCidCidCidBvdqTdqTdqTdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadqTdqTdqTdBvdBvdBvdBvdBvdBvdBvdqTdqTdqTdqTdqTdqTdqTdqTdsadsadsadsadsadsadsadsadsadsadIPdJmdIPdIPdIPdIPdIPdIPdMvdJndCidCidCidCidCidCidCidCidCidCidCiaaaaaaaaaaaaaaaaaaaaaaaaaaadqTdqTdqTdqTdqTdBvdBvdCidJfdCidCidCidIedHIdHJdCidCidCidCidCidCidCidGpdGpdBvdqTdqTdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHVdHVdHVdHVdHVdHVdHndHndHndHndHndHndHndHVdHVdHVdHVdHVdHVdHndHndHndHndCidCidJodJodJodJodJodJodJpdJqdJrdJodJodJodJodJodCidCidCidBvdqTdqTdqTdqTdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadqTdqTdqTdqTdBvdBvdCidCidCidCidCidBvdBvdBvdBvdBvdqTdqTdqTdqTdqTdqTdqTdsadsadsadsadIPdIPdIPdIPdJsdJtdJudIPdITdJvdIPdRxdIPdIPdIPdJwdJxdJydIPdCidCidCidCidCidCiaaaaaaaaaaaaaaaaaaaaaaaaaaadqTdqTdqTdBvdBvdCidCidCidCidCidCidHEdHOdHGdCidCidCidCidCidCidCidCidCidBvdBvdqTdqTdqTdsadsadsadsadsadsadsadsadsadsadsadqTdsadsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHVdHVdHVdHVdHVdHVdHndHndHndHndHndHndHndHVdHVdHVdHVdHVdHndHndBvdCidCidCidJodJzdjNdJBdJCdJDdMfdMcdMtdMpdMudJJdJKdJLdHJdCidCidBvdBvdBvdBvdqTdqTdqTdqTdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadqTdqTdqTdBvdBvdCidCidCidCidCidCidCidCidCidCidBvdBvdBvdBvdBvdqTdqTdqTdqTdsadsadsadIPdJMdJNdJOdJPdJNdJNdIPdIXdIYdJQdMvdIPdJRdJSdJTdJTdJTdJedCidCidCidCidCidCidCiaaaaaaaaaaaaaaaaaaaaaaaaaaadBvdBvdBvdCidCidCidCidCidCidCidCidJUdJVdJWdJXdJVdJVdCidCidCidCidCidCidBvdqTdqTdqTdsadsadsadsadsadsadsadsadsadsadsadqTdsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHVdqTdqTdBvdBvdBvdCidCidHndHndHndHndHndHndHndIWdIrdItdCidCidCidCidCidCidCidBvdqTdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadFrdDQdqTdIPdIXdIYdIZdMvdIPdCidBvdBvdqTdqTdqTdqTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqTdqTdsadsadsadsadsadsadsadsadqTdqTdqTdCidCidCidHSdCidCidCidCidBvdBvdBvdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHVdHVdHVdqTdqTdHndHndHndHndHndHndHndHndHndHndHndIndIpdIndCidCidCidCidCidCidCidBvdBvdqTdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadJadsadqTdIPdIPdIPdIPdRxdIPdCidCidBvdBvdDQdBvdBvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqTdqTdsadsadsadsadqTdqTdqTdqTdqTdqTdBvdCidCidHSdCidCidCidCidCidCidBvdBvdqTdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHndHndHVdHVdHVdHndHndHndHndHndHndHndHndHndHndHndHndHndHVdHVdHVdqTdqTdHndHndHndHndHndHndHndHndHndCidCidIodCidIodCidCidCidCidCidCidCidCidBvdqTdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadJcdsadsadIPdITdJddIPdMvdJedCidCidCidCidJfdCidBvdBvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdBvdCidCidHSdCidCidCidCidCidCidCidBvdBvdBvdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHVdHVdHVdHVdHVdHVdHndHndHndHndHndHndHndHndHndHndHVdHVdHVdHVdHVdHndHndHndHndHndHndHndHndHndCidCidCidCidCidCidCidCidJgdJgdJgdCidCidCidBvdqTdqTdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadJcdsadsadIPdIXdIYdJhdMvdJidCidCidCidCidCidCidCidCidCiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqTdqTdqTdqTdqTdqTdBwdDQdDQdDQdDQdDQdCidCidHSdCidCidCidCidCidCidCidCidGpdBvdBvdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHVdHVdHVdHVdHVdHVdHVdHVdHndHndHndHndHndHndHndHVdHVdHVdHVdHVdHVdHndHndHndHndHndHndHndHndHndCidCidCidCidCidCidCidCidJjdJkdJldCidCidCidBvdqTdqTdqTdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadqTdqTdqTdBvdBvdBvdBvdBvdBvdBvdqTdqTdqTdqTdqTdqTdqTdqTdsadsadsadsadsadsadsadsadsadsadIPdJmdIPdIPdIPdIPdIPdIPdMvdJndCidCidCidCidCidCidCidCidCidCidCiaaaaaaaaaaaaaaaaaaaaaaaaaaadqTdqTdqTdqTdqTdDQdkvdMCdkwdkwdkxdCidIedHIdHJdCidCidCidCidCidCidCidGpdGpdBvdqTdqTdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHVdHVdHVdHVdHVdHVdHndHndHndHndHndHndHndHVdHVdHVdHVdHVdHVdHndHndHndHndCidCidJodJodJodJodJodJodJpdJqdJrdJodJodJodJodJodCidCidCidBvdqTdqTdqTdqTdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadqTdqTdqTdqTdBvdBvdCidCidCidCidCidBvdBvdBvdBvdBvdqTdqTdqTdqTdqTdqTdqTdsadsadsadsadIPdIPdIPdIPdJsdJtdJudIPdITdJvdIPdRxdIPdIPdIPdJwdJxdJydIPdCidCidCidCidCidCiaaaaaaaaaaaaaaaaaaaaaaaaaaadqTdqTdqTdBvdDQdktdFpdkudkudOsdCidHEdHOdHGdCidCidCidCidCidCidCidCidCidBvdBvdqTdqTdqTdsadsadsadsadsadsadsadsadsadsadsadqTdsadsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHVdHVdHVdHVdHVdHVdHndHndHndHndHndHndHndHVdHVdHVdHVdHVdHndHndBvdCidCidCidJodJzdjNdJBdJCdJDdMfdMcdMtdMpdMudJJdJKdJLdHJdCidCidBvdBvdBvdBvdqTdqTdqTdqTdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadqTdqTdqTdBvdBvdCidCidCidCidCidCidCidCidCidCidBvdBvdBvdBvdBvdqTdqTdqTdqTdsadsadsadIPdJMdJNdJOdJPdJNdJNdIPdIXdIYdJQdMvdIPdJRdJSdJTdJTdJTdJedCidCidCidCidCidCidCiaaaaaaaaaaaaaaaaaaaaaaaaaaadBvdBvdBvdDQdksdNbdkrdkrdHGdCidCidJUdJVdJWdJXdJVdJVdCidCidCidCidCidCidBvdqTdqTdqTdsadsadsadsadsadsadsadsadsadsadsadqTdsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHndHVdHVdHVdHndHndHndHndHndHndHndHndHVdHVdHVdHndHndqTdBvdCidCidCidJodJYdJAdJZdKadJAdMydJAdJAdMwdKddKedJKdKfdKgdCidCidCidCidCidBvdBvdBvdqTdqTdqTdqTdqTdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadqTdqTdBvdBvdDQdCidCidCidCidCidCidCidCidCidCidCidCidCidCidCidBvdBvdqTdqTdqTdqTdqTdqTdIPdTwdJNdKidTxdKkdKldIPdIPdIPdIPdMvdIPdJRdKmdKmdKndKmdJidCidCidCidCidCidCidCiaaaaaaaaaaaaaaaaaaaaaaaaaaadCidCidCidCidCidCidCidCidCidCidCidJUdKodKodKodKpdJVdCidKqdCidCidCidEudDQdBvdqTdqTdsadsadsadsadsadsadsadsadsadsadqTdqTdsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHVdHVdHVdHndHndHndHndHndHndHndHndHndHndHndHndHndqTdBvdCidCidCidJodKrdJAdJAdKsdJAdMydJAdJAdMEdMFdMGdKvdJLdHGdCidCidCidCidCidCidCidBvdBvdBvdBvdqTdqTdqTdqTdqTdqTdsadsadsadsadsadsadsadsadsadqTdqTdBvdBvdCidJfdCidCidCidCidCidCidCidCidCidCidCidCidCidCidCidCidBvdBvdBvdBvdqTdqTdqTdIPdKwdJNdKxdJNdKydJNdKzdKndKAdKBdMHdIPdJRdKmdKDdMIdjOdJndCidCidCidCidCidCiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadCidCidCidCidCidKFdKFdKGdKHdJUdMJdMLdMKdKLdJVdJVdJVdJVdCidCidCidCidBvdBvdqTdqTdsadsadsadsadsadsadsadsadsadqTdsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndsadsadBvdBvdCidCidJodKMdJAdKNdMMdMpdMNdKRdJAdJodJodJodJodJodJodIedHJdCidCidCidCidCidCidCidCidBvdBvdBvdqTdqTdqTdqTdqTdsadsadsadsadsadsadsadqTdqTdqTdBvdCidCidCidCidCidCidCidCidCidCidCidIedHJdCidCidCidCidCidCidCidCidCidBvdBvdqTdqTdIPdIPdIPdIPdIPdIPdIPdKSdMOdKUdKSdMOdIPdIPdIPdIPdkodIPdIPdIPdKWdKXdCidCiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadCidCidKYdKHdKZdLadMSdMRdMQdLedMVdMUdMTdLidLjdLkdHJdCidCidCidDPdBvdqTdqTdsadsadsadsadsadsadsadqTdqTdqTdsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From a026575ef72e65e2f3405f0ace2dac3a8cff197f Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sun, 8 Jun 2014 00:04:58 +0930 Subject: [PATCH 3/6] Ironed out some bugs. Everything should be working for testing purposes. --- code/modules/mining/drilling/drill.dm | 16 ++++++---- code/modules/mining/machine_processing.dm | 39 +++++++++-------------- 2 files changed, 25 insertions(+), 30 deletions(-) diff --git a/code/modules/mining/drilling/drill.dm b/code/modules/mining/drilling/drill.dm index f19cc76d4b..5dc990ba15 100644 --- a/code/modules/mining/drilling/drill.dm +++ b/code/modules/mining/drilling/drill.dm @@ -148,7 +148,11 @@ else if(!open || active) return ..() if(istype(W,/obj/item/weapon/crowbar)) - if(storage) + if(cell) + user << "You pry out \the [cell]." + cell.loc = get_turf(src) + cell = null + else if(storage) user << "You slip the bolt and pry out \the [storage]." storage.loc = get_turf(src) storage = null @@ -159,11 +163,7 @@ else if(cellmount) user << "You yank out a few wires and pry out \the [cellmount]." cellmount.loc = get_turf(src) - cellmount.loc = null - else if(cell) - user << "You pry out \the [cell]." - cell.loc = get_turf(src) - cell = null + cellmount = null else user << "There's nothing inside the drilling rig to remove." return @@ -171,6 +171,7 @@ if(storage) user << "The drill already has a matter bin installed." else + user.drop_item() W.loc = src storage = W user << "You install \the [W]." @@ -179,6 +180,7 @@ if(cutter) user << "The drill already has a cutting head installed." else + user.drop_item() W.loc = src cutter = W user << "You install \the [W]." @@ -187,6 +189,7 @@ if(cellmount) user << "The drill already has a cell capacitor installed." else + user.drop_item() W.loc = src cellmount = W user << "You install \the [W]." @@ -195,6 +198,7 @@ if(cell) user << "The drill already has a cell installed." else + user.drop_item() W.loc = src cell = W user << "You install \the [W]." diff --git a/code/modules/mining/machine_processing.dm b/code/modules/mining/machine_processing.dm index dec66231b5..d350e2052c 100644 --- a/code/modules/mining/machine_processing.dm +++ b/code/modules/mining/machine_processing.dm @@ -159,47 +159,37 @@ if(!O) continue if(ores_processing[metal] == 3 && O.alloy) //Alloying. - var/can_make_alloy = 0 - var/datum/alloy/alloying for(var/datum/alloy/A in alloy_data) - if(A.metaltag in tick_alloys) continue + + if(A.metaltag in tick_alloys) + continue + tick_alloys += A.metaltag + var/enough_metal if(!isnull(A.requires[metal]) && ores_stored[metal] >= A.requires[metal]) //We have enough of our first metal, we're off to a good start. - alloying = A - can_make_alloy = 0 - var/enough_metal = 1 + + enough_metal = 1 for(var/needs_metal in A.requires) - //Check if we're alloying the needed metal and have it stored. if(ores_processing[needs_metal] != 3 || ores_stored[needs_metal] < A.requires[needs_metal]) enough_metal = 0 break - if(!enough_metal) - can_make_alloy = 0 - else - can_make_alloy = 1 - break - - if(!alloying) - sheets++ - return - - if(!can_make_alloy) + if(!enough_metal) continue else var/total - for(var/needs_metal in alloying.requires) - ores_stored[needs_metal] -= alloying.requires[needs_metal] - total += alloying.requires[needs_metal] - total = round(total*alloying.product_mod) + for(var/needs_metal in A.requires) + ores_stored[needs_metal] -= A.requires[needs_metal] + total += A.requires[needs_metal] + total = max(1,round(total*A.product_mod)) //Always get at least one sheet. sheets += total-1 - for(var/i=0,i Date: Sun, 8 Jun 2014 00:40:34 +0930 Subject: [PATCH 4/6] Refactored material definitions a little bit, removed all bananium from the codebase. --- code/game/mecha/equipment/weapons/weapons.dm | 33 +- code/game/mecha/mech_fabricator.dm | 42 ++- code/game/mecha/mecha_parts.dm | 46 --- .../objects/items/stacks/sheets/mineral.dm | 289 ++++++------------ .../crates_lockers/closets/syndicate.dm | 1 - code/game/objects/structures/false_walls.dm | 7 - code/game/turfs/simulated/walls_mineral.dm | 7 - code/modules/mining/minerals.dm | 9 +- code/modules/mining/mint.dm | 13 - code/modules/mining/money_bag.dm | 2 - code/modules/mining/ore_datum.dm | 2 +- code/modules/mining/satchel_ore_boxdm.dm | 2 - code/modules/reagents/Chemistry-Machinery.dm | 1 - code/modules/research/designs.dm | 1 - code/modules/research/protolathe.dm | 5 - code/modules/research/rdconsole.dm | 14 +- code/unused/mining/datum_processing_recipe.dm | 1 - .../mining/machine_craftlathe_unused.dm | 1 - 18 files changed, 120 insertions(+), 356 deletions(-) diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm index 41628f279e..e8a9dc072f 100644 --- a/code/game/mecha/equipment/weapons/weapons.dm +++ b/code/game/mecha/equipment/weapons/weapons.dm @@ -120,7 +120,7 @@ projectile = /obj/item/projectile/beam/stun fire_sound = 'sound/weapons/Taser.ogg' - +/* Commenting this out rather than removing it because it may be useful for reference. /obj/item/mecha_parts/mecha_equipment/weapon/honker name = "HoNkER BlAsT 5000" icon_state = "mecha_honker" @@ -175,6 +175,7 @@ log_message("Honked from [src.name]. HONK!") do_after_cooldown() return +*/ /obj/item/mecha_parts/mecha_equipment/weapon/ballistic name = "General Ballisic Weapon" @@ -286,32 +287,4 @@ return "* [chassis.selected==src?"":""][src.name][chassis.selected==src?"":""]\[[src.projectiles]\]" /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/clusterbang/limited/rearm() - return//Extra bit of security - -/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/banana_mortar - name = "Banana Mortar" - icon_state = "mecha_bananamrtr" - projectile = /obj/item/weapon/bananapeel - fire_sound = 'sound/items/bikehorn.ogg' - projectiles = 15 - missile_speed = 1.5 - projectile_energy_cost = 100 - equip_cooldown = 20 - construction_time = 300 - construction_cost = list("metal"=20000,"bananium"=5000) - - can_attach(obj/mecha/combat/honker/M as obj) - if(!istype(M)) - return 0 - return ..() - -/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/banana_mortar/mousetrap_mortar - name = "Mousetrap Mortar" - icon_state = "mecha_mousetrapmrtr" - projectile = /obj/item/device/assembly/mousetrap - equip_cooldown = 10 - -/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/banana_mortar/mousetrap_mortar/Fire(atom/movable/AM, atom/target, turf/aimloc) - var/obj/item/device/assembly/mousetrap/M = AM - M.secured = 1 - ..() \ No newline at end of file + return//Extra bit of security \ No newline at end of file diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index bfdf3e32c2..8507e0f237 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -23,7 +23,6 @@ "diamond"=0, "phoron"=0, "uranium"=0, - //"bananium"=0 No need to state what it can no longer hold ) var/res_max_amount = 200000 var/datum/research/files @@ -362,11 +361,11 @@ /obj/machinery/mecha_part_fabricator/proc/build_part(var/obj/item/part) if(!part) return - + // critical exploit prevention, do not remove unless you replace it -walter0o if( !(locate(part, src.contents)) || !(part.vars.Find("construction_time")) || !(part.vars.Find("construction_cost")) ) // these 3 are the current requirements for an object being buildable by the mech_fabricator return - + src.being_built = new part.type(src) src.desc = "It's building [src.being_built]." src.remove_resources(part) @@ -503,7 +502,7 @@ src.updateUsrDialog() return */ - if(!silent) + if(!silent) temp = "Updating local R&D database..." src.updateUsrDialog() sleep(30) //only sleep if called by user @@ -610,24 +609,24 @@ /obj/machinery/mecha_part_fabricator/proc/exploit_prevention(var/obj/Part, mob/user as mob, var/desc_exploit) // critical exploit prevention, feel free to improve or replace this, but do not remove it -walter0o - + if(!Part || !user || !istype(Part) || !istype(user)) // sanity return 1 - + if( !(locate(Part, src.contents)) || !(Part.vars.Find("construction_time")) || !(Part.vars.Find("construction_cost")) ) // these 3 are the current requirements for an object being buildable by the mech_fabricator - + var/turf/LOC = get_turf(user) message_admins("[key_name_admin(user)] tried to exploit an Exosuit Fabricator to [desc_exploit ? "get the desc of" : "duplicate"] [Part] ! ([LOC ? "JMP" : "null"])", 0) - log_admin("EXPLOIT : [key_name(user)] tried to exploit an Exosuit Fabricator to [desc_exploit ? "get the desc of" : "duplicate"] [Part] !") + log_admin("EXPLOIT : [key_name(user)] tried to exploit an Exosuit Fabricator to [desc_exploit ? "get the desc of" : "duplicate"] [Part] !") return 1 - + return null /obj/machinery/mecha_part_fabricator/Topic(href, href_list) if(..()) // critical exploit prevention, do not remove unless you replace it -walter0o return - + var/datum/topic_input/filter = new /datum/topic_input(href,href_list) if(href_list["part_set"]) var/tpart_set = filter.getStr("part_set") @@ -639,24 +638,24 @@ screen = "parts" if(href_list["part"]) var/obj/part = filter.getObj("part") - + // critical exploit prevention, do not remove unless you replace it -walter0o if(src.exploit_prevention(part, usr)) return - + if(!processing_queue) build_part(part) else add_to_queue(part) if(href_list["add_to_queue"]) var/obj/part = filter.getObj("add_to_queue") - + // critical exploit prevention, do not remove unless you replace it -walter0o if(src.exploit_prevention(part, usr)) return - + add_to_queue(part) - + return update_queue_on_page() if(href_list["remove_from_queue"]) remove_from_queue(filter.getNum("remove_from_queue")) @@ -695,12 +694,12 @@ return update_queue_on_page() if(href_list["part_desc"]) var/obj/part = filter.getObj("part_desc") - + // critical exploit prevention, do not remove unless you replace it -walter0o if(src.exploit_prevention(part, usr, 1)) return - - if(part) + + if(part) temp = {"

[part] description:

[part.desc]
Return @@ -727,8 +726,6 @@ type = /obj/item/stack/sheet/mineral/phoron if("uranium") type = /obj/item/stack/sheet/mineral/uranium - /*if("bananium") - type = /obj/item/stack/sheet/mineral/clown Sorry, but no more clown mechs, even if you do manage to get to the clown planet.*/ else return 0 var/result = 0 @@ -786,9 +783,6 @@ if(src.resources["diamond"] >= 2000) var/obj/item/stack/sheet/mineral/diamond/G = new /obj/item/stack/sheet/mineral/diamond(src.loc) G.amount = round(src.resources["diamond"] / G.perunit) - /*if(src.resources["bananium"] >= 2000) - var/obj/item/stack/sheet/mineral/clown/G = new /obj/item/stack/sheet/mineral/clown(src.loc) - G.amount = round(src.resources["bananium"] / G.perunit) Sorry, but no bananium allowed*/ del(src) return 1 else @@ -812,8 +806,6 @@ material = "metal" if(/obj/item/stack/sheet/glass) material = "glass" - /*if(/obj/item/stack/sheet/mineral/clown) - material = "bananium"*/ if(/obj/item/stack/sheet/mineral/uranium) material = "uranium" else diff --git a/code/game/mecha/mecha_parts.dm b/code/game/mecha/mecha_parts.dm index 5a8972ee4a..479c8f7d09 100644 --- a/code/game/mecha/mecha_parts.dm +++ b/code/game/mecha/mecha_parts.dm @@ -232,52 +232,6 @@ icon_state = "ripley_r_leg" */ -////////// HONK - -/obj/item/mecha_parts/chassis/honker - name = "H.O.N.K Chassis" - - New() - ..() - construct = new /datum/construction/mecha/honker_chassis(src) - -/obj/item/mecha_parts/part/honker_torso - name="H.O.N.K Torso" - icon_state = "honker_harness" - construction_time = 300 - construction_cost = list("metal"=35000,"glass"=10000,"bananium"=10000) - -/obj/item/mecha_parts/part/honker_head - name="H.O.N.K Head" - icon_state = "honker_head" - construction_time = 200 - construction_cost = list("metal"=15000,"glass"=5000,"bananium"=5000) - -/obj/item/mecha_parts/part/honker_left_arm - name="H.O.N.K Left Arm" - icon_state = "honker_l_arm" - construction_time = 200 - construction_cost = list("metal"=20000,"bananium"=5000) - -/obj/item/mecha_parts/part/honker_right_arm - name="H.O.N.K Right Arm" - icon_state = "honker_r_arm" - construction_time = 200 - construction_cost = list("metal"=20000,"bananium"=5000) - -/obj/item/mecha_parts/part/honker_left_leg - name="H.O.N.K Left Leg" - icon_state = "honker_l_leg" - construction_time = 200 - construction_cost = list("metal"=20000,"bananium"=5000) - -/obj/item/mecha_parts/part/honker_right_leg - name="H.O.N.K Right Leg" - icon_state = "honker_r_leg" - construction_time = 200 - construction_cost = list("metal"=20000,"bananium"=5000) - - ////////// Phazon /obj/item/mecha_parts/chassis/phazon diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm index 737273e8ea..64722065b3 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -14,127 +14,31 @@ Mineral Sheets - Enriched Uranium */ -/* - * Sandstone - */ -/obj/item/stack/sheet/mineral/sandstone - name = "sandstone brick" - desc = "This appears to be a combination of both sand and stone." - singular_name = "sandstone brick" - icon_state = "sheet-sandstone" - throw_speed = 4 - throw_range = 5 - origin_tech = "materials=1" - sheettype = "sandstone" - var/global/list/datum/stack_recipe/sandstone_recipes = list ( \ new/datum/stack_recipe("pile of dirt", /obj/machinery/hydroponics/soil, 3, time = 10, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("sandstone door", /obj/structure/mineral_door/sandstone, 10, one_per_turf = 1, on_floor = 1), \ -/* new/datum/stack_recipe("sandstone wall", ???), \ - new/datum/stack_recipe("sandstone floor", ???),\ */ ) -/obj/item/stack/sheet/mineral/sandstone/New(var/loc, var/amount=null) - recipes = sandstone_recipes - pixel_x = rand(0,4)-4 - pixel_y = rand(0,4)-4 - ..() - -/* - * Diamond - */ -/obj/item/stack/sheet/mineral/diamond - name = "diamond" - icon_state = "sheet-diamond" - force = 5.0 - throwforce = 5 - w_class = 3.0 - throw_range = 3 - origin_tech = "materials=6" - perunit = 3750 - sheettype = "diamond" +var/global/list/datum/stack_recipe/silver_recipes = list ( \ + new/datum/stack_recipe("silver door", /obj/structure/mineral_door/silver, 10, one_per_turf = 1, on_floor = 1), \ + ) var/global/list/datum/stack_recipe/diamond_recipes = list ( \ new/datum/stack_recipe("diamond door", /obj/structure/mineral_door/transparent/diamond, 10, one_per_turf = 1, on_floor = 1), \ ) -/obj/item/stack/sheet/mineral/diamond/New(var/loc, var/amount=null) - recipes = diamond_recipes - pixel_x = rand(0,4)-4 - pixel_y = rand(0,4)-4 - ..() - -/* - * Uranium - */ -/obj/item/stack/sheet/mineral/uranium - name = "uranium" - icon_state = "sheet-uranium" - force = 5.0 - throwforce = 5 - w_class = 3.0 - throw_speed = 3 - throw_range = 3 - origin_tech = "materials=5" - perunit = 2000 - sheettype = "uranium" - var/global/list/datum/stack_recipe/uranium_recipes = list ( \ new/datum/stack_recipe("uranium door", /obj/structure/mineral_door/uranium, 10, one_per_turf = 1, on_floor = 1), \ ) -/obj/item/stack/sheet/mineral/uranium/New(var/loc, var/amount=null) - recipes = uranium_recipes - pixel_x = rand(0,4)-4 - pixel_y = rand(0,4)-4 - ..() - -/* - * Phoron - */ -/obj/item/stack/sheet/mineral/phoron - name = "solid phoron" - icon_state = "sheet-phoron" - force = 5.0 - throwforce = 5 - w_class = 3.0 - throw_speed = 3 - throw_range = 3 - origin_tech = "phorontech=2;materials=2" - perunit = 2000 - sheettype = "phoron" +var/global/list/datum/stack_recipe/gold_recipes = list ( \ + new/datum/stack_recipe("golden door", /obj/structure/mineral_door/gold, 10, one_per_turf = 1, on_floor = 1), \ + ) var/global/list/datum/stack_recipe/phoron_recipes = list ( \ new/datum/stack_recipe("phoron door", /obj/structure/mineral_door/transparent/phoron, 10, one_per_turf = 1, on_floor = 1), \ ) -/obj/item/stack/sheet/mineral/phoron/New(var/loc, var/amount=null) - recipes = phoron_recipes - pixel_x = rand(0,4)-4 - pixel_y = rand(0,4)-4 - ..() - -/obj/item/stack/sheet/mineral/plastic - name = "Plastic" - icon_state = "sheet-plastic" - force = 5.0 - throwforce = 5 - w_class = 3.0 - throw_speed = 3 - throw_range = 3 - origin_tech = "materials=3" - perunit = 2000 - -/obj/item/stack/sheet/mineral/plastic/cyborg - name = "plastic sheets" - icon_state = "sheet-plastic" - force = 5.0 - throwforce = 5 - w_class = 3.0 - throw_speed = 3 - throw_range = 3 - perunit = 2000 - var/global/list/datum/stack_recipe/plastic_recipes = list ( \ new/datum/stack_recipe("plastic crate", /obj/structure/closet/crate/plastic, 10, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("plastic ashtray", /obj/item/ashtray/plastic, 2, one_per_turf = 1, on_floor = 1), \ @@ -144,151 +48,150 @@ var/global/list/datum/stack_recipe/plastic_recipes = list ( \ new/datum/stack_recipe("plastic bag", /obj/item/weapon/storage/bag/plasticbag, 3, on_floor = 1), \ ) -/obj/item/stack/sheet/mineral/plastic/New(var/loc, var/amount=null) - recipes = plastic_recipes - pixel_x = rand(0,4)-4 - pixel_y = rand(0,4)-4 - ..() - -/* - * Gold - */ -/obj/item/stack/sheet/mineral/gold - name = "gold" - icon_state = "sheet-gold" +/obj/item/stack/sheet/mineral force = 5.0 throwforce = 5 w_class = 3.0 throw_speed = 3 throw_range = 3 + +/obj/item/stack/sheet/mineral/New() + ..() + pixel_x = rand(0,4)-4 + pixel_y = rand(0,4)-4 + +/obj/item/stack/sheet/mineral/sandstone + name = "sandstone brick" + desc = "This appears to be a combination of both sand and stone." + singular_name = "sandstone brick" + icon_state = "sheet-sandstone" + throw_speed = 4 + throw_range = 5 + origin_tech = "materials=1" + sheettype = "sandstone" + +/obj/item/stack/sheet/mineral/sandstone/New() + ..() + recipes = sandstone_recipes + +/obj/item/stack/sheet/mineral/diamond + name = "diamond" + icon_state = "sheet-diamond" + origin_tech = "materials=6" + perunit = 3750 + sheettype = "diamond" + + +/obj/item/stack/sheet/mineral/diamond/New() + ..() + recipes = diamond_recipes + +/obj/item/stack/sheet/mineral/uranium + name = "uranium" + icon_state = "sheet-uranium" + origin_tech = "materials=5" + perunit = 2000 + sheettype = "uranium" + +/obj/item/stack/sheet/mineral/uranium/New() + ..() + recipes = uranium_recipes + +/obj/item/stack/sheet/mineral/phoron + name = "solid phoron" + icon_state = "sheet-phoron" + origin_tech = "phorontech=2;materials=2" + perunit = 2000 + sheettype = "phoron" + +/obj/item/stack/sheet/mineral/phoron/New() + ..() + recipes = phoron_recipes + +/obj/item/stack/sheet/mineral/plastic + name = "Plastic" + icon_state = "sheet-plastic" + origin_tech = "materials=3" + perunit = 2000 + +/obj/item/stack/sheet/mineral/plastic/New() + ..() + recipes = plastic_recipes + +/obj/item/stack/sheet/mineral/plastic/cyborg + name = "plastic sheets" + icon_state = "sheet-plastic" + perunit = 2000 + +/obj/item/stack/sheet/mineral/gold + name = "gold" + icon_state = "sheet-gold" origin_tech = "materials=4" perunit = 2000 sheettype = "gold" -var/global/list/datum/stack_recipe/gold_recipes = list ( \ - new/datum/stack_recipe("golden door", /obj/structure/mineral_door/gold, 10, one_per_turf = 1, on_floor = 1), \ - ) - -/obj/item/stack/sheet/mineral/gold/New(var/loc, var/amount=null) - recipes = gold_recipes - pixel_x = rand(0,4)-4 - pixel_y = rand(0,4)-4 +/obj/item/stack/sheet/mineral/gold/New() ..() + recipes = gold_recipes -/* - * Silver - */ /obj/item/stack/sheet/mineral/silver name = "silver" icon_state = "sheet-silver" - force = 5.0 - throwforce = 5 - w_class = 3.0 - throw_speed = 3 - throw_range = 3 origin_tech = "materials=3" perunit = 2000 sheettype = "silver" -var/global/list/datum/stack_recipe/silver_recipes = list ( \ - new/datum/stack_recipe("silver door", /obj/structure/mineral_door/silver, 10, one_per_turf = 1, on_floor = 1), \ - ) - -/obj/item/stack/sheet/mineral/silver/New(var/loc, var/amount=null) +/obj/item/stack/sheet/mineral/silver/New() + ..() recipes = silver_recipes - pixel_x = rand(0,4)-4 - pixel_y = rand(0,4)-4 - ..() -/* - * Clown - */ -/obj/item/stack/sheet/mineral/clown - name = "bananium" - icon_state = "sheet-clown" - force = 5.0 - throwforce = 5 - w_class = 3.0 - throw_speed = 3 - throw_range = 3 - origin_tech = "materials=4" - perunit = 2000 - sheettype = "clown" - -/obj/item/stack/sheet/mineral/clown/New(var/loc, var/amount=null) - pixel_x = rand(0,4)-4 - pixel_y = rand(0,4)-4 - ..() - - -/****************************** Others ****************************/ - -/* - * Enriched Uranium - */ /obj/item/stack/sheet/mineral/enruranium name = "enriched uranium" icon_state = "sheet-enruranium" - force = 5.0 - throwforce = 5 - w_class = 3.0 - throw_speed = 3 - throw_range = 3 origin_tech = "materials=5" perunit = 1000 -/* - * Adamantine - */ /obj/item/stack/sheet/mineral/adamantine name = "adamantine" icon_state = "sheet-adamantine" - force = 5.0 - throwforce = 5 - w_class = 3.0 - throw_speed = 3 - throw_range = 3 origin_tech = "materials=4" perunit = 2000 -/* - * Mythril - */ /obj/item/stack/sheet/mineral/mythril name = "mythril" icon_state = "sheet-mythril" - force = 5.0 - throwforce = 5 - w_class = 3.0 - throw_speed = 3 - throw_range = 3 origin_tech = "materials=4" perunit = 2000 -/* - * TODO - */ /obj/item/stack/sheet/mineral/platinum name = "platinum" - icon_state = "sheet-diamond" //TODO + icon_state = "sheet-adamantine" sheettype = "platinum" + perunit = 2000 /obj/item/stack/sheet/mineral/mhydrogen name = "metallic hydrogen" - icon_state = "sheet-diamond" //TODO + icon_state = "sheet-mythril" sheettype = "mhydrogen" + perunit = 2000 /obj/item/stack/sheet/mineral/tritium name = "tritium" - icon_state = "sheet-diamond" //TODO + icon_state = "sheet-silver" sheettype = "tritium" + color = "#777777" + perunit = 2000 /obj/item/stack/sheet/mineral/osmium name = "osmium" - icon_state = "sheet-diamond" //TODO + icon_state = "sheet-silver" sheettype = "osmium" + color = "#9999FF" + perunit = 2000 obj/item/stack/sheet/mineral/iron name = "iron" - icon_state = "sheet-gold" + icon_state = "sheet-silver" sheettype = "iron" + color = "#333333" + perunit = 3750 diff --git a/code/game/objects/structures/crates_lockers/closets/syndicate.dm b/code/game/objects/structures/crates_lockers/closets/syndicate.dm index 6c92f3c2df..a1a3876574 100644 --- a/code/game/objects/structures/crates_lockers/closets/syndicate.dm +++ b/code/game/objects/structures/crates_lockers/closets/syndicate.dm @@ -124,7 +124,6 @@ /obj/item/stack/sheet/mineral/phoron, /obj/item/stack/sheet/mineral/uranium, /obj/item/stack/sheet/mineral/diamond, - /obj/item/stack/sheet/mineral/clown, /obj/item/stack/sheet/plasteel, /obj/item/stack/rods ) diff --git a/code/game/objects/structures/false_walls.dm b/code/game/objects/structures/false_walls.dm index 0d496b47cd..014ecae9ac 100644 --- a/code/game/objects/structures/false_walls.dm +++ b/code/game/objects/structures/false_walls.dm @@ -326,13 +326,6 @@ icon_state = "" mineral = "phoron" -//-----------wtf?-----------start -/obj/structure/falsewall/clown - name = "bananium wall" - desc = "A wall with bananium plating. Honk!" - icon_state = "" - mineral = "clown" - /obj/structure/falsewall/sandstone name = "sandstone wall" desc = "A wall with sandstone plating." diff --git a/code/game/turfs/simulated/walls_mineral.dm b/code/game/turfs/simulated/walls_mineral.dm index 2d08a1dd65..b600b11dcd 100644 --- a/code/game/turfs/simulated/walls_mineral.dm +++ b/code/game/turfs/simulated/walls_mineral.dm @@ -30,13 +30,6 @@ walltype = "diamond" mineral = "diamond" -/turf/simulated/wall/mineral/clown - name = "bananium wall" - desc = "A wall with bananium plating. Honk!" - icon_state = "clown0" - walltype = "clown" - mineral = "clown" - /turf/simulated/wall/mineral/sandstone name = "sandstone wall" desc = "A wall with sandstone plating." diff --git a/code/modules/mining/minerals.dm b/code/modules/mining/minerals.dm index 30db226207..a5ba349d08 100644 --- a/code/modules/mining/minerals.dm +++ b/code/modules/mining/minerals.dm @@ -62,11 +62,4 @@ mineral/phoron name = "Phoron" result_amount = 5 spread_chance = 25 - ore = /obj/item/weapon/ore/phoron - -mineral/clown - display_name = "Bananium" - name = "Clown" - result_amount = 3 - spread = 0 - ore = /obj/item/weapon/ore/slag \ No newline at end of file + ore = /obj/item/weapon/ore/phoron \ No newline at end of file diff --git a/code/modules/mining/mint.dm b/code/modules/mining/mint.dm index 8d06c87ef0..936c122e05 100644 --- a/code/modules/mining/mint.dm +++ b/code/modules/mining/mint.dm @@ -61,13 +61,6 @@ if (istype(O,/obj/item/stack/sheet/metal)) amt_iron += 100 * O.amount del(O) - if (istype(O,/obj/item/stack/sheet/mineral/clown)) - amt_clown += 100 * O.amount - del(O) - if (istype(O,/obj/item/stack/sheet/mineral/adamantine)) - amt_adamantine += 100 * O.amount - del(O) //Commented out for now. -Durandan - /obj/machinery/mineral/mint/attack_hand(user as mob) //TODO: Adamantine coins! -Durandan @@ -110,12 +103,6 @@ dat += text("chosen") else dat += text("Choose") - if(amt_clown > 0) - dat += text("
Bananium inserted: [amt_clown] ") - if (chosen == "clown") - dat += text("chosen") - else - dat += text("Choose") dat += text("
Adamantine inserted: [amt_adamantine] ")//I don't even know these color codes, so fuck it. if (chosen == "adamantine") dat += text("chosen") diff --git a/code/modules/mining/money_bag.dm b/code/modules/mining/money_bag.dm index 0635c261bf..18c42d93db 100644 --- a/code/modules/mining/money_bag.dm +++ b/code/modules/mining/money_bag.dm @@ -50,8 +50,6 @@ dat += text("Phoron coins: [amt_phoron] Remove one
") if (amt_uranium) dat += text("Uranium coins: [amt_uranium] Remove one
") - if (amt_clown) - dat += text("Bananium coins: [amt_clown] Remove one
") if (amt_adamantine) dat += text("Adamantine coins: [amt_adamantine] Remove one
") user << browse("[dat]", "window=moneybag") diff --git a/code/modules/mining/ore_datum.dm b/code/modules/mining/ore_datum.dm index d05b5fcb16..56b8d0ad20 100644 --- a/code/modules/mining/ore_datum.dm +++ b/code/modules/mining/ore_datum.dm @@ -36,7 +36,7 @@ oretag = "gold" /datum/ore/diamond - smelts_to = /obj/item/stack/sheet/mineral/diamond + compresses_to = /obj/item/stack/sheet/mineral/diamond oretag = "diamond" /datum/ore/osmium diff --git a/code/modules/mining/satchel_ore_boxdm.dm b/code/modules/mining/satchel_ore_boxdm.dm index f02b179718..968faa2c41 100644 --- a/code/modules/mining/satchel_ore_boxdm.dm +++ b/code/modules/mining/satchel_ore_boxdm.dm @@ -73,8 +73,6 @@ dat += text("
Diamond ore: [amt_diamond]") if (amt_strange) dat += text("
Strange rocks: [amt_strange]") - if (amt_clown) - dat += text("
Bananium ore: [amt_clown]") usr << dat diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index 87fb193bed..c35ec24839 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -867,7 +867,6 @@ //Sheets /obj/item/stack/sheet/mineral/phoron = list("phoron" = 20), /obj/item/stack/sheet/mineral/uranium = list("uranium" = 20), - /obj/item/stack/sheet/mineral/clown = list("banana" = 20), /obj/item/stack/sheet/mineral/silver = list("silver" = 20), /obj/item/stack/sheet/mineral/gold = list("gold" = 20), /obj/item/weapon/grown/nettle = list("sacid" = 0), diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index 0ce3f5b011..b33f240214 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -16,7 +16,6 @@ The currently supporting non-reagent materials: - $gold (/obj/item/stack/gold). One sheet = 3750 units. - $uranium (/obj/item/stack/uranium). One sheet = 3750 units. - $diamond (/obj/item/stack/diamond). One sheet = 3750 units. -- $clown (/obj/item/stack/clown). One sheet = 3750 units. ("Bananium") (Insert new ones here) Don't add new keyword/IDs if they are made from an existing one (such as rods which are made from metal). Only add raw materials. diff --git a/code/modules/research/protolathe.dm b/code/modules/research/protolathe.dm index 71845ad6ff..ff104b871a 100644 --- a/code/modules/research/protolathe.dm +++ b/code/modules/research/protolathe.dm @@ -102,9 +102,6 @@ Note: Must be placed west/left of and R&D console to function. if(diamond_amount >= 2000) var/obj/item/stack/sheet/mineral/diamond/G = new /obj/item/stack/sheet/mineral/diamond(src.loc) G.amount = round(diamond_amount / G.perunit) - if(clown_amount >= 2000) - var/obj/item/stack/sheet/mineral/clown/G = new /obj/item/stack/sheet/mineral/clown(src.loc) - G.amount = round(clown_amount / G.perunit) if(adamantine_amount >= 2000) var/obj/item/stack/sheet/mineral/adamantine/G = new /obj/item/stack/sheet/mineral/adamantine(src.loc) G.amount = round(adamantine_amount / G.perunit) @@ -172,8 +169,6 @@ Note: Must be placed west/left of and R&D console to function. uranium_amount += amount * 2000 if(/obj/item/stack/sheet/mineral/diamond) diamond_amount += amount * 2000 - if(/obj/item/stack/sheet/mineral/clown) - clown_amount += amount * 2000 if(/obj/item/stack/sheet/mineral/adamantine) adamantine_amount += amount * 2000 else diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index e72c971891..6dc2ea249e 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -84,8 +84,6 @@ won't update every console in existence) but it's more of a hassle to do. Also, return_name = "Uranium" if("diamond") return_name = "Diamond" - if("clown") - return_name = "Bananium" else for(var/R in typesof(/datum/reagent) - /datum/reagent) temp_reagent = null @@ -163,7 +161,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, else //The construction/deconstruction of the console code. ..() - + src.updateUsrDialog() return @@ -456,9 +454,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, if("diamond") type = /obj/item/stack/sheet/mineral/diamond res_amount = "diamond_amount" - if("clown") - type = /obj/item/stack/sheet/mineral/clown - res_amount = "clown_amount" + if(ispath(type) && hasvar(linked_lathe, res_amount)) var/obj/item/stack/sheet/sheet = new type(linked_lathe.loc) var/available_num_sheets = round(linked_lathe.vars[res_amount]/sheet.perunit) @@ -785,12 +781,6 @@ won't update every console in existence) but it's more of a hassle to do. Also, if(linked_lathe.diamond_amount >= 10000) dat += "(5 Sheets) " if(linked_lathe.diamond_amount >= 2000) dat += "(Max Sheets)" dat += "
" - //Bananium - dat += "* [linked_lathe.clown_amount] cm3 of Bananium || " - dat += "Eject: " - if(linked_lathe.clown_amount >= 2000) dat += "(1 Sheet) " - if(linked_lathe.clown_amount >= 10000) dat += "(5 Sheets) " - if(linked_lathe.clown_amount >= 2000) dat += "(Max Sheets)" if(3.3) //Protolathe Chemical Storage Submenu dat += "Main Menu || " diff --git a/code/unused/mining/datum_processing_recipe.dm b/code/unused/mining/datum_processing_recipe.dm index 3d6b9ca903..656e38f0ad 100644 --- a/code/unused/mining/datum_processing_recipe.dm +++ b/code/unused/mining/datum_processing_recipe.dm @@ -19,5 +19,4 @@ var/list/datum/material_recipe/MATERIAL_RECIPES = list( new/datum/material_recipe("Silver",list(/obj/item/weapon/ore/silver),/obj/item/stack/sheet/mineral/silver), new/datum/material_recipe("Diamond",list(/obj/item/weapon/ore/diamond),/obj/item/stack/sheet/mineral/diamond), new/datum/material_recipe("Phoron",list(/obj/item/weapon/ore/phoron),/obj/item/stack/sheet/mineral/phoron), - new/datum/material_recipe("Bananium",list(/obj/item/weapon/ore/clown),/obj/item/stack/sheet/mineral/clown), ) \ No newline at end of file diff --git a/code/unused/mining/machine_craftlathe_unused.dm b/code/unused/mining/machine_craftlathe_unused.dm index dc4ca5b3af..ce866482a5 100644 --- a/code/unused/mining/machine_craftlathe_unused.dm +++ b/code/unused/mining/machine_craftlathe_unused.dm @@ -176,7 +176,6 @@ proc/check_craftlathe_recipe(var/list/param_recipe) CRAFT_ITEMS += new/datum/craftlathe_item("DIAMOND","Diamond",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/mineral/diamond) CRAFT_ITEMS += new/datum/craftlathe_item("PLASMA","Plasma",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/mineral/plasma) CRAFT_ITEMS += new/datum/craftlathe_item("URANIUM","Uranium",1,1,list("","","","","","","","",""),/obj/item/weapon/ore/mineral/uranium) - CRAFT_ITEMS += new/datum/craftlathe_item("CLOWN","Bananium",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/mineral/clown) CRAFT_ITEMS += new/datum/craftlathe_item("ADMAMANTINE","Adamantine",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/mineral/adamantine) CRAFT_ITEMS += new/datum/craftlathe_item("SCREWS","Screws",9,9,list("","","","","METAL","","","METAL","")) CRAFT_ITEMS += new/datum/craftlathe_item("COGS","Cogs",9,9,list("","METAL","","METAL","METAL","METAL","","METAL","")) From 78918e47953b2ecca830d7fe1acbaf47f573f2d5 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sun, 8 Jun 2014 00:52:20 +0930 Subject: [PATCH 5/6] Entirely removed the Honker mech, other refs to bananium, adamantine and mythril. --- baystation12.dme | 1 - .../Cael_Aislinn/Jungle/jungle_temple.dm | 3 - code/game/machinery/doors/airlock.dm | 15 +- code/game/mecha/combat/honker.dm | 164 ------------------ code/game/mecha/equipment/tools/tools.dm | 10 +- code/game/mecha/mecha_construction_paths.dm | 79 --------- code/game/mecha/mecha_wreckage.dm | 21 --- .../objects/items/stacks/sheets/mineral.dm | 14 -- code/modules/mining/coins.dm | 12 -- code/modules/mining/drilling/distribution.dm | 4 +- code/modules/mining/mine_turfs.dm | 2 +- code/modules/mining/mint.dm | 48 +---- code/modules/mining/money_bag.dm | 15 +- code/modules/research/protolathe.dm | 10 +- code/modules/research/rdconsole.dm | 4 - .../research/xenoarchaeology/finds/finds.dm | 1 - .../mining/machine_craftlathe_unused.dm | 1 - code/unused/mining/machine_purifier_unused.dm | 3 - maps/tgstation2.dmm | 8 +- 19 files changed, 18 insertions(+), 397 deletions(-) delete mode 100644 code/game/mecha/combat/honker.dm diff --git a/baystation12.dme b/baystation12.dme index ade2cc5136..f052c8da28 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -414,7 +414,6 @@ #include "code\game\mecha\combat\combat.dm" #include "code\game\mecha\combat\durand.dm" #include "code\game\mecha\combat\gygax.dm" -#include "code\game\mecha\combat\honker.dm" #include "code\game\mecha\combat\marauder.dm" #include "code\game\mecha\combat\phazon.dm" #include "code\game\mecha\equipment\mecha_equipment.dm" diff --git a/code/WorkInProgress/Cael_Aislinn/Jungle/jungle_temple.dm b/code/WorkInProgress/Cael_Aislinn/Jungle/jungle_temple.dm index 7408663f44..659939e922 100644 --- a/code/WorkInProgress/Cael_Aislinn/Jungle/jungle_temple.dm +++ b/code/WorkInProgress/Cael_Aislinn/Jungle/jungle_temple.dm @@ -86,9 +86,6 @@ for(var/coin_type in typesof(/obj/item/weapon/coin)) possible_spawns += coin_type - //no icon_state for mythril coins - possible_spawns -= /obj/item/weapon/coin/mythril - var/coin_type = pick(possible_spawns) for(var/i=0,i wire color are { 9, 4, 6, 7, 5, 8, 1, 2, 3 }. new/obj/structure/door_assembly( src.loc ) del (src) -/obj/machinery/door/airlock/clown - name = "Bananium Airlock" - icon = 'icons/obj/doors/Doorbananium.dmi' - mineral = "clown" - /obj/machinery/door/airlock/sandstone name = "Sandstone Airlock" icon = 'icons/obj/doors/Doorsand.dmi' @@ -1275,8 +1270,6 @@ About the new airlock wires panel: use_power(50) if(istype(src, /obj/machinery/door/airlock/glass)) playsound(src.loc, 'sound/machines/windowdoor.ogg', 100, 1) - if(istype(src, /obj/machinery/door/airlock/clown)) - playsound(src.loc, 'sound/items/bikehorn.ogg', 30, 1) else playsound(src.loc, 'sound/machines/airlock.ogg', 30, 1) if(src.closeOther != null && istype(src.closeOther, /obj/machinery/door/airlock/) && !src.closeOther.density) @@ -1319,8 +1312,6 @@ About the new airlock wires panel: use_power(50) if(istype(src, /obj/machinery/door/airlock/glass)) playsound(src.loc, 'sound/machines/windowdoor.ogg', 30, 1) - if(istype(src, /obj/machinery/door/airlock/clown)) - playsound(src.loc, 'sound/items/bikehorn.ogg', 30, 1) else playsound(src.loc, 'sound/machines/airlock.ogg', 30, 1) for(var/turf/turf in locs) @@ -1332,7 +1323,7 @@ About the new airlock wires panel: /obj/machinery/door/airlock/New() ..() - + //wires if (!secured_wires) airlockWireColorToFlag = globalAirlockWireColorToFlag @@ -1341,14 +1332,14 @@ About the new airlock wires panel: airlockWireColorToIndex = globalAirlockWireColorToIndex else randomize_wires() - + if(src.closeOtherId != null) spawn (5) for (var/obj/machinery/door/airlock/A in world) if(A.closeOtherId == src.closeOtherId && A != src) src.closeOther = A break - + /obj/machinery/door/airlock/proc/randomize_wires() var/wire_assignments = CreateRandomAirlockWires() airlockWireColorToFlag = wire_assignments[1] diff --git a/code/game/mecha/combat/honker.dm b/code/game/mecha/combat/honker.dm deleted file mode 100644 index 45159458a9..0000000000 --- a/code/game/mecha/combat/honker.dm +++ /dev/null @@ -1,164 +0,0 @@ -/obj/mecha/combat/honker - desc = "Produced by \"Tyranny of Honk, INC\", this exosuit is designed as heavy clown-support. Used to spread the fun and joy of life. HONK!" - name = "H.O.N.K" - icon_state = "honker" - initial_icon = "honker" - step_in = 2 - health = 140 - deflect_chance = 60 - internal_damage_threshold = 60 - damage_absorption = list("brute"=1.2,"fire"=1.5,"bullet"=1,"laser"=1,"energy"=1,"bomb"=1) - max_temperature = 25000 - infra_luminosity = 5 - operation_req_access = list(access_clown) - wreckage = /obj/effect/decal/mecha_wreckage/honker - add_req_access = 0 - max_equip = 3 - var/squeak = 0 - -/* -/obj/mecha/combat/honker/New() - ..() - - weapons += new /datum/mecha_weapon/honker(src) - weapons += new /datum/mecha_weapon/missile_rack/banana_mortar(src) - weapons += new /datum/mecha_weapon/missile_rack/banana_mortar/mousetrap_mortar(src) - selected_weapon = weapons[1] - return -*/ - - -/obj/mecha/combat/honker/melee_action(target) - if(!melee_can_hit) - return - else if(istype(target, /mob)) - step_away(target,src,15) - return - -/obj/mecha/combat/honker/get_stats_part() - var/integrity = health/initial(health)*100 - var/cell_charge = get_charge() - var/tank_pressure = internal_tank ? round(internal_tank.return_pressure(),0.01) : "None" - var/tank_temperature = internal_tank ? internal_tank.return_temperature() : "Unknown" - var/cabin_pressure = round(return_pressure(),0.01) - var/output = {"[report_internal_damage()] - [integrity<30?"DAMAGE LEVEL CRITICAL
":null] - [internal_damage&MECHA_INT_TEMP_CONTROL?"CLOWN SUPPORT SYSTEM MALFUNCTION
":null] - [internal_damage&MECHA_INT_TANK_BREACH?"GAS TANK HONK
":null] - [internal_damage&MECHA_INT_CONTROL_LOST?"HONK-A-DOODLE - Recalibrate
":null] - IntegriHONK: [integrity]%
- PowerHONK charge: [isnull(cell_charge)?"No powercell installed":"[cell.percent()]%"]
- Air source: [use_internal_tank?"Internal Airtank":"Environment"]
- AirHONK pressure: [tank_pressure]kPa
- AirHONK temperature: [tank_temperature]°K|[tank_temperature - T0C]°C
- HONK pressure: [cabin_pressure>WARNING_HIGH_PRESSURE ? "[cabin_pressure]": cabin_pressure]kPa
- HONK temperature: [return_temperature()]°K|[return_temperature() - T0C]°C
- Lights: [lights?"on":"off"]
- [src.dna?"DNA-locked:
[src.dna] \[Reset\]
":null] - "} - return output - -/obj/mecha/combat/honker/get_stats_html() - var/output = {" - [src.name] data - - - - -
- [src.get_stats_part()] -
-
- [src.get_equipment_list()] -
-
-
- [src.get_commands()] -
- - - "} - return output - -/obj/mecha/combat/honker/get_commands() - var/output = {"
-
Sounds of HONK:
- -
- "} - output += ..() - return output - - -/obj/mecha/combat/honker/get_equipment_list() - if(!equipment.len) - return - var/output = "Honk-ON-Systems:
" - for(var/obj/item/mecha_parts/mecha_equipment/MT in equipment) - output += "[selected==MT?"":""][MT.get_equip_info()][selected==MT?"":""]
" - output += "
" - return output - - - -/obj/mecha/combat/honker/mechstep(direction) - var/result = step(src,direction) - if(result) - if(!squeak) - playsound(src, "clownstep", 70, 1) - squeak = 1 - else - squeak = 0 - return result - -obj/mecha/combat/honker/Topic(href, href_list) - ..() - if (href_list["play_sound"]) - switch(href_list["play_sound"]) - if("sadtrombone") - playsound(src, 'sound/misc/sadtrombone.ogg', 50) - return - -proc/rand_hex_color() - var/list/colors = list("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f") - var/color="" - for (var/i=0;i<6;i++) - color = color+pick(colors) - return color - - diff --git a/code/game/mecha/equipment/tools/tools.dm b/code/game/mecha/equipment/tools/tools.dm index 9b5a691467..08cc9a65d0 100644 --- a/code/game/mecha/equipment/tools/tools.dm +++ b/code/game/mecha/equipment/tools/tools.dm @@ -518,9 +518,8 @@ can_attach(obj/mecha/M as obj) if(..()) - if(!istype(M, /obj/mecha/combat/honker)) - if(!M.proc_res["dynattackby"]) - return 1 + if(!M.proc_res["dynattackby"]) + return 1 return 0 attach(obj/mecha/M as obj) @@ -569,9 +568,8 @@ can_attach(obj/mecha/M as obj) if(..()) - if(!istype(M, /obj/mecha/combat/honker)) - if(!M.proc_res["dynbulletdamage"] && !M.proc_res["dynhitby"]) - return 1 + if(!M.proc_res["dynbulletdamage"] && !M.proc_res["dynhitby"]) + return 1 return 0 attach(obj/mecha/M as obj) diff --git a/code/game/mecha/mecha_construction_paths.dm b/code/game/mecha/mecha_construction_paths.dm index 1063c91015..c80eb656cb 100644 --- a/code/game/mecha/mecha_construction_paths.dm +++ b/code/game/mecha/mecha_construction_paths.dm @@ -783,85 +783,6 @@ feedback_inc("mecha_firefighter_created",1) return - - -/datum/construction/mecha/honker_chassis - steps = list(list("key"=/obj/item/mecha_parts/part/honker_torso),//1 - list("key"=/obj/item/mecha_parts/part/honker_left_arm),//2 - list("key"=/obj/item/mecha_parts/part/honker_right_arm),//3 - list("key"=/obj/item/mecha_parts/part/honker_left_leg),//4 - list("key"=/obj/item/mecha_parts/part/honker_right_leg),//5 - list("key"=/obj/item/mecha_parts/part/honker_head) - ) - - action(atom/used_atom,mob/user as mob) - return check_all_steps(used_atom,user) - - custom_action(step, atom/used_atom, mob/user) - user.visible_message("[user] has connected [used_atom] to [holder].", "You connect [used_atom] to [holder]") - holder.overlays += used_atom.icon_state+"+o" - del used_atom - return 1 - - spawn_result() - var/obj/item/mecha_parts/chassis/const_holder = holder - const_holder.construct = new /datum/construction/mecha/honker(const_holder) - const_holder.density = 1 - spawn() - del src - return - - -/datum/construction/mecha/honker - result = "/obj/mecha/combat/honker" - steps = list(list("key"=/obj/item/weapon/bikehorn),//1 - list("key"=/obj/item/clothing/shoes/clown_shoes),//2 - list("key"=/obj/item/weapon/bikehorn),//3 - list("key"=/obj/item/clothing/mask/gas/clown_hat),//4 - list("key"=/obj/item/weapon/bikehorn),//5 - list("key"=/obj/item/weapon/circuitboard/mecha/honker/targeting),//6 - list("key"=/obj/item/weapon/bikehorn),//7 - list("key"=/obj/item/weapon/circuitboard/mecha/honker/peripherals),//8 - list("key"=/obj/item/weapon/bikehorn),//9 - list("key"=/obj/item/weapon/circuitboard/mecha/honker/main),//10 - list("key"=/obj/item/weapon/bikehorn),//11 - ) - - action(atom/used_atom,mob/user as mob) - return check_step(used_atom,user) - - custom_action(step, atom/used_atom, mob/user) - if(!..()) - return 0 - - if(istype(used_atom, /obj/item/weapon/bikehorn)) - playsound(holder, 'sound/items/bikehorn.ogg', 50, 1) - user.visible_message("HONK!") - - //TODO: better messages. - switch(step) - if(10) - user.visible_message("[user] installs the central control module into [holder].", "You install the central control module into [holder].") - del used_atom - if(8) - user.visible_message("[user] installs the peripherals control module into [holder].", "You install the peripherals control module into [holder].") - del used_atom - if(6) - user.visible_message("[user] installs the weapon control module into [holder].", "You install the weapon control module into [holder].") - del used_atom - if(4) - user.visible_message("[user] puts clown wig and mask on [holder].", "You put clown wig and mask on [holder].") - del used_atom - if(2) - user.visible_message("[user] puts clown boots on [holder].", "You put clown boots on [holder].") - del used_atom - return 1 - - spawn_result() - ..() - feedback_inc("mecha_honker_created",1) - return - /datum/construction/mecha/durand_chassis steps = list(list("key"=/obj/item/mecha_parts/part/durand_torso),//1 list("key"=/obj/item/mecha_parts/part/durand_left_arm),//2 diff --git a/code/game/mecha/mecha_wreckage.dm b/code/game/mecha/mecha_wreckage.dm index 539e1de243..9ef33ea8f8 100644 --- a/code/game/mecha/mecha_wreckage.dm +++ b/code/game/mecha/mecha_wreckage.dm @@ -153,27 +153,6 @@ name = "Death-Ripley wreckage" icon_state = "deathripley-broken" -/obj/effect/decal/mecha_wreckage/honker - name = "Honker wreckage" - icon_state = "honker-broken" - - New() - ..() - var/list/parts = list( - /obj/item/mecha_parts/chassis/honker, - /obj/item/mecha_parts/part/honker_torso, - /obj/item/mecha_parts/part/honker_head, - /obj/item/mecha_parts/part/honker_left_arm, - /obj/item/mecha_parts/part/honker_right_arm, - /obj/item/mecha_parts/part/honker_left_leg, - /obj/item/mecha_parts/part/honker_right_leg) - for(var/i=0;i<2;i++) - if(!isemptylist(parts) && prob(40)) - var/part = pick(parts) - welder_salvage += part - parts -= part - return - /obj/effect/decal/mecha_wreckage/durand name = "Durand wreckage" icon_state = "durand-broken" diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm index 64722065b3..341ee6127f 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -9,8 +9,6 @@ Mineral Sheets - Silver - Clown Others: - - Adamantine - - Mythril - Enriched Uranium */ @@ -151,18 +149,6 @@ var/global/list/datum/stack_recipe/plastic_recipes = list ( \ origin_tech = "materials=5" perunit = 1000 -/obj/item/stack/sheet/mineral/adamantine - name = "adamantine" - icon_state = "sheet-adamantine" - origin_tech = "materials=4" - perunit = 2000 - -/obj/item/stack/sheet/mineral/mythril - name = "mythril" - icon_state = "sheet-mythril" - origin_tech = "materials=4" - perunit = 2000 - /obj/item/stack/sheet/mineral/platinum name = "platinum" icon_state = "sheet-adamantine" diff --git a/code/modules/mining/coins.dm b/code/modules/mining/coins.dm index 8fd0aa8793..a97108a977 100644 --- a/code/modules/mining/coins.dm +++ b/code/modules/mining/coins.dm @@ -39,18 +39,6 @@ name = "uranium coin" icon_state = "coin_uranium" -/obj/item/weapon/coin/clown - name = "bananaium coin" - icon_state = "coin_clown" - -/obj/item/weapon/coin/adamantine - name = "adamantine coin" - icon_state = "coin_adamantine" - -/obj/item/weapon/coin/mythril - name = "mythril coin" - icon_state = "coin_mythril" - /obj/item/weapon/coin/attackby(obj/item/weapon/W as obj, mob/user as mob) if(istype(W,/obj/item/weapon/cable_coil) ) var/obj/item/weapon/cable_coil/CC = W diff --git a/code/modules/mining/drilling/distribution.dm b/code/modules/mining/drilling/distribution.dm index 7d09c902ec..1fbedca59a 100644 --- a/code/modules/mining/drilling/distribution.dm +++ b/code/modules/mining/drilling/distribution.dm @@ -38,8 +38,8 @@ Rare minerals: Deep minerals: phoron - xerxium (adamantine) - fulgurium (mythril) + osmium (platinum) + tritium (hydrogen) */ /datum/ore_distribution diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index 4c1d4150a0..e359196946 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -359,7 +359,7 @@ var/list/artifact_spawn = list() // Runtime fix for geometry loading before cont /turf/simulated/mineral/random name = "Mineral deposit" - var/mineralSpawnChanceList = list("Uranium" = 5, "Iron" = 50, "Diamond" = 1, "Gold" = 5, "Silver" = 5, "Phoron" = 25)//Currently, Adamantine won't spawn as it has no uses. -Durandan + var/mineralSpawnChanceList = list("Uranium" = 5, "Iron" = 50, "Diamond" = 1, "Gold" = 5, "Silver" = 5, "Phoron" = 25) var/mineralChance = 10 //means 10% chance of this plot changing to a mineral deposit New() diff --git a/code/modules/mining/mint.dm b/code/modules/mining/mint.dm index 936c122e05..d17b4aa094 100644 --- a/code/modules/mining/mint.dm +++ b/code/modules/mining/mint.dm @@ -15,9 +15,6 @@ var/amt_iron = 0 var/amt_phoron = 0 var/amt_uranium = 0 - var/amt_clown = 0 - var/amt_adamantine = 0 - var/amt_mythril = 0 var/newCoins = 0 //how many coins the machine made in it's last load var/processing = 0 var/chosen = "metal" //which material will be used to make coins @@ -62,7 +59,7 @@ amt_iron += 100 * O.amount del(O) -/obj/machinery/mineral/mint/attack_hand(user as mob) //TODO: Adamantine coins! -Durandan +/obj/machinery/mineral/mint/attack_hand(user as mob) var/dat = "Coin Press
" @@ -98,16 +95,11 @@ dat += text("chosen") else dat += text("Choose") - dat += text("
uranium inserted: [amt_uranium] ") + dat += text("
Uranium inserted: [amt_uranium] ") if (chosen == "uranium") dat += text("chosen") else dat += text("Choose") - dat += text("
Adamantine inserted: [amt_adamantine] ")//I don't even know these color codes, so fuck it. - if (chosen == "adamantine") - dat += text("chosen") - else - dat += text("Choose") dat += text("

Will produce [coinsToProduce] [chosen] coins if enough materials are available.
") //dat += text("The dial which controls the number of conins to produce seems to be stuck. A technician has already been dispatched to fix this.") @@ -213,42 +205,6 @@ newCoins++ src.updateUsrDialog() sleep(5) - if("clown") - while(amt_clown > 0 && coinsToProduce > 0) - if (locate(/obj/item/weapon/moneybag,output.loc)) - M = locate(/obj/item/weapon/moneybag,output.loc) - else - M = new/obj/item/weapon/moneybag(output.loc) - new /obj/item/weapon/coin/clown(M) - amt_clown -= 20 - coinsToProduce-- - newCoins++ - src.updateUsrDialog() - sleep(5); - if("adamantine") - while(amt_adamantine > 0 && coinsToProduce > 0) - if (locate(/obj/item/weapon/moneybag,output.loc)) - M = locate(/obj/item/weapon/moneybag,output.loc) - else - M = new/obj/item/weapon/moneybag(output.loc) - new /obj/item/weapon/coin/adamantine(M) - amt_adamantine -= 20 - coinsToProduce-- - newCoins++ - src.updateUsrDialog() - sleep(5); - if("mythril") - while(amt_adamantine > 0 && coinsToProduce > 0) - if (locate(/obj/item/weapon/moneybag,output.loc)) - M = locate(/obj/item/weapon/moneybag,output.loc) - else - M = new/obj/item/weapon/moneybag(output.loc) - new /obj/item/weapon/coin/mythril(M) - amt_mythril -= 20 - coinsToProduce-- - newCoins++ - src.updateUsrDialog() - sleep(5); icon_state = "coinpress0" processing = 0; coinsToProduce = temp_coins diff --git a/code/modules/mining/money_bag.dm b/code/modules/mining/money_bag.dm index 18c42d93db..05d2caa9a2 100644 --- a/code/modules/mining/money_bag.dm +++ b/code/modules/mining/money_bag.dm @@ -16,8 +16,6 @@ var/amt_iron = 0 var/amt_phoron = 0 var/amt_uranium = 0 - var/amt_clown = 0 - var/amt_adamantine = 0 for (var/obj/item/weapon/coin/C in contents) if (istype(C,/obj/item/weapon/coin/diamond)) @@ -32,10 +30,6 @@ amt_gold++; if (istype(C,/obj/item/weapon/coin/uranium)) amt_uranium++; - if (istype(C,/obj/item/weapon/coin/clown)) - amt_clown++; - if (istype(C,/obj/item/weapon/coin/adamantine)) - amt_adamantine++; var/dat = text("The contents of the moneybag reveal...
") if (amt_gold) @@ -50,8 +44,6 @@ dat += text("Phoron coins: [amt_phoron] Remove one
") if (amt_uranium) dat += text("Uranium coins: [amt_uranium] Remove one
") - if (amt_adamantine) - dat += text("Adamantine coins: [amt_adamantine] Remove one
") user << browse("[dat]", "window=moneybag") /obj/item/weapon/moneybag/attackby(obj/item/weapon/W as obj, mob/user as mob) @@ -88,10 +80,6 @@ COIN = locate(/obj/item/weapon/coin/phoron,src.contents) if("uranium") COIN = locate(/obj/item/weapon/coin/uranium,src.contents) - if("clown") - COIN = locate(/obj/item/weapon/coin/clown,src.contents) - if("adamantine") - COIN = locate(/obj/item/weapon/coin/adamantine,src.contents) if(!COIN) return COIN.loc = src.loc @@ -108,5 +96,4 @@ new /obj/item/weapon/coin/silver(src) new /obj/item/weapon/coin/silver(src) new /obj/item/weapon/coin/gold(src) - new /obj/item/weapon/coin/gold(src) - new /obj/item/weapon/coin/adamantine(src) \ No newline at end of file + new /obj/item/weapon/coin/gold(src) \ No newline at end of file diff --git a/code/modules/research/protolathe.dm b/code/modules/research/protolathe.dm index ff104b871a..dae9b942ff 100644 --- a/code/modules/research/protolathe.dm +++ b/code/modules/research/protolathe.dm @@ -20,9 +20,6 @@ Note: Must be placed west/left of and R&D console to function. var/phoron_amount = 0.0 var/uranium_amount = 0.0 var/diamond_amount = 0.0 - var/clown_amount = 0.0 - var/adamantine_amount = 0.0 - /obj/machinery/r_n_d/protolathe/New() ..() @@ -37,7 +34,7 @@ Note: Must be placed west/left of and R&D console to function. RefreshParts() /obj/machinery/r_n_d/protolathe/proc/TotalMaterials() //returns the total of all the stored materials. Makes code neater. - return m_amount + g_amount + gold_amount + silver_amount + phoron_amount + uranium_amount + diamond_amount + clown_amount + return m_amount + g_amount + gold_amount + silver_amount + phoron_amount + uranium_amount + diamond_amount /obj/machinery/r_n_d/protolathe/RefreshParts() var/T = 0 @@ -102,9 +99,6 @@ Note: Must be placed west/left of and R&D console to function. if(diamond_amount >= 2000) var/obj/item/stack/sheet/mineral/diamond/G = new /obj/item/stack/sheet/mineral/diamond(src.loc) G.amount = round(diamond_amount / G.perunit) - if(adamantine_amount >= 2000) - var/obj/item/stack/sheet/mineral/adamantine/G = new /obj/item/stack/sheet/mineral/adamantine(src.loc) - G.amount = round(adamantine_amount / G.perunit) del(src) return 1 else @@ -169,8 +163,6 @@ Note: Must be placed west/left of and R&D console to function. uranium_amount += amount * 2000 if(/obj/item/stack/sheet/mineral/diamond) diamond_amount += amount * 2000 - if(/obj/item/stack/sheet/mineral/adamantine) - adamantine_amount += amount * 2000 else new stacktype(src.loc, amount) busy = 0 diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index 6dc2ea249e..f32fbc33a1 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -359,8 +359,6 @@ won't update every console in existence) but it's more of a hassle to do. Also, linked_lathe.uranium_amount = max(0, (linked_lathe.uranium_amount-being_built.materials[M])) if("$diamond") linked_lathe.diamond_amount = max(0, (linked_lathe.diamond_amount-being_built.materials[M])) - if("$clown") - linked_lathe.clown_amount = max(0, (linked_lathe.clown_amount-being_built.materials[M])) else linked_lathe.reagents.remove_reagent(M, being_built.materials[M]) @@ -719,8 +717,6 @@ won't update every console in existence) but it's more of a hassle to do. Also, if(D.materials[M] > linked_lathe.uranium_amount) check_materials = 0 if("$diamond") if(D.materials[M] > linked_lathe.diamond_amount) check_materials = 0 - if("$clown") - if(D.materials[M] > linked_lathe.clown_amount) check_materials = 0 else if (!linked_lathe.reagents.has_reagent(M, D.materials[M])) check_materials = 0 if (check_materials) diff --git a/code/modules/research/xenoarchaeology/finds/finds.dm b/code/modules/research/xenoarchaeology/finds/finds.dm index 5fdc25134a..1d77a68f0f 100644 --- a/code/modules/research/xenoarchaeology/finds/finds.dm +++ b/code/modules/research/xenoarchaeology/finds/finds.dm @@ -225,7 +225,6 @@ possible_spawns += /obj/item/stack/sheet/glass possible_spawns += /obj/item/stack/sheet/rglass possible_spawns += /obj/item/stack/sheet/mineral/phoron - possible_spawns += /obj/item/stack/sheet/mineral/mythril possible_spawns += /obj/item/stack/sheet/mineral/gold possible_spawns += /obj/item/stack/sheet/mineral/silver possible_spawns += /obj/item/stack/sheet/mineral/enruranium diff --git a/code/unused/mining/machine_craftlathe_unused.dm b/code/unused/mining/machine_craftlathe_unused.dm index ce866482a5..0607c14632 100644 --- a/code/unused/mining/machine_craftlathe_unused.dm +++ b/code/unused/mining/machine_craftlathe_unused.dm @@ -176,7 +176,6 @@ proc/check_craftlathe_recipe(var/list/param_recipe) CRAFT_ITEMS += new/datum/craftlathe_item("DIAMOND","Diamond",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/mineral/diamond) CRAFT_ITEMS += new/datum/craftlathe_item("PLASMA","Plasma",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/mineral/plasma) CRAFT_ITEMS += new/datum/craftlathe_item("URANIUM","Uranium",1,1,list("","","","","","","","",""),/obj/item/weapon/ore/mineral/uranium) - CRAFT_ITEMS += new/datum/craftlathe_item("ADMAMANTINE","Adamantine",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/mineral/adamantine) CRAFT_ITEMS += new/datum/craftlathe_item("SCREWS","Screws",9,9,list("","","","","METAL","","","METAL","")) CRAFT_ITEMS += new/datum/craftlathe_item("COGS","Cogs",9,9,list("","METAL","","METAL","METAL","METAL","","METAL","")) CRAFT_ITEMS += new/datum/craftlathe_item("SWITCH","Switch",12,12,list("METAL","","METAL","METAL","METAL","","METAL","","")) diff --git a/code/unused/mining/machine_purifier_unused.dm b/code/unused/mining/machine_purifier_unused.dm index 1dd47a4fc3..d467dbcbd2 100644 --- a/code/unused/mining/machine_purifier_unused.dm +++ b/code/unused/mining/machine_purifier_unused.dm @@ -65,9 +65,6 @@ if (istype(O,/obj/item/weapon/ore/uranium)) new /obj/item/weapon/ore/mineral/uranium(output.loc) del(O) - /*if (istype(O,/obj/item/weapon/ore/adamantine)) - new /obj/item/weapon/ore/adamantine(output.loc) - del(O)*/ //Dunno what this area does so I'll keep it commented out for now -Durandan processed++ sleep(5); processing = 0; diff --git a/maps/tgstation2.dmm b/maps/tgstation2.dmm index 7634d1d720..9e663d9dca 100644 --- a/maps/tgstation2.dmm +++ b/maps/tgstation2.dmm @@ -8064,7 +8064,7 @@ "cZd" = (/obj/structure/closet/crate/freezer/rations,/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) "cZe" = (/obj/structure/stool/bed/roller,/obj/machinery/vending/wallmed1{layer = 3.3; name = "Emergency NanoMed"; pixel_x = 28; pixel_y = 0; req_access_txt = "0"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) "cZf" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 8},/turf/simulated/floor/plating,/area/turret_protected/tcomsat) -"cZg" = (/obj/item/weapon/coin/clown,/turf/simulated/floor/engine,/area/tcommsat/computer) +"cZg" = (/obj/structure/table/woodentable,/obj/item/clothing/glasses/monocle,/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station) "cZh" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/green,/turf/simulated/floor,/area/tcommsat/computer) "cZi" = (/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/tcommsat/computer) "cZj" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/brown,/turf/simulated/floor,/area/tcommsat/computer) @@ -8654,6 +8654,7 @@ "dkv" = (/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/structure/table/reinforced,/obj/item/weapon/wrench,/obj/item/weapon/screwdriver,/obj/item/weapon/crowbar,/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 9},/area/mine/explored) "dkw" = (/obj/machinery/mining/drill,/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/explored) "dkx" = (/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 5},/area/mine/explored) +"dky" = (/turf/simulated/floor/engine,/area/tcommsat/computer) "dqx" = (/turf/simulated/floor/plating/airless/asteroid,/area) "dqT" = (/turf/simulated/mineral,/area/mine/unexplored) "dqU" = (/turf/space,/area/syndicate_station/mining) @@ -10081,7 +10082,6 @@ "dSE" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/suit/wizrobe/magusred,/obj/item/clothing/head/wizard/magus,/obj/item/weapon/staff,/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station) "dSF" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/under/psysuit,/obj/item/clothing/suit/wizrobe/psypurple,/obj/item/clothing/head/wizard/amp,/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station) "dSG" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/shoes/sandal/marisa{desc = "A set of fancy shoes that are as functional as they are comfortable."; name = "Gentlemans Shoes"},/obj/item/clothing/under/gentlesuit,/obj/item/clothing/suit/wizrobe/gentlecoat,/obj/item/clothing/head/wizard/cap,/obj/item/weapon/staff/gentcane,/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station) -"dSH" = (/obj/structure/table/woodentable,/obj/item/weapon/coin/adamantine,/obj/item/clothing/glasses/monocle,/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station) "dSI" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/backpack/cultpack,/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station) "dSJ" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/backpack,/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station) "dSK" = (/obj/structure/table/woodentable,/obj/machinery/chem_dispenser/soda,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) @@ -11037,7 +11037,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUscUvcUvcUvcUvcUvcUvdS aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUscUFcUFcUvcUvcUvdSkcUsdSjcUIdSicUscUscUscUscUscUsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUscUvcUvcUvcUvcUvdSccUscULcULdSdcUsdSgdShdSedSfcUsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUscUMcUMcUvcUvcUvcUxcUscULcULcULdSacULcULcULdSbcUsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUScUTcUUaaacUScUTcUUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUscUvcUvcUvcUvcUvdSKcUsdSIdSHdSJcUsdSFdSGdSEdSfcUsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacVacVbcVccVccVccVdcVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUscUvcUvcUvcUvcUvdSKcUsdSIcZgdSJcUsdSFdSGdSEdSfcUsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacVacVbcVccVccVccVdcVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUscUvcUvcUvcUvcUvdSkcUscUscUscUscUscUscUscUscUscUsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUScUTcVecUTcVfcVgcWmcWlcWocVgcVkcUTcVecUTcUUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUscUvdSrdSvdSwdStcUvdSxdSzdSydSxcVzdSCdSDdSAdSBcUsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacVbcVccVccVdcVaaaacVbcVgcWicWecVJcVgcVdaaacVacVbcVccVccVdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUscUvdSrdSqdSudStcUvdSsdSsdSsdSscVXcVAcVDcVAcVDcUsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacVgcVEcVQcVgcVacVbcVgcVVcVTcVScVTcVUcVgcVdcVacVgcVRcVLcVgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11173,7 +11173,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaachcchcchcchcchcchcchcchcchcchcchcchcchcchccYVchcchcchcchcchcchcchcchcchcchcchcchcchcchcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaachcchcacTacTacTacTacTacTacTacTacTacTacTacTacTacTacTacTacTacTacTacTacTacTacTacTacTacTacTchcchcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaachcchcacTacTcYWcYWcYWcYWcYWcYWcYWcYWcYWacTacTacTacTacTacTacTacTacTcYXcYXcYXcYXcYXcYXcYXcYXacTchcchcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaachcacTacTcYWcYYcYZcZacZbdeQdbkdbjcZfcYWcYXcYXcYXcYXcYXcYXcYXcYXcZgcYXcZhcZicZjcZkcZlcZmcYXacTacTchcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaachcacTacTcYWcYYcYZcZacZbdeQdbkdbjcZfcYWcYXcYXcYXcYXcYXcYXcYXcYXdkycYXcZhcZicZjcZkcZlcZmcYXacTacTchcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaachcacTcYWcYYcYYcYYcZncZodbgcZqdbhcZscZtcYXcZmcZucZvcZwcZmcZxcYXcZycYXcZzcZmcZmcZmcZmcZmcYXacTacTchcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaachcacTcYWcYZcYYcYZcZAdbScZCcZqcZDcZEcZFcYXcZGcZmcZHcZmcZmdbRcYXcZycYXcZJcZmcZmcZmcZmcZmcYXacTacTaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaachcacTcYWcYZcYYcYZcYZdbNdbGcZMcZNcZOcZPdbBdbycZScZmcZmcZTdbucYXcZVcYXcZWdbpcZmcZYcZZdaacYXacTacTchcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From c3c6f72147de4ccbe75b45b494700d2a50e85292 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sun, 8 Jun 2014 01:39:49 +0930 Subject: [PATCH 6/6] More changes. Added uses for tritium, m.hydrogen and platinum. Increased cargo price for phoron. --- .../objects/items/stacks/sheets/mineral.dm | 39 ++++++++++++++----- .../items/stacks/sheets/sheet_types.dm | 1 - code/game/supplyshuttle.dm | 15 ++++++- code/modules/mining/coins.dm | 4 ++ code/modules/power/port_gen.dm | 2 +- 5 files changed, 47 insertions(+), 14 deletions(-) diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm index 341ee6127f..e853976cc0 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -7,9 +7,11 @@ Mineral Sheets - Phoron - Gold - Silver - - Clown - Others: - Enriched Uranium + - Platinum + - Metallic Hydrogen + - Tritium + - Osmium */ var/global/list/datum/stack_recipe/sandstone_recipes = list ( \ @@ -46,6 +48,11 @@ var/global/list/datum/stack_recipe/plastic_recipes = list ( \ new/datum/stack_recipe("plastic bag", /obj/item/weapon/storage/bag/plasticbag, 3, on_floor = 1), \ ) +var/global/list/datum/stack_recipe/iron_recipes = list ( \ + new/datum/stack_recipe("iron door", /obj/structure/mineral_door/iron, 20, one_per_turf = 1, on_floor = 1), \ + null, \ +) + /obj/item/stack/sheet/mineral force = 5.0 throwforce = 5 @@ -58,6 +65,18 @@ var/global/list/datum/stack_recipe/plastic_recipes = list ( \ pixel_x = rand(0,4)-4 pixel_y = rand(0,4)-4 +obj/item/stack/sheet/mineral/iron + name = "iron" + icon_state = "sheet-silver" + origin_tech = "materials=1" + sheettype = "iron" + color = "#333333" + perunit = 3750 + +obj/item/stack/sheet/mineral/iron/New() + ..() + recipes = iron_recipes + /obj/item/stack/sheet/mineral/sandstone name = "sandstone brick" desc = "This appears to be a combination of both sand and stone." @@ -149,22 +168,28 @@ var/global/list/datum/stack_recipe/plastic_recipes = list ( \ origin_tech = "materials=5" perunit = 1000 +//Valuable resource, cargo can sell it. /obj/item/stack/sheet/mineral/platinum name = "platinum" icon_state = "sheet-adamantine" + origin_tech = "materials=2" sheettype = "platinum" perunit = 2000 +//Extremely valuable to Research. /obj/item/stack/sheet/mineral/mhydrogen name = "metallic hydrogen" icon_state = "sheet-mythril" + origin_tech = "materials=6;powerstorage=5;magnets=5" sheettype = "mhydrogen" perunit = 2000 +//Fuel for MRSPACMAN generator. /obj/item/stack/sheet/mineral/tritium name = "tritium" icon_state = "sheet-silver" sheettype = "tritium" + origin_tech = "materials=5" color = "#777777" perunit = 2000 @@ -172,12 +197,6 @@ var/global/list/datum/stack_recipe/plastic_recipes = list ( \ name = "osmium" icon_state = "sheet-silver" sheettype = "osmium" + origin_tech = "materials=5" color = "#9999FF" - perunit = 2000 - -obj/item/stack/sheet/mineral/iron - name = "iron" - icon_state = "sheet-silver" - sheettype = "iron" - color = "#333333" - perunit = 3750 + perunit = 2000 \ No newline at end of file diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 7c48dbee0c..8bacfaa32e 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -70,7 +70,6 @@ var/global/list/datum/stack_recipe/metal_recipes = list ( \ new/datum/stack_recipe("air alarm frame", /obj/item/alarm_frame, 2), \ new/datum/stack_recipe("fire alarm frame", /obj/item/firealarm_frame, 2), \ null, \ - new/datum/stack_recipe("iron door", /obj/structure/mineral_door/iron, 20, one_per_turf = 1, on_floor = 1), \ ) /obj/item/stack/sheet/metal diff --git a/code/game/supplyshuttle.dm b/code/game/supplyshuttle.dm index 0ebc3cc6c5..d5fbb8123a 100644 --- a/code/game/supplyshuttle.dm +++ b/code/game/supplyshuttle.dm @@ -134,7 +134,8 @@ var/list/mechtoys = list( var/points_per_process = 1 var/points_per_slip = 2 var/points_per_crate = 5 - var/phoron_per_point = 2 // 2 phoron for 1 point + var/points_per_platinum = 5 // 5 points per sheet + var/points_per_phoron = 5 //control var/ordernum var/list/shoppinglist = list() @@ -213,6 +214,7 @@ var/list/mechtoys = list( if(!shuttle) return var/phoron_count = 0 + var/plat_count = 0 for(var/atom/movable/MA in shuttle) if(MA.anchored) continue @@ -238,10 +240,19 @@ var/list/mechtoys = list( if(istype(A, /obj/item/stack/sheet/mineral/phoron)) var/obj/item/stack/sheet/mineral/phoron/P = A phoron_count += P.amount + + // Sell platinum + if(istype(A, /obj/item/stack/sheet/mineral/platinum)) + var/obj/item/stack/sheet/mineral/platinum/P = A + plat_count += P.amount + del(MA) if(phoron_count) - points += Floor(phoron_count / phoron_per_point) + points += phoron_count * points_per_phoron + + if(plat_count) + points += plat_count * points_per_platinum //Buyin proc/buy() diff --git a/code/modules/mining/coins.dm b/code/modules/mining/coins.dm index a97108a977..cff2892f67 100644 --- a/code/modules/mining/coins.dm +++ b/code/modules/mining/coins.dm @@ -39,6 +39,10 @@ name = "uranium coin" icon_state = "coin_uranium" +/obj/item/weapon/coin/platinum + name = "platinum coin" + icon_state = "coin_adamantine" + /obj/item/weapon/coin/attackby(obj/item/weapon/W as obj, mob/user as mob) if(istype(W,/obj/item/weapon/cable_coil) ) var/obj/item/weapon/cable_coil/CC = W diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm index 9e911f4641..2b05440aa3 100644 --- a/code/modules/power/port_gen.dm +++ b/code/modules/power/port_gen.dm @@ -338,7 +338,7 @@ display round(lastgen) and phorontank amount /obj/machinery/power/port_gen/pacman/mrs name = "M.R.S.P.A.C.M.A.N.-type Portable Generator" icon_state = "portgen2" - sheet_path = /obj/item/stack/sheet/mineral/diamond + sheet_path = /obj/item/stack/sheet/mineral/tritium power_gen = 40000 time_per_sheet = 80 board_path = "/obj/item/weapon/circuitboard/pacman/mrs"