diff --git a/code/_helpers/global_lists.dm b/code/_helpers/global_lists.dm index 868f69fde82..063954d11b8 100644 --- a/code/_helpers/global_lists.dm +++ b/code/_helpers/global_lists.dm @@ -69,6 +69,10 @@ var/global/list/endgame_safespawns = list() var/global/list/syndicate_access = list(access_maint_tunnels, access_syndicate, access_external_airlocks) +// Ores (for mining) +GLOBAL_LIST_EMPTY(ore_data) +GLOBAL_LIST_EMPTY(alloy_data) + // Strings which corraspond to bodypart covering flags, useful for outputting what something covers. var/global/list/string_part_flags = list( "head" = HEAD, @@ -213,6 +217,16 @@ GLOBAL_LIST_EMPTY(mannequins) var/datum/poster/P = new T NT_poster_designs += P + //Ores + paths = typesof(/ore)-/ore + for(var/oretype in paths) + var/ore/OD = new oretype() + GLOB.ore_data[OD.name] = OD + + paths = typesof(/datum/alloy)-/datum/alloy + for(var/alloytype in paths) + GLOB.alloy_data += new alloytype() + //Closet appearances paths = typesof(/decl/closet_appearance) for(var/T in paths) diff --git a/code/modules/mining/machinery/machine_processing.dm b/code/modules/mining/machinery/machine_processing.dm index dbd9c960e63..14d61d850ad 100644 --- a/code/modules/mining/machinery/machine_processing.dm +++ b/code/modules/mining/machinery/machine_processing.dm @@ -73,7 +73,7 @@ for(var/ore in machine.ores_processing) if(!machine.ores_stored[ore] && !show_all_ores) continue - var/ore/O = ore_data[ore] + var/ore/O = GLOB.ore_data[ore] if(!O) continue data["ores"].Add(list(list( @@ -160,7 +160,6 @@ var/sheets_per_tick = 10 var/list/ores_processing[0] var/list/ores_stored[0] - var/static/list/alloy_data var/active = FALSE var/points = 0 @@ -187,24 +186,13 @@ "verdantium" = 60, "rutile" = 40) //VOREStation Add -/obj/machinery/mineral/processing_unit/New() - ..() - // initialize static alloy_data list - if(!alloy_data) - alloy_data = list() - for(var/alloytype in typesof(/datum/alloy)-/datum/alloy) - alloy_data += new alloytype() - - // TODO - Initializing this here is insane. Put it in global lists init or something. ~Leshana - if(!ore_data || !ore_data.len) - for(var/oretype in typesof(/ore)-/ore) - var/ore/OD = new oretype() - ore_data[OD.name] = OD - ores_processing[OD.name] = 0 - ores_stored[OD.name] = 0 - /obj/machinery/mineral/processing_unit/Initialize() . = ..() + for(var/ore in GLOB.ore_data) + var/ore/OD = GLOB.ore_data[ore] + ores_processing[OD.name] = 0 + ores_stored[OD.name] = 0 + // TODO - Eschew input/output machinery and just use dirs ~Leshana //Locate our output and input machinery. for (var/dir in cardinal) @@ -263,13 +251,13 @@ if(ores_stored[metal] > 0 && ores_processing[metal] != 0) - var/ore/O = ore_data[metal] + var/ore/O = GLOB.ore_data[metal] if(!O) continue if(ores_processing[metal] == PROCESS_ALLOY && O.alloy) //Alloying. - for(var/datum/alloy/A in alloy_data) + for(var/datum/alloy/A in GLOB.alloy_data) if(A.metaltag in tick_alloys) continue diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index 2608e3c7887..4936a95c317 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -655,7 +655,7 @@ turf/simulated/mineral/floor/light_corner else mineral_name = pickweight(list("marble" = 3,/* "quartz" = 10,*/ "copper" = 20, "tin" = 15, "bauxite" = 15, "uranium" = 10, "platinum" = 10, "hematite" = 70, "rutile" = 15, "carbon" = 70, "diamond" = 2, "gold" = 10, "silver" = 10, "phoron" = 20, "lead" = 3,/* "void opal" = 1,*/ "verdantium" = 1/*, "painite" = 1*/)) - if(mineral_name && (mineral_name in ore_data)) - mineral = ore_data[mineral_name] + if(mineral_name && (mineral_name in GLOB.ore_data)) + mineral = GLOB.ore_data[mineral_name] UpdateMineral() update_icon() diff --git a/code/modules/mining/mineral_effect.dm b/code/modules/mining/mineral_effect.dm index 12781a7ea42..f8bc4a03d61 100644 --- a/code/modules/mining/mineral_effect.dm +++ b/code/modules/mining/mineral_effect.dm @@ -21,7 +21,7 @@ /obj/effect/mineral/proc/get_scan_overlay() if(!scanner_image) - var/ore/O = ore_data[ore_key] + var/ore/O = GLOB.ore_data[ore_key] if(O) scanner_image = image(icon, loc = get_turf(src), icon_state = (O.scan_icon ? O.scan_icon : icon_state)) else diff --git a/code/modules/mining/ore_datum.dm b/code/modules/mining/ore_datum.dm index 0e125bee745..5a26dcf0fd5 100644 --- a/code/modules/mining/ore_datum.dm +++ b/code/modules/mining/ore_datum.dm @@ -1,5 +1,3 @@ -var/global/list/ore_data = list() - /ore var/name var/display_name