diff --git a/code/_helpers/global_lists.dm b/code/_helpers/global_lists.dm index 1c0d5f2393..925eede606 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 450e4340cc..b176e9ef61 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 @@ -188,24 +187,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) @@ -264,13 +252,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 399a5a4812..bb8972bbe0 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -664,7 +664,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 12781a7ea4..f8bc4a03d6 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 0e125bee74..5a26dcf0fd 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 diff --git a/maps/expedition_vr/aerostat/_aerostat.dm b/maps/expedition_vr/aerostat/_aerostat.dm index ac1d41d1bb..a89ff259c3 100644 --- a/maps/expedition_vr/aerostat/_aerostat.dm +++ b/maps/expedition_vr/aerostat/_aerostat.dm @@ -134,8 +134,8 @@ VIRGO2_TURF_CREATE(/turf/simulated/mineral) var/mineral_name = pickweight(list("marble" = 5, "uranium" = 5, "platinum" = 5, "hematite" = 5, "carbon" = 5, "diamond" = 5, "gold" = 5, "silver" = 5, "lead" = 5, "verdantium" = 5, "rutile" = 10, "copper" = 5, "tin" = 5, "bauxite" = 5)) - 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/maps/tether/tether_turfs.dm b/maps/tether/tether_turfs.dm index a0b7b960dd..e1fadf2653 100644 --- a/maps/tether/tether_turfs.dm +++ b/maps/tether/tether_turfs.dm @@ -95,8 +95,8 @@ VIRGO3B_TURF_CREATE(/turf/simulated/mineral/floor) "silver" = 3, "phoron" = 25, "lead" = 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() @@ -128,8 +128,8 @@ VIRGO3B_TURF_CREATE(/turf/simulated/mineral/floor) "silver" = 7, "lead" = 4, "verdantium" = 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/maps/tether_better/tether_turfs.dm b/maps/tether_better/tether_turfs.dm index 74d83ef7f0..4ba3453157 100644 --- a/maps/tether_better/tether_turfs.dm +++ b/maps/tether_better/tether_turfs.dm @@ -162,8 +162,8 @@ VIRGO3BB_TURF_CREATE(/turf/simulated/mineral/floor) "silver" = 3, "phoron" = 25, "lead" = 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() @@ -195,8 +195,8 @@ VIRGO3BB_TURF_CREATE(/turf/simulated/mineral/floor) "silver" = 7, "lead" = 4, "verdantium" = 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()