From 2e62949e998d6322f0df454591a0606da87c8032 Mon Sep 17 00:00:00 2001 From: Heroman Date: Wed, 27 Apr 2022 06:07:04 +1000 Subject: [PATCH] Adds PoI loader landmarks --- code/game/objects/effects/landmarks_poi_vr.dm | 71 +++++++++++++++++++ maps/groundbase/groundbase_defines.dm | 7 +- maps/groundbase/groundbase_poi_stuff.dm | 22 +++++- maps/groundbase/southwilds/southwilds3.dmm | 30 +++++--- vorestation.dme | 1 + 5 files changed, 118 insertions(+), 13 deletions(-) create mode 100644 code/game/objects/effects/landmarks_poi_vr.dm diff --git a/code/game/objects/effects/landmarks_poi_vr.dm b/code/game/objects/effects/landmarks_poi_vr.dm new file mode 100644 index 00000000000..a26a809feb1 --- /dev/null +++ b/code/game/objects/effects/landmarks_poi_vr.dm @@ -0,0 +1,71 @@ +var/global/list/global_used_pois = list() + + + +/obj/effect/landmark/poi_loader + name = "PoI Loader" + var/size_x + var/size_y + var/poi_type = null + var/remove_from_pool = TRUE + +/obj/effect/landmark/poi_loader/New() +INITIALIZE_IMMEDIATE(/obj/effect/landmark/poi_loader) + +/obj/effect/landmark/poi_loader/Initialize() + src.load_poi() + return ..() + +/obj/effect/landmark/poi_loader/proc/get_turfs_to_clean() + return block(locate(src.x, src.y, src.z), locate((src.x + size_x - 1), (src.y + size_y - 1), src.z)) + +/obj/effect/landmark/poi_loader/proc/annihilate_bounds() + var/deleted_atoms = 0 + //admin_notice("Annihilating objects in poi loading location.", R_DEBUG) + var/list/turfs_to_clean = get_turfs_to_clean() + if(turfs_to_clean.len) + for(var/x in 1 to 2) // Requires two passes to get everything. + for(var/turf/T in turfs_to_clean) + for(var/atom/movable/AM in T) + ++deleted_atoms + qdel(AM) + //admin_notice("Annihilated [deleted_atoms] objects.", R_DEBUG) + +/obj/effect/landmark/poi_loader/proc/load_poi() + var/turf/T = get_turf(src) + if(!isturf(T)) + to_world_log("[log_info_line(src)] not on a turf! Cannot place poi template.") + return + + // Choose a poi + if(!poi_type) + return + + if(!(global_used_pois.len) || !(global_used_pois[poi_type])) + global_used_pois[poi_type] = list() + var/list/poi_list = global_used_pois[poi_type] + for(var/map in SSmapping.map_templates) + var/template = SSmapping.map_templates[map] + if(istype(template, poi_type)) + poi_list += template + + var/datum/map_template/template_to_use = null + + if(!(global_used_pois[poi_type].len)) + return + else + template_to_use = pick(global_used_pois[poi_type]) + + if(!template_to_use) + return + + //admin_notice("Chosen Predefined PoI Map: [chosen_type.name]", R_DEBUG) + + if(remove_from_pool) + global_used_pois[poi_type] -= template_to_use + + // Annihilate movable atoms + annihilate_bounds() + //CHECK_TICK //Don't let anything else happen for now + // Actually load it + template_to_use.load(T) \ No newline at end of file diff --git a/maps/groundbase/groundbase_defines.dm b/maps/groundbase/groundbase_defines.dm index 07779fe5480..4f3fedd2aa6 100644 --- a/maps/groundbase/groundbase_defines.dm +++ b/maps/groundbase/groundbase_defines.dm @@ -497,9 +497,10 @@ associated_map_datum = /datum/map_z_level/gb_lateload/gb_south_wilds /datum/map_template/gb_lateload/wilds/south/type3/on_map_loaded(z) . = ..() - seed_submaps(list(Z_LEVEL_GB_WILD_S), 6, /area/submap/groundbase/poi/wildvillage/plot/square, /datum/map_template/groundbase/wildvillage/square) //POI seeding - seed_submaps(list(Z_LEVEL_GB_WILD_S), 2, /area/submap/groundbase/poi/wildvillage/plot/wide, /datum/map_template/groundbase/wildvillage/wide) - seed_submaps(list(Z_LEVEL_GB_WILD_S), 1, /area/submap/groundbase/poi/wildvillage/plot/long, /datum/map_template/groundbase/wildvillage/long) + // Using landmarks for this now. + //seed_submaps(list(Z_LEVEL_GB_WILD_S), 6, /area/submap/groundbase/poi/wildvillage/plot/square, /datum/map_template/groundbase/wildvillage/square) //POI seeding + //seed_submaps(list(Z_LEVEL_GB_WILD_S), 2, /area/submap/groundbase/poi/wildvillage/plot/wide, /datum/map_template/groundbase/wildvillage/wide) + //seed_submaps(list(Z_LEVEL_GB_WILD_S), 1, /area/submap/groundbase/poi/wildvillage/plot/long, /datum/map_template/groundbase/wildvillage/long) /datum/map_template/gb_lateload/wilds/east/type1 name = "Eastern Wilds 1" diff --git a/maps/groundbase/groundbase_poi_stuff.dm b/maps/groundbase/groundbase_poi_stuff.dm index 06b8f6cdb0c..c2ff36f9bc8 100644 --- a/maps/groundbase/groundbase_poi_stuff.dm +++ b/maps/groundbase/groundbase_poi_stuff.dm @@ -885,7 +885,7 @@ name = "Cave 49" mappath = 'pois/cave49c.dmm' -/datum/map_template/groundbase/maintcaves/cavething +/datum/map_template/groundbase/maintcaves/cavething name = "Cavething 1" mappath = 'pois/cavething1.dmm' cost = 10 @@ -939,6 +939,26 @@ cost = 3 allow_duplicates = FALSE + +/obj/effect/landmark/poi_loader/gb_square + name = "Square House Loader" + size_x = 12 + size_y = 12 + poi_type = /datum/map_template/groundbase/wildvillage/square + +/obj/effect/landmark/poi_loader/gb_wide + name = "Wide House Loader" + size_x = 17 + size_y = 12 + poi_type = /datum/map_template/groundbase/wildvillage/wide + +/obj/effect/landmark/poi_loader/gb_long + name = "Long House Loader" + size_x = 17 + size_y = 24 + poi_type = /datum/map_template/groundbase/wildvillage/long + + /area/submap/groundbase/poi/wildvillage name = "POI - Wilderness Village" icon = 'icons/turf/areas_vr.dmi' diff --git a/maps/groundbase/southwilds/southwilds3.dmm b/maps/groundbase/southwilds/southwilds3.dmm index 971ee359759..14ee56a7172 100644 --- a/maps/groundbase/southwilds/southwilds3.dmm +++ b/maps/groundbase/southwilds/southwilds3.dmm @@ -2,9 +2,21 @@ "a" = ( /turf/unsimulated/wall/planetary/virgo3c, /area/submap/groundbase/wilderness/south) +"b" = ( +/obj/effect/landmark/poi_loader/gb_square, +/turf/simulated/floor/outdoors/grass/virgo3c, +/area/submap/groundbase/poi/wildvillage/plot/square) "c" = ( /turf/simulated/mineral/cave/virgo3c, /area/submap/groundbase/wilderness/south/cave) +"d" = ( +/obj/effect/landmark/poi_loader/gb_wide, +/turf/simulated/floor/outdoors/grass/virgo3c, +/area/submap/groundbase/poi/wildvillage/plot/wide) +"e" = ( +/obj/effect/landmark/poi_loader/gb_long, +/turf/simulated/floor/outdoors/grass/virgo3c, +/area/submap/groundbase/poi/wildvillage/plot/long) "f" = ( /turf/simulated/floor/outdoors/grass/forest/virgo3c, /area/submap/groundbase/poi/wildvillage/plot/square) @@ -7243,7 +7255,7 @@ F F F F -F +b v F F @@ -7256,7 +7268,7 @@ F F F F -F +b v F F @@ -7269,7 +7281,7 @@ F F F F -F +b v O O @@ -9083,7 +9095,7 @@ E E E E -E +d v n n @@ -9108,7 +9120,7 @@ n n n n -n +e v E E @@ -9121,7 +9133,7 @@ E E E E -E +d v A A @@ -11645,7 +11657,7 @@ F F F F -F +b v F F @@ -11658,7 +11670,7 @@ F F F F -F +b v F F @@ -11671,7 +11683,7 @@ F F F F -F +b v w O diff --git a/vorestation.dme b/vorestation.dme index 447395c31ee..42cb2c92ed1 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -1093,6 +1093,7 @@ #include "code\game\objects\effects\item_pickup_ghost.dm" #include "code\game\objects\effects\job_start_landmarks.dm" #include "code\game\objects\effects\landmarks.dm" +#include "code\game\objects\effects\landmarks_poi_vr.dm" #include "code\game\objects\effects\landmarks_vr.dm" #include "code\game\objects\effects\manifest.dm" #include "code\game\objects\effects\mines.dm"