From b9d32e982952f7278fa903873e5128f2bea09af5 Mon Sep 17 00:00:00 2001 From: Rudy Date: Thu, 26 Mar 2026 08:55:55 -0700 Subject: [PATCH 01/26] Updates Stoplag + Updates Lighting/Weather.dm's --- code/__DEFINES/_tick.dm | 12 +++- code/__HELPERS/unsorted.dm | 15 +++-- code/controllers/subsystem/lighting.dm | 82 ++++++++++++++++++-------- code/controllers/subsystem/weather.dm | 1 + 4 files changed, 77 insertions(+), 33 deletions(-) diff --git a/code/__DEFINES/_tick.dm b/code/__DEFINES/_tick.dm index 05b3a5717c4..99c6806f559 100644 --- a/code/__DEFINES/_tick.dm +++ b/code/__DEFINES/_tick.dm @@ -1,9 +1,15 @@ +/// Percentage of tick to leave for master controller to run +#define MAPTICK_MC_MIN_RESERVE 70 +#define MAPTICK_LAST_INTERNAL_TICK_USAGE (world.map_cpu) + /// Tick limit while running normally -#define TICK_LIMIT_RUNNING 80 +#define TICK_BYOND_RESERVE 2 +#define TICK_LIMIT_RUNNING (max(100 - TICK_BYOND_RESERVE - MAPTICK_LAST_INTERNAL_TICK_USAGE, MAPTICK_MC_MIN_RESERVE)) + /// Tick limit used to resume things in stoplag -#define TICK_LIMIT_TO_RUN 70 +#define TICK_LIMIT_TO_RUN 60 //CC Edit /// Tick limit for MC while running -#define TICK_LIMIT_MC 70 +#define TICK_LIMIT_MC 100 //CC Edit /// Tick limit while initializing #define TICK_LIMIT_MC_INIT_DEFAULT 98 diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index c25828c2c64..7f243aed026 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -1144,20 +1144,27 @@ GLOBAL_REAL_VAR(list/stack_trace_storage) //as sleeps aren't cheap and sleeping only to wake up and sleep again is wasteful #define DELTA_CALC max(((max(TICK_USAGE, world.cpu) / 100) * max(Master.sleep_delta-1,1)), 1) -//returns the number of ticks slept +///returns the number of ticks slept /proc/stoplag(initial_delay) - if (!Master || !(Master.current_runlevel & RUNLEVELS_DEFAULT)) + if (!Master ||!(Master.current_runlevel & RUNLEVELS_DEFAULT)) sleep(world.tick_lag) return 1 if (!initial_delay) initial_delay = world.tick_lag +// Unit tests are not the normal environemnt. The mc can get absolutely thigh crushed, and sleeping procs running for ages is much more common +// We don't want spurious hard deletes off this, so let's only sleep for the requested period of time here yeah? +#ifdef UNIT_TESTS + sleep(initial_delay) + return CEILING(DS2TICKS(initial_delay), 1) +#else . = 0 var/i = DS2TICKS(initial_delay) do - . += CEILING(i*DELTA_CALC, 1) - sleep(i*world.tick_lag*DELTA_CALC) + . += CEILING(i * DELTA_CALC, 1) + sleep(i * world.tick_lag * DELTA_CALC) i *= 2 while (TICK_USAGE > min(TICK_LIMIT_TO_RUN, Master.current_ticklimit)) +#endif #undef DELTA_CALC diff --git a/code/controllers/subsystem/lighting.dm b/code/controllers/subsystem/lighting.dm index 12eca8af2df..e44634257a7 100644 --- a/code/controllers/subsystem/lighting.dm +++ b/code/controllers/subsystem/lighting.dm @@ -9,6 +9,7 @@ SUBSYSTEM_DEF(lighting) var/static/list/sources_queue = list() // List of lighting sources queued for update. var/static/list/corners_queue = list() // List of lighting corners queued for update. var/static/list/objects_queue = list() // List of lighting objects queued for update. + var/static/list/current_sources = list() //CC Edit - Updated Lighting from TG processing_flag = PROCESSING_LIGHTING /datum/controller/subsystem/lighting/stat_entry() @@ -34,67 +35,96 @@ SUBSYSTEM_DEF(lighting) /datum/controller/subsystem/lighting/proc/enable_lighting() can_fire = TRUE +//CC Edit Begin - Updated Lighting from TG /datum/controller/subsystem/lighting/fire(resumed, init_tick_checks) MC_SPLIT_TICK_INIT(3) if(!init_tick_checks) MC_SPLIT_TICK - var/list/queue = sources_queue + + if(!resumed) + current_sources = sources_queue + sources_queue = list() + + // UPDATE SOURCE QUEUE var/i = 0 - for (i in 1 to length(queue)) - var/datum/light_source/L = queue[i] + var/list/queue = current_sources + while(i < length(queue)) //we don't use for loop here because i cannot be changed during an iteration + i += 1 + var/datum/light_source/L = queue[i] L.update_corners() + if(!QDELETED(L)) + L.needs_update = LIGHTING_NO_UPDATE + else + i -= 1 // update_corners() has removed L from the list, move back so we don't overflow or skip the next element - L.needs_update = LIGHTING_NO_UPDATE - + // We unroll TICK_CHECK here so we can clear out the queue to ensure any removals/additions when sleeping don't fuck us if(init_tick_checks) - CHECK_TICK - else if (MC_TICK_CHECK) + if(!TICK_CHECK) + continue + queue.Cut(1, i + 1) + i = 0 + stoplag() + else if(MC_TICK_CHECK) break - if (i) - queue.Cut(1, i+1) + if(i) + queue.Cut(1, i + 1) i = 0 if(!init_tick_checks) MC_SPLIT_TICK + // UPDATE CORNERS QUEUE queue = corners_queue - for (i in 1 to length(queue)) - var/datum/lighting_corner/C = queue[i] + while(i < length(queue)) //we don't use for loop here because i cannot be changed during an iteration + i += 1 + var/datum/lighting_corner/C = queue[i] + C.needs_update = FALSE //update_objects() can call qdel if the corner is storing no data C.update_objects() - C.needs_update = FALSE + + // We unroll TICK_CHECK here so we can clear out the queue to ensure any removals/additions when sleeping don't fuck us if(init_tick_checks) - CHECK_TICK - else if (MC_TICK_CHECK) + if(!TICK_CHECK) + continue + queue.Cut(1, i + 1) + i = 0 + stoplag() + else if(MC_TICK_CHECK) break - if (i) + if(i) queue.Cut(1, i+1) i = 0 - if(!init_tick_checks) MC_SPLIT_TICK + // UPDATE OBJECTS QUEUE queue = objects_queue - for (i in 1 to length(queue)) - var/atom/movable/lighting_object/O = queue[i] + while(i < length(queue)) //we don't use for loop here because i cannot be changed during an iteration + i += 1 - if (QDELETED(O)) + var/atom/movable/lighting_object/O = queue[i] + if(QDELETED(O)) continue - O.update() O.needs_update = FALSE + + // We unroll TICK_CHECK here so we can clear out the queue to ensure any removals/additions when sleeping don't fuck us if(init_tick_checks) - CHECK_TICK - else if (MC_TICK_CHECK) + if(!TICK_CHECK) + continue + queue.Cut(1, i + 1) + i = 0 + stoplag() + else if(MC_TICK_CHECK) break - if (i) - queue.Cut(1, i+1) - + if(i) + queue.Cut(1, i + 1) +//CC Edit End - Updated Lighting from TG /datum/controller/subsystem/lighting/Recover() initialized = SSlighting.initialized ..() -#undef LIGHTING_INITIAL_FIRE_DELAY \ No newline at end of file +#undef LIGHTING_INITIAL_FIRE_DELAY diff --git a/code/controllers/subsystem/weather.dm b/code/controllers/subsystem/weather.dm index 53fe44a3b60..561f82433c5 100644 --- a/code/controllers/subsystem/weather.dm +++ b/code/controllers/subsystem/weather.dm @@ -27,6 +27,7 @@ SUBSYSTEM_DEF(weather) C.update_weather() while(current_run.len) + stoplag(1) //CC Edit var/atom/thing = current_run[current_run.len] current_run.len-- if(!thing || QDELETED(thing)) From 3439deff6daaa2c3ac8cf315c3278e18c0e35a70 Mon Sep 17 00:00:00 2001 From: Rudy Date: Thu, 26 Mar 2026 09:34:03 -0700 Subject: [PATCH 02/26] Fixes change_turf and removes my dungeon map yeah it was apparently broken but the server never runtimed when loading because the runtime was never initialized and the game just set it up for an infinite loop haha wow so fucking funny and awesome fuck meeeeee --- _maps/dungeon_generator/room/hoblingoblin.dmm | 1430 ----------------- .../dungeon_templates/rooms/common.dm | 11 - code/game/turfs/change_turf.dm | 6 +- 3 files changed, 4 insertions(+), 1443 deletions(-) delete mode 100644 _maps/dungeon_generator/room/hoblingoblin.dmm diff --git a/_maps/dungeon_generator/room/hoblingoblin.dmm b/_maps/dungeon_generator/room/hoblingoblin.dmm deleted file mode 100644 index 2ed281d9a15..00000000000 --- a/_maps/dungeon_generator/room/hoblingoblin.dmm +++ /dev/null @@ -1,1430 +0,0 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"a" = ( -/turf/closed/mineral/random/rogue/high, -/area/rogue) -"b" = ( -/mob/living/carbon/human/species/hobgoblin/npc, -/turf/open/floor/rogue/naturalstone, -/area/rogue) -"c" = ( -/obj/structure/ladder/earth, -/obj/structure/ladder/earth, -/turf/open/floor/rogue/dirt, -/area/rogue) -"d" = ( -/turf/closed/wall/mineral/rogue/tent{ - dir = 4 - }, -/area/rogue) -"e" = ( -/obj/effect/spawner/lootdrop/general_loot_mid/x3, -/obj/structure/closet/crate/chest/wicker, -/turf/open/floor/rogue/dirt/road, -/area/rogue) -"f" = ( -/obj/structure/flora/roguegrass/water, -/turf/open/floor/rogue/dirt, -/area/rogue) -"h" = ( -/obj/machinery/light/rogue/torchholder/c, -/turf/open/floor/rogue/dirt, -/area/rogue) -"i" = ( -/obj/machinery/light/rogue/campfire/longlived, -/turf/open/floor/rogue/dirt, -/area/rogue) -"j" = ( -/turf/closed/wall/mineral/rogue/tent{ - dir = 8 - }, -/area/rogue) -"l" = ( -/mob/living/carbon/human/species/goblin/npc, -/obj/structure/bed/rogue/shit, -/turf/open/floor/rogue/naturalstone, -/area/rogue) -"n" = ( -/obj/structure/flora/roguegrass/water, -/turf/open/water/swamp, -/area/rogue) -"o" = ( -/obj/machinery/light/rogue/torchholder/l, -/turf/open/floor/rogue/naturalstone, -/area/rogue) -"p" = ( -/obj/structure/bed/rogue/shit, -/turf/open/floor/rogue/dirt/road, -/area/rogue) -"q" = ( -/obj/structure/chair/stool/rogue, -/turf/open/floor/rogue/dirt, -/area/rogue) -"s" = ( -/obj/machinery/light/rogue/torchholder/r, -/turf/open/floor/rogue/dirt, -/area/rogue) -"t" = ( -/mob/living/carbon/human/species/goblin/npc, -/obj/structure/bed/rogue/shit, -/turf/open/floor/rogue/dirt, -/area/rogue) -"u" = ( -/turf/closed/mineral/rogue/bedrock, -/area/rogue) -"w" = ( -/turf/open/floor/rogue/dirt, -/area/rogue) -"x" = ( -/mob/living/carbon/human/species/goblin/npc, -/turf/open/floor/rogue/naturalstone, -/area/rogue) -"y" = ( -/obj/structure/roguetent, -/turf/open/floor/rogue/dirt/road, -/area/rogue) -"z" = ( -/turf/open/transparent/openspace, -/area/rogue) -"A" = ( -/mob/living/carbon/human/species/goblin/npc, -/turf/open/floor/rogue/dirt, -/area/rogue) -"B" = ( -/obj/machinery/light/rogue/torchholder/l, -/turf/open/water/swamp, -/area/rogue) -"C" = ( -/obj/effect/dungeon_directional_helper/west, -/turf/open/floor/rogue/naturalstone, -/area/rogue) -"D" = ( -/turf/open/water/swamp, -/area/rogue) -"F" = ( -/mob/living/carbon/human/species/hobgoblin/npc, -/turf/open/floor/rogue/dirt, -/area/rogue) -"G" = ( -/obj/effect/dungeon_directional_helper/south, -/turf/open/floor/rogue/naturalstone, -/area/rogue) -"H" = ( -/turf/closed/wall/mineral/rogue/wood, -/area/rogue) -"I" = ( -/obj/structure/roguetent, -/turf/open/floor/rogue/dirt, -/area/rogue) -"J" = ( -/obj/machinery/light/rogue/torchholder/r, -/turf/open/floor/rogue/naturalstone, -/area/rogue) -"K" = ( -/turf/closed/wall/mineral/rogue/tent, -/area/rogue) -"L" = ( -/obj/structure/ladder/earth, -/turf/open/floor/rogue/dirt, -/area/rogue) -"M" = ( -/obj/machinery/light/rogue/torchholder/c, -/turf/open/floor/rogue/naturalstone, -/area/rogue) -"N" = ( -/mob/living/carbon/human/species/goblin/npc, -/turf/open/floor/rogue/dirt/road, -/area/rogue) -"O" = ( -/obj/effect/spawner/lootdrop/general_loot_low/x3, -/obj/structure/closet/crate/chest/wicker, -/turf/open/floor/rogue/dirt/road, -/area/rogue) -"P" = ( -/turf/open/floor/rogue/naturalstone, -/area/rogue) -"Q" = ( -/obj/machinery/light/rogue/torchholder/l, -/turf/open/floor/rogue/dirt, -/area/rogue) -"R" = ( -/turf/closed/wall/mineral/rogue/tent{ - dir = 1 - }, -/area/rogue) -"S" = ( -/obj/item/reagent_containers/food/snacks/rogue/meat/sausage{ - pixel_x = 6; - pixel_y = 4 - }, -/obj/item/grown/log/tree/stake, -/turf/open/floor/rogue/dirt, -/area/rogue) -"T" = ( -/obj/effect/dungeon_directional_helper/north, -/turf/open/floor/rogue/naturalstone, -/area/rogue) -"U" = ( -/obj/structure/roguetent, -/turf/open/floor/rogue/naturalstone, -/area/rogue) -"X" = ( -/turf/open/floor/rogue/dirt/road, -/area/rogue) -"Y" = ( -/mob/living/carbon/human/species/hobgoblin/npc, -/turf/open/floor/rogue/dirt/road, -/area/rogue) -"Z" = ( -/obj/effect/dungeon_directional_helper/east, -/turf/open/floor/rogue/naturalstone, -/area/rogue) - -(1,1,1) = {" -u -u -u -u -u -u -u -u -u -u -u -P -C -P -u -u -u -u -u -u -u -u -u -u -"} -(2,1,1) = {" -u -a -a -a -a -a -a -a -a -a -a -a -P -a -a -a -a -a -a -a -a -a -a -u -"} -(3,1,1) = {" -u -a -a -a -a -D -D -D -D -a -P -P -P -a -a -D -D -D -a -a -a -a -a -u -"} -(4,1,1) = {" -u -a -a -a -D -D -P -P -P -P -P -a -P -a -a -D -D -D -D -a -a -a -a -u -"} -(5,1,1) = {" -u -a -a -w -a -P -H -d -d -d -d -H -P -o -P -w -P -f -D -a -a -a -a -u -"} -(6,1,1) = {" -u -a -a -D -P -P -K -e -p -X -N -R -P -P -P -a -P -a -D -B -a -a -a -u -"} -(7,1,1) = {" -u -a -a -n -a -a -K -X -X -Y -X -y -w -a -w -P -P -P -w -w -D -a -a -u -"} -(8,1,1) = {" -u -a -a -D -w -a -K -p -N -X -X -y -w -w -S -w -w -x -P -f -w -D -a -u -"} -(9,1,1) = {" -u -a -a -a -w -a -K -X -X -O -X -R -w -i -q -w -a -P -P -a -w -a -a -u -"} -(10,1,1) = {" -u -a -D -D -f -w -H -j -j -j -j -H -w -S -w -w -f -P -P -P -P -P -P -u -"} -(11,1,1) = {" -P -a -a -a -w -w -w -b -P -P -P -a -a -h -D -w -P -b -P -P -P -a -M -P -"} -(12,1,1) = {" -T -P -P -P -P -P -P -P -a -P -P -a -L -w -D -a -P -a -P -P -P -P -P -G -"} -(13,1,1) = {" -P -a -a -w -w -w -a -P -P -P -P -a -w -a -P -w -f -P -P -a -P -P -P -P -"} -(14,1,1) = {" -u -a -a -n -w -s -w -P -w -P -P -w -w -w -a -w -w -J -P -P -P -P -P -u -"} -(15,1,1) = {" -u -a -a -a -w -a -f -P -H -d -y -H -w -w -S -w -w -a -P -A -w -a -P -u -"} -(16,1,1) = {" -u -a -a -a -D -a -w -a -K -p -X -R -w -q -i -a -w -w -w -w -f -D -a -u -"} -(17,1,1) = {" -u -a -a -a -a -D -w -w -K -O -Y -R -w -f -q -w -f -a -a -w -D -a -a -u -"} -(18,1,1) = {" -u -a -a -a -a -D -D -a -H -j -j -H -w -w -a -D -D -P -a -w -D -a -a -u -"} -(19,1,1) = {" -u -a -a -a -a -a -D -D -a -w -P -P -P -w -D -a -a -w -H -y -d -H -a -u -"} -(20,1,1) = {" -u -a -a -a -a -a -a -D -w -f -w -a -P -a -a -a -a -D -K -X -O -R -a -u -"} -(21,1,1) = {" -u -a -a -a -a -a -a -a -a -a -D -a -P -a -a -a -a -a -K -N -p -R -a -u -"} -(22,1,1) = {" -u -a -a -a -a -a -a -a -a -a -a -a -P -a -a -a -a -a -H -j -j -H -a -u -"} -(23,1,1) = {" -u -a -a -a -a -a -a -a -a -a -a -a -P -a -a -a -a -a -a -a -a -a -a -u -"} -(24,1,1) = {" -u -u -u -u -u -u -u -u -u -u -u -P -Z -P -u -u -u -u -u -u -u -u -u -u -"} - -(1,1,2) = {" -u -u -u -u -u -u -u -u -u -u -u -P -P -w -u -u -u -u -u -u -u -u -u -u -"} -(2,1,2) = {" -u -a -a -a -a -a -a -a -a -a -a -P -P -P -a -a -a -a -a -a -a -a -a -u -"} -(3,1,2) = {" -u -a -a -a -a -a -a -a -a -a -a -P -P -P -Q -D -D -a -a -a -a -a -a -u -"} -(4,1,2) = {" -u -a -a -a -a -a -D -D -D -a -a -w -a -P -w -w -D -D -a -a -a -a -a -u -"} -(5,1,2) = {" -u -a -a -a -a -a -D -w -w -w -w -P -w -P -w -w -D -a -a -a -a -a -a -u -"} -(6,1,2) = {" -u -a -a -a -a -B -w -w -a -a -h -P -x -P -a -H -d -d -d -H -a -a -a -u -"} -(7,1,2) = {" -u -a -a -a -a -P -w -P -P -P -w -w -w -P -w -K -P -P -F -R -D -a -a -u -"} -(8,1,2) = {" -u -a -a -a -a -P -P -H -d -d -H -w -w -F -P -U -w -a -P -R -D -D -a -u -"} -(9,1,2) = {" -u -a -a -a -a -D -w -K -t -w -R -w -i -w -w -K -w -w -l -R -D -D -a -u -"} -(10,1,2) = {" -z -a -a -a -a -D -w -K -w -w -I -w -w -w -w -H -j -j -j -H -P -P -w -u -"} -(11,1,2) = {" -w -w -a -a -a -D -w -H -j -j -H -w -w -a -D -P -P -w -w -a -a -P -P -P -"} -(12,1,2) = {" -P -w -w -w -a -D -w -P -P -P -P -a -c -w -P -w -a -P -w -a -w -P -P -P -"} -(13,1,2) = {" -P -P -a -w -w -a -w -P -P -P -P -a -a -P -w -D -a -P -P -P -J -P -P -w -"} -(14,1,2) = {" -z -P -J -P -P -w -w -P -a -P -P -a -o -P -P -P -P -P -P -P -a -w -a -u -"} -(15,1,2) = {" -u -a -a -w -P -P -P -P -A -w -w -w -w -w -A -P -a -w -w -P -w -D -a -u -"} -(16,1,2) = {" -u -a -a -a -w -w -P -P -P -w -a -w -w -w -a -P -w -w -w -D -a -a -a -u -"} -(17,1,2) = {" -u -a -a -a -a -D -D -D -P -P -b -w -a -w -P -P -w -w -D -a -a -a -a -u -"} -(18,1,2) = {" -u -a -a -a -a -a -a -D -D -P -P -P -w -w -P -P -s -D -a -a -a -a -a -u -"} -(19,1,2) = {" -u -a -a -a -a -a -a -a -a -D -P -P -w -a -P -a -a -a -a -a -a -a -a -u -"} -(20,1,2) = {" -u -a -a -a -a -a -a -a -a -D -D -P -w -P -P -a -a -a -a -a -a -a -a -u -"} -(21,1,2) = {" -u -a -a -a -a -a -a -a -a -a -w -P -a -P -w -a -a -a -a -a -a -a -a -u -"} -(22,1,2) = {" -u -a -a -a -a -a -a -a -a -a -J -P -P -P -a -a -a -a -a -a -a -a -a -u -"} -(23,1,2) = {" -u -a -a -a -a -a -a -a -a -a -a -P -P -P -a -a -a -a -a -a -a -a -a -u -"} -(24,1,2) = {" -u -u -u -u -u -u -u -u -u -u -u -w -P -P -u -u -u -u -u -u -u -u -u -u -"} diff --git a/code/datums/dungeon_generator/dungeon_templates/rooms/common.dm b/code/datums/dungeon_generator/dungeon_templates/rooms/common.dm index 4a7b19d502f..7adffd278ca 100644 --- a/code/datums/dungeon_generator/dungeon_templates/rooms/common.dm +++ b/code/datums/dungeon_generator/dungeon_templates/rooms/common.dm @@ -425,14 +425,3 @@ west_offset = 18 east_offset = 18 south_offset = 26 - -/datum/map_template/dungeon/room/hoblingoblin - mappath = "_maps/dungeon_generator/room/hoblingoblin.dmm" - id = "hoblin_goblin" - width = 24 - height = 24 - - north_offset = 12 - south_offset = 11 - east_offset = 11 - west_offset = 10 diff --git a/code/game/turfs/change_turf.dm b/code/game/turfs/change_turf.dm index bb910c28132..6eb18a07ab7 100644 --- a/code/game/turfs/change_turf.dm +++ b/code/game/turfs/change_turf.dm @@ -97,14 +97,16 @@ GLOBAL_LIST_INIT(blacklisted_automated_baseturfs, typecacheof(list( SEND_SIGNAL(src, COMSIG_TURF_CHANGE, path, new_baseturfs, flags, post_change_callbacks) changing_turf = TRUE - qdel(src) //Just get the side effects and call Destroy //We do this here so anything that doesn't want to persist can clear itself var/list/old_comp_lookup = comp_lookup?.Copy() var/list/old_signal_procs = signal_procs?.Copy() - if(!path) //CC Edit: This shouldn't runtime yet here we are... it's already checked above, so the path was nulled sometime between here and there? Logs don't lie. + //CC Edit: This shouldn't runtime yet here we are... it's already checked above, so the path was nulled sometime between here and there? Logs don't lie. + if(path == null) //Possibly due to some turfs being deleted / swapped from multiple map generators. Just make a check if it's null. return var/turf/W = new path(src) + qdel(src) //CC Edit - Moved further down the proc [//Just get the side effects and call Destroy] + // WARNING WARNING // Turfs DO NOT lose their signals when they get replaced, REMEMBER THIS // It's possible because turfs are fucked, and if you have one in a list and it's replaced with another one, the list ref points to the new turf From 9288ddf169131ff789e9e20b99214e5892902feb Mon Sep 17 00:00:00 2001 From: Rudy Date: Thu, 26 Mar 2026 09:35:19 -0700 Subject: [PATCH 03/26] Wait UNDELETES it because it wasn't the problem? --- _maps/dungeon_generator/room/hoblingoblin.dmm | 1430 +++++++++++++++++ .../dungeon_templates/rooms/common.dm | 11 + 2 files changed, 1441 insertions(+) create mode 100644 _maps/dungeon_generator/room/hoblingoblin.dmm diff --git a/_maps/dungeon_generator/room/hoblingoblin.dmm b/_maps/dungeon_generator/room/hoblingoblin.dmm new file mode 100644 index 00000000000..2ed281d9a15 --- /dev/null +++ b/_maps/dungeon_generator/room/hoblingoblin.dmm @@ -0,0 +1,1430 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/closed/mineral/random/rogue/high, +/area/rogue) +"b" = ( +/mob/living/carbon/human/species/hobgoblin/npc, +/turf/open/floor/rogue/naturalstone, +/area/rogue) +"c" = ( +/obj/structure/ladder/earth, +/obj/structure/ladder/earth, +/turf/open/floor/rogue/dirt, +/area/rogue) +"d" = ( +/turf/closed/wall/mineral/rogue/tent{ + dir = 4 + }, +/area/rogue) +"e" = ( +/obj/effect/spawner/lootdrop/general_loot_mid/x3, +/obj/structure/closet/crate/chest/wicker, +/turf/open/floor/rogue/dirt/road, +/area/rogue) +"f" = ( +/obj/structure/flora/roguegrass/water, +/turf/open/floor/rogue/dirt, +/area/rogue) +"h" = ( +/obj/machinery/light/rogue/torchholder/c, +/turf/open/floor/rogue/dirt, +/area/rogue) +"i" = ( +/obj/machinery/light/rogue/campfire/longlived, +/turf/open/floor/rogue/dirt, +/area/rogue) +"j" = ( +/turf/closed/wall/mineral/rogue/tent{ + dir = 8 + }, +/area/rogue) +"l" = ( +/mob/living/carbon/human/species/goblin/npc, +/obj/structure/bed/rogue/shit, +/turf/open/floor/rogue/naturalstone, +/area/rogue) +"n" = ( +/obj/structure/flora/roguegrass/water, +/turf/open/water/swamp, +/area/rogue) +"o" = ( +/obj/machinery/light/rogue/torchholder/l, +/turf/open/floor/rogue/naturalstone, +/area/rogue) +"p" = ( +/obj/structure/bed/rogue/shit, +/turf/open/floor/rogue/dirt/road, +/area/rogue) +"q" = ( +/obj/structure/chair/stool/rogue, +/turf/open/floor/rogue/dirt, +/area/rogue) +"s" = ( +/obj/machinery/light/rogue/torchholder/r, +/turf/open/floor/rogue/dirt, +/area/rogue) +"t" = ( +/mob/living/carbon/human/species/goblin/npc, +/obj/structure/bed/rogue/shit, +/turf/open/floor/rogue/dirt, +/area/rogue) +"u" = ( +/turf/closed/mineral/rogue/bedrock, +/area/rogue) +"w" = ( +/turf/open/floor/rogue/dirt, +/area/rogue) +"x" = ( +/mob/living/carbon/human/species/goblin/npc, +/turf/open/floor/rogue/naturalstone, +/area/rogue) +"y" = ( +/obj/structure/roguetent, +/turf/open/floor/rogue/dirt/road, +/area/rogue) +"z" = ( +/turf/open/transparent/openspace, +/area/rogue) +"A" = ( +/mob/living/carbon/human/species/goblin/npc, +/turf/open/floor/rogue/dirt, +/area/rogue) +"B" = ( +/obj/machinery/light/rogue/torchholder/l, +/turf/open/water/swamp, +/area/rogue) +"C" = ( +/obj/effect/dungeon_directional_helper/west, +/turf/open/floor/rogue/naturalstone, +/area/rogue) +"D" = ( +/turf/open/water/swamp, +/area/rogue) +"F" = ( +/mob/living/carbon/human/species/hobgoblin/npc, +/turf/open/floor/rogue/dirt, +/area/rogue) +"G" = ( +/obj/effect/dungeon_directional_helper/south, +/turf/open/floor/rogue/naturalstone, +/area/rogue) +"H" = ( +/turf/closed/wall/mineral/rogue/wood, +/area/rogue) +"I" = ( +/obj/structure/roguetent, +/turf/open/floor/rogue/dirt, +/area/rogue) +"J" = ( +/obj/machinery/light/rogue/torchholder/r, +/turf/open/floor/rogue/naturalstone, +/area/rogue) +"K" = ( +/turf/closed/wall/mineral/rogue/tent, +/area/rogue) +"L" = ( +/obj/structure/ladder/earth, +/turf/open/floor/rogue/dirt, +/area/rogue) +"M" = ( +/obj/machinery/light/rogue/torchholder/c, +/turf/open/floor/rogue/naturalstone, +/area/rogue) +"N" = ( +/mob/living/carbon/human/species/goblin/npc, +/turf/open/floor/rogue/dirt/road, +/area/rogue) +"O" = ( +/obj/effect/spawner/lootdrop/general_loot_low/x3, +/obj/structure/closet/crate/chest/wicker, +/turf/open/floor/rogue/dirt/road, +/area/rogue) +"P" = ( +/turf/open/floor/rogue/naturalstone, +/area/rogue) +"Q" = ( +/obj/machinery/light/rogue/torchholder/l, +/turf/open/floor/rogue/dirt, +/area/rogue) +"R" = ( +/turf/closed/wall/mineral/rogue/tent{ + dir = 1 + }, +/area/rogue) +"S" = ( +/obj/item/reagent_containers/food/snacks/rogue/meat/sausage{ + pixel_x = 6; + pixel_y = 4 + }, +/obj/item/grown/log/tree/stake, +/turf/open/floor/rogue/dirt, +/area/rogue) +"T" = ( +/obj/effect/dungeon_directional_helper/north, +/turf/open/floor/rogue/naturalstone, +/area/rogue) +"U" = ( +/obj/structure/roguetent, +/turf/open/floor/rogue/naturalstone, +/area/rogue) +"X" = ( +/turf/open/floor/rogue/dirt/road, +/area/rogue) +"Y" = ( +/mob/living/carbon/human/species/hobgoblin/npc, +/turf/open/floor/rogue/dirt/road, +/area/rogue) +"Z" = ( +/obj/effect/dungeon_directional_helper/east, +/turf/open/floor/rogue/naturalstone, +/area/rogue) + +(1,1,1) = {" +u +u +u +u +u +u +u +u +u +u +u +P +C +P +u +u +u +u +u +u +u +u +u +u +"} +(2,1,1) = {" +u +a +a +a +a +a +a +a +a +a +a +a +P +a +a +a +a +a +a +a +a +a +a +u +"} +(3,1,1) = {" +u +a +a +a +a +D +D +D +D +a +P +P +P +a +a +D +D +D +a +a +a +a +a +u +"} +(4,1,1) = {" +u +a +a +a +D +D +P +P +P +P +P +a +P +a +a +D +D +D +D +a +a +a +a +u +"} +(5,1,1) = {" +u +a +a +w +a +P +H +d +d +d +d +H +P +o +P +w +P +f +D +a +a +a +a +u +"} +(6,1,1) = {" +u +a +a +D +P +P +K +e +p +X +N +R +P +P +P +a +P +a +D +B +a +a +a +u +"} +(7,1,1) = {" +u +a +a +n +a +a +K +X +X +Y +X +y +w +a +w +P +P +P +w +w +D +a +a +u +"} +(8,1,1) = {" +u +a +a +D +w +a +K +p +N +X +X +y +w +w +S +w +w +x +P +f +w +D +a +u +"} +(9,1,1) = {" +u +a +a +a +w +a +K +X +X +O +X +R +w +i +q +w +a +P +P +a +w +a +a +u +"} +(10,1,1) = {" +u +a +D +D +f +w +H +j +j +j +j +H +w +S +w +w +f +P +P +P +P +P +P +u +"} +(11,1,1) = {" +P +a +a +a +w +w +w +b +P +P +P +a +a +h +D +w +P +b +P +P +P +a +M +P +"} +(12,1,1) = {" +T +P +P +P +P +P +P +P +a +P +P +a +L +w +D +a +P +a +P +P +P +P +P +G +"} +(13,1,1) = {" +P +a +a +w +w +w +a +P +P +P +P +a +w +a +P +w +f +P +P +a +P +P +P +P +"} +(14,1,1) = {" +u +a +a +n +w +s +w +P +w +P +P +w +w +w +a +w +w +J +P +P +P +P +P +u +"} +(15,1,1) = {" +u +a +a +a +w +a +f +P +H +d +y +H +w +w +S +w +w +a +P +A +w +a +P +u +"} +(16,1,1) = {" +u +a +a +a +D +a +w +a +K +p +X +R +w +q +i +a +w +w +w +w +f +D +a +u +"} +(17,1,1) = {" +u +a +a +a +a +D +w +w +K +O +Y +R +w +f +q +w +f +a +a +w +D +a +a +u +"} +(18,1,1) = {" +u +a +a +a +a +D +D +a +H +j +j +H +w +w +a +D +D +P +a +w +D +a +a +u +"} +(19,1,1) = {" +u +a +a +a +a +a +D +D +a +w +P +P +P +w +D +a +a +w +H +y +d +H +a +u +"} +(20,1,1) = {" +u +a +a +a +a +a +a +D +w +f +w +a +P +a +a +a +a +D +K +X +O +R +a +u +"} +(21,1,1) = {" +u +a +a +a +a +a +a +a +a +a +D +a +P +a +a +a +a +a +K +N +p +R +a +u +"} +(22,1,1) = {" +u +a +a +a +a +a +a +a +a +a +a +a +P +a +a +a +a +a +H +j +j +H +a +u +"} +(23,1,1) = {" +u +a +a +a +a +a +a +a +a +a +a +a +P +a +a +a +a +a +a +a +a +a +a +u +"} +(24,1,1) = {" +u +u +u +u +u +u +u +u +u +u +u +P +Z +P +u +u +u +u +u +u +u +u +u +u +"} + +(1,1,2) = {" +u +u +u +u +u +u +u +u +u +u +u +P +P +w +u +u +u +u +u +u +u +u +u +u +"} +(2,1,2) = {" +u +a +a +a +a +a +a +a +a +a +a +P +P +P +a +a +a +a +a +a +a +a +a +u +"} +(3,1,2) = {" +u +a +a +a +a +a +a +a +a +a +a +P +P +P +Q +D +D +a +a +a +a +a +a +u +"} +(4,1,2) = {" +u +a +a +a +a +a +D +D +D +a +a +w +a +P +w +w +D +D +a +a +a +a +a +u +"} +(5,1,2) = {" +u +a +a +a +a +a +D +w +w +w +w +P +w +P +w +w +D +a +a +a +a +a +a +u +"} +(6,1,2) = {" +u +a +a +a +a +B +w +w +a +a +h +P +x +P +a +H +d +d +d +H +a +a +a +u +"} +(7,1,2) = {" +u +a +a +a +a +P +w +P +P +P +w +w +w +P +w +K +P +P +F +R +D +a +a +u +"} +(8,1,2) = {" +u +a +a +a +a +P +P +H +d +d +H +w +w +F +P +U +w +a +P +R +D +D +a +u +"} +(9,1,2) = {" +u +a +a +a +a +D +w +K +t +w +R +w +i +w +w +K +w +w +l +R +D +D +a +u +"} +(10,1,2) = {" +z +a +a +a +a +D +w +K +w +w +I +w +w +w +w +H +j +j +j +H +P +P +w +u +"} +(11,1,2) = {" +w +w +a +a +a +D +w +H +j +j +H +w +w +a +D +P +P +w +w +a +a +P +P +P +"} +(12,1,2) = {" +P +w +w +w +a +D +w +P +P +P +P +a +c +w +P +w +a +P +w +a +w +P +P +P +"} +(13,1,2) = {" +P +P +a +w +w +a +w +P +P +P +P +a +a +P +w +D +a +P +P +P +J +P +P +w +"} +(14,1,2) = {" +z +P +J +P +P +w +w +P +a +P +P +a +o +P +P +P +P +P +P +P +a +w +a +u +"} +(15,1,2) = {" +u +a +a +w +P +P +P +P +A +w +w +w +w +w +A +P +a +w +w +P +w +D +a +u +"} +(16,1,2) = {" +u +a +a +a +w +w +P +P +P +w +a +w +w +w +a +P +w +w +w +D +a +a +a +u +"} +(17,1,2) = {" +u +a +a +a +a +D +D +D +P +P +b +w +a +w +P +P +w +w +D +a +a +a +a +u +"} +(18,1,2) = {" +u +a +a +a +a +a +a +D +D +P +P +P +w +w +P +P +s +D +a +a +a +a +a +u +"} +(19,1,2) = {" +u +a +a +a +a +a +a +a +a +D +P +P +w +a +P +a +a +a +a +a +a +a +a +u +"} +(20,1,2) = {" +u +a +a +a +a +a +a +a +a +D +D +P +w +P +P +a +a +a +a +a +a +a +a +u +"} +(21,1,2) = {" +u +a +a +a +a +a +a +a +a +a +w +P +a +P +w +a +a +a +a +a +a +a +a +u +"} +(22,1,2) = {" +u +a +a +a +a +a +a +a +a +a +J +P +P +P +a +a +a +a +a +a +a +a +a +u +"} +(23,1,2) = {" +u +a +a +a +a +a +a +a +a +a +a +P +P +P +a +a +a +a +a +a +a +a +a +u +"} +(24,1,2) = {" +u +u +u +u +u +u +u +u +u +u +u +w +P +P +u +u +u +u +u +u +u +u +u +u +"} diff --git a/code/datums/dungeon_generator/dungeon_templates/rooms/common.dm b/code/datums/dungeon_generator/dungeon_templates/rooms/common.dm index 7adffd278ca..4a7b19d502f 100644 --- a/code/datums/dungeon_generator/dungeon_templates/rooms/common.dm +++ b/code/datums/dungeon_generator/dungeon_templates/rooms/common.dm @@ -425,3 +425,14 @@ west_offset = 18 east_offset = 18 south_offset = 26 + +/datum/map_template/dungeon/room/hoblingoblin + mappath = "_maps/dungeon_generator/room/hoblingoblin.dmm" + id = "hoblin_goblin" + width = 24 + height = 24 + + north_offset = 12 + south_offset = 11 + east_offset = 11 + west_offset = 10 From 69526fe5e238a9d093c36d5e7dbf79d9ada030f4 Mon Sep 17 00:00:00 2001 From: Rudy Date: Thu, 26 Mar 2026 09:40:22 -0700 Subject: [PATCH 04/26] Found the issue some maps don't have areas defined --- _maps/dungeon_generator/room/hoblingoblin.dmm | 2602 +++++++++-------- 1 file changed, 1337 insertions(+), 1265 deletions(-) diff --git a/_maps/dungeon_generator/room/hoblingoblin.dmm b/_maps/dungeon_generator/room/hoblingoblin.dmm index 2ed281d9a15..38e993bca7e 100644 --- a/_maps/dungeon_generator/room/hoblingoblin.dmm +++ b/_maps/dungeon_generator/room/hoblingoblin.dmm @@ -1,1430 +1,1502 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"a" = ( -/turf/closed/mineral/random/rogue/high, -/area/rogue) -"b" = ( +"bV" = ( /mob/living/carbon/human/species/hobgoblin/npc, /turf/open/floor/rogue/naturalstone, -/area/rogue) -"c" = ( -/obj/structure/ladder/earth, -/obj/structure/ladder/earth, +/area/rogue/under/tomb) +"ek" = ( +/obj/machinery/light/rogue/torchholder/c, +/turf/open/floor/rogue/naturalstone, +/area/rogue/under/tomb) +"eU" = ( +/obj/item/reagent_containers/food/snacks/rogue/meat/sausage{ + pixel_x = 6; + pixel_y = 4 + }, +/obj/item/grown/log/tree/stake, /turf/open/floor/rogue/dirt, -/area/rogue) -"d" = ( +/area/rogue/under/tomb) +"gd" = ( /turf/closed/wall/mineral/rogue/tent{ dir = 4 }, /area/rogue) -"e" = ( -/obj/effect/spawner/lootdrop/general_loot_mid/x3, -/obj/structure/closet/crate/chest/wicker, -/turf/open/floor/rogue/dirt/road, -/area/rogue) -"f" = ( -/obj/structure/flora/roguegrass/water, -/turf/open/floor/rogue/dirt, -/area/rogue) -"h" = ( -/obj/machinery/light/rogue/torchholder/c, -/turf/open/floor/rogue/dirt, -/area/rogue) -"i" = ( -/obj/machinery/light/rogue/campfire/longlived, -/turf/open/floor/rogue/dirt, -/area/rogue) -"j" = ( +"gx" = ( +/obj/machinery/light/rogue/torchholder/l, +/turf/open/floor/rogue/naturalstone, +/area/rogue/under/tomb) +"gE" = ( /turf/closed/wall/mineral/rogue/tent{ - dir = 8 + dir = 1 }, /area/rogue) -"l" = ( +"iP" = ( +/turf/closed/wall/mineral/rogue/tent{ + dir = 1 + }, +/area/rogue/under/tomb) +"iW" = ( /mob/living/carbon/human/species/goblin/npc, -/obj/structure/bed/rogue/shit, /turf/open/floor/rogue/naturalstone, -/area/rogue) -"n" = ( -/obj/structure/flora/roguegrass/water, +/area/rogue/under/tomb) +"jK" = ( +/turf/closed/mineral/random/rogue/high, +/area/rogue/under/tomb) +"jQ" = ( +/obj/structure/chair/stool/rogue, +/turf/open/floor/rogue/dirt, +/area/rogue/under/tomb) +"kg" = ( /turf/open/water/swamp, /area/rogue) -"o" = ( -/obj/machinery/light/rogue/torchholder/l, +"lC" = ( +/obj/effect/dungeon_directional_helper/east, /turf/open/floor/rogue/naturalstone, -/area/rogue) -"p" = ( +/area/rogue/under/tomb) +"lE" = ( /obj/structure/bed/rogue/shit, /turf/open/floor/rogue/dirt/road, -/area/rogue) -"q" = ( -/obj/structure/chair/stool/rogue, +/area/rogue/under/tomb) +"lW" = ( +/mob/living/carbon/human/species/hobgoblin/npc, /turf/open/floor/rogue/dirt, /area/rogue) -"s" = ( -/obj/machinery/light/rogue/torchholder/r, -/turf/open/floor/rogue/dirt, +"nl" = ( +/turf/closed/wall/mineral/rogue/tent, /area/rogue) -"t" = ( +"nA" = ( +/obj/effect/dungeon_directional_helper/south, +/turf/open/floor/rogue/naturalstone, +/area/rogue/under/tomb) +"oV" = ( /mob/living/carbon/human/species/goblin/npc, /obj/structure/bed/rogue/shit, /turf/open/floor/rogue/dirt, /area/rogue) -"u" = ( -/turf/closed/mineral/rogue/bedrock, +"oW" = ( +/turf/closed/wall/mineral/rogue/wood, +/area/rogue) +"pQ" = ( +/turf/open/floor/rogue/dirt/road, +/area/rogue/under/tomb) +"qA" = ( +/mob/living/carbon/human/species/hobgoblin/npc, +/turf/open/floor/rogue/naturalstone, /area/rogue) -"w" = ( +"rZ" = ( +/obj/structure/ladder/earth, +/obj/structure/ladder/earth, /turf/open/floor/rogue/dirt, /area/rogue) -"x" = ( -/mob/living/carbon/human/species/goblin/npc, +"tj" = ( +/obj/effect/dungeon_directional_helper/west, /turf/open/floor/rogue/naturalstone, -/area/rogue) -"y" = ( +/area/rogue/under/tomb) +"tG" = ( /obj/structure/roguetent, -/turf/open/floor/rogue/dirt/road, +/turf/open/floor/rogue/naturalstone, /area/rogue) -"z" = ( -/turf/open/transparent/openspace, +"ui" = ( +/turf/closed/mineral/rogue/bedrock, /area/rogue) -"A" = ( +"ve" = ( /mob/living/carbon/human/species/goblin/npc, /turf/open/floor/rogue/dirt, /area/rogue) -"B" = ( +"vy" = ( +/turf/open/floor/rogue/dirt, +/area/rogue) +"wd" = ( /obj/machinery/light/rogue/torchholder/l, /turf/open/water/swamp, -/area/rogue) -"C" = ( -/obj/effect/dungeon_directional_helper/west, -/turf/open/floor/rogue/naturalstone, -/area/rogue) -"D" = ( +/area/rogue/under/tomb) +"wr" = ( /turf/open/water/swamp, +/area/rogue/under/tomb) +"wL" = ( +/obj/effect/dungeon_directional_helper/north, +/turf/open/floor/rogue/naturalstone, +/area/rogue/under/tomb) +"xU" = ( +/obj/machinery/light/rogue/torchholder/l, +/turf/open/floor/rogue/dirt, /area/rogue) -"F" = ( -/mob/living/carbon/human/species/hobgoblin/npc, +"xZ" = ( +/obj/machinery/light/rogue/torchholder/r, /turf/open/floor/rogue/dirt, +/area/rogue/under/tomb) +"yV" = ( +/mob/living/carbon/human/species/hobgoblin/npc, +/turf/open/floor/rogue/dirt/road, +/area/rogue/under/tomb) +"zC" = ( +/turf/closed/wall/mineral/rogue/tent{ + dir = 4 + }, +/area/rogue/under/tomb) +"Aq" = ( +/turf/open/floor/rogue/naturalstone, /area/rogue) -"G" = ( -/obj/effect/dungeon_directional_helper/south, +"BT" = ( +/mob/living/carbon/human/species/goblin/npc, +/turf/open/floor/rogue/dirt/road, +/area/rogue/under/tomb) +"Cf" = ( +/turf/closed/mineral/rogue/bedrock, +/area/rogue/under/tomb) +"CQ" = ( +/obj/machinery/light/rogue/torchholder/r, /turf/open/floor/rogue/naturalstone, /area/rogue) -"H" = ( +"CV" = ( +/obj/machinery/light/rogue/torchholder/c, +/turf/open/floor/rogue/dirt, +/area/rogue/under/tomb) +"Dd" = ( +/turf/open/floor/rogue/dirt, +/area/rogue/under/tomb) +"DQ" = ( +/obj/machinery/light/rogue/campfire/longlived, +/turf/open/floor/rogue/dirt, +/area/rogue/under/tomb) +"GJ" = ( +/obj/structure/ladder/earth, +/turf/open/floor/rogue/dirt, +/area/rogue/under/tomb) +"GW" = ( +/turf/closed/wall/mineral/rogue/tent, +/area/rogue/under/tomb) +"HK" = ( +/turf/open/floor/rogue/naturalstone, +/area/rogue/under/tomb) +"Jw" = ( /turf/closed/wall/mineral/rogue/wood, -/area/rogue) -"I" = ( +/area/rogue/under/tomb) +"JI" = ( /obj/structure/roguetent, /turf/open/floor/rogue/dirt, /area/rogue) -"J" = ( -/obj/machinery/light/rogue/torchholder/r, -/turf/open/floor/rogue/naturalstone, -/area/rogue) -"K" = ( -/turf/closed/wall/mineral/rogue/tent, +"JO" = ( +/turf/open/transparent/openspace, /area/rogue) -"L" = ( -/obj/structure/ladder/earth, +"KV" = ( +/obj/structure/flora/roguegrass/water, /turf/open/floor/rogue/dirt, -/area/rogue) -"M" = ( -/obj/machinery/light/rogue/torchholder/c, +/area/rogue/under/tomb) +"Lh" = ( +/obj/effect/spawner/lootdrop/general_loot_mid/x3, +/obj/structure/closet/crate/chest/wicker, +/turf/open/floor/rogue/dirt/road, +/area/rogue/under/tomb) +"Lx" = ( +/obj/machinery/light/rogue/torchholder/l, /turf/open/floor/rogue/naturalstone, /area/rogue) -"N" = ( -/mob/living/carbon/human/species/goblin/npc, -/turf/open/floor/rogue/dirt/road, +"LE" = ( +/obj/structure/flora/roguegrass/water, +/turf/open/water/swamp, +/area/rogue/under/tomb) +"LI" = ( +/obj/machinery/light/rogue/torchholder/l, +/turf/open/water/swamp, /area/rogue) -"O" = ( +"Mf" = ( /obj/effect/spawner/lootdrop/general_loot_low/x3, /obj/structure/closet/crate/chest/wicker, /turf/open/floor/rogue/dirt/road, +/area/rogue/under/tomb) +"MM" = ( +/obj/machinery/light/rogue/campfire/longlived, +/turf/open/floor/rogue/dirt, /area/rogue) -"P" = ( -/turf/open/floor/rogue/naturalstone, -/area/rogue) -"Q" = ( -/obj/machinery/light/rogue/torchholder/l, +"Pl" = ( +/obj/machinery/light/rogue/torchholder/c, /turf/open/floor/rogue/dirt, /area/rogue) -"R" = ( -/turf/closed/wall/mineral/rogue/tent{ - dir = 1 - }, +"Qc" = ( +/turf/closed/mineral/random/rogue/high, /area/rogue) -"S" = ( -/obj/item/reagent_containers/food/snacks/rogue/meat/sausage{ - pixel_x = 6; - pixel_y = 4 +"RO" = ( +/turf/closed/wall/mineral/rogue/tent{ + dir = 8 }, -/obj/item/grown/log/tree/stake, -/turf/open/floor/rogue/dirt, -/area/rogue) -"T" = ( -/obj/effect/dungeon_directional_helper/north, +/area/rogue/under/tomb) +"Ug" = ( +/obj/machinery/light/rogue/torchholder/r, /turf/open/floor/rogue/naturalstone, +/area/rogue/under/tomb) +"Uu" = ( +/mob/living/carbon/human/species/goblin/npc, +/turf/open/floor/rogue/dirt, +/area/rogue/under/tomb) +"VE" = ( +/obj/machinery/light/rogue/torchholder/r, +/turf/open/floor/rogue/dirt, /area/rogue) -"U" = ( +"VG" = ( /obj/structure/roguetent, -/turf/open/floor/rogue/naturalstone, -/area/rogue) -"X" = ( -/turf/open/floor/rogue/dirt/road, -/area/rogue) -"Y" = ( -/mob/living/carbon/human/species/hobgoblin/npc, /turf/open/floor/rogue/dirt/road, +/area/rogue/under/tomb) +"Xe" = ( +/mob/living/carbon/human/species/goblin/npc, +/obj/structure/bed/rogue/shit, +/turf/open/floor/rogue/naturalstone, /area/rogue) -"Z" = ( -/obj/effect/dungeon_directional_helper/east, +"XT" = ( +/mob/living/carbon/human/species/goblin/npc, /turf/open/floor/rogue/naturalstone, /area/rogue) +"ZE" = ( +/turf/closed/wall/mineral/rogue/tent{ + dir = 8 + }, +/area/rogue) (1,1,1) = {" -u -u -u -u -u -u -u -u -u -u -u -P -C -P -u -u -u -u -u -u -u -u -u -u +Cf +Cf +Cf +Cf +Cf +Cf +Cf +Cf +Cf +Cf +Cf +HK +tj +HK +Cf +Cf +Cf +Cf +Cf +Cf +Cf +Cf +Cf +Cf "} (2,1,1) = {" -u -a -a -a -a -a -a -a -a -a -a -a -P -a -a -a -a -a -a -a -a -a -a -u +Cf +jK +jK +jK +jK +jK +jK +jK +jK +jK +jK +jK +HK +jK +jK +jK +jK +jK +jK +jK +jK +jK +jK +Cf "} (3,1,1) = {" -u -a -a -a -a -D -D -D -D -a -P -P -P -a -a -D -D -D -a -a -a -a -a -u +Cf +jK +jK +jK +jK +wr +wr +wr +wr +jK +HK +HK +HK +jK +jK +wr +wr +wr +jK +jK +jK +jK +jK +Cf "} (4,1,1) = {" -u -a -a -a -D -D -P -P -P -P -P -a -P -a -a -D -D -D -D -a -a -a -a -u +Cf +jK +jK +jK +wr +wr +HK +HK +HK +HK +HK +jK +HK +jK +jK +wr +wr +wr +wr +jK +jK +jK +jK +Cf "} (5,1,1) = {" -u -a -a -w -a -P -H -d -d -d -d -H -P -o -P -w -P -f -D -a -a -a -a -u +Cf +jK +jK +Dd +jK +HK +Jw +zC +zC +zC +zC +Jw +HK +gx +HK +Dd +HK +KV +wr +jK +jK +jK +jK +Cf "} (6,1,1) = {" -u -a -a -D -P -P -K -e -p -X -N -R -P -P -P -a -P -a -D -B -a -a -a -u +Cf +jK +jK +wr +HK +HK +GW +Lh +lE +pQ +BT +iP +HK +HK +HK +jK +HK +jK +wr +wd +jK +jK +jK +Cf "} (7,1,1) = {" -u -a -a -n -a -a -K -X -X -Y -X -y -w -a -w -P -P -P -w -w -D -a -a -u +Cf +jK +jK +LE +jK +jK +GW +pQ +pQ +yV +pQ +VG +Dd +jK +Dd +HK +HK +HK +Dd +Dd +wr +jK +jK +Cf "} (8,1,1) = {" -u -a -a -D -w -a -K -p -N -X -X -y -w -w -S -w -w -x -P -f -w -D -a -u +Cf +jK +jK +wr +Dd +jK +GW +lE +BT +pQ +pQ +VG +Dd +Dd +eU +Dd +Dd +iW +HK +KV +Dd +wr +jK +Cf "} (9,1,1) = {" -u -a -a -a -w -a -K -X -X -O -X -R -w -i -q -w -a -P -P -a -w -a -a -u +Cf +jK +jK +jK +Dd +jK +GW +pQ +pQ +Mf +pQ +iP +Dd +DQ +jQ +Dd +jK +HK +HK +jK +Dd +jK +jK +Cf "} (10,1,1) = {" -u -a -D -D -f -w -H -j -j -j -j -H -w -S -w -w -f -P -P -P -P -P -P -u +Cf +jK +wr +wr +KV +Dd +Jw +RO +RO +RO +RO +Jw +Dd +eU +Dd +Dd +KV +HK +HK +HK +HK +HK +HK +Cf "} (11,1,1) = {" -P -a -a -a -w -w -w -b -P -P -P -a -a -h -D -w -P -b -P -P -P -a -M -P +HK +jK +jK +jK +Dd +Dd +Dd +bV +HK +HK +HK +jK +jK +CV +wr +Dd +HK +bV +HK +HK +HK +jK +ek +HK "} (12,1,1) = {" -T -P -P -P -P -P -P -P -a -P -P -a -L -w -D -a -P -a -P -P -P -P -P -G +wL +HK +HK +HK +HK +HK +HK +HK +jK +HK +HK +jK +GJ +Dd +wr +jK +HK +jK +HK +HK +HK +HK +HK +nA "} (13,1,1) = {" -P -a -a -w -w -w -a -P -P -P -P -a -w -a -P -w -f -P -P -a -P -P -P -P +HK +jK +jK +Dd +Dd +Dd +jK +HK +HK +HK +HK +jK +Dd +jK +HK +Dd +KV +HK +HK +jK +HK +HK +HK +HK "} (14,1,1) = {" -u -a -a -n -w -s -w -P -w -P -P -w -w -w -a -w -w -J -P -P -P -P -P -u +Cf +jK +jK +LE +Dd +xZ +Dd +HK +Dd +HK +HK +Dd +Dd +Dd +jK +Dd +Dd +Ug +HK +HK +HK +HK +HK +Cf "} (15,1,1) = {" -u -a -a -a -w -a -f -P -H -d -y -H -w -w -S -w -w -a -P -A -w -a -P -u +Cf +jK +jK +jK +Dd +jK +KV +HK +Jw +zC +VG +Jw +Dd +Dd +eU +Dd +Dd +jK +HK +Uu +Dd +jK +HK +Cf "} (16,1,1) = {" -u -a -a -a -D -a -w -a -K -p -X -R -w -q -i -a -w -w -w -w -f -D -a -u +Cf +jK +jK +jK +wr +jK +Dd +jK +GW +lE +pQ +iP +Dd +jQ +DQ +jK +Dd +Dd +Dd +Dd +KV +wr +jK +Cf "} (17,1,1) = {" -u -a -a -a -a -D -w -w -K -O -Y -R -w -f -q -w -f -a -a -w -D -a -a -u +Cf +jK +jK +jK +jK +wr +Dd +Dd +GW +Mf +yV +iP +Dd +KV +jQ +Dd +KV +jK +jK +Dd +wr +jK +jK +Cf "} (18,1,1) = {" -u -a -a -a -a -D -D -a -H -j -j -H -w -w -a -D -D -P -a -w -D -a -a -u +Cf +jK +jK +jK +jK +wr +wr +jK +Jw +RO +RO +Jw +Dd +Dd +jK +wr +wr +HK +jK +Dd +wr +jK +jK +Cf "} (19,1,1) = {" -u -a -a -a -a -a -D -D -a -w -P -P -P -w -D -a -a -w -H -y -d -H -a -u +Cf +jK +jK +jK +jK +jK +wr +wr +jK +Dd +HK +HK +HK +Dd +wr +jK +jK +Dd +Jw +VG +zC +Jw +jK +Cf "} (20,1,1) = {" -u -a -a -a -a -a -a -D -w -f -w -a -P -a -a -a -a -D -K -X -O -R -a -u +Cf +jK +jK +jK +jK +jK +jK +wr +Dd +KV +Dd +jK +HK +jK +jK +jK +jK +wr +GW +pQ +Mf +iP +jK +Cf "} (21,1,1) = {" -u -a -a -a -a -a -a -a -a -a -D -a -P -a -a -a -a -a -K -N -p -R -a -u +Cf +jK +jK +jK +jK +jK +jK +jK +jK +jK +wr +jK +HK +jK +jK +jK +jK +jK +GW +BT +lE +iP +jK +Cf "} (22,1,1) = {" -u -a -a -a -a -a -a -a -a -a -a -a -P -a -a -a -a -a -H -j -j -H -a -u +Cf +jK +jK +jK +jK +jK +jK +jK +jK +jK +jK +jK +HK +jK +jK +jK +jK +jK +Jw +RO +RO +Jw +jK +Cf "} (23,1,1) = {" -u -a -a -a -a -a -a -a -a -a -a -a -P -a -a -a -a -a -a -a -a -a -a -u +Cf +jK +jK +jK +jK +jK +jK +jK +jK +jK +jK +jK +HK +jK +jK +jK +jK +jK +jK +jK +jK +jK +jK +Cf "} (24,1,1) = {" -u -u -u -u -u -u -u -u -u -u -u -P -Z -P -u -u -u -u -u -u -u -u -u -u +Cf +Cf +Cf +Cf +Cf +Cf +Cf +Cf +Cf +Cf +Cf +HK +lC +HK +Cf +Cf +Cf +Cf +Cf +Cf +Cf +Cf +Cf +Cf "} (1,1,2) = {" -u -u -u -u -u -u -u -u -u -u -u -P -P -w -u -u -u -u -u -u -u -u -u -u +ui +ui +ui +ui +ui +ui +ui +ui +ui +ui +ui +Aq +Aq +vy +ui +ui +ui +ui +ui +ui +ui +ui +ui +ui "} (2,1,2) = {" -u -a -a -a -a -a -a -a -a -a -a -P -P -P -a -a -a -a -a -a -a -a -a -u +ui +Qc +Qc +Qc +Qc +Qc +Qc +Qc +Qc +Qc +Qc +Aq +Aq +Aq +Qc +Qc +Qc +Qc +Qc +Qc +Qc +Qc +Qc +ui "} (3,1,2) = {" -u -a -a -a -a -a -a -a -a -a -a -P -P -P -Q -D -D -a -a -a -a -a -a -u +ui +Qc +Qc +Qc +Qc +Qc +Qc +Qc +Qc +Qc +Qc +Aq +Aq +Aq +xU +kg +kg +Qc +Qc +Qc +Qc +Qc +Qc +ui "} (4,1,2) = {" -u -a -a -a -a -a -D -D -D -a -a -w -a -P -w -w -D -D -a -a -a -a -a -u +ui +Qc +Qc +Qc +Qc +Qc +kg +kg +kg +Qc +Qc +vy +Qc +Aq +vy +vy +kg +kg +Qc +Qc +Qc +Qc +Qc +ui "} (5,1,2) = {" -u -a -a -a -a -a -D -w -w -w -w -P -w -P -w -w -D -a -a -a -a -a -a -u +ui +Qc +Qc +Qc +Qc +Qc +kg +vy +vy +vy +vy +Aq +vy +Aq +vy +vy +kg +Qc +Qc +Qc +Qc +Qc +Qc +ui "} (6,1,2) = {" -u -a -a -a -a -B -w -w -a -a -h -P -x -P -a -H -d -d -d -H -a -a -a -u +ui +Qc +Qc +Qc +Qc +LI +vy +vy +Qc +Qc +Pl +Aq +XT +Aq +Qc +oW +gd +gd +gd +oW +Qc +Qc +Qc +ui "} (7,1,2) = {" -u -a -a -a -a -P -w -P -P -P -w -w -w -P -w -K -P -P -F -R -D -a -a -u +ui +Qc +Qc +Qc +Qc +Aq +vy +Aq +Aq +Aq +vy +vy +vy +Aq +vy +nl +Aq +Aq +lW +gE +kg +Qc +Qc +ui "} (8,1,2) = {" -u -a -a -a -a -P -P -H -d -d -H -w -w -F -P -U -w -a -P -R -D -D -a -u +ui +Qc +Qc +Qc +Qc +Aq +Aq +oW +gd +gd +oW +vy +vy +lW +Aq +tG +vy +Qc +Aq +gE +kg +kg +Qc +ui "} (9,1,2) = {" -u -a -a -a -a -D -w -K -t -w -R -w -i -w -w -K -w -w -l -R -D -D -a -u +ui +Qc +Qc +Qc +Qc +kg +vy +nl +oV +vy +gE +vy +MM +vy +vy +nl +vy +vy +Xe +gE +kg +kg +Qc +ui "} (10,1,2) = {" -z -a -a -a -a -D -w -K -w -w -I -w -w -w -w -H -j -j -j -H -P -P -w -u +JO +Qc +Qc +Qc +Qc +kg +vy +nl +vy +vy +JI +vy +vy +vy +vy +oW +ZE +ZE +ZE +oW +Aq +Aq +vy +ui "} (11,1,2) = {" -w -w -a -a -a -D -w -H -j -j -H -w -w -a -D -P -P -w -w -a -a -P -P -P +vy +vy +Qc +Qc +Qc +kg +vy +oW +ZE +ZE +oW +vy +vy +Qc +kg +Aq +Aq +vy +vy +Qc +Qc +Aq +Aq +Aq "} (12,1,2) = {" -P -w -w -w -a -D -w -P -P -P -P -a -c -w -P -w -a -P -w -a -w -P -P -P +Aq +vy +vy +vy +Qc +kg +vy +Aq +Aq +Aq +Aq +Qc +rZ +vy +Aq +vy +Qc +Aq +vy +Qc +vy +Aq +Aq +Aq "} (13,1,2) = {" -P -P -a -w -w -a -w -P -P -P -P -a -a -P -w -D -a -P -P -P -J -P -P -w +Aq +Aq +Qc +vy +vy +Qc +vy +Aq +Aq +Aq +Aq +Qc +Qc +Aq +vy +kg +Qc +Aq +Aq +Aq +CQ +Aq +Aq +vy "} (14,1,2) = {" -z -P -J -P -P -w -w -P -a -P -P -a -o -P -P -P -P -P -P -P -a -w -a -u +JO +Aq +CQ +Aq +Aq +vy +vy +Aq +Qc +Aq +Aq +Qc +Lx +Aq +Aq +Aq +Aq +Aq +Aq +Aq +Qc +vy +Qc +ui "} (15,1,2) = {" -u -a -a -w -P -P -P -P -A -w -w -w -w -w -A -P -a -w -w -P -w -D -a -u +ui +Qc +Qc +vy +Aq +Aq +Aq +Aq +ve +vy +vy +vy +vy +vy +ve +Aq +Qc +vy +vy +Aq +vy +kg +Qc +ui "} (16,1,2) = {" -u -a -a -a -w -w -P -P -P -w -a -w -w -w -a -P -w -w -w -D -a -a -a -u +ui +Qc +Qc +Qc +vy +vy +Aq +Aq +Aq +vy +Qc +vy +vy +vy +Qc +Aq +vy +vy +vy +kg +Qc +Qc +Qc +ui "} (17,1,2) = {" -u -a -a -a -a -D -D -D -P -P -b -w -a -w -P -P -w -w -D -a -a -a -a -u +ui +Qc +Qc +Qc +Qc +kg +kg +kg +Aq +Aq +qA +vy +Qc +vy +Aq +Aq +vy +vy +kg +Qc +Qc +Qc +Qc +ui "} (18,1,2) = {" -u -a -a -a -a -a -a -D -D -P -P -P -w -w -P -P -s -D -a -a -a -a -a -u +ui +Qc +Qc +Qc +Qc +Qc +Qc +kg +kg +Aq +Aq +Aq +vy +vy +Aq +Aq +VE +kg +Qc +Qc +Qc +Qc +Qc +ui "} (19,1,2) = {" -u -a -a -a -a -a -a -a -a -D -P -P -w -a -P -a -a -a -a -a -a -a -a -u +ui +Qc +Qc +Qc +Qc +Qc +Qc +Qc +Qc +kg +Aq +Aq +vy +Qc +Aq +Qc +Qc +Qc +Qc +Qc +Qc +Qc +Qc +ui "} (20,1,2) = {" -u -a -a -a -a -a -a -a -a -D -D -P -w -P -P -a -a -a -a -a -a -a -a -u +ui +Qc +Qc +Qc +Qc +Qc +Qc +Qc +Qc +kg +kg +Aq +vy +Aq +Aq +Qc +Qc +Qc +Qc +Qc +Qc +Qc +Qc +ui "} (21,1,2) = {" -u -a -a -a -a -a -a -a -a -a -w -P -a -P -w -a -a -a -a -a -a -a -a -u +ui +Qc +Qc +Qc +Qc +Qc +Qc +Qc +Qc +Qc +vy +Aq +Qc +Aq +vy +Qc +Qc +Qc +Qc +Qc +Qc +Qc +Qc +ui "} (22,1,2) = {" -u -a -a -a -a -a -a -a -a -a -J -P -P -P -a -a -a -a -a -a -a -a -a -u +ui +Qc +Qc +Qc +Qc +Qc +Qc +Qc +Qc +Qc +CQ +Aq +Aq +Aq +Qc +Qc +Qc +Qc +Qc +Qc +Qc +Qc +Qc +ui "} (23,1,2) = {" -u -a -a -a -a -a -a -a -a -a -a -P -P -P -a -a -a -a -a -a -a -a -a -u +ui +Qc +Qc +Qc +Qc +Qc +Qc +Qc +Qc +Qc +Qc +Aq +Aq +Aq +Qc +Qc +Qc +Qc +Qc +Qc +Qc +Qc +Qc +ui "} (24,1,2) = {" -u -u -u -u -u -u -u -u -u -u -u -w -P -P -u -u -u -u -u -u -u -u -u -u +ui +ui +ui +ui +ui +ui +ui +ui +ui +ui +ui +vy +Aq +Aq +ui +ui +ui +ui +ui +ui +ui +ui +ui +ui "} From aff240d8b9ea21437b4add9a85813aeb3ed350e6 Mon Sep 17 00:00:00 2001 From: Rudy Date: Thu, 26 Mar 2026 09:42:19 -0700 Subject: [PATCH 05/26] yeah idk whats doing this I think its the maps --- code/game/turfs/change_turf.dm | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/code/game/turfs/change_turf.dm b/code/game/turfs/change_turf.dm index 6eb18a07ab7..bb910c28132 100644 --- a/code/game/turfs/change_turf.dm +++ b/code/game/turfs/change_turf.dm @@ -97,16 +97,14 @@ GLOBAL_LIST_INIT(blacklisted_automated_baseturfs, typecacheof(list( SEND_SIGNAL(src, COMSIG_TURF_CHANGE, path, new_baseturfs, flags, post_change_callbacks) changing_turf = TRUE + qdel(src) //Just get the side effects and call Destroy //We do this here so anything that doesn't want to persist can clear itself var/list/old_comp_lookup = comp_lookup?.Copy() var/list/old_signal_procs = signal_procs?.Copy() - //CC Edit: This shouldn't runtime yet here we are... it's already checked above, so the path was nulled sometime between here and there? Logs don't lie. - if(path == null) //Possibly due to some turfs being deleted / swapped from multiple map generators. Just make a check if it's null. + if(!path) //CC Edit: This shouldn't runtime yet here we are... it's already checked above, so the path was nulled sometime between here and there? Logs don't lie. return var/turf/W = new path(src) - qdel(src) //CC Edit - Moved further down the proc [//Just get the side effects and call Destroy] - // WARNING WARNING // Turfs DO NOT lose their signals when they get replaced, REMEMBER THIS // It's possible because turfs are fucked, and if you have one in a list and it's replaced with another one, the list ref points to the new turf From 2de1d1eee15412fc9e005fd9f3cfdd4b180d95cd Mon Sep 17 00:00:00 2001 From: Rudy Date: Thu, 26 Mar 2026 09:58:16 -0700 Subject: [PATCH 06/26] OPE OPE THERE'S MULTI-Z HAHAHA --- .../hallway/Floortransition2.dmm | 78 +- _maps/dungeon_generator/room/hoblingoblin.dmm | 2670 ++++++++--------- 2 files changed, 1374 insertions(+), 1374 deletions(-) diff --git a/_maps/dungeon_generator/hallway/Floortransition2.dmm b/_maps/dungeon_generator/hallway/Floortransition2.dmm index c6b1de3545c..4fb4d215286 100644 --- a/_maps/dungeon_generator/hallway/Floortransition2.dmm +++ b/_maps/dungeon_generator/hallway/Floortransition2.dmm @@ -1,7 +1,7 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( /turf/open/floor/rogue/dirt, -/area/rogue/under/tomb/cave) +/area/rogue/under/tomb) "g" = ( /turf/closed/mineral/rogue/bedrock, /area/rogue/under/tomb/cave) @@ -9,54 +9,54 @@ /obj/structure/glowshroom, /obj/effect/dungeon_directional_helper/south, /turf/open/floor/rogue/dirt, -/area/rogue/under/tomb/cave) +/area/rogue/under/tomb) "j" = ( /obj/item/restraints/legcuffs/beartrap/armed/camouflage, /turf/open/floor/rogue/dirt, -/area/rogue/under/tomb/cave) +/area/rogue/under/tomb) "k" = ( /obj/structure/glowshroom, /turf/open/floor/rogue/dirt, -/area/rogue/under/tomb/cave) +/area/rogue/under/tomb) "l" = ( /obj/effect/dungeon_directional_helper/north, /turf/open/floor/rogue/dirt, -/area/rogue/under/tomb/cave) +/area/rogue/under/tomb) "n" = ( /turf/closed/mineral/rogue/bedrock, -/area/rogue) +/area/rogue/under/tomb) "p" = ( /obj/item/ammo_casing/caseless/rogue/arrow, /turf/open/floor/rogue/naturalstone, -/area/rogue) +/area/rogue/under/tomb/cave) "v" = ( /turf/open/floor/rogue/naturalstone, -/area/rogue) +/area/rogue/under/tomb/cave) "B" = ( /mob/living/carbon/human/species/goblin/npc/ambush/cave, /turf/open/floor/rogue/naturalstone, -/area/rogue) +/area/rogue/under/tomb/cave) "F" = ( /obj/structure/ladder/earth, /turf/open/floor/rogue/naturalstone, -/area/rogue) +/area/rogue/under/tomb/cave) "Q" = ( /obj/structure/ladder/earth, /turf/open/floor/rogue/dirt, -/area/rogue/under/tomb/cave) +/area/rogue/under/tomb) "R" = ( /turf/open/transparent/openspace, -/area/rogue) +/area/rogue/under/tomb/cave) (1,1,1) = {" -g -g -g -g -g -g -g -g +n +n +n +n +n +n +n +n "} (2,1,1) = {" a @@ -89,17 +89,6 @@ a a "} (5,1,1) = {" -g -g -g -g -g -g -g -g -"} - -(1,1,2) = {" n n n @@ -109,6 +98,17 @@ n n n "} + +(1,1,2) = {" +g +g +g +g +g +g +g +g +"} (2,1,2) = {" v v @@ -140,12 +140,12 @@ p v "} (5,1,2) = {" -n -n -n -n -n -n -n -n +g +g +g +g +g +g +g +g "} diff --git a/_maps/dungeon_generator/room/hoblingoblin.dmm b/_maps/dungeon_generator/room/hoblingoblin.dmm index 38e993bca7e..77c22adda19 100644 --- a/_maps/dungeon_generator/room/hoblingoblin.dmm +++ b/_maps/dungeon_generator/room/hoblingoblin.dmm @@ -1,1502 +1,1502 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"bV" = ( -/mob/living/carbon/human/species/hobgoblin/npc, -/turf/open/floor/rogue/naturalstone, +"bI" = ( +/mob/living/carbon/human/species/goblin/npc, +/turf/open/floor/rogue/dirt/road, /area/rogue/under/tomb) -"ek" = ( -/obj/machinery/light/rogue/torchholder/c, -/turf/open/floor/rogue/naturalstone, +"cF" = ( +/turf/open/water/swamp, /area/rogue/under/tomb) -"eU" = ( -/obj/item/reagent_containers/food/snacks/rogue/meat/sausage{ - pixel_x = 6; - pixel_y = 4 - }, -/obj/item/grown/log/tree/stake, +"dI" = ( +/obj/machinery/light/rogue/campfire/longlived, +/turf/open/floor/rogue/dirt, +/area/rogue/under/tomb/cave) +"ea" = ( +/obj/structure/flora/roguegrass/water, /turf/open/floor/rogue/dirt, /area/rogue/under/tomb) -"gd" = ( -/turf/closed/wall/mineral/rogue/tent{ - dir = 4 - }, -/area/rogue) -"gx" = ( -/obj/machinery/light/rogue/torchholder/l, -/turf/open/floor/rogue/naturalstone, +"eb" = ( +/turf/open/floor/rogue/dirt, /area/rogue/under/tomb) -"gE" = ( +"fn" = ( +/obj/structure/ladder/earth, +/obj/structure/ladder/earth, +/turf/open/floor/rogue/dirt, +/area/rogue/under/tomb/cave) +"gL" = ( +/mob/living/carbon/human/species/hobgoblin/npc, +/turf/open/floor/rogue/dirt, +/area/rogue/under/tomb/cave) +"mF" = ( /turf/closed/wall/mineral/rogue/tent{ dir = 1 }, -/area/rogue) -"iP" = ( +/area/rogue/under/tomb/cave) +"mH" = ( +/mob/living/carbon/human/species/hobgoblin/npc, +/turf/open/floor/rogue/naturalstone, +/area/rogue/under/tomb/cave) +"mJ" = ( +/turf/closed/mineral/random/rogue/high, +/area/rogue/under/tomb/cave) +"na" = ( +/obj/effect/spawner/lootdrop/general_loot_mid/x3, +/obj/structure/closet/crate/chest/wicker, +/turf/open/floor/rogue/dirt/road, +/area/rogue/under/tomb) +"ng" = ( +/turf/closed/mineral/random/rogue/high, +/area/rogue/under/tomb) +"nn" = ( /turf/closed/wall/mineral/rogue/tent{ - dir = 1 + dir = 4 }, /area/rogue/under/tomb) -"iW" = ( -/mob/living/carbon/human/species/goblin/npc, +"oe" = ( +/obj/effect/dungeon_directional_helper/north, /turf/open/floor/rogue/naturalstone, /area/rogue/under/tomb) -"jK" = ( -/turf/closed/mineral/random/rogue/high, -/area/rogue/under/tomb) -"jQ" = ( -/obj/structure/chair/stool/rogue, +"ow" = ( +/obj/structure/ladder/earth, /turf/open/floor/rogue/dirt, /area/rogue/under/tomb) -"kg" = ( -/turf/open/water/swamp, -/area/rogue) -"lC" = ( -/obj/effect/dungeon_directional_helper/east, +"oI" = ( +/obj/machinery/light/rogue/torchholder/l, /turf/open/floor/rogue/naturalstone, +/area/rogue/under/tomb/cave) +"oS" = ( +/obj/structure/chair/stool/rogue, +/turf/open/floor/rogue/dirt, /area/rogue/under/tomb) -"lE" = ( -/obj/structure/bed/rogue/shit, -/turf/open/floor/rogue/dirt/road, -/area/rogue/under/tomb) -"lW" = ( -/mob/living/carbon/human/species/hobgoblin/npc, +"pp" = ( +/obj/machinery/light/rogue/torchholder/c, /turf/open/floor/rogue/dirt, -/area/rogue) -"nl" = ( -/turf/closed/wall/mineral/rogue/tent, -/area/rogue) -"nA" = ( -/obj/effect/dungeon_directional_helper/south, +/area/rogue/under/tomb/cave) +"qr" = ( +/turf/closed/wall/mineral/rogue/tent{ + dir = 8 + }, +/area/rogue/under/tomb) +"qS" = ( +/mob/living/carbon/human/species/goblin/npc, /turf/open/floor/rogue/naturalstone, /area/rogue/under/tomb) -"oV" = ( +"qX" = ( +/obj/machinery/light/rogue/torchholder/l, +/turf/open/water/swamp, +/area/rogue/under/tomb/cave) +"rf" = ( /mob/living/carbon/human/species/goblin/npc, /obj/structure/bed/rogue/shit, -/turf/open/floor/rogue/dirt, -/area/rogue) -"oW" = ( +/turf/open/floor/rogue/naturalstone, +/area/rogue/under/tomb/cave) +"sh" = ( +/turf/open/floor/rogue/naturalstone, +/area/rogue/under/tomb/cave) +"sC" = ( /turf/closed/wall/mineral/rogue/wood, -/area/rogue) -"pQ" = ( -/turf/open/floor/rogue/dirt/road, /area/rogue/under/tomb) -"qA" = ( -/mob/living/carbon/human/species/hobgoblin/npc, -/turf/open/floor/rogue/naturalstone, -/area/rogue) -"rZ" = ( -/obj/structure/ladder/earth, -/obj/structure/ladder/earth, -/turf/open/floor/rogue/dirt, -/area/rogue) -"tj" = ( +"tp" = ( /obj/effect/dungeon_directional_helper/west, /turf/open/floor/rogue/naturalstone, /area/rogue/under/tomb) -"tG" = ( -/obj/structure/roguetent, -/turf/open/floor/rogue/naturalstone, -/area/rogue) -"ui" = ( -/turf/closed/mineral/rogue/bedrock, -/area/rogue) -"ve" = ( -/mob/living/carbon/human/species/goblin/npc, -/turf/open/floor/rogue/dirt, -/area/rogue) -"vy" = ( -/turf/open/floor/rogue/dirt, -/area/rogue) -"wd" = ( -/obj/machinery/light/rogue/torchholder/l, -/turf/open/water/swamp, +"ty" = ( +/turf/closed/wall/mineral/rogue/tent{ + dir = 1 + }, /area/rogue/under/tomb) -"wr" = ( +"ve" = ( +/obj/structure/flora/roguegrass/water, /turf/open/water/swamp, /area/rogue/under/tomb) -"wL" = ( -/obj/effect/dungeon_directional_helper/north, -/turf/open/floor/rogue/naturalstone, -/area/rogue/under/tomb) -"xU" = ( -/obj/machinery/light/rogue/torchholder/l, -/turf/open/floor/rogue/dirt, -/area/rogue) -"xZ" = ( +"vw" = ( /obj/machinery/light/rogue/torchholder/r, -/turf/open/floor/rogue/dirt, +/turf/open/floor/rogue/naturalstone, /area/rogue/under/tomb) -"yV" = ( -/mob/living/carbon/human/species/hobgoblin/npc, +"vx" = ( +/obj/structure/bed/rogue/shit, /turf/open/floor/rogue/dirt/road, /area/rogue/under/tomb) -"zC" = ( -/turf/closed/wall/mineral/rogue/tent{ - dir = 4 - }, -/area/rogue/under/tomb) -"Aq" = ( +"zi" = ( +/obj/effect/dungeon_directional_helper/south, /turf/open/floor/rogue/naturalstone, -/area/rogue) -"BT" = ( -/mob/living/carbon/human/species/goblin/npc, -/turf/open/floor/rogue/dirt/road, -/area/rogue/under/tomb) -"Cf" = ( -/turf/closed/mineral/rogue/bedrock, /area/rogue/under/tomb) -"CQ" = ( -/obj/machinery/light/rogue/torchholder/r, +"zo" = ( +/obj/machinery/light/rogue/torchholder/l, /turf/open/floor/rogue/naturalstone, -/area/rogue) -"CV" = ( -/obj/machinery/light/rogue/torchholder/c, -/turf/open/floor/rogue/dirt, /area/rogue/under/tomb) -"Dd" = ( -/turf/open/floor/rogue/dirt, +"Ax" = ( +/obj/effect/spawner/lootdrop/general_loot_low/x3, +/obj/structure/closet/crate/chest/wicker, +/turf/open/floor/rogue/dirt/road, /area/rogue/under/tomb) -"DQ" = ( -/obj/machinery/light/rogue/campfire/longlived, +"BQ" = ( +/obj/machinery/light/rogue/torchholder/l, /turf/open/floor/rogue/dirt, -/area/rogue/under/tomb) -"GJ" = ( -/obj/structure/ladder/earth, +/area/rogue/under/tomb/cave) +"Cu" = ( +/obj/structure/roguetent, /turf/open/floor/rogue/dirt, -/area/rogue/under/tomb) -"GW" = ( +/area/rogue/under/tomb/cave) +"Es" = ( +/obj/machinery/light/rogue/torchholder/r, +/turf/open/floor/rogue/naturalstone, +/area/rogue/under/tomb/cave) +"Gw" = ( /turf/closed/wall/mineral/rogue/tent, /area/rogue/under/tomb) -"HK" = ( +"Hi" = ( /turf/open/floor/rogue/naturalstone, /area/rogue/under/tomb) -"Jw" = ( +"Hn" = ( +/turf/closed/wall/mineral/rogue/tent, +/area/rogue/under/tomb/cave) +"Ip" = ( /turf/closed/wall/mineral/rogue/wood, -/area/rogue/under/tomb) -"JI" = ( +/area/rogue/under/tomb/cave) +"Iu" = ( +/turf/closed/mineral/rogue/bedrock, +/area/rogue/under/tomb/cave) +"Jf" = ( /obj/structure/roguetent, -/turf/open/floor/rogue/dirt, -/area/rogue) -"JO" = ( -/turf/open/transparent/openspace, -/area/rogue) -"KV" = ( -/obj/structure/flora/roguegrass/water, -/turf/open/floor/rogue/dirt, -/area/rogue/under/tomb) -"Lh" = ( -/obj/effect/spawner/lootdrop/general_loot_mid/x3, -/obj/structure/closet/crate/chest/wicker, /turf/open/floor/rogue/dirt/road, /area/rogue/under/tomb) -"Lx" = ( -/obj/machinery/light/rogue/torchholder/l, +"JD" = ( +/obj/effect/dungeon_directional_helper/east, /turf/open/floor/rogue/naturalstone, -/area/rogue) -"LE" = ( -/obj/structure/flora/roguegrass/water, -/turf/open/water/swamp, /area/rogue/under/tomb) -"LI" = ( -/obj/machinery/light/rogue/torchholder/l, -/turf/open/water/swamp, -/area/rogue) -"Mf" = ( -/obj/effect/spawner/lootdrop/general_loot_low/x3, -/obj/structure/closet/crate/chest/wicker, +"JE" = ( +/obj/structure/roguetent, +/turf/open/floor/rogue/naturalstone, +/area/rogue/under/tomb/cave) +"LG" = ( +/mob/living/carbon/human/species/hobgoblin/npc, /turf/open/floor/rogue/dirt/road, /area/rogue/under/tomb) -"MM" = ( -/obj/machinery/light/rogue/campfire/longlived, +"Nf" = ( +/turf/open/water/swamp, +/area/rogue/under/tomb/cave) +"Ns" = ( +/mob/living/carbon/human/species/goblin/npc, /turf/open/floor/rogue/dirt, -/area/rogue) -"Pl" = ( -/obj/machinery/light/rogue/torchholder/c, +/area/rogue/under/tomb/cave) +"OG" = ( +/obj/item/reagent_containers/food/snacks/rogue/meat/sausage{ + pixel_x = 6; + pixel_y = 4 + }, +/obj/item/grown/log/tree/stake, /turf/open/floor/rogue/dirt, -/area/rogue) -"Qc" = ( -/turf/closed/mineral/random/rogue/high, -/area/rogue) -"RO" = ( +/area/rogue/under/tomb) +"Pg" = ( /turf/closed/wall/mineral/rogue/tent{ dir = 8 }, -/area/rogue/under/tomb) -"Ug" = ( -/obj/machinery/light/rogue/torchholder/r, +/area/rogue/under/tomb/cave) +"PN" = ( +/turf/open/floor/rogue/dirt, +/area/rogue/under/tomb/cave) +"Qu" = ( +/mob/living/carbon/human/species/goblin/npc, /turf/open/floor/rogue/naturalstone, +/area/rogue/under/tomb/cave) +"Ri" = ( +/turf/closed/wall/mineral/rogue/tent{ + dir = 4 + }, +/area/rogue/under/tomb/cave) +"Rw" = ( +/obj/machinery/light/rogue/torchholder/l, +/turf/open/water/swamp, /area/rogue/under/tomb) -"Uu" = ( +"RG" = ( /mob/living/carbon/human/species/goblin/npc, +/obj/structure/bed/rogue/shit, /turf/open/floor/rogue/dirt, +/area/rogue/under/tomb/cave) +"RT" = ( +/obj/machinery/light/rogue/torchholder/c, +/turf/open/floor/rogue/naturalstone, /area/rogue/under/tomb) -"VE" = ( -/obj/machinery/light/rogue/torchholder/r, +"Sy" = ( +/turf/closed/mineral/rogue/bedrock, +/area/rogue/under/tomb) +"SG" = ( +/obj/machinery/light/rogue/torchholder/c, /turf/open/floor/rogue/dirt, -/area/rogue) -"VG" = ( -/obj/structure/roguetent, +/area/rogue/under/tomb) +"SP" = ( /turf/open/floor/rogue/dirt/road, /area/rogue/under/tomb) -"Xe" = ( -/mob/living/carbon/human/species/goblin/npc, -/obj/structure/bed/rogue/shit, +"VW" = ( +/obj/machinery/light/rogue/torchholder/r, +/turf/open/floor/rogue/dirt, +/area/rogue/under/tomb) +"Yn" = ( +/obj/machinery/light/rogue/torchholder/r, +/turf/open/floor/rogue/dirt, +/area/rogue/under/tomb/cave) +"Zg" = ( +/mob/living/carbon/human/species/hobgoblin/npc, /turf/open/floor/rogue/naturalstone, -/area/rogue) -"XT" = ( +/area/rogue/under/tomb) +"Zl" = ( +/obj/machinery/light/rogue/campfire/longlived, +/turf/open/floor/rogue/dirt, +/area/rogue/under/tomb) +"Zt" = ( /mob/living/carbon/human/species/goblin/npc, -/turf/open/floor/rogue/naturalstone, -/area/rogue) -"ZE" = ( -/turf/closed/wall/mineral/rogue/tent{ - dir = 8 - }, -/area/rogue) +/turf/open/floor/rogue/dirt, +/area/rogue/under/tomb) +"ZQ" = ( +/turf/open/transparent/openspace, +/area/rogue/under/tomb/cave) (1,1,1) = {" -Cf -Cf -Cf -Cf -Cf -Cf -Cf -Cf -Cf -Cf -Cf -HK -tj -HK -Cf -Cf -Cf -Cf -Cf -Cf -Cf -Cf -Cf -Cf +Sy +Sy +Sy +Sy +Sy +Sy +Sy +Sy +Sy +Sy +Sy +Hi +tp +Hi +Sy +Sy +Sy +Sy +Sy +Sy +Sy +Sy +Sy +Sy "} (2,1,1) = {" -Cf -jK -jK -jK -jK -jK -jK -jK -jK -jK -jK -jK -HK -jK -jK -jK -jK -jK -jK -jK -jK -jK -jK -Cf +Sy +ng +ng +ng +ng +ng +ng +ng +ng +ng +ng +ng +Hi +ng +ng +ng +ng +ng +ng +ng +ng +ng +ng +Sy "} (3,1,1) = {" -Cf -jK -jK -jK -jK -wr -wr -wr -wr -jK -HK -HK -HK -jK -jK -wr -wr -wr -jK -jK -jK -jK -jK -Cf +Sy +ng +ng +ng +ng +cF +cF +cF +cF +ng +Hi +Hi +Hi +ng +ng +cF +cF +cF +ng +ng +ng +ng +ng +Sy "} (4,1,1) = {" -Cf -jK -jK -jK -wr -wr -HK -HK -HK -HK -HK -jK -HK -jK -jK -wr -wr -wr -wr -jK -jK -jK -jK -Cf +Sy +ng +ng +ng +cF +cF +Hi +Hi +Hi +Hi +Hi +ng +Hi +ng +ng +cF +cF +cF +cF +ng +ng +ng +ng +Sy "} (5,1,1) = {" -Cf -jK -jK -Dd -jK -HK -Jw -zC -zC -zC -zC -Jw -HK -gx -HK -Dd -HK -KV -wr -jK -jK -jK -jK -Cf +Sy +ng +ng +eb +ng +Hi +sC +nn +nn +nn +nn +sC +Hi +zo +Hi +eb +Hi +ea +cF +ng +ng +ng +ng +Sy "} (6,1,1) = {" -Cf -jK -jK -wr -HK -HK -GW -Lh -lE -pQ -BT -iP -HK -HK -HK -jK -HK -jK -wr -wd -jK -jK -jK -Cf +Sy +ng +ng +cF +Hi +Hi +Gw +na +vx +SP +bI +ty +Hi +Hi +Hi +ng +Hi +ng +cF +Rw +ng +ng +ng +Sy "} (7,1,1) = {" -Cf -jK -jK -LE -jK -jK -GW -pQ -pQ -yV -pQ -VG -Dd -jK -Dd -HK -HK -HK -Dd -Dd -wr -jK -jK -Cf +Sy +ng +ng +ve +ng +ng +Gw +SP +SP +LG +SP +Jf +eb +ng +eb +Hi +Hi +Hi +eb +eb +cF +ng +ng +Sy "} (8,1,1) = {" -Cf -jK -jK -wr -Dd -jK -GW -lE -BT -pQ -pQ -VG -Dd -Dd -eU -Dd -Dd -iW -HK -KV -Dd -wr -jK -Cf +Sy +ng +ng +cF +eb +ng +Gw +vx +bI +SP +SP +Jf +eb +eb +OG +eb +eb +qS +Hi +ea +eb +cF +ng +Sy "} (9,1,1) = {" -Cf -jK -jK -jK -Dd -jK -GW -pQ -pQ -Mf -pQ -iP -Dd -DQ -jQ -Dd -jK -HK -HK -jK -Dd -jK -jK -Cf +Sy +ng +ng +ng +eb +ng +Gw +SP +SP +Ax +SP +ty +eb +Zl +oS +eb +ng +Hi +Hi +ng +eb +ng +ng +Sy "} (10,1,1) = {" -Cf -jK -wr -wr -KV -Dd -Jw -RO -RO -RO -RO -Jw -Dd -eU -Dd -Dd -KV -HK -HK -HK -HK -HK -HK -Cf +Sy +ng +cF +cF +ea +eb +sC +qr +qr +qr +qr +sC +eb +OG +eb +eb +ea +Hi +Hi +Hi +Hi +Hi +Hi +Sy "} (11,1,1) = {" -HK -jK -jK -jK -Dd -Dd -Dd -bV -HK -HK -HK -jK -jK -CV -wr -Dd -HK -bV -HK -HK -HK -jK -ek -HK +Hi +ng +ng +ng +eb +eb +eb +Zg +Hi +Hi +Hi +ng +ng +SG +cF +eb +Hi +Zg +Hi +Hi +Hi +ng +RT +Hi "} (12,1,1) = {" -wL -HK -HK -HK -HK -HK -HK -HK -jK -HK -HK -jK -GJ -Dd -wr -jK -HK -jK -HK -HK -HK -HK -HK -nA +oe +Hi +Hi +Hi +Hi +Hi +Hi +Hi +ng +Hi +Hi +ng +ow +eb +cF +ng +Hi +ng +Hi +Hi +Hi +Hi +Hi +zi "} (13,1,1) = {" -HK -jK -jK -Dd -Dd -Dd -jK -HK -HK -HK -HK -jK -Dd -jK -HK -Dd -KV -HK -HK -jK -HK -HK -HK -HK +Hi +ng +ng +eb +eb +eb +ng +Hi +Hi +Hi +Hi +ng +eb +ng +Hi +eb +ea +Hi +Hi +ng +Hi +Hi +Hi +Hi "} (14,1,1) = {" -Cf -jK -jK -LE -Dd -xZ -Dd -HK -Dd -HK -HK -Dd -Dd -Dd -jK -Dd -Dd -Ug -HK -HK -HK -HK -HK -Cf +Sy +ng +ng +ve +eb +VW +eb +Hi +eb +Hi +Hi +eb +eb +eb +ng +eb +eb +vw +Hi +Hi +Hi +Hi +Hi +Sy "} (15,1,1) = {" -Cf -jK -jK -jK -Dd -jK -KV -HK -Jw -zC -VG -Jw -Dd -Dd -eU -Dd -Dd -jK -HK -Uu -Dd -jK -HK -Cf +Sy +ng +ng +ng +eb +ng +ea +Hi +sC +nn +Jf +sC +eb +eb +OG +eb +eb +ng +Hi +Zt +eb +ng +Hi +Sy "} (16,1,1) = {" -Cf -jK -jK -jK -wr -jK -Dd -jK -GW -lE -pQ -iP -Dd -jQ -DQ -jK -Dd -Dd -Dd -Dd -KV -wr -jK -Cf +Sy +ng +ng +ng +cF +ng +eb +ng +Gw +vx +SP +ty +eb +oS +Zl +ng +eb +eb +eb +eb +ea +cF +ng +Sy "} (17,1,1) = {" -Cf -jK -jK -jK -jK -wr -Dd -Dd -GW -Mf -yV -iP -Dd -KV -jQ -Dd -KV -jK -jK -Dd -wr -jK -jK -Cf +Sy +ng +ng +ng +ng +cF +eb +eb +Gw +Ax +LG +ty +eb +ea +oS +eb +ea +ng +ng +eb +cF +ng +ng +Sy "} (18,1,1) = {" -Cf -jK -jK -jK -jK -wr -wr -jK -Jw -RO -RO -Jw -Dd -Dd -jK -wr -wr -HK -jK -Dd -wr -jK -jK -Cf +Sy +ng +ng +ng +ng +cF +cF +ng +sC +qr +qr +sC +eb +eb +ng +cF +cF +Hi +ng +eb +cF +ng +ng +Sy "} (19,1,1) = {" -Cf -jK -jK -jK -jK -jK -wr -wr -jK -Dd -HK -HK -HK -Dd -wr -jK -jK -Dd -Jw -VG -zC -Jw -jK -Cf +Sy +ng +ng +ng +ng +ng +cF +cF +ng +eb +Hi +Hi +Hi +eb +cF +ng +ng +eb +sC +Jf +nn +sC +ng +Sy "} (20,1,1) = {" -Cf -jK -jK -jK -jK -jK -jK -wr -Dd -KV -Dd -jK -HK -jK -jK -jK -jK -wr -GW -pQ -Mf -iP -jK -Cf +Sy +ng +ng +ng +ng +ng +ng +cF +eb +ea +eb +ng +Hi +ng +ng +ng +ng +cF +Gw +SP +Ax +ty +ng +Sy "} (21,1,1) = {" -Cf -jK -jK -jK -jK -jK -jK -jK -jK -jK -wr -jK -HK -jK -jK -jK -jK -jK -GW -BT -lE -iP -jK -Cf +Sy +ng +ng +ng +ng +ng +ng +ng +ng +ng +cF +ng +Hi +ng +ng +ng +ng +ng +Gw +bI +vx +ty +ng +Sy "} (22,1,1) = {" -Cf -jK -jK -jK -jK -jK -jK -jK -jK -jK -jK -jK -HK -jK -jK -jK -jK -jK -Jw -RO -RO -Jw -jK -Cf +Sy +ng +ng +ng +ng +ng +ng +ng +ng +ng +ng +ng +Hi +ng +ng +ng +ng +ng +sC +qr +qr +sC +ng +Sy "} (23,1,1) = {" -Cf -jK -jK -jK -jK -jK -jK -jK -jK -jK -jK -jK -HK -jK -jK -jK -jK -jK -jK -jK -jK -jK -jK -Cf +Sy +ng +ng +ng +ng +ng +ng +ng +ng +ng +ng +ng +Hi +ng +ng +ng +ng +ng +ng +ng +ng +ng +ng +Sy "} (24,1,1) = {" -Cf -Cf -Cf -Cf -Cf -Cf -Cf -Cf -Cf -Cf -Cf -HK -lC -HK -Cf -Cf -Cf -Cf -Cf -Cf -Cf -Cf -Cf -Cf +Sy +Sy +Sy +Sy +Sy +Sy +Sy +Sy +Sy +Sy +Sy +Hi +JD +Hi +Sy +Sy +Sy +Sy +Sy +Sy +Sy +Sy +Sy +Sy "} (1,1,2) = {" -ui -ui -ui -ui -ui -ui -ui -ui -ui -ui -ui -Aq -Aq -vy -ui -ui -ui -ui -ui -ui -ui -ui -ui -ui +Iu +Iu +Iu +Iu +Iu +Iu +Iu +Iu +Iu +Iu +Iu +sh +sh +PN +Iu +Iu +Iu +Iu +Iu +Iu +Iu +Iu +Iu +Iu "} (2,1,2) = {" -ui -Qc -Qc -Qc -Qc -Qc -Qc -Qc -Qc -Qc -Qc -Aq -Aq -Aq -Qc -Qc -Qc -Qc -Qc -Qc -Qc -Qc -Qc -ui +Iu +mJ +mJ +mJ +mJ +mJ +mJ +mJ +mJ +mJ +mJ +sh +sh +sh +mJ +mJ +mJ +mJ +mJ +mJ +mJ +mJ +mJ +Iu "} (3,1,2) = {" -ui -Qc -Qc -Qc -Qc -Qc -Qc -Qc -Qc -Qc -Qc -Aq -Aq -Aq -xU -kg -kg -Qc -Qc -Qc -Qc -Qc -Qc -ui +Iu +mJ +mJ +mJ +mJ +mJ +mJ +mJ +mJ +mJ +mJ +sh +sh +sh +BQ +Nf +Nf +mJ +mJ +mJ +mJ +mJ +mJ +Iu "} (4,1,2) = {" -ui -Qc -Qc -Qc -Qc -Qc -kg -kg -kg -Qc -Qc -vy -Qc -Aq -vy -vy -kg -kg -Qc -Qc -Qc -Qc -Qc -ui +Iu +mJ +mJ +mJ +mJ +mJ +Nf +Nf +Nf +mJ +mJ +PN +mJ +sh +PN +PN +Nf +Nf +mJ +mJ +mJ +mJ +mJ +Iu "} (5,1,2) = {" -ui -Qc -Qc -Qc -Qc -Qc -kg -vy -vy -vy -vy -Aq -vy -Aq -vy -vy -kg -Qc -Qc -Qc -Qc -Qc -Qc -ui +Iu +mJ +mJ +mJ +mJ +mJ +Nf +PN +PN +PN +PN +sh +PN +sh +PN +PN +Nf +mJ +mJ +mJ +mJ +mJ +mJ +Iu "} (6,1,2) = {" -ui -Qc -Qc -Qc -Qc -LI -vy -vy -Qc -Qc -Pl -Aq -XT -Aq -Qc -oW -gd -gd -gd -oW -Qc -Qc -Qc -ui +Iu +mJ +mJ +mJ +mJ +qX +PN +PN +mJ +mJ +pp +sh +Qu +sh +mJ +Ip +Ri +Ri +Ri +Ip +mJ +mJ +mJ +Iu "} (7,1,2) = {" -ui -Qc -Qc -Qc -Qc -Aq -vy -Aq -Aq -Aq -vy -vy -vy -Aq -vy -nl -Aq -Aq -lW -gE -kg -Qc -Qc -ui +Iu +mJ +mJ +mJ +mJ +sh +PN +sh +sh +sh +PN +PN +PN +sh +PN +Hn +sh +sh +gL +mF +Nf +mJ +mJ +Iu "} (8,1,2) = {" -ui -Qc -Qc -Qc -Qc -Aq -Aq -oW -gd -gd -oW -vy -vy -lW -Aq -tG -vy -Qc -Aq -gE -kg -kg -Qc -ui +Iu +mJ +mJ +mJ +mJ +sh +sh +Ip +Ri +Ri +Ip +PN +PN +gL +sh +JE +PN +mJ +sh +mF +Nf +Nf +mJ +Iu "} (9,1,2) = {" -ui -Qc -Qc -Qc -Qc -kg -vy -nl -oV -vy -gE -vy -MM -vy -vy -nl -vy -vy -Xe -gE -kg -kg -Qc -ui +Iu +mJ +mJ +mJ +mJ +Nf +PN +Hn +RG +PN +mF +PN +dI +PN +PN +Hn +PN +PN +rf +mF +Nf +Nf +mJ +Iu "} (10,1,2) = {" -JO -Qc -Qc -Qc -Qc -kg -vy -nl -vy -vy -JI -vy -vy -vy -vy -oW -ZE -ZE -ZE -oW -Aq -Aq -vy -ui +ZQ +mJ +mJ +mJ +mJ +Nf +PN +Hn +PN +PN +Cu +PN +PN +PN +PN +Ip +Pg +Pg +Pg +Ip +sh +sh +PN +Iu "} (11,1,2) = {" -vy -vy -Qc -Qc -Qc -kg -vy -oW -ZE -ZE -oW -vy -vy -Qc -kg -Aq -Aq -vy -vy -Qc -Qc -Aq -Aq -Aq +PN +PN +mJ +mJ +mJ +Nf +PN +Ip +Pg +Pg +Ip +PN +PN +mJ +Nf +sh +sh +PN +PN +mJ +mJ +sh +sh +sh "} (12,1,2) = {" -Aq -vy -vy -vy -Qc -kg -vy -Aq -Aq -Aq -Aq -Qc -rZ -vy -Aq -vy -Qc -Aq -vy -Qc -vy -Aq -Aq -Aq +sh +PN +PN +PN +mJ +Nf +PN +sh +sh +sh +sh +mJ +fn +PN +sh +PN +mJ +sh +PN +mJ +PN +sh +sh +sh "} (13,1,2) = {" -Aq -Aq -Qc -vy -vy -Qc -vy -Aq -Aq -Aq -Aq -Qc -Qc -Aq -vy -kg -Qc -Aq -Aq -Aq -CQ -Aq -Aq -vy +sh +sh +mJ +PN +PN +mJ +PN +sh +sh +sh +sh +mJ +mJ +sh +PN +Nf +mJ +sh +sh +sh +Es +sh +sh +PN "} (14,1,2) = {" -JO -Aq -CQ -Aq -Aq -vy -vy -Aq -Qc -Aq -Aq -Qc -Lx -Aq -Aq -Aq -Aq -Aq -Aq -Aq -Qc -vy -Qc -ui +ZQ +sh +Es +sh +sh +PN +PN +sh +mJ +sh +sh +mJ +oI +sh +sh +sh +sh +sh +sh +sh +mJ +PN +mJ +Iu "} (15,1,2) = {" -ui -Qc -Qc -vy -Aq -Aq -Aq -Aq -ve -vy -vy -vy -vy -vy -ve -Aq -Qc -vy -vy -Aq -vy -kg -Qc -ui +Iu +mJ +mJ +PN +sh +sh +sh +sh +Ns +PN +PN +PN +PN +PN +Ns +sh +mJ +PN +PN +sh +PN +Nf +mJ +Iu "} (16,1,2) = {" -ui -Qc -Qc -Qc -vy -vy -Aq -Aq -Aq -vy -Qc -vy -vy -vy -Qc -Aq -vy -vy -vy -kg -Qc -Qc -Qc -ui +Iu +mJ +mJ +mJ +PN +PN +sh +sh +sh +PN +mJ +PN +PN +PN +mJ +sh +PN +PN +PN +Nf +mJ +mJ +mJ +Iu "} (17,1,2) = {" -ui -Qc -Qc -Qc -Qc -kg -kg -kg -Aq -Aq -qA -vy -Qc -vy -Aq -Aq -vy -vy -kg -Qc -Qc -Qc -Qc -ui +Iu +mJ +mJ +mJ +mJ +Nf +Nf +Nf +sh +sh +mH +PN +mJ +PN +sh +sh +PN +PN +Nf +mJ +mJ +mJ +mJ +Iu "} (18,1,2) = {" -ui -Qc -Qc -Qc -Qc -Qc -Qc -kg -kg -Aq -Aq -Aq -vy -vy -Aq -Aq -VE -kg -Qc -Qc -Qc -Qc -Qc -ui +Iu +mJ +mJ +mJ +mJ +mJ +mJ +Nf +Nf +sh +sh +sh +PN +PN +sh +sh +Yn +Nf +mJ +mJ +mJ +mJ +mJ +Iu "} (19,1,2) = {" -ui -Qc -Qc -Qc -Qc -Qc -Qc -Qc -Qc -kg -Aq -Aq -vy -Qc -Aq -Qc -Qc -Qc -Qc -Qc -Qc -Qc -Qc -ui +Iu +mJ +mJ +mJ +mJ +mJ +mJ +mJ +mJ +Nf +sh +sh +PN +mJ +sh +mJ +mJ +mJ +mJ +mJ +mJ +mJ +mJ +Iu "} (20,1,2) = {" -ui -Qc -Qc -Qc -Qc -Qc -Qc -Qc -Qc -kg -kg -Aq -vy -Aq -Aq -Qc -Qc -Qc -Qc -Qc -Qc -Qc -Qc -ui +Iu +mJ +mJ +mJ +mJ +mJ +mJ +mJ +mJ +Nf +Nf +sh +PN +sh +sh +mJ +mJ +mJ +mJ +mJ +mJ +mJ +mJ +Iu "} (21,1,2) = {" -ui -Qc -Qc -Qc -Qc -Qc -Qc -Qc -Qc -Qc -vy -Aq -Qc -Aq -vy -Qc -Qc -Qc -Qc -Qc -Qc -Qc -Qc -ui +Iu +mJ +mJ +mJ +mJ +mJ +mJ +mJ +mJ +mJ +PN +sh +mJ +sh +PN +mJ +mJ +mJ +mJ +mJ +mJ +mJ +mJ +Iu "} (22,1,2) = {" -ui -Qc -Qc -Qc -Qc -Qc -Qc -Qc -Qc -Qc -CQ -Aq -Aq -Aq -Qc -Qc -Qc -Qc -Qc -Qc -Qc -Qc -Qc -ui +Iu +mJ +mJ +mJ +mJ +mJ +mJ +mJ +mJ +mJ +Es +sh +sh +sh +mJ +mJ +mJ +mJ +mJ +mJ +mJ +mJ +mJ +Iu "} (23,1,2) = {" -ui -Qc -Qc -Qc -Qc -Qc -Qc -Qc -Qc -Qc -Qc -Aq -Aq -Aq -Qc -Qc -Qc -Qc -Qc -Qc -Qc -Qc -Qc -ui +Iu +mJ +mJ +mJ +mJ +mJ +mJ +mJ +mJ +mJ +mJ +sh +sh +sh +mJ +mJ +mJ +mJ +mJ +mJ +mJ +mJ +mJ +Iu "} (24,1,2) = {" -ui -ui -ui -ui -ui -ui -ui -ui -ui -ui -ui -vy -Aq -Aq -ui -ui -ui -ui -ui -ui -ui -ui -ui -ui +Iu +Iu +Iu +Iu +Iu +Iu +Iu +Iu +Iu +Iu +Iu +PN +sh +sh +Iu +Iu +Iu +Iu +Iu +Iu +Iu +Iu +Iu +Iu "} From 937b80db566261775d0b4a6832fc60c4523ea5f9 Mon Sep 17 00:00:00 2001 From: Rudy Date: Thu, 26 Mar 2026 10:07:36 -0700 Subject: [PATCH 07/26] Removes Errant Area/Rogues and dungen uses noops --- _maps/dungeon_generator/boss/orcboss.dmm | 104 +- .../entry/Tented Entrance.dmm | 62 +- _maps/map_files/cove_world/cove_CentCom.dmm | 1242 +++++++++-------- _maps/map_files/cove_world/cove_world.dmm | 53 +- _maps/map_files/otherz/dungeon.dmm | 66 +- 5 files changed, 763 insertions(+), 764 deletions(-) diff --git a/_maps/dungeon_generator/boss/orcboss.dmm b/_maps/dungeon_generator/boss/orcboss.dmm index 3cd2f68a09c..0e0ad34e394 100644 --- a/_maps/dungeon_generator/boss/orcboss.dmm +++ b/_maps/dungeon_generator/boss/orcboss.dmm @@ -2,24 +2,24 @@ "as" = ( /obj/structure/fluff/railing/border, /turf/open/floor/rogue/ruinedwood, -/area/rogue) +/area/rogue/under/tomb/cave) "cl" = ( /obj/structure/table/wood{ icon_state = "tablewood1" }, /turf/open/floor/rogue/ruinedwood, -/area/rogue) +/area/rogue/under/tomb/cave) "fZ" = ( /mob/living/carbon/human/species/orc/npc/footsoldier, /turf/open/floor/rogue/dirt/road, -/area/rogue) +/area/rogue/under/tomb/cave) "hr" = ( /obj/structure/fluff/railing/border{ dir = 5 }, /mob/living/carbon/human/species/orc/npc/marauder, /turf/open/floor/rogue/ruinedwood, -/area/rogue) +/area/rogue/under/tomb/cave) "ih" = ( /obj/structure/fluff/railing/border{ dir = 4; @@ -27,14 +27,14 @@ pixel_y = 0 }, /turf/open/floor/rogue/ruinedwood, -/area/rogue) +/area/rogue/under/tomb/cave) "ji" = ( /obj/structure/table/wood{ icon_state = "tablewood1" }, /obj/machinery/light/rogue/candle, /turf/open/floor/rogue/ruinedwood, -/area/rogue) +/area/rogue/under/tomb/cave) "mA" = ( /obj/structure/chair/wood/rogue/throne, /obj/item/clothing/ring/active/nomag, @@ -43,17 +43,17 @@ name = "Orc Chief" }, /turf/open/floor/rogue/ruinedwood, -/area/rogue) +/area/rogue/under/tomb/cave) "ni" = ( /turf/open/floor/rogue/dirt, -/area/rogue) +/area/rogue/under/tomb/cave) "pF" = ( /obj/structure/fluff/railing/border{ dir = 6 }, /mob/living/carbon/human/species/orc/npc/marauder, /turf/open/floor/rogue/ruinedwood, -/area/rogue) +/area/rogue/under/tomb/cave) "qI" = ( /obj/structure/table/wood{ icon_state = "tablewood1" @@ -82,11 +82,11 @@ }, /obj/item/roguegem/random, /turf/open/floor/rogue/ruinedwood, -/area/rogue) +/area/rogue/under/tomb/cave) "qW" = ( /mob/living/carbon/human/species/orc/npc/footsoldier, /turf/open/floor/rogue/dirt, -/area/rogue) +/area/rogue/under/tomb/cave) "tg" = ( /obj/item/flint{ pixel_y = 4; @@ -95,25 +95,25 @@ /obj/structure/table/wood/crafted, /obj/item/clothing/mask/rogue/ragmask, /turf/open/floor/rogue/ruinedwood, -/area/rogue) +/area/rogue/under/tomb/cave) "tP" = ( /turf/closed/wall/mineral/rogue/decowood, -/area/rogue) +/area/rogue/under/tomb/cave) "vi" = ( /turf/open/transparent/openspace, -/area/rogue) +/area/rogue/under/tomb/cave) "vl" = ( /obj/machinery/light/rogue/campfire/densefire, /turf/open/floor/rogue/dirt, -/area/rogue) +/area/rogue/under/tomb/cave) "vD" = ( /obj/structure/roguetent, /turf/open/floor/rogue/dirt, -/area/rogue) +/area/rogue/under/tomb/cave) "vF" = ( /obj/item/rogueweapon/shovel, /turf/open/floor/rogue/dirt, -/area/rogue) +/area/rogue/under/tomb/cave) "wr" = ( /obj/structure/toilet, /obj/item/natural/poo{ @@ -128,19 +128,19 @@ }, /mob/living/carbon/human/species/orc/npc/footsoldier, /turf/open/floor/rogue/dirt, -/area/rogue) +/area/rogue/under/tomb/cave) "wJ" = ( /obj/machinery/light/rogue/candle/l, /turf/open/floor/rogue/ruinedwood, -/area/rogue) +/area/rogue/under/tomb/cave) "BM" = ( /obj/structure/ladder, /turf/open/floor/rogue/naturalstone, -/area/rogue) +/area/rogue/under/tomb/cave) "Cg" = ( /obj/structure/closet/dirthole/grave, /turf/open/floor/rogue/dirt, -/area/rogue) +/area/rogue/under/tomb/cave) "Cn" = ( /obj/structure/table/wood/crafted, /obj/item/clothing/mask/cigarette/rollie/nicotine{ @@ -150,100 +150,100 @@ pixel_y = 7 }, /turf/open/floor/rogue/ruinedwood, -/area/rogue) +/area/rogue/under/tomb/cave) "CV" = ( /mob/living/carbon/human/species/orc/npc/marauder, /turf/open/floor/rogue/dirt/road, -/area/rogue) +/area/rogue/under/tomb/cave) "Dd" = ( /obj/structure/roguewindow, /turf/open/floor/rogue/ruinedwood, -/area/rogue) +/area/rogue/under/tomb/cave) "DD" = ( /obj/structure/table/wood{ dir = 1; icon_state = "longtable" }, /turf/open/floor/rogue/ruinedwood, -/area/rogue) +/area/rogue/under/tomb/cave) "EU" = ( /obj/structure/fluff/walldeco/innsign{ pixel_x = 32 }, /turf/open/floor/rogue/dirt, -/area/rogue) +/area/rogue/under/tomb/cave) "Fq" = ( /turf/closed/mineral/rogue/bedrock, -/area/rogue) +/area/rogue/under/tomb/cave) "Fr" = ( /obj/item/clothing/shoes/roguetown/boots/nobleboot, /turf/open/floor/rogue/ruinedwood, -/area/rogue) +/area/rogue/under/tomb/cave) "FC" = ( /obj/machinery/light/rogue/firebowl, /turf/open/floor/rogue/dirt, -/area/rogue) +/area/rogue/under/tomb/cave) "Ha" = ( /obj/structure/ladder, /obj/structure/ladder, /turf/open/floor/rogue/dirt, -/area/rogue) +/area/rogue/under/tomb/cave) "Hr" = ( /mob/living/carbon/human/species/orc/npc/marauder, /obj/structure/chair/stool/rogue, /turf/open/floor/rogue/ruinedwood, -/area/rogue) +/area/rogue/under/tomb/cave) "HV" = ( /turf/open/floor/rogue/naturalstone, -/area/rogue) +/area/rogue/under/tomb/cave) "If" = ( /obj/structure/mineral_door/wood/window, /turf/open/floor/rogue/ruinedwood, -/area/rogue) +/area/rogue/under/tomb/cave) "Ig" = ( /obj/structure/stairs, /turf/open/floor/rogue/ruinedwood, -/area/rogue) +/area/rogue/under/tomb/cave) "IJ" = ( /obj/structure/chair/stool/rogue, /mob/living/carbon/human/species/orc/npc/berserker, /turf/open/floor/rogue/dirt, -/area/rogue) +/area/rogue/under/tomb/cave) "Kd" = ( /obj/structure/fermentation_keg/random/beer, /turf/open/floor/rogue/dirt, -/area/rogue) +/area/rogue/under/tomb/cave) "KW" = ( /obj/machinery/light/rogue/oven/south, /turf/open/floor/rogue/ruinedwood, -/area/rogue) +/area/rogue/under/tomb/cave) "Lj" = ( /obj/structure/bed/rogue/shit, /mob/living/simple_animal/hostile/retaliate/rogue/orc, /turf/open/floor/rogue/dirt, -/area/rogue) +/area/rogue/under/tomb/cave) "Ln" = ( /turf/closed/wall/mineral/rogue/tent, -/area/rogue) +/area/rogue/under/tomb/cave) "MQ" = ( /obj/structure/closet/dirthole/closed/loot, /turf/open/floor/rogue/dirt, -/area/rogue) +/area/rogue/under/tomb/cave) "NI" = ( /mob/living/carbon/human/species/orc/npc/berserker, /turf/open/floor/rogue/ruinedwood, -/area/rogue) +/area/rogue/under/tomb/cave) "OX" = ( /obj/structure/gate/bars/preopen, /turf/open/floor/rogue/dirt/road, -/area/rogue) +/area/rogue/under/tomb/cave) "PN" = ( /turf/open/floor/rogue/ruinedwood, -/area/rogue) +/area/rogue/under/tomb/cave) "PP" = ( /obj/structure/fluff/railing/fence, /turf/open/floor/rogue/dirt, -/area/rogue) +/area/rogue/under/tomb/cave) "Rc" = ( /obj/structure/closet/crate/chest/wicker, /obj/item/clothing/shoes/roguetown/boots/nobleboot, @@ -251,14 +251,14 @@ /obj/item/clothing/cloak/half/rider, /obj/item/clothing/suit/roguetown/armor/leather/vest/black, /turf/open/floor/rogue/ruinedwood, -/area/rogue) +/area/rogue/under/tomb/cave) "Ro" = ( /obj/machinery/light/rogue/candle{ pixel_y = 0; pixel_x = 32 }, /turf/open/floor/rogue/ruinedwood, -/area/rogue) +/area/rogue/under/tomb/cave) "Ug" = ( /obj/item/reagent_containers/glass/cup/skull{ pixel_x = -9 @@ -272,28 +272,28 @@ pixel_x = 12 }, /turf/open/floor/rogue/dirt/road, -/area/rogue) +/area/rogue/under/tomb/cave) "Wm" = ( /obj/structure/table/wood{ icon_state = "longtable" }, /obj/item/clothing/neck/roguetown/collar/bell_collar, /turf/open/floor/rogue/ruinedwood, -/area/rogue) +/area/rogue/under/tomb/cave) "XK" = ( /turf/closed/wall/mineral/rogue/wooddark, -/area/rogue) +/area/rogue/under/tomb/cave) "Yl" = ( /obj/structure/chair/stool/rogue, /turf/open/floor/rogue/ruinedwood, -/area/rogue) +/area/rogue/under/tomb/cave) "Ze" = ( /turf/open/floor/rogue/dirt/road, -/area/rogue) +/area/rogue/under/tomb/cave) "ZQ" = ( /obj/structure/chair/stool/rogue, /turf/open/floor/rogue/dirt, -/area/rogue) +/area/rogue/under/tomb/cave) (1,1,1) = {" Fq diff --git a/_maps/dungeon_generator/entry/Tented Entrance.dmm b/_maps/dungeon_generator/entry/Tented Entrance.dmm index d222b68357e..ab69a76baa6 100644 --- a/_maps/dungeon_generator/entry/Tented Entrance.dmm +++ b/_maps/dungeon_generator/entry/Tented Entrance.dmm @@ -1,29 +1,29 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( /turf/open/floor/rogue/hexstone, -/area/rogue) +/area/rogue/under/tomb/cave) "e" = ( /obj/structure/table/wood{ icon_state = "tablewood1" }, /turf/open/floor/rogue/hexstone, -/area/rogue) +/area/rogue/under/tomb/cave) "f" = ( /obj/machinery/light/rogue/torchholder/r, /turf/open/floor/rogue/ruinedwood/spiral, -/area/rogue) +/area/rogue/under/tomb/cave) "i" = ( /turf/closed/wall/mineral/rogue/decostone/end{ dir = 8 }, -/area/rogue) +/area/rogue/under/tomb/cave) "j" = ( /turf/closed/mineral/rogue/bedrock, -/area/rogue) +/area/rogue/under/tomb/cave) "l" = ( /obj/machinery/light/rogue/torchholder/r, /turf/open/floor/rogue/hexstone, -/area/rogue) +/area/rogue/under/tomb/cave) "m" = ( /obj/item/flashlight/flare/torch, /obj/item/flashlight/flare/torch{ @@ -38,121 +38,121 @@ icon_state = "tablewood1" }, /turf/open/floor/rogue/hexstone, -/area/rogue) +/area/rogue/under/tomb/cave) "p" = ( /obj/structure/fluff/railing/border{ dir = 9 }, /turf/open/transparent/openspace, -/area/rogue) +/area/rogue/under/tomb/cave) "r" = ( /obj/structure/stairs{ dir = 1 }, /turf/open/floor/rogue/ruinedwood/spiral, -/area/rogue) +/area/rogue/under/tomb/cave) "v" = ( /obj/structure/fluff/railing/border{ dir = 6 }, /turf/open/transparent/openspace, -/area/rogue) +/area/rogue/under/tomb/cave) "w" = ( /obj/structure/stairs, /turf/open/floor/rogue/hexstone, -/area/rogue) +/area/rogue/under/tomb/cave) "x" = ( /obj/item/reagent_containers/glass/bottle/waterskin, /obj/structure/table/wood{ icon_state = "tablewood1" }, /turf/open/floor/rogue/hexstone, -/area/rogue) +/area/rogue/under/tomb/cave) "y" = ( /obj/machinery/light/rogue/torchholder/l, /turf/open/floor/rogue/hexstone, -/area/rogue) +/area/rogue/under/tomb/cave) "z" = ( /obj/structure/fluff/railing/border{ dir = 8 }, /turf/open/transparent/openspace, -/area/rogue) +/area/rogue/under/tomb/cave) "A" = ( /obj/structure/fluff/railing/border{ dir = 5 }, /turf/open/transparent/openspace, -/area/rogue) +/area/rogue/under/tomb/cave) "C" = ( /turf/open/floor/rogue/ruinedwood/spiral, -/area/rogue) +/area/rogue/under/tomb/cave) "D" = ( /turf/open/transparent/openspace, -/area/rogue) +/area/rogue/under/tomb/cave) "F" = ( /turf/closed/wall/mineral/rogue/decostone, -/area/rogue) +/area/rogue/under/tomb/cave) "G" = ( /obj/effect/dungeon_directional_helper/south, /turf/open/floor/rogue/hexstone, -/area/rogue) +/area/rogue/under/tomb/cave) "H" = ( /obj/effect/dungeon_directional_helper/west, /turf/open/floor/rogue/hexstone, -/area/rogue) +/area/rogue/under/tomb/cave) "I" = ( /obj/effect/dungeon_directional_helper/east, /turf/open/floor/rogue/hexstone, -/area/rogue) +/area/rogue/under/tomb/cave) "K" = ( /obj/structure/fluff/railing/border{ dir = 10 }, /turf/open/transparent/openspace, -/area/rogue) +/area/rogue/under/tomb/cave) "N" = ( /obj/effect/dungeon_directional_helper/north, /turf/open/floor/rogue/hexstone, -/area/rogue) +/area/rogue/under/tomb/cave) "P" = ( /obj/structure/stairs, /turf/open/floor/rogue/ruinedwood/spiral, -/area/rogue) +/area/rogue/under/tomb/cave) "R" = ( /turf/closed/wall/mineral/rogue/decostone/end{ dir = 4 }, -/area/rogue) +/area/rogue/under/tomb/cave) "T" = ( /obj/machinery/light/rogue/torchholder/l, /turf/open/floor/rogue/ruinedwood/spiral, -/area/rogue) +/area/rogue/under/tomb/cave) "U" = ( /obj/structure/fluff/railing/border{ dir = 4 }, /turf/open/transparent/openspace, -/area/rogue) +/area/rogue/under/tomb/cave) "V" = ( /obj/structure/roguetent, /turf/open/floor/rogue/hexstone, -/area/rogue) +/area/rogue/under/tomb/cave) "W" = ( /obj/structure/dungeon_exit, /turf/open/floor/rogue/ruinedwood/spiral, -/area/rogue) +/area/rogue/under/tomb/cave) "X" = ( /obj/structure/stairs{ dir = 1 }, /turf/open/floor/rogue/hexstone, -/area/rogue) +/area/rogue/under/tomb/cave) "Y" = ( /turf/closed/wall/mineral/rogue/decostone/long{ dir = 1 }, -/area/rogue) +/area/rogue/under/tomb/cave) (1,1,1) = {" j diff --git a/_maps/map_files/cove_world/cove_CentCom.dmm b/_maps/map_files/cove_world/cove_CentCom.dmm index 89c7365c28a..f8a6d8d1ad2 100644 --- a/_maps/map_files/cove_world/cove_CentCom.dmm +++ b/_maps/map_files/cove_world/cove_CentCom.dmm @@ -6,15 +6,15 @@ /obj/item/rogueweapon/tongs, /obj/item/rogueweapon/tongs, /turf/open/floor/rogue/dirt/road, -/area/rogue) +/area/rogue/indoors) "ab" = ( /obj/machinery/anvil, /turf/open/floor/rogue/dirt/road, -/area/rogue) +/area/rogue/indoors) "ac" = ( /obj/structure/fermentation_keg/water, /turf/open/floor/rogue/dirt/road, -/area/rogue) +/area/rogue/indoors) "ae" = ( /obj/structure/closet/crate/chest, /obj/item/rogueweapon/hammer/steel, @@ -24,7 +24,7 @@ /obj/item/rogueweapon/hammer/steel, /obj/item/rogueweapon/hammer/steel, /turf/open/floor/rogue/dirt/road, -/area/rogue) +/area/rogue/indoors) "af" = ( /obj/structure/closet/crate/chest, /obj/item/rogueore/iron, @@ -42,11 +42,11 @@ /obj/item/rogueore/iron, /obj/item/rogueore/iron, /turf/open/floor/rogue/dirt/road, -/area/rogue) +/area/rogue/indoors) "ag" = ( /obj/machinery/light/rogue/forge, /turf/open/floor/rogue/dirt/road, -/area/rogue) +/area/rogue/indoors) "ah" = ( /obj/structure/closet/crate/chest, /obj/item/rogueore/coal, @@ -60,11 +60,11 @@ /obj/item/rogueore/coal, /obj/item/rogueore/coal, /turf/open/floor/rogue/dirt/road, -/area/rogue) +/area/rogue/indoors) "ai" = ( /obj/structure/closet/crate/chest, /turf/open/floor/rogue/dirt/road, -/area/rogue) +/area/rogue/indoors) "aj" = ( /obj/structure/closet/crate/chest, /obj/item/rogueore/gold, @@ -74,15 +74,15 @@ /obj/item/rogueore/gold, /obj/item/rogueore/gold, /turf/open/floor/rogue/dirt/road, -/area/rogue) +/area/rogue/indoors) "ak" = ( /obj/machinery/light/rogue/smelter/great, /turf/open/floor/rogue/dirt/road, -/area/rogue) +/area/rogue/indoors) "al" = ( /obj/machinery/light/rogue/smelter, /turf/open/floor/rogue/dirt/road, -/area/rogue) +/area/rogue/indoors) "am" = ( /obj/structure/table/wood{ dir = 10; @@ -100,7 +100,7 @@ /obj/item/clothing/wrists/roguetown/bracers/leather/heavy, /obj/item/clothing/wrists/roguetown/bracers/leather/heavy, /turf/open/floor/rogue/carpet, -/area/rogue) +/area/rogue/indoors) "ao" = ( /obj/structure/table/wood{ dir = 10; @@ -117,7 +117,7 @@ /obj/item/clothing/suit/roguetown/armor/leather/heavy/coat, /obj/item/clothing/suit/roguetown/armor/leather/heavy/coat, /turf/open/floor/rogue/carpet, -/area/rogue) +/area/rogue/indoors) "ap" = ( /obj/structure/table/wood{ dir = 10; @@ -140,7 +140,7 @@ /obj/item/clothing/suit/roguetown/armor/plate/full, /obj/item/clothing/suit/roguetown/armor/plate/full, /turf/open/floor/rogue/carpet, -/area/rogue) +/area/rogue/indoors) "aq" = ( /obj/structure/table/wood{ dir = 10; @@ -155,7 +155,7 @@ /obj/item/clothing/suit/roguetown/armor/gambeson/heavy, /obj/item/clothing/suit/roguetown/armor/gambeson/heavy, /turf/open/floor/rogue/carpet, -/area/rogue) +/area/rogue/indoors) "ar" = ( /obj/structure/table/wood{ dir = 10; @@ -169,7 +169,7 @@ /obj/item/clothing/suit/roguetown/armor/chainmail, /obj/item/clothing/suit/roguetown/armor/chainmail, /turf/open/floor/rogue/carpet, -/area/rogue) +/area/rogue/indoors) "as" = ( /obj/structure/table/wood{ dir = 10; @@ -178,7 +178,7 @@ /obj/item/clothing/suit/roguetown/armor/chainmail/iron, /obj/item/clothing/suit/roguetown/armor/chainmail/iron, /turf/open/floor/rogue/carpet, -/area/rogue) +/area/rogue/indoors) "at" = ( /obj/structure/table/wood{ dir = 10; @@ -188,7 +188,7 @@ /obj/item/clothing/suit/roguetown/armor/armordress/alt, /obj/item/clothing/suit/roguetown/armor/armordress, /turf/open/floor/rogue/carpet, -/area/rogue) +/area/rogue/indoors) "au" = ( /obj/structure/table/wood{ dir = 10; @@ -199,10 +199,10 @@ /obj/item/clothing/gloves/roguetown/chain, /obj/item/clothing/gloves/roguetown/chain, /turf/open/floor/rogue/carpet, -/area/rogue) +/area/rogue/indoors) "av" = ( /turf/open/floor/rogue/carpet, -/area/rogue) +/area/rogue/indoors) "aw" = ( /obj/structure/table/wood{ dir = 10; @@ -211,7 +211,7 @@ /obj/item/clothing/head/roguetown/helmet/heavy/crusader, /obj/item/clothing/head/roguetown/helmet/heavy/crusader/t, /turf/open/floor/rogue/carpet, -/area/rogue) +/area/rogue/indoors) "ax" = ( /obj/structure/table/wood{ dir = 10; @@ -223,11 +223,11 @@ /obj/item/clothing/head/roguetown/helmet/sallet, /obj/item/clothing/head/roguetown/helmet/sallet, /turf/open/floor/rogue/carpet, -/area/rogue) +/area/rogue/indoors) "ay" = ( /obj/effect/proc_holder/spell/invoked/heal, /turf/open/floor/rogue/carpet, -/area/rogue) +/area/rogue/indoors) "az" = ( /obj/structure/table/wood{ dir = 10; @@ -238,7 +238,7 @@ /obj/item/clothing/head/roguetown/helmet/sallet/visored, /obj/item/clothing/head/roguetown/helmet/sallet/visored, /turf/open/floor/rogue/carpet, -/area/rogue) +/area/rogue/indoors) "aA" = ( /obj/structure/table/wood{ dir = 10; @@ -250,7 +250,7 @@ /obj/item/clothing/under/roguetown/chainlegs, /obj/item/clothing/under/roguetown/chainlegs, /turf/open/floor/rogue/carpet, -/area/rogue) +/area/rogue/indoors) "aB" = ( /obj/structure/table/wood{ dir = 10; @@ -261,7 +261,7 @@ /obj/item/clothing/head/roguetown/helmet/leather/advanced, /obj/item/clothing/head/roguetown/helmet/leather/advanced, /turf/open/floor/rogue/carpet, -/area/rogue) +/area/rogue/indoors) "aC" = ( /obj/structure/table/wood{ dir = 10; @@ -272,7 +272,7 @@ /obj/item/clothing/mask/rogue/facemask/steel, /obj/item/clothing/mask/rogue/facemask/steel, /turf/open/floor/rogue/carpet, -/area/rogue) +/area/rogue/indoors) "aD" = ( /obj/structure/table/wood{ dir = 10; @@ -283,7 +283,7 @@ /obj/item/clothing/under/roguetown/heavy_leather_pants, /obj/item/clothing/under/roguetown/heavy_leather_pants, /turf/open/floor/rogue/carpet, -/area/rogue) +/area/rogue/indoors) "aE" = ( /obj/structure/table/wood{ dir = 10; @@ -293,7 +293,7 @@ /obj/item/clothing/head/roguetown/helmet, /obj/item/clothing/head/roguetown/helmet, /turf/open/floor/rogue/carpet, -/area/rogue) +/area/rogue/indoors) "aF" = ( /obj/structure/table/wood{ dir = 10; @@ -306,7 +306,7 @@ /obj/item/clothing/mask/rogue/facemask, /obj/item/clothing/mask/rogue/facemask, /turf/open/floor/rogue/carpet, -/area/rogue) +/area/rogue/indoors) "aG" = ( /obj/structure/table/wood{ dir = 10; @@ -317,7 +317,7 @@ /obj/item/clothing/under/roguetown/tights, /obj/item/clothing/under/roguetown/tights, /turf/open/floor/rogue/carpet, -/area/rogue) +/area/rogue/indoors) "aI" = ( /obj/structure/table/wood{ dir = 10; @@ -328,7 +328,7 @@ /obj/item/clothing/neck/roguetown/chaincoif, /obj/item/clothing/neck/roguetown/chaincoif, /turf/open/floor/rogue/carpet, -/area/rogue) +/area/rogue/indoors) "aJ" = ( /obj/structure/table/wood{ dir = 10; @@ -337,7 +337,7 @@ /obj/item/clothing/ring/active/nomag, /obj/item/clothing/ring/active/nomag, /turf/open/floor/rogue/carpet, -/area/rogue) +/area/rogue/indoors) "aK" = ( /obj/structure/table/wood{ dir = 10; @@ -349,7 +349,7 @@ /obj/item/clothing/shoes/roguetown/boots, /obj/item/clothing/shoes/roguetown/boots, /turf/open/floor/rogue/carpet, -/area/rogue) +/area/rogue/indoors) "aL" = ( /obj/structure/table/wood{ dir = 10; @@ -362,7 +362,7 @@ /obj/item/clothing/neck/roguetown/leather, /obj/item/clothing/neck/roguetown/leather, /turf/open/floor/rogue/carpet, -/area/rogue) +/area/rogue/indoors) "aM" = ( /obj/structure/table/wood{ dir = 10; @@ -373,7 +373,7 @@ /obj/item/clothing/neck/roguetown/talkstone, /obj/item/clothing/neck/roguetown/talkstone, /turf/open/floor/rogue/carpet, -/area/rogue) +/area/rogue/indoors) "aN" = ( /obj/structure/table/wood{ dir = 10; @@ -385,7 +385,7 @@ /obj/item/clothing/shoes/roguetown/boots/armor, /obj/item/clothing/shoes/roguetown/boots/armor, /turf/open/floor/rogue/carpet, -/area/rogue) +/area/rogue/indoors) "aO" = ( /obj/structure/table/wood{ dir = 10; @@ -395,11 +395,11 @@ /obj/item/clothing/neck/roguetown/psicross, /obj/item/clothing/neck/roguetown/psicross, /turf/open/floor/rogue/carpet, -/area/rogue) +/area/rogue/indoors) "aQ" = ( /obj/item/inhand_tester, /turf/open/floor/rogue/blocks, -/area/rogue) +/area/rogue/indoors) "aS" = ( /obj/structure/table/wood{ dir = 10; @@ -409,7 +409,7 @@ /obj/item/rogueweapon/greatsword/zwei, /obj/item/rogueweapon/greatsword/zwei, /turf/open/floor/rogue/cobble, -/area/rogue) +/area/rogue/indoors) "aT" = ( /obj/structure/table/wood{ dir = 10; @@ -419,7 +419,7 @@ /obj/item/rogueweapon/flail, /obj/item/rogueweapon/flail, /turf/open/floor/rogue/cobble, -/area/rogue) +/area/rogue/indoors) "aU" = ( /obj/structure/table/wood{ dir = 10; @@ -428,7 +428,7 @@ /obj/item/rogueweapon/eaglebeak/lucerne, /obj/item/rogueweapon/eaglebeak/lucerne, /turf/open/floor/rogue/cobble, -/area/rogue) +/area/rogue/indoors) "aV" = ( /obj/structure/table/wood{ dir = 10; @@ -437,7 +437,7 @@ /obj/item/rogueweapon/halberd/bardiche, /obj/item/rogueweapon/halberd/bardiche, /turf/open/floor/rogue/cobble, -/area/rogue) +/area/rogue/indoors) "aW" = ( /obj/structure/table/wood{ dir = 10; @@ -446,7 +446,7 @@ /obj/item/rogueweapon/spear, /obj/item/rogueweapon/spear, /turf/open/floor/rogue/cobble, -/area/rogue) +/area/rogue/indoors) "aX" = ( /obj/structure/table/wood{ dir = 10; @@ -457,7 +457,7 @@ /obj/item/rogueweapon/sword/long/exe, /obj/item/rogueweapon/sword/long/exe, /turf/open/floor/rogue/cobble, -/area/rogue) +/area/rogue/indoors) "aY" = ( /obj/structure/table/wood{ dir = 10; @@ -470,7 +470,7 @@ /obj/item/rogueweapon/sword/long, /obj/item/rogueweapon/sword/long, /turf/open/floor/rogue/cobble, -/area/rogue) +/area/rogue/indoors) "aZ" = ( /obj/structure/table/wood{ dir = 10; @@ -483,7 +483,7 @@ /obj/item/rogueweapon/sword/iron, /obj/item/rogueweapon/sword/iron, /turf/open/floor/rogue/cobble, -/area/rogue) +/area/rogue/indoors) "ba" = ( /obj/structure/table/wood{ dir = 10; @@ -495,7 +495,7 @@ /obj/item/rogueweapon/sword/decorated, /obj/item/rogueweapon/sword/decorated, /turf/open/floor/rogue/cobble, -/area/rogue) +/area/rogue/indoors) "bb" = ( /obj/structure/table/wood{ dir = 10; @@ -506,7 +506,7 @@ /obj/item/rogueweapon/sword, /obj/item/rogueweapon/sword, /turf/open/floor/rogue/cobble, -/area/rogue) +/area/rogue/indoors) "bd" = ( /obj/structure/table/wood{ dir = 10; @@ -515,7 +515,7 @@ /obj/item/rogueweapon/sword/rapier, /obj/item/rogueweapon/sword/rapier/dec, /turf/open/floor/rogue/cobble, -/area/rogue) +/area/rogue/indoors) "be" = ( /obj/structure/table/wood{ dir = 10; @@ -526,7 +526,7 @@ /obj/item/rogueweapon/mace/woodclub, /obj/item/rogueweapon/mace/woodclub, /turf/open/floor/rogue/cobble, -/area/rogue) +/area/rogue/indoors) "bf" = ( /obj/structure/table/wood{ dir = 10; @@ -536,29 +536,29 @@ /obj/item/rogueweapon/mace, /obj/item/rogueweapon/mace, /turf/open/floor/rogue/cobble, -/area/rogue) +/area/rogue/indoors) "bg" = ( /obj/effect/landmark/events/testportal{ aportalloc = "decap" }, /turf/open/floor/rogue/blocks, -/area/rogue) +/area/rogue/indoors) "bh" = ( /obj/effect/landmark/events/testportal{ aportalloc = "church" }, /turf/open/floor/rogue/blocks, -/area/rogue) +/area/rogue/indoors) "bi" = ( /obj/effect/landmark/events/testportal{ aportalloc = "manor" }, /turf/open/floor/rogue/blocks, -/area/rogue) +/area/rogue/indoors) "bk" = ( /obj/item/inhand_tester/big, /turf/open/floor/rogue/blocks, -/area/rogue) +/area/rogue/indoors) "bl" = ( /obj/structure/table/wood{ dir = 10; @@ -569,15 +569,15 @@ /obj/item/rogueweapon/mace/goden, /obj/item/rogueweapon/mace/goden, /turf/open/floor/rogue/cobble, -/area/rogue) +/area/rogue/indoors) "bm" = ( /obj/item/reagent_containers/glass/bucket, /turf/open/floor/rogue/cobble, -/area/rogue) +/area/rogue/indoors) "bn" = ( /obj/item/roguebin/water/gross, /turf/open/floor/rogue/cobble, -/area/rogue) +/area/rogue/indoors) "bo" = ( /obj/structure/table/wood{ dir = 10; @@ -587,7 +587,7 @@ /obj/item/rogueweapon/stoneaxe, /obj/item/rogueweapon/stoneaxe, /turf/open/floor/rogue/cobble, -/area/rogue) +/area/rogue/indoors) "bp" = ( /obj/structure/table/wood{ dir = 10; @@ -600,7 +600,7 @@ /obj/item/rogueweapon/stoneaxe/woodcut, /obj/item/rogueweapon/stoneaxe/woodcut, /turf/open/floor/rogue/cobble, -/area/rogue) +/area/rogue/indoors) "bq" = ( /obj/structure/table/wood{ dir = 10; @@ -612,7 +612,7 @@ /obj/item/rogueweapon/stoneaxe/battle, /obj/item/rogueweapon/stoneaxe/battle, /turf/open/floor/rogue/cobble, -/area/rogue) +/area/rogue/indoors) "br" = ( /obj/structure/table/wood{ dir = 10; @@ -621,7 +621,7 @@ /obj/item/rogueweapon/shield/tower/metal, /obj/item/rogueweapon/shield/tower/metal, /turf/open/floor/rogue/cobble, -/area/rogue) +/area/rogue/indoors) "bs" = ( /obj/structure/table/wood{ dir = 10; @@ -630,7 +630,7 @@ /obj/item/rogueweapon/shield/wood, /obj/item/rogueweapon/shield/wood, /turf/open/floor/rogue/cobble, -/area/rogue) +/area/rogue/indoors) "bt" = ( /obj/structure/table/wood{ dir = 10; @@ -642,25 +642,25 @@ /obj/item/rogueweapon/mace/goden/steel, /obj/item/rogueweapon/mace/goden/steel, /turf/open/floor/rogue/cobble, -/area/rogue) +/area/rogue/indoors) "bu" = ( /obj/effect/landmark/events/testportal{ aportalloc = "forest" }, /turf/open/floor/rogue/blocks, -/area/rogue) +/area/rogue/indoors) "bv" = ( /obj/effect/landmark/events/testportal{ aportalloc = "woodsman" }, /turf/open/floor/rogue/blocks, -/area/rogue) +/area/rogue/indoors) "bw" = ( /obj/effect/landmark/events/testportal{ aportalloc = "latespawn" }, /turf/open/floor/rogue/blocks, -/area/rogue) +/area/rogue/indoors) "by" = ( /obj/structure/table/wood{ dir = 10; @@ -672,7 +672,10 @@ /obj/item/rogueweapon/mace/steel, /obj/item/rogueweapon/mace/steel, /turf/open/floor/rogue/cobble, -/area/rogue) +/area/rogue/indoors) +"bB" = ( +/turf/closed/mineral/rogue/bedrock, +/area/rogue/underworld/dream) "bP" = ( /obj/structure/closet/crate/chest, /obj/effect/decal/cleanable/dirt/cobweb, @@ -689,7 +692,7 @@ /obj/item/rogueweapon/sword/sabre, /obj/item/rogueweapon/sword/sabre, /turf/open/floor/rogue/cobble, -/area/rogue) +/area/rogue/indoors) "dK" = ( /obj/effect/landmark/deaths_door/entry/tl, /turf/open/floor/rogue/underworld/road, @@ -752,7 +755,7 @@ /obj/item/rogueweapon/eaglebeak, /obj/item/rogueweapon/eaglebeak, /turf/open/floor/rogue/cobble, -/area/rogue) +/area/rogue/indoors) "fk" = ( /obj/structure/spider/stickyweb, /turf/open/floor/rogue/hexstone, @@ -851,16 +854,15 @@ /turf/open/floor/rogue/hexstone, /area/rogue/under/cave/inhumen) "hK" = ( -/obj/effect/solid_invisible_barrier, -/turf/open/floor/rogue/underworld/space/quiet, -/area/rogue) +/turf/closed/mineral/rogue/bedrock, +/area) "hO" = ( /obj/structure/noose/gallows, /turf/open/floor/rogue/dirt, /area/rogue/under/cave/inhumen) "hQ" = ( /turf/open/floor/rogue/blocks, -/area/rogue) +/area/rogue/indoors) "hS" = ( /obj/item/chair/rogue, /turf/open/floor/rogue/concrete, @@ -930,7 +932,7 @@ /obj/item/rogueweapon/flail/sflail, /obj/item/rogueweapon/flail/sflail, /turf/open/floor/rogue/cobble, -/area/rogue) +/area/rogue/indoors) "jL" = ( /obj/structure/closet/crate/chest, /obj/effect/decal/cleanable/blood{ @@ -947,7 +949,7 @@ /obj/item/rogueweapon/huntingknife/idagger, /obj/item/rogueweapon/huntingknife/idagger, /turf/open/floor/rogue/cobble, -/area/rogue) +/area/rogue/indoors) "ki" = ( /turf/open/floor/rogue/wood/herringbone, /area/rogue/indoors/eventarea) @@ -978,7 +980,7 @@ /obj/item/rogueweapon/greatsword, /obj/item/rogueweapon/greatsword, /turf/open/floor/rogue/cobble, -/area/rogue) +/area/rogue/indoors) "kN" = ( /obj/machinery/light/rogue/candle/blue, /turf/open/floor/rogue/cobble, @@ -1007,7 +1009,7 @@ /area/rogue/indoors/eventarea) "lw" = ( /turf/open/floor/rogue/cobble, -/area/rogue) +/area/rogue/indoors) "lJ" = ( /turf/open/floor/rogue/volcanic, /area/rogue/indoors/eventarea) @@ -1078,7 +1080,7 @@ /obj/item/rogueweapon/sword/cutlass, /obj/item/rogueweapon/sword/cutlass, /turf/open/floor/rogue/cobble, -/area/rogue) +/area/rogue/indoors) "nS" = ( /obj/item/rogueweapon/pick, /turf/open/floor/rogue/naturalstone, @@ -1205,7 +1207,7 @@ /obj/item/rogueweapon/shovel, /obj/item/rogueweapon/shovel, /turf/open/floor/rogue/cobble, -/area/rogue) +/area/rogue/indoors) "pK" = ( /obj/effect/decal/cleanable/blood/tracks{ dir = 5 @@ -1295,7 +1297,7 @@ /area/rogue/indoors/eventarea) "rQ" = ( /turf/closed, -/area/rogue) +/area) "rR" = ( /turf/open/floor/rogue/ruinedwood, /area/rogue/indoors/eventarea) @@ -1313,7 +1315,7 @@ aportalloc = "bandit" }, /turf/open/floor/rogue/blocks, -/area/rogue) +/area/rogue/indoors) "sK" = ( /obj/structure/fluff/statue/femalestatue/zizo{ desc = "An ancient statue depicting an elven woman. An inscription reads: She who split that which was one into that which is many."; @@ -1336,7 +1338,7 @@ /obj/item/rogueweapon/halberd/glaive, /obj/item/rogueweapon/halberd/glaive, /turf/open/floor/rogue/cobble, -/area/rogue) +/area/rogue/indoors) "sU" = ( /turf/open/floor/rogue/rooftop/green/east, /area/rogue/indoors/eventarea) @@ -1442,7 +1444,7 @@ /obj/item/rogueweapon/halberd, /obj/item/rogueweapon/halberd, /turf/open/floor/rogue/cobble, -/area/rogue) +/area/rogue/indoors) "vo" = ( /turf/open/floor/rogue/ruinedwood/chevron, /area/rogue/indoors/eventarea) @@ -1454,10 +1456,10 @@ /obj/item/rogueweapon/shield/tower, /obj/item/rogueweapon/shield/tower, /turf/open/floor/rogue/cobble, -/area/rogue) +/area/rogue/indoors) "vP" = ( /turf/closed/wall/mineral/rogue/stone, -/area/rogue) +/area/rogue/indoors) "vS" = ( /obj/item/reagent_containers/food/snacks/smallrat, /turf/open/floor/rogue/concrete, @@ -1524,7 +1526,7 @@ "xi" = ( /obj/effect/proc_holder/spell/invoked/heal, /turf/open/floor/rogue/blocks, -/area/rogue) +/area/rogue/indoors) "xl" = ( /obj/structure/table/wood{ dir = 10; @@ -1563,7 +1565,7 @@ /obj/item/rogueweapon/huntingknife/idagger/steel, /obj/item/rogueweapon/huntingknife/idagger/steel, /turf/open/floor/rogue/cobble, -/area/rogue) +/area/rogue/indoors) "yd" = ( /turf/open/floor/rogue/rooftop/green/corner1/dirnine, /area/rogue/indoors/eventarea) @@ -1640,7 +1642,7 @@ /obj/item/storage/belt/rogue/surgery_bag/full, /obj/item/storage/belt/rogue/surgery_bag/full, /turf/open/floor/rogue/cobble, -/area/rogue) +/area/rogue/indoors) "AU" = ( /turf/closed/mineral/rogue/bedrock, /area/rogue/outdoors) @@ -1709,7 +1711,7 @@ "CB" = ( /obj/structure/fluff/grindwheel, /turf/open/floor/rogue/dirt/road, -/area/rogue) +/area/rogue/indoors) "CQ" = ( /turf/open/floor/rogue/blocks/stonered, /area/rogue/indoors/eventarea) @@ -1747,7 +1749,7 @@ /area/rogue/outdoors) "Dw" = ( /turf/open/floor/rogue/dirt/road, -/area/rogue) +/area/rogue/indoors) "Dz" = ( /obj/effect/decal/cleanable/blood/splatter, /turf/open/floor/rogue/hexstone, @@ -1799,7 +1801,7 @@ /obj/item/rogueweapon/huntingknife/idagger/silver, /obj/item/rogueweapon/huntingknife/idagger/silver, /turf/open/floor/rogue/cobble, -/area/rogue) +/area/rogue/indoors) "Es" = ( /obj/machinery/light/rogue/candle/l, /turf/open/floor/rogue/blocks, @@ -1981,7 +1983,7 @@ "Is" = ( /obj/machinery/gear_painter, /turf/open/floor/rogue/cobble, -/area/rogue) +/area/rogue/indoors) "Iz" = ( /obj/structure/roguerock, /turf/open/floor/rogue/naturalstone, @@ -2013,7 +2015,7 @@ aportalloc = "spidercave" }, /turf/open/floor/rogue/blocks, -/area/rogue) +/area/rogue/indoors) "IZ" = ( /obj/structure/table/wood{ dir = 9; @@ -2042,7 +2044,7 @@ /obj/item/rogueweapon/sword/falx, /obj/item/rogueweapon/sword/falx, /turf/open/floor/rogue/cobble, -/area/rogue) +/area/rogue/indoors) "Jx" = ( /turf/open/floor/rogue/cobble/mossy, /area/rogue/indoors/eventarea) @@ -2069,7 +2071,7 @@ /obj/item/rogueweapon/pick, /obj/item/rogueweapon/pick, /turf/open/floor/rogue/cobble, -/area/rogue) +/area/rogue/indoors) "JQ" = ( /turf/open/floor/rogue/tile/masonic/inverted, /area/rogue/indoors/eventarea) @@ -2112,7 +2114,7 @@ aportalloc = "bog" }, /turf/open/floor/rogue/blocks, -/area/rogue) +/area/rogue/indoors) "Lp" = ( /obj/machinery/light/rogue/firebowl{ light_color = "#b30202" @@ -2142,7 +2144,7 @@ /obj/item/rogueweapon/spear/billhook, /obj/item/rogueweapon/spear/billhook, /turf/open/floor/rogue/cobble, -/area/rogue) +/area/rogue/indoors) "LP" = ( /obj/machinery/light/rogue/candle/l, /obj/structure/table/optable, @@ -2208,7 +2210,7 @@ /obj/effect/dream_horror, /obj/effect/solid_invisible_barrier, /turf/open/floor/rogue/underworld/space/quiet, -/area/rogue) +/area/rogue/underworld/dream) "Oe" = ( /obj/effect/decal/cleanable/blood, /obj/effect/landmark/start/gnoll, @@ -2390,7 +2392,7 @@ "TT" = ( /obj/machinery/light/rogue/candle, /turf/closed, -/area/rogue) +/area) "TU" = ( /turf/open/floor/rogue/grassyel, /area/rogue/indoors/eventarea) @@ -2424,7 +2426,7 @@ }, /obj/item/rogueweapon/mace/cudgel, /turf/open/floor/rogue/cobble, -/area/rogue) +/area/rogue/indoors) "Ux" = ( /turf/open/floor/rogue/underworld/space/sparkle_quiet, /area/rogue/indoors/eventarea) @@ -2466,7 +2468,7 @@ /obj/item/rogueweapon/sword/short/gladius, /obj/item/rogueweapon/sword/short/gladius, /turf/open/floor/rogue/cobble, -/area/rogue) +/area/rogue/indoors) "Vm" = ( /obj/effect/decal/cleanable/blood, /turf/open/floor/rogue/blocks, @@ -2724,30 +2726,30 @@ rQ rQ rQ rQ -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX +hK +hK +hK +hK +hK +hK +hK +hK +hK +hK +hK +hK +hK +hK +hK +hK +hK +hK +hK +hK +hK +hK +hK +hK rQ rQ rQ @@ -2854,10 +2856,10 @@ rQ rQ rQ rQ -bX -bX -bX -bX +hK +hK +hK +hK vP vP vP @@ -2877,7 +2879,7 @@ vP vP vP vP -bX +hK rQ rQ rQ @@ -2984,10 +2986,10 @@ rQ rQ rQ rQ -bX -bX -bX -bX +hK +hK +hK +hK vP am au @@ -3007,7 +3009,7 @@ bu hQ xi vP -bX +hK rQ rQ rQ @@ -3114,10 +3116,10 @@ rQ rQ rQ rQ -bX -bX -bX -bX +hK +hK +hK +hK vP ao av @@ -3137,7 +3139,7 @@ hQ hQ hQ vP -bX +hK rQ rQ rQ @@ -3244,10 +3246,10 @@ rQ rQ rQ rQ -bX -bX -bX -bX +hK +hK +hK +hK vP ap av @@ -3267,7 +3269,7 @@ hQ hQ hQ vP -bX +hK rQ rQ rQ @@ -3351,33 +3353,33 @@ rQ rQ rQ rQ -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX +hK +hK +hK +hK +hK +hK +hK +hK +hK +hK +hK +hK +hK +hK +hK +hK +hK rQ rQ rQ rQ rQ rQ -bX -bX -bX -bX +hK +hK +hK +hK vP aq av @@ -3397,7 +3399,7 @@ bv hQ Le vP -bX +hK rQ rQ rQ @@ -3481,7 +3483,7 @@ rQ rQ rQ rQ -bX +hK RX RX RX @@ -3497,17 +3499,17 @@ RX RX RX Vz -bX +hK rQ rQ rQ rQ rQ rQ -bX -bX -bX -bX +hK +hK +hK +hK vP ar av @@ -3527,7 +3529,7 @@ hQ hQ hQ vP -bX +hK rQ rQ rQ @@ -3611,7 +3613,7 @@ rQ rQ rQ rQ -bX +hK RX RX RX @@ -3627,17 +3629,17 @@ RX RX RX RX -bX +hK rQ rQ rQ rQ rQ rQ -bX -bX -bX -bX +hK +hK +hK +hK vP as av @@ -3657,7 +3659,7 @@ bw hQ IY vP -bX +hK rQ rQ rQ @@ -3741,7 +3743,7 @@ rQ rQ rQ rQ -bX +hK RX RX RX @@ -3757,17 +3759,17 @@ RX RX RX RX -bX +hK rQ rQ rQ rQ rQ rQ -bX -bX -bX -bX +hK +hK +hK +hK vP at av @@ -3787,7 +3789,7 @@ hQ hQ hQ vP -bX +hK rQ rQ rQ @@ -3871,7 +3873,7 @@ rQ rQ rQ rQ -bX +hK RX RX RX @@ -3887,17 +3889,17 @@ RX RX RX RX -bX +hK rQ rQ rQ rQ rQ rQ -bX -bX -bX -bX +hK +hK +hK +hK vP vP lw @@ -3917,7 +3919,7 @@ hQ hQ sz vP -bX +hK rQ rQ rQ @@ -4001,7 +4003,7 @@ rQ rQ rQ rQ -bX +hK RX RX RX @@ -4017,15 +4019,15 @@ RX RX RX RX -bX +hK rQ rQ rQ rQ rQ rQ -bX -bX +hK +hK pr pr pr @@ -4047,7 +4049,7 @@ hQ vP vP vP -bX +hK rQ rQ rQ @@ -4131,7 +4133,7 @@ rQ rQ rQ rQ -bX +hK RX RX RX @@ -4147,15 +4149,15 @@ RX RX RX RX -bX +hK rQ rQ rQ rQ rQ rQ -bX -bX +hK +hK pr pr pr @@ -4177,7 +4179,7 @@ lw kF vP vP -bX +hK rQ rQ rQ @@ -4261,7 +4263,7 @@ rQ rQ rQ rQ -bX +hK RX RX RX @@ -4277,15 +4279,15 @@ RX RX RX RX -bX +hK rQ rQ rQ rQ rQ rQ -bX -bX +hK +hK pr pr pr @@ -4306,8 +4308,8 @@ bm lw jH vP -bX -bX +hK +hK rQ rQ rQ @@ -4391,7 +4393,7 @@ rQ rQ rQ rQ -bX +hK RX RX RX @@ -4407,15 +4409,15 @@ RX RX RX RX -bX +hK rQ rQ rQ rQ rQ rQ -bX -bX +hK +hK pr pr RH @@ -4436,8 +4438,8 @@ bn lw fi vP -bX -bX +hK +hK rQ rQ rQ @@ -4521,7 +4523,7 @@ rQ rQ rQ rQ -bX +hK RX RX RX @@ -4537,15 +4539,15 @@ RX RX RX RX -bX +hK rQ rQ rQ rQ rQ rQ -bX -bX +hK +hK Do pr RH @@ -4566,8 +4568,8 @@ bo lw vl vP -bX -bX +hK +hK rQ rQ rQ @@ -4651,7 +4653,7 @@ rQ rQ rQ rQ -bX +hK RX RX RX @@ -4667,15 +4669,15 @@ RX RX RX RX -bX +hK rQ rQ rQ rQ rQ rQ -bX -bX +hK +hK Do Do RH @@ -4696,8 +4698,8 @@ bp lw LE vP -bX -bX +hK +hK rQ rQ rQ @@ -4781,7 +4783,7 @@ rQ rQ rQ rQ -bX +hK RX RX RX @@ -4797,15 +4799,15 @@ RX RX RX RX -bX +hK rQ rQ rQ rQ rQ rQ -bX -bX +hK +hK Do Do RH @@ -4826,8 +4828,8 @@ bq lw Jp vP -bX -bX +hK +hK rQ rQ rQ @@ -4911,7 +4913,7 @@ rQ rQ rQ rQ -bX +hK RX RX RX @@ -4927,15 +4929,15 @@ RX RX RX RX -bX +hK rQ rQ rQ rQ rQ rQ -bX -bX +hK +hK Do Do RH @@ -4956,8 +4958,8 @@ sP lw jQ vP -bX -bX +hK +hK rQ rQ rQ @@ -5041,7 +5043,7 @@ rQ rQ rQ rQ -bX +hK RX RX RX @@ -5057,15 +5059,15 @@ RX RX RX RX -bX +hK rQ rQ rQ rQ rQ rQ -bX -bX +hK +hK Do RH RH @@ -5086,8 +5088,8 @@ br lw Eq vP -bX -bX +hK +hK rQ rQ rQ @@ -5171,7 +5173,7 @@ rQ rQ rQ rQ -bX +hK RX RX RX @@ -5187,15 +5189,15 @@ RX RX RX RX -bX +hK rQ rQ rQ rQ rQ rQ -bX -bX +hK +hK RH RH RH @@ -5216,8 +5218,8 @@ bs lw xO vP -bX -bX +hK +hK rQ rQ rQ @@ -5301,7 +5303,7 @@ rQ rQ rQ rQ -bX +hK RX RX RX @@ -5317,15 +5319,15 @@ RX RX RX RX -bX +hK rQ rQ rQ rQ rQ rQ -bX -bX +hK +hK RH pr RH @@ -5346,8 +5348,8 @@ Is lw Vl vP -bX -bX +hK +hK rQ rQ rQ @@ -5431,31 +5433,31 @@ rQ rQ rQ rQ -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX +hK +hK +hK +hK +hK +hK +hK +hK +hK +hK +hK +hK +hK +hK +hK +hK +hK rQ rQ rQ rQ rQ rQ -bX -bX +hK +hK RH RH RH @@ -5476,8 +5478,8 @@ lw lw JJ vP -bX -bX +hK +hK rQ rQ rQ @@ -5584,8 +5586,8 @@ rQ rQ rQ rQ -bX -bX +hK +hK pr pr RH @@ -5606,8 +5608,8 @@ AQ lw pE vP -bX -bX +hK +hK rQ rQ rQ @@ -5714,8 +5716,8 @@ rQ rQ rQ rQ -bX -bX +hK +hK pr pr RH @@ -5736,8 +5738,8 @@ do lw vq vP -bX -bX +hK +hK rQ rQ rQ @@ -5844,8 +5846,8 @@ rQ rQ rQ rQ -bX -bX +hK +hK pr pr pr @@ -5866,8 +5868,8 @@ lw lw nQ vP -bX -bX +hK +hK rQ rQ rQ @@ -5974,8 +5976,8 @@ rQ rQ rQ rQ -bX -bX +hK +hK pr pr pr @@ -5996,8 +5998,8 @@ bt by Ut vP -bX -bX +hK +hK rQ rQ rQ @@ -6104,8 +6106,8 @@ rQ rQ rQ rQ -bX -bX +hK +hK RH RH pr @@ -6126,8 +6128,8 @@ vP vP vP vP -bX -bX +hK +hK rQ rQ rQ @@ -6234,8 +6236,8 @@ rQ rQ rQ rQ -bX -bX +hK +hK RH RH pr @@ -6249,15 +6251,15 @@ Do Ph Ph yR -bX -bX -bX -bX -bX -bX -bX -bX -bX +hK +hK +hK +hK +hK +hK +hK +hK +hK rQ rQ rQ @@ -6364,8 +6366,8 @@ rQ rQ rQ rQ -bX -bX +hK +hK pr RH RH @@ -6379,15 +6381,15 @@ RH Ph Ph tx -bX -bX -bX -bX -bX -bX -bX -bX -bX +hK +hK +hK +hK +hK +hK +hK +hK +hK rQ rQ rQ @@ -6494,8 +6496,8 @@ rQ rQ rQ rQ -bX -bX +hK +hK pr pr RH @@ -6509,15 +6511,15 @@ RH Ph Ph Do -bX -bX -bX -bX -bX -bX -bX -bX -bX +hK +hK +hK +hK +hK +hK +hK +hK +hK rQ rQ rQ @@ -6624,8 +6626,8 @@ rQ rQ rQ rQ -bX -bX +hK +hK RH pr pr @@ -6639,15 +6641,15 @@ pr Ph Ph Do -bX -bX -bX -bX -bX -bX -bX -bX -bX +hK +hK +hK +hK +hK +hK +hK +hK +hK rQ rQ rQ @@ -6754,8 +6756,8 @@ rQ rQ rQ rQ -bX -bX +hK +hK RH pr pr @@ -6769,15 +6771,15 @@ pr pr Ph Do -bX -bX -bX -bX -bX -bX -bX -bX -bX +hK +hK +hK +hK +hK +hK +hK +hK +hK rQ rQ rQ @@ -6884,8 +6886,8 @@ rQ rQ rQ rQ -bX -bX +hK +hK RH RH RH @@ -6899,15 +6901,15 @@ pr Ph Ph Do -bX -bX -bX -bX -bX -bX -bX -bX -bX +hK +hK +hK +hK +hK +hK +hK +hK +hK rQ rQ rQ @@ -7014,8 +7016,8 @@ rQ rQ rQ rQ -bX -bX +hK +hK RH RH RH @@ -7029,15 +7031,15 @@ pr Ph Ph RH -bX -bX -bX -bX -bX -bX -bX -bX -bX +hK +hK +hK +hK +hK +hK +hK +hK +hK rQ rQ rQ @@ -7144,6 +7146,8 @@ rQ rQ rQ rQ +hK +hK bX bX bX @@ -7157,17 +7161,15 @@ bX bX bX bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX +hK +hK +hK +hK +hK +hK +hK +hK +hK rQ rQ rQ @@ -7274,30 +7276,30 @@ rQ rQ rQ rQ -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX +hK +hK +hK +hK +hK +hK +hK +hK +hK +hK +hK +hK +hK +hK +hK +hK +hK +hK +hK +hK +hK +hK +hK +hK rQ rQ rQ @@ -13359,18 +13361,18 @@ rQ rQ rQ rQ -bX -hK -hK -hK -hK -hK -hK -hK -hK -hK -hK -hK +bB +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc Bc Bc Bc @@ -13489,18 +13491,18 @@ rQ rQ rQ rQ -bX -hK -hK -hK -hK -hK -hK -hK -hK -hK -hK -hK +bB +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc rZ rZ rZ @@ -13619,18 +13621,18 @@ rQ rQ rQ rQ -bX -hK -hK -hK -hK -hK -hK -hK -hK -hK -hK -hK +bB +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc rZ Bc Bc @@ -13749,18 +13751,18 @@ rQ rQ rQ rQ -bX -hK -hK -hK -hK -hK -hK -hK -hK -hK +bB +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc NY -hK +Bc rZ Bc rZ @@ -13879,18 +13881,18 @@ rQ rQ rQ rQ -bX -hK -hK -hK -hK -hK -hK -hK -hK -hK -hK -hK +bB +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc rZ Bc Bc @@ -14009,18 +14011,18 @@ rQ rQ rQ rQ -bX -hK -hK -hK -hK -hK -hK -hK -hK -hK -hK -hK +bB +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc rZ Bc rZ @@ -14139,18 +14141,18 @@ rQ rQ rQ rQ -bX -hK -hK -hK -hK -hK -hK -hK -hK -hK -hK -hK +bB +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc rZ Bc rZ @@ -14269,18 +14271,18 @@ rQ rQ rQ rQ -bX -hK -hK -hK -hK -hK -hK -hK -hK -hK -hK -hK +bB +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc rZ Bc rZ @@ -14399,18 +14401,18 @@ rQ rQ rQ rQ -bX -hK -hK -hK -hK -hK -hK -hK -hK -hK -hK -hK +bB +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc rZ Bc rZ @@ -14529,18 +14531,18 @@ rQ rQ rQ rQ -bX -hK -hK -hK -hK -hK -hK -hK -hK -hK -hK -hK +bB +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc rZ Bc rZ @@ -14659,18 +14661,18 @@ rQ rQ rQ rQ -bX -hK -hK -hK -hK -hK -hK -hK -hK -hK -hK -hK +bB +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc rZ Bc rZ @@ -14789,18 +14791,18 @@ rQ rQ rQ rQ -bX -hK -hK -hK -hK -hK -hK -hK -hK -hK -hK -hK +bB +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc rZ Bc Bc @@ -14919,18 +14921,18 @@ rQ rQ rQ rQ -bX -hK -hK -hK -hK -hK -hK -hK -hK -hK -hK -hK +bB +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc rZ Bc Bc @@ -15049,18 +15051,18 @@ rQ rQ rQ rQ -bX -hK -hK -hK -hK -hK -hK -hK -hK -hK -hK -hK +bB +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc rZ rZ rZ @@ -15179,18 +15181,18 @@ rQ rQ rQ rQ -bX -hK -hK -hK -hK -hK -hK -hK -hK -hK -hK -hK +bB +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc +Bc Bc Bc Bc @@ -15309,33 +15311,33 @@ rQ rQ rQ rQ -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX -bX +bB +bB +bB +bB +bB +bB +bB +bB +bB +bB +bB +bB +bB +bB +bB +bB +bB +bB +bB +bB +bB +bB +bB +bB +bB +bB +bB AU VS VS diff --git a/_maps/map_files/cove_world/cove_world.dmm b/_maps/map_files/cove_world/cove_world.dmm index 14f54b15f31..70551967f1f 100644 --- a/_maps/map_files/cove_world/cove_world.dmm +++ b/_maps/map_files/cove_world/cove_world.dmm @@ -75876,9 +75876,6 @@ /obj/structure/fluff/railing/corner/south_west, /turf/open/floor/rogue/woodturned, /area/rogue/indoors/town) -"qmf" = ( -/turf/closed/mineral/rogue/bedrock, -/area/rogue) "qmg" = ( /turf/open/water/swamp/deep, /area/rogue/under/cave) @@ -401985,7 +401982,7 @@ ogs ogs "} (129,1,3) = {" -qmf +ujm tsB tsB tsB @@ -402437,7 +402434,7 @@ ogs ogs "} (130,1,3) = {" -qmf +ujm tsB tsB tsB @@ -402889,7 +402886,7 @@ ogs ogs "} (131,1,3) = {" -qmf +ujm tsB tsB tsB @@ -403341,7 +403338,7 @@ ogs ogs "} (132,1,3) = {" -qmf +ujm tsB tsB tsB @@ -403793,7 +403790,7 @@ ogs ogs "} (133,1,3) = {" -qmf +ujm tsB tsB tsB @@ -404245,7 +404242,7 @@ ogs ogs "} (134,1,3) = {" -qmf +ujm tsB tsB tsB @@ -404697,7 +404694,7 @@ ogs ogs "} (135,1,3) = {" -qmf +ujm tsB tsB tsB @@ -405149,7 +405146,7 @@ ogs ogs "} (136,1,3) = {" -qmf +ujm tsB tsB tsB @@ -405601,7 +405598,7 @@ ogs ogs "} (137,1,3) = {" -qmf +ujm tsB tsB tsB @@ -406053,7 +406050,7 @@ ogs ogs "} (138,1,3) = {" -qmf +ujm tsB tsB tsB @@ -406505,7 +406502,7 @@ ogs ogs "} (139,1,3) = {" -qmf +ujm tsB tsB tsB @@ -406957,7 +406954,7 @@ ogs ogs "} (140,1,3) = {" -qmf +ujm tsB tsB ujm @@ -407409,7 +407406,7 @@ ogs ogs "} (141,1,3) = {" -qmf +ujm tsB ujm eID @@ -407861,7 +407858,7 @@ ogs ogs "} (142,1,3) = {" -qmf +ujm tsB ujm uCF @@ -408313,7 +408310,7 @@ ogs ogs "} (143,1,3) = {" -qmf +ujm tsB ujm uCF @@ -408765,7 +408762,7 @@ ogs ogs "} (144,1,3) = {" -qmf +ujm tsB ujm vtQ @@ -409217,7 +409214,7 @@ ogs ogs "} (145,1,3) = {" -qmf +ujm tsB ujm uCF @@ -409669,7 +409666,7 @@ ogs ogs "} (146,1,3) = {" -qmf +ujm tsB ujm uCF @@ -410121,7 +410118,7 @@ ogs ogs "} (147,1,3) = {" -qmf +ujm tsB ujm hji @@ -410573,7 +410570,7 @@ ogs ogs "} (148,1,3) = {" -qmf +ujm tsB tsB ujm @@ -411025,7 +411022,7 @@ ogs ogs "} (149,1,3) = {" -qmf +ujm tsB tsB tsB @@ -411477,7 +411474,7 @@ ogs ogs "} (150,1,3) = {" -qmf +ujm tsB qPv qPv @@ -411929,7 +411926,7 @@ ogs ogs "} (151,1,3) = {" -qmf +ujm tsB qPv qPv @@ -412381,7 +412378,7 @@ ogs ogs "} (152,1,3) = {" -qmf +ujm qPv qPv qPv @@ -412833,7 +412830,7 @@ ogs ogs "} (153,1,3) = {" -qmf +ujm qPv qPv qPv diff --git a/_maps/map_files/otherz/dungeon.dmm b/_maps/map_files/otherz/dungeon.dmm index 03cb6f2b39d..cc3c558b86c 100644 --- a/_maps/map_files/otherz/dungeon.dmm +++ b/_maps/map_files/otherz/dungeon.dmm @@ -1,115 +1,115 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( /turf/open/transparent/openspace, -/area/rogue) +/area/template_noop) "c" = ( /obj/structure/fluff/statue/tdummy, /turf/open/floor/rogue/ruinedwood/spiral, -/area/rogue) +/area/template_noop) "d" = ( /obj/structure/roguetent, /turf/open/floor/rogue/hexstone, -/area/rogue) +/area/template_noop) "e" = ( /obj/structure/fluff/railing/border{ dir = 9 }, /turf/open/transparent/openspace, -/area/rogue) +/area/template_noop) "f" = ( /turf/closed/wall/mineral/rogue/decostone/end{ dir = 4 }, -/area/rogue) +/area/template_noop) "g" = ( /obj/effect/dungeon_directional_helper/east, /turf/open/floor/rogue/hexstone, -/area/rogue) +/area/template_noop) "i" = ( /obj/machinery/light/rogue/torchholder/r, /turf/open/floor/rogue/ruinedwood/spiral, -/area/rogue) +/area/template_noop) "k" = ( /obj/structure/fluff/railing/border{ dir = 10 }, /turf/open/transparent/openspace, -/area/rogue) +/area/template_noop) "l" = ( /obj/structure/fluff/railing/border{ dir = 6 }, /turf/open/transparent/openspace, -/area/rogue) +/area/template_noop) "o" = ( /turf/closed/wall/mineral/rogue/decostone, -/area/rogue) +/area/template_noop) "p" = ( /obj/machinery/light/rogue/torchholder/l, /turf/open/floor/rogue/hexstone, -/area/rogue) +/area/template_noop) "q" = ( /obj/structure/table/wood{ icon_state = "tablewood1" }, /turf/open/floor/rogue/hexstone, -/area/rogue) +/area/template_noop) "s" = ( /turf/closed/dungeon_void, -/area/rogue) +/area/template_noop) "u" = ( /obj/structure/stairs{ dir = 1 }, /turf/open/floor/rogue/hexstone, -/area/rogue) +/area/template_noop) "v" = ( /turf/open/floor/rogue/ruinedwood/spiral, -/area/rogue) +/area/template_noop) "w" = ( /obj/structure/dungeon_exit{ dungeon_id = "center" }, /turf/open/floor/rogue/ruinedwood/spiral, -/area/rogue) +/area/template_noop) "x" = ( /obj/structure/fluff/railing/border{ dir = 5 }, /turf/open/transparent/openspace, -/area/rogue) +/area/template_noop) "A" = ( /obj/structure/fluff/railing/border{ dir = 8 }, /turf/open/transparent/openspace, -/area/rogue) +/area/template_noop) "B" = ( /obj/effect/dungeon_directional_helper/south, /turf/open/floor/rogue/hexstone, -/area/rogue) +/area/template_noop) "C" = ( /obj/structure/stairs, /turf/open/floor/rogue/ruinedwood/spiral, -/area/rogue) +/area/template_noop) "D" = ( /turf/closed/mineral/rogue/bedrock, -/area/rogue) +/area/template_noop) "E" = ( /obj/structure/stairs, /turf/open/floor/rogue/hexstone, -/area/rogue) +/area/template_noop) "J" = ( /turf/closed/wall/mineral/rogue/decostone/long{ dir = 1 }, -/area/rogue) +/area/template_noop) "N" = ( /obj/structure/fluff/railing/border{ dir = 4 }, /turf/open/transparent/openspace, -/area/rogue) +/area/template_noop) "O" = ( /obj/item/flashlight/flare/torch, /obj/item/flashlight/flare/torch{ @@ -124,44 +124,44 @@ icon_state = "tablewood1" }, /turf/open/floor/rogue/hexstone, -/area/rogue) +/area/template_noop) "P" = ( /turf/closed/wall/mineral/rogue/decostone/end{ dir = 8 }, -/area/rogue) +/area/template_noop) "Q" = ( /obj/item/reagent_containers/glass/bottle/waterskin, /obj/structure/table/wood{ icon_state = "tablewood1" }, /turf/open/floor/rogue/hexstone, -/area/rogue) +/area/template_noop) "R" = ( /obj/machinery/light/rogue/torchholder/l, /turf/open/floor/rogue/ruinedwood/spiral, -/area/rogue) +/area/template_noop) "S" = ( /obj/machinery/light/rogue/torchholder/r, /turf/open/floor/rogue/hexstone, -/area/rogue) +/area/template_noop) "V" = ( /obj/effect/dungeon_directional_helper/north, /turf/open/floor/rogue/hexstone, -/area/rogue) +/area/template_noop) "W" = ( /turf/open/floor/rogue/hexstone, -/area/rogue) +/area/template_noop) "X" = ( /obj/structure/stairs{ dir = 1 }, /turf/open/floor/rogue/ruinedwood/spiral, -/area/rogue) +/area/template_noop) "Y" = ( /obj/effect/dungeon_directional_helper/west, /turf/open/floor/rogue/hexstone, -/area/rogue) +/area/template_noop) (1,1,1) = {" s From 5d1eca5b05df8a13f1dc4c89c6658ad247aaeef4 Mon Sep 17 00:00:00 2001 From: Rudy Date: Thu, 26 Mar 2026 10:08:21 -0700 Subject: [PATCH 08/26] and this --- _maps/map_files/otherz/wretch_coast.dmm | 178 ++++++++++++------------ 1 file changed, 92 insertions(+), 86 deletions(-) diff --git a/_maps/map_files/otherz/wretch_coast.dmm b/_maps/map_files/otherz/wretch_coast.dmm index 125f3406f17..167ca85eaf6 100644 --- a/_maps/map_files/otherz/wretch_coast.dmm +++ b/_maps/map_files/otherz/wretch_coast.dmm @@ -946,8 +946,8 @@ /turf/open/floor/rogue/blocks, /area/rogue/indoors/eventarea/multiz) "eS" = ( -/turf/closed/mineral/rogue/bedrock, -/area/rogue) +/turf/open/water/river/flow, +/area/rogue/indoors/cave) "eT" = ( /obj/structure/stairs/stone{ dir = 4 @@ -2464,6 +2464,9 @@ /obj/structure/bed/rogue/inn/hay, /turf/open/floor/rogue/blocks, /area/rogue/indoors/vampire_manor) +"mO" = ( +/turf/open/water/river/flow/east, +/area/rogue/indoors/cave) "mP" = ( /turf/open/floor/rogue/cobble, /area/rogue/indoors/eventarea/multiz) @@ -3238,6 +3241,9 @@ /obj/machinery/light/rogue/candle/r, /turf/open/floor/rogue/tile/bfloorz, /area/rogue/indoors/vampire_manor) +"ra" = ( +/turf/open/water/cleanshallow, +/area/rogue/indoors/cave) "rc" = ( /turf/open/floor/rogue/ruinedwood/turned, /area/rogue/indoors/eventarea/multiz) @@ -9621,7 +9627,7 @@ PI PI PI PI -eS +PI IL IL IL @@ -9751,7 +9757,7 @@ PI PI PI PI -eS +PI IL IL IL @@ -9881,7 +9887,7 @@ PI PI PI PI -eS +PI IL IL IL @@ -10011,7 +10017,7 @@ PI PI PI PI -eS +PI IL IL IL @@ -10141,7 +10147,7 @@ PI PI PI PI -eS +PI IL IL IL @@ -10271,7 +10277,7 @@ PI PI PI PI -eS +PI IL IL IL @@ -10401,7 +10407,7 @@ PI PI PI PI -eS +PI IL IL IL @@ -10531,7 +10537,7 @@ PI PI PI PI -eS +PI IL IL IL @@ -10661,7 +10667,7 @@ PI PI PI PI -eS +PI IL IL IL @@ -10791,7 +10797,7 @@ PI PI PI PI -eS +PI IL IL lB @@ -10921,7 +10927,7 @@ PI PI PI PI -eS +PI IL IL ZK @@ -11051,7 +11057,7 @@ PI PI PI PI -eS +PI IL IL ZK @@ -11181,7 +11187,7 @@ PI PI PI PI -eS +PI IL IL jh @@ -11311,7 +11317,7 @@ PI PI PI PI -eS +PI IL IL ZK @@ -11441,7 +11447,7 @@ PI PI PI PI -eS +PI IL IL jh @@ -11571,7 +11577,7 @@ PI PI PI PI -eS +PI IL IL ZK @@ -11701,7 +11707,7 @@ PI PI PI PI -eS +PI IL IL ZK @@ -11831,7 +11837,7 @@ PI PI PI PI -eS +PI IL IL IL @@ -11961,7 +11967,7 @@ PI PI PI PI -eS +PI IL IL IL @@ -12091,7 +12097,7 @@ PI PI PI PI -eS +PI IL IL IL @@ -12221,7 +12227,7 @@ PI PI PI PI -eS +PI IL IL IL @@ -12351,7 +12357,7 @@ PI PI PI PI -eS +PI IL IL IL @@ -12481,7 +12487,7 @@ PI PI PI PI -eS +PI IL IL IL @@ -12611,7 +12617,7 @@ PI PI PI PI -eS +PI IL IL IL @@ -12741,7 +12747,7 @@ PI PI PI PI -eS +PI IL IL IL @@ -12871,7 +12877,7 @@ PI PI PI PI -eS +PI IL IL IL @@ -13001,7 +13007,7 @@ PI PI PI PI -eS +PI IL IL IL @@ -13131,7 +13137,7 @@ PI PI PI PI -eS +PI IL IL IL @@ -13261,7 +13267,7 @@ PI PI PI PI -eS +PI IL IL IL @@ -13391,7 +13397,7 @@ PI PI PI PI -eS +PI IL IL IL @@ -13521,7 +13527,7 @@ PI PI PI PI -eS +PI IL IL IL @@ -13651,7 +13657,7 @@ PI PI PI PI -eS +PI IL IL IL @@ -13781,7 +13787,7 @@ PI PI PI PI -eS +PI IL IL IL @@ -13911,7 +13917,7 @@ PI PI PI PI -eS +PI IL IL IL @@ -14041,7 +14047,7 @@ PI PI PI PI -eS +PI gk gk gk @@ -14171,7 +14177,7 @@ PI PI PI PI -eS +PI gk gk gk @@ -14301,7 +14307,7 @@ PI PI PI PI -eS +PI gk gk gk @@ -14431,7 +14437,7 @@ PI PI PI PI -eS +PI gk gk gk @@ -14561,7 +14567,7 @@ PI PI PI PI -eS +PI gk gk gk @@ -14691,7 +14697,7 @@ PI PI PI PI -eS +PI gk gk gk @@ -14821,7 +14827,7 @@ PI PI PI PI -eS +PI gk gk gk @@ -14951,7 +14957,7 @@ PI PI PI PI -eS +PI gk gk gk @@ -15081,7 +15087,7 @@ PI PI PI PI -eS +PI gk gk gk @@ -15211,7 +15217,7 @@ PI PI PI PI -eS +PI gk gk gk @@ -15341,7 +15347,7 @@ PI PI PI PI -eS +PI gk gk gk @@ -15471,7 +15477,7 @@ PI PI PI PI -eS +PI gk gk gk @@ -15601,7 +15607,7 @@ PI PI PI PI -eS +PI gk gk gk @@ -15731,7 +15737,7 @@ PI PI PI PI -eS +PI gk gk gk @@ -15861,7 +15867,7 @@ PI PI PI PI -eS +PI gk gk gk @@ -15991,7 +15997,7 @@ PI PI PI PI -eS +PI gk gk gk @@ -16121,7 +16127,7 @@ PI PI PI PI -eS +PI gk gk gk @@ -16251,7 +16257,7 @@ PI PI PI PI -eS +PI gk gk gk @@ -16381,7 +16387,7 @@ PI PI PI PI -eS +PI gk gk gk @@ -16511,7 +16517,7 @@ PI PI PI PI -eS +PI gk gk gk @@ -16641,7 +16647,7 @@ PI PI PI PI -eS +PI gk gk gk @@ -16771,7 +16777,7 @@ PI PI PI PI -eS +PI gk gk gk @@ -16901,7 +16907,7 @@ PI PI PI PI -eS +PI gk gk gk @@ -17031,7 +17037,7 @@ PI PI PI PI -eS +PI gk gk gk @@ -17161,7 +17167,7 @@ PI PI PI PI -eS +PI gk gk gk @@ -17291,7 +17297,7 @@ PI PI PI PI -eS +PI gk gk gk @@ -17421,7 +17427,7 @@ PI PI PI PI -eS +PI gk gk gk @@ -17551,7 +17557,7 @@ PI PI PI PI -eS +PI gk gk gk @@ -17681,7 +17687,7 @@ PI PI PI PI -eS +PI gk gk gk @@ -17811,7 +17817,7 @@ PI PI PI PI -eS +PI gk gk gk @@ -17941,7 +17947,7 @@ PI PI PI PI -eS +PI gk gk gk @@ -18071,7 +18077,7 @@ PI PI PI PI -eS +PI gk gk gk @@ -18201,7 +18207,7 @@ PI PI PI PI -eS +PI gk gk gk @@ -18331,7 +18337,7 @@ PI PI PI PI -eS +PI gk gk gk @@ -18459,9 +18465,9 @@ QI QI QI QI -QI +mO +PI PI -eS gk gk gk @@ -18589,9 +18595,9 @@ nG nG nG nG -nG -PI eS +PI +PI gk gk gk @@ -18719,9 +18725,9 @@ nG nG nG nG -nG -PI eS +PI +PI gk gk gk @@ -18849,9 +18855,9 @@ nG nG nG nG -nG -PI eS +PI +PI gk gk gk @@ -18979,9 +18985,9 @@ vU vU vU vU -vU +ra +PI PI -eS gk gk gk @@ -19111,7 +19117,7 @@ pa rB PI PI -eS +PI gk gk gk @@ -19241,7 +19247,7 @@ pa rB PI PI -eS +PI gk gk gk @@ -19371,7 +19377,7 @@ rB rB PI PI -eS +PI gk gk gk @@ -19501,7 +19507,7 @@ rB PI PI PI -eS +PI gk gk gk @@ -19631,7 +19637,7 @@ rB PI PI PI -eS +PI gk gk gk @@ -19761,7 +19767,7 @@ PI PI PI PI -eS +PI gk gk gk From 81fd6138e43149e0046db052e51f5465bf8e683b Mon Sep 17 00:00:00 2001 From: Rudy Date: Thu, 26 Mar 2026 10:27:14 -0700 Subject: [PATCH 09/26] Underdark Mushrooms now use /obj/effect/lootdrop! --- _maps/dungeon_generator/hallway/Malphpiece5.dmm | 2 +- _maps/dungeon_generator/hallway/Malphpiece8.dmm | 6 +++--- _maps/dungeon_generator/room/Malphpiece4.dmm | 6 +++--- _maps/dungeon_generator/room/hctomb1.dmm | 4 ++-- _maps/dungeon_generator/room/hctomb2.dmm | 2 +- _maps/dungeon_generator/room/hctomb4.dmm | 4 ++-- _maps/map_files/cove_world/cove_world.dmm | 4 ++-- _maps/map_files/dun_world/dun_world.dmm | 4 ++-- .../objects/structures/roguetown/rogueflora.dm | 15 +++++++++++++-- code/modules/roguetown/mapgen/underdark.dm | 4 ++-- 10 files changed, 31 insertions(+), 20 deletions(-) diff --git a/_maps/dungeon_generator/hallway/Malphpiece5.dmm b/_maps/dungeon_generator/hallway/Malphpiece5.dmm index c39f4f8640d..9b8f859288d 100644 --- a/_maps/dungeon_generator/hallway/Malphpiece5.dmm +++ b/_maps/dungeon_generator/hallway/Malphpiece5.dmm @@ -99,7 +99,7 @@ /turf/open/floor/rogue/herringbone, /area/rogue/under/tomb/cave) "O" = ( -/obj/structure/flora/rogueshroom/happy/random, +/obj/effect/spawner/lootdrop/rogueshroom/happy/random, /turf/open/floor/rogue/volcanic, /area/rogue/under/tomb/cave) "P" = ( diff --git a/_maps/dungeon_generator/hallway/Malphpiece8.dmm b/_maps/dungeon_generator/hallway/Malphpiece8.dmm index 104b7a1ce2c..353d86f1bc6 100644 --- a/_maps/dungeon_generator/hallway/Malphpiece8.dmm +++ b/_maps/dungeon_generator/hallway/Malphpiece8.dmm @@ -15,11 +15,11 @@ /turf/closed/wall/mineral/rogue/wood, /area/rogue/under/tomb/cave) "fy" = ( -/obj/structure/flora/rogueshroom/happy/random, +/obj/effect/spawner/lootdrop/rogueshroom/happy/random, /turf/open/floor/rogue/dirt/ambush, /area/rogue/under/tomb/cave) "fE" = ( -/obj/structure/flora/rogueshroom/happy/random, +/obj/effect/spawner/lootdrop/rogueshroom/happy/random, /turf/closed/mineral/rogue/bedrock, /area/rogue/under/tomb/cave) "ha" = ( @@ -38,7 +38,7 @@ /turf/open/floor/rogue/blocks/paving/vert, /area/rogue/under/tomb/cave) "jG" = ( -/obj/structure/flora/rogueshroom/happy/random, +/obj/effect/spawner/lootdrop/rogueshroom/happy/random, /turf/open/floor/rogue/dirt/road, /area/rogue/under/tomb/cave) "kc" = ( diff --git a/_maps/dungeon_generator/room/Malphpiece4.dmm b/_maps/dungeon_generator/room/Malphpiece4.dmm index 97052cf845a..09b8d6e11cb 100644 --- a/_maps/dungeon_generator/room/Malphpiece4.dmm +++ b/_maps/dungeon_generator/room/Malphpiece4.dmm @@ -196,14 +196,14 @@ /turf/open/floor/rogue/dirt/road, /area/rogue/under/tomb/wilds/bog) "Mq" = ( -/obj/structure/flora/rogueshroom/happy/random, +/obj/effect/spawner/lootdrop/rogueshroom/happy/random, /turf/closed/mineral/rogue/bedrock, /area/rogue/under/tomb/wilds/bog) "NI" = ( /turf/closed/mineral/rogue/bedrock, /area/rogue/under/tomb/indoors) "NT" = ( -/obj/structure/flora/rogueshroom/happy/random, +/obj/effect/spawner/lootdrop/rogueshroom/happy/random, /turf/open/floor/rogue/dirt/ambush, /area/rogue/under/tomb/wilds/bog) "NY" = ( @@ -240,7 +240,7 @@ /turf/open/floor/rogue/dirt/ambush, /area/rogue/under/tomb/wilds/bog) "Tr" = ( -/obj/structure/flora/rogueshroom/happy/random, +/obj/effect/spawner/lootdrop/rogueshroom/happy/random, /turf/open/floor/rogue/dirt/road, /area/rogue/under/tomb/wilds/bog) "Vj" = ( diff --git a/_maps/dungeon_generator/room/hctomb1.dmm b/_maps/dungeon_generator/room/hctomb1.dmm index a2fa261f2fd..76e813cbdee 100644 --- a/_maps/dungeon_generator/room/hctomb1.dmm +++ b/_maps/dungeon_generator/room/hctomb1.dmm @@ -689,7 +689,7 @@ /turf/open/floor/rogue/cobble/mossy, /area/rogue/under/tomb/indoors) "OS" = ( -/obj/structure/flora/rogueshroom/happy/random, +/obj/effect/spawner/lootdrop/rogueshroom/happy/random, /turf/open/floor/rogue/dirt, /area/rogue/under/tomb/cave) "Pf" = ( @@ -955,7 +955,7 @@ /turf/open/floor/rogue/concrete, /area/rogue/under/tomb/indoors) "Zx" = ( -/obj/structure/flora/rogueshroom/happy/random, +/obj/effect/spawner/lootdrop/rogueshroom/happy/random, /turf/open/floor/rogue/dirt, /area/rogue/under/tomb) "ZN" = ( diff --git a/_maps/dungeon_generator/room/hctomb2.dmm b/_maps/dungeon_generator/room/hctomb2.dmm index 1c841497872..dd6464571d1 100644 --- a/_maps/dungeon_generator/room/hctomb2.dmm +++ b/_maps/dungeon_generator/room/hctomb2.dmm @@ -572,7 +572,7 @@ /turf/open/floor/rogue/dirt/road, /area/rogue/under/tomb) "XO" = ( -/obj/structure/flora/rogueshroom/happy/random, +/obj/effect/spawner/lootdrop/rogueshroom/happy/random, /turf/open/water/swamp, /area/rogue/under/tomb/cave) "XV" = ( diff --git a/_maps/dungeon_generator/room/hctomb4.dmm b/_maps/dungeon_generator/room/hctomb4.dmm index 0394760fc32..4698529ae13 100644 --- a/_maps/dungeon_generator/room/hctomb4.dmm +++ b/_maps/dungeon_generator/room/hctomb4.dmm @@ -334,7 +334,7 @@ /turf/closed/wall/mineral/rogue/wooddark/window, /area/rogue/under/tomb/indoors) "mO" = ( -/obj/structure/flora/rogueshroom/happy/random, +/obj/effect/spawner/lootdrop/rogueshroom/happy/random, /turf/open/floor/rogue/dirt/road, /area/rogue/under/tomb) "mT" = ( @@ -1170,7 +1170,7 @@ /turf/open/floor/rogue/ruinedwood/turned, /area/rogue/under/tomb/indoors) "TW" = ( -/obj/structure/flora/rogueshroom/happy/random, +/obj/effect/spawner/lootdrop/rogueshroom/happy/random, /turf/open/floor/rogue/dirt, /area/rogue/under/tomb) "Uf" = ( diff --git a/_maps/map_files/cove_world/cove_world.dmm b/_maps/map_files/cove_world/cove_world.dmm index 70551967f1f..3c7f783c0d5 100644 --- a/_maps/map_files/cove_world/cove_world.dmm +++ b/_maps/map_files/cove_world/cove_world.dmm @@ -92324,7 +92324,7 @@ /turf/open/floor/rogue/blocks/green, /area/rogue/under/cave) "tNa" = ( -/obj/structure/flora/rogueshroom/happy/random, +/obj/effect/spawner/lootdrop/rogueshroom/happy/random, /turf/open/floor/rogue/dirt, /area/rogue/indoors/cave) "tNb" = ( @@ -112528,7 +112528,7 @@ /turf/open/floor/rogue/dirt/road, /area/rogue/outdoors/town) "ybs" = ( -/obj/structure/flora/rogueshroom/happy/random, +/obj/effect/spawner/lootdrop/rogueshroom/happy/random, /turf/open/floor/rogue/dirt/road, /area/rogue/under/underdark/north) "ybu" = ( diff --git a/_maps/map_files/dun_world/dun_world.dmm b/_maps/map_files/dun_world/dun_world.dmm index 3a813b355df..ef8df8c9a79 100644 --- a/_maps/map_files/dun_world/dun_world.dmm +++ b/_maps/map_files/dun_world/dun_world.dmm @@ -41611,7 +41611,7 @@ /turf/open/floor/rogue/hexstone, /area/rogue/indoors/shelter/mountains/decap) "jiu" = ( -/obj/structure/flora/rogueshroom/happy/random, +/obj/effect/spawner/lootdrop/rogueshroom/happy/random, /turf/open/floor/rogue/dirt, /area/rogue/indoors/cave) "jiA" = ( @@ -84503,7 +84503,7 @@ /turf/open/floor/rogue/ruinedwood/spiral, /area/rogue/indoors) "sDO" = ( -/obj/structure/flora/rogueshroom/happy/random, +/obj/effect/spawner/lootdrop/rogueshroom/happy/random, /turf/open/floor/rogue/dirt/road, /area/rogue/under/underdark/north) "sDQ" = ( diff --git a/code/game/objects/structures/roguetown/rogueflora.dm b/code/game/objects/structures/roguetown/rogueflora.dm index 9e6c631c77a..5f5abd23233 100644 --- a/code/game/objects/structures/roguetown/rogueflora.dm +++ b/code/game/objects/structures/roguetown/rogueflora.dm @@ -815,7 +815,17 @@ static_debris = null mush_animate = FALSE -/obj/structure/flora/rogueshroom/happy/random +//CC Edit Begin - Because holy shit these Hdels. +/obj/effect/spawner/lootdrop/rogueshroom/happy/random + loot = list(/obj/structure/flora/rogueshroom/happy = 249, + /obj/structure/flora/rogueshroom/happy/white = 249, + /obj/structure/flora/rogueshroom/happy/fat = 249, + /obj/structure/flora/rogueshroom/happy/angel = 249, + /obj/structure/flora/rogueshroom/happy/metal = 1, + ) + fan_out_items = FALSE + +/* /obj/structure/flora/rogueshroom/happy/random /obj/structure/flora/rogueshroom/happy/random/Initialize() . = ..() @@ -828,7 +838,8 @@ ) var/mushroom_type = pickweight(mushroom_types) new mushroom_type(loc) - qdel(src) + qdel(src) */ +//CC Edit End - For future reference, loot drops are way more efficient than deleting a whole mushroom object. /obj/structure/flora/rogueshroom/happy/New(loc) ..() diff --git a/code/modules/roguetown/mapgen/underdark.dm b/code/modules/roguetown/mapgen/underdark.dm index 44ef75664f9..807f7682c41 100644 --- a/code/modules/roguetown/mapgen/underdark.dm +++ b/code/modules/roguetown/mapgen/underdark.dm @@ -13,7 +13,7 @@ clusterCheckFlags = CLUSTER_CHECK_DIFFERENT_ATOMS allowed_turfs = list(/turf/open/floor/rogue/naturalstone) allowed_areas = list(/area/rogue/under/underdark) - spawnableAtoms = list(/obj/structure/flora/rogueshroom/happy/random = 30, + spawnableAtoms = list(/obj/effect/spawner/lootdrop/rogueshroom/happy/random = 30, /obj/structure/flora/mushroomcluster = 20, /obj/structure/flora/tinymushrooms = 20, /obj/structure/roguerock = 25, @@ -27,7 +27,7 @@ excluded_turfs = list(/turf/open/floor/rogue/dirt/road) spawnableAtoms = list(/obj/structure/flora/mushroomcluster = 20, /obj/structure/flora/roguegrass/thorn_bush = 10, - /obj/structure/flora/rogueshroom/happy/random = 40, + /obj/effect/spawner/lootdrop/rogueshroom/happy/random = 40, /obj/structure/flora/rogueshroom = 20, /obj/structure/flora/tinymushrooms = 20, /obj/structure/flora/roguegrass = 30, From 22c0f6e783fba6a351f062dd1f88a0ac29a35f1c Mon Sep 17 00:00:00 2001 From: Rudy Date: Thu, 26 Mar 2026 10:40:07 -0700 Subject: [PATCH 10/26] Bwahaha RANDOM GEMS TOO --- _maps/dungeon_generator/boss/orcboss.dmm | 2 +- .../dungeon_generator/hallway/Malphpiece5.dmm | 2 +- .../dungeon_generator/hallway/Malphpiece9.dmm | 2 +- .../room/GoblinInfestedJoint.dmm | 2 +- .../dungeon_generator/room/Thelastbreath.dmm | 2 +- _maps/dungeon_generator/room/dwelfhome.dmm | 2 +- _maps/dungeon_generator/room/fightingpit.dmm | 2 +- _maps/dungeon_generator/room/fightpit.dmm | 4 +- _maps/dungeon_generator/room/goblincamp.dmm | 2 +- _maps/dungeon_generator/room/magicanvil.dmm | 4 +- .../dungeon_generator/room/queensretreat.dmm | 2 +- _maps/map_files/cove_world/cove_world.dmm | 154 +++++++++--------- _maps/map_files/dun_world/dun_world.dmm | 64 ++++---- code/game/objects/items/rogueitems/gems.dm | 26 ++- .../items/rogueitems/natural/stones.dm | 2 +- code/game/turfs/closed/minerals.dm | 2 +- .../spells/pantheon/inhumen/matthios.dm | 4 +- .../adventure/random_loot/random_loot.dm | 2 +- 18 files changed, 150 insertions(+), 130 deletions(-) diff --git a/_maps/dungeon_generator/boss/orcboss.dmm b/_maps/dungeon_generator/boss/orcboss.dmm index 0e0ad34e394..f023d701c8d 100644 --- a/_maps/dungeon_generator/boss/orcboss.dmm +++ b/_maps/dungeon_generator/boss/orcboss.dmm @@ -80,7 +80,7 @@ pixel_y = 11; pixel_x = 14 }, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/ruinedwood, /area/rogue/under/tomb/cave) "qW" = ( diff --git a/_maps/dungeon_generator/hallway/Malphpiece5.dmm b/_maps/dungeon_generator/hallway/Malphpiece5.dmm index 9b8f859288d..8dbe6aa25ac 100644 --- a/_maps/dungeon_generator/hallway/Malphpiece5.dmm +++ b/_maps/dungeon_generator/hallway/Malphpiece5.dmm @@ -16,7 +16,7 @@ "f" = ( /obj/structure/fluff/walldeco/vinez/offset, /obj/item/rogueweapon/pick/militia, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/volcanic, /area/rogue/under/tomb/cave) "i" = ( diff --git a/_maps/dungeon_generator/hallway/Malphpiece9.dmm b/_maps/dungeon_generator/hallway/Malphpiece9.dmm index ee6a29fe974..2036618f745 100644 --- a/_maps/dungeon_generator/hallway/Malphpiece9.dmm +++ b/_maps/dungeon_generator/hallway/Malphpiece9.dmm @@ -90,7 +90,7 @@ /mob/living/simple_animal/hostile/retaliate/bat{ dir = 4 }, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/cobble/mossy, /area/rogue/under/tomb/cave) "v" = ( diff --git a/_maps/dungeon_generator/room/GoblinInfestedJoint.dmm b/_maps/dungeon_generator/room/GoblinInfestedJoint.dmm index b9b5ff269cd..712bc7df781 100644 --- a/_maps/dungeon_generator/room/GoblinInfestedJoint.dmm +++ b/_maps/dungeon_generator/room/GoblinInfestedJoint.dmm @@ -1300,7 +1300,7 @@ /turf/open/floor/rogue/grass, /area/rogue/under/tomb) "Zp" = ( -/obj/item/roguegem/random{ +/obj/effect/spawner/lootdrop/roguegem/random{ pixel_x = 0; pixel_y = 0 }, diff --git a/_maps/dungeon_generator/room/Thelastbreath.dmm b/_maps/dungeon_generator/room/Thelastbreath.dmm index 0a5b0337f7c..3ceffbdf3b6 100644 --- a/_maps/dungeon_generator/room/Thelastbreath.dmm +++ b/_maps/dungeon_generator/room/Thelastbreath.dmm @@ -1727,7 +1727,7 @@ /obj/item/candle/yellow/lit{ pixel_y = 8 }, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/churchbrick, /area/rogue/under/tomb/indoors/church) "yj" = ( diff --git a/_maps/dungeon_generator/room/dwelfhome.dmm b/_maps/dungeon_generator/room/dwelfhome.dmm index 5335643ee1f..10080d223cd 100644 --- a/_maps/dungeon_generator/room/dwelfhome.dmm +++ b/_maps/dungeon_generator/room/dwelfhome.dmm @@ -100,7 +100,7 @@ /area/rogue/under/tomb/cave/lava) "X" = ( /obj/structure/flora/rock/pile, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/naturalstone, /area/rogue/under/tomb/cave/lava) "Y" = ( diff --git a/_maps/dungeon_generator/room/fightingpit.dmm b/_maps/dungeon_generator/room/fightingpit.dmm index ae12a6064ca..b9ef15dc88e 100644 --- a/_maps/dungeon_generator/room/fightingpit.dmm +++ b/_maps/dungeon_generator/room/fightingpit.dmm @@ -221,7 +221,7 @@ "OB" = ( /obj/structure/closet/crate/chest/gold, /obj/item/roguegem/green, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/metal, /area/rogue/under/tomb) "Pd" = ( diff --git a/_maps/dungeon_generator/room/fightpit.dmm b/_maps/dungeon_generator/room/fightpit.dmm index 3b7a6066a60..51b9b2b850b 100644 --- a/_maps/dungeon_generator/room/fightpit.dmm +++ b/_maps/dungeon_generator/room/fightpit.dmm @@ -309,8 +309,8 @@ pixel_x = -5; pixel_y = 8 }, -/obj/item/roguegem/random, -/obj/item/roguegem/random{ +/obj/effect/spawner/lootdrop/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random{ pixel_x = -11; pixel_y = 11 }, diff --git a/_maps/dungeon_generator/room/goblincamp.dmm b/_maps/dungeon_generator/room/goblincamp.dmm index 953f229fd51..d2f20a3ddad 100644 --- a/_maps/dungeon_generator/room/goblincamp.dmm +++ b/_maps/dungeon_generator/room/goblincamp.dmm @@ -418,7 +418,7 @@ "Yd" = ( /obj/structure/closet/crate/chest/wicker, /obj/machinery/light/rogue/candle, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/dirt, /area/rogue/under/tomb/indoors) "Ys" = ( diff --git a/_maps/dungeon_generator/room/magicanvil.dmm b/_maps/dungeon_generator/room/magicanvil.dmm index 41a56846972..f7f38cc36c5 100644 --- a/_maps/dungeon_generator/room/magicanvil.dmm +++ b/_maps/dungeon_generator/room/magicanvil.dmm @@ -171,8 +171,8 @@ pixel_x = -6; pixel_y = 5 }, -/obj/item/roguegem/random, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/dirt, /area/rogue/under/tomb/cave/lava) "N" = ( diff --git a/_maps/dungeon_generator/room/queensretreat.dmm b/_maps/dungeon_generator/room/queensretreat.dmm index 49dd3d8a191..6cf41a850b6 100644 --- a/_maps/dungeon_generator/room/queensretreat.dmm +++ b/_maps/dungeon_generator/room/queensretreat.dmm @@ -552,7 +552,7 @@ }, /obj/structure/table/wood, /obj/effect/spawner/lootdrop/general_loot_hi, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/ruinedwood/spiral, /area/rogue/under/tomb/indoors/royal) "vK" = ( diff --git a/_maps/map_files/cove_world/cove_world.dmm b/_maps/map_files/cove_world/cove_world.dmm index 3c7f783c0d5..3120da0470f 100644 --- a/_maps/map_files/cove_world/cove_world.dmm +++ b/_maps/map_files/cove_world/cove_world.dmm @@ -18,7 +18,7 @@ /area/rogue/under/cave) "aax" = ( /mob/living/simple_animal/hostile/retaliate/rogue/troll/bog, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/water/swamp, /area/rogue/under/cave/fishmandungeon) "aay" = ( @@ -1557,8 +1557,8 @@ /turf/open/floor/rogue/churchbrick, /area/rogue/under/cave/scarymaze) "aqV" = ( -/obj/item/roguegem/random, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/metal/barograte/open, /area/rogue/under/underdark/north) "aqX" = ( @@ -2677,7 +2677,7 @@ /turf/open/floor/rogue/dirt/road, /area/rogue/outdoors/mountains) "aEe" = ( -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/dirt, /area/rogue/under/cave) "aEf" = ( @@ -3266,7 +3266,7 @@ pixel_y = 32 }, /obj/item/ingot/bronze, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /obj/effect/spawner/lootdrop/cheap_jewelry_spawner, /obj/effect/spawner/lootdrop/cheap_jewelry_spawner, /obj/effect/spawner/lootdrop/magic_loot_tier_2/x3, @@ -6581,9 +6581,9 @@ locked = 1; lockid = "shop" }, -/obj/item/roguegem/random, -/obj/item/roguegem/random, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/hexstone, /area/rogue/indoors/town/shop) "bxZ" = ( @@ -8911,7 +8911,7 @@ /turf/open/floor/carpet/red, /area/rogue/indoors/town) "bYM" = ( -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/naturalstone, /area/rogue/outdoors/mountains) "bYP" = ( @@ -9492,7 +9492,7 @@ /turf/open/floor/rogue/dirt/road, /area/rogue/under/cave/dungeon1/gethsmane/inner) "cfB" = ( -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/concrete{ dir = 8 }, @@ -17525,7 +17525,7 @@ "dRm" = ( /obj/structure/table/church/end, /obj/effect/spawner/lootdrop/valuable_candle_spawner, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /obj/effect/spawner/lootdrop/magic_loot_tier_1, /turf/open/floor/rogue/church, /area/rogue/indoors/shelter) @@ -19857,7 +19857,7 @@ "eqx" = ( /obj/structure/closet/crate/chest/neu_iron, /obj/effect/spawner/lootdrop/roguetown/dungeon/weapons, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/ruinedwood, /area/rogue/indoors/shelter) "eqF" = ( @@ -21156,7 +21156,7 @@ /area/rogue/indoors/town/bath) "eFe" = ( /obj/structure/closet/crate/chest, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/naturalstone, /area/rogue/under/cave) "eFg" = ( @@ -22093,7 +22093,7 @@ /turf/open/floor/rogue/cobble, /area/rogue/outdoors/mountains/decap/gunduzirak) "eON" = ( -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/dirt, /area/rogue/indoors/cave/southern) "eOS" = ( @@ -25785,8 +25785,8 @@ /obj/item/roguestatue/gold{ pixel_y = 11 }, -/obj/item/roguegem/random, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/hexstone, /area/rogue/under/cave/skeletoncrypt) "fDP" = ( @@ -28773,7 +28773,7 @@ /turf/open/floor/rogue/cobble, /area/rogue/under/town/basement/keep) "gmT" = ( -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/dirt, /area/rogue/under/cavewet/bogcaves/north) "gmY" = ( @@ -29164,8 +29164,8 @@ /obj/item/clothing/cloak/lordcloak, /obj/item/clothing/suit/roguetown/shirt/dress/royal/prince, /obj/item/clothing/head/roguetown/circlet, -/obj/item/roguegem/random, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/dirt/road, /area/rogue/under/cave/dukecourt) "grD" = ( @@ -31305,7 +31305,7 @@ /turf/open/floor/rogue/herringbone, /area/rogue/under/cave/dungeon1/gethsmane/inner) "gOG" = ( -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/concrete{ dir = 1 }, @@ -33827,7 +33827,7 @@ "hoq" = ( /mob/living/simple_animal/hostile/retaliate/rogue/infernal/watcher, /obj/effect/decal/cleanable/roguerune/arcyne/summoning/max, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/church, /area/rogue/under/cave/goblinfort) "hov" = ( @@ -35853,7 +35853,7 @@ /turf/open/floor/rogue/concrete, /area/rogue/under/town/sewer) "hKU" = ( -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/dirt, /area/rogue/under/cave/orcdungeon) "hKV" = ( @@ -36662,7 +36662,7 @@ /area/rogue/outdoors/rtfield) "hUo" = ( /obj/structure/closet/crate/chest, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/naturalstone, /area/rogue/under/cavewet/bogcaves/north) "hUx" = ( @@ -37859,7 +37859,7 @@ pixel_y = 4 }, /obj/item/natural/feather, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/carpet/royalblack, /area/rogue/under/cave/orcdungeon) "ihm" = ( @@ -38331,7 +38331,7 @@ /turf/closed/wall/mineral/rogue/stone/moss/unbreakable, /area/rogue/under/cave/his_vault/puzzle) "imo" = ( -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/dirt/road, /area/rogue/under/underdark/north) "imq" = ( @@ -39338,7 +39338,7 @@ pixel_x = -8; pixel_y = 9 }, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/carpet/royalblack, /area/rogue/under/cave/orcdungeon) "iwT" = ( @@ -39462,7 +39462,7 @@ /turf/open/floor/rogue/twig/platform, /area/rogue/outdoors/town) "iyf" = ( -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/dirt/road, /area/rogue/indoors/cave/east) "iyu" = ( @@ -44538,7 +44538,7 @@ /turf/open/floor/rogue/dirt, /area/rogue/under/cave/dukecourt) "jCj" = ( -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/church, /area/rogue/under/cave/goblinfort) "jCk" = ( @@ -44622,8 +44622,8 @@ /obj/structure/table/wood/poor, /obj/effect/spawner/lootdrop/roguetown/dungeon, /obj/effect/spawner/lootdrop/potion_vitals, -/obj/item/roguegem/random, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /obj/effect/spawner/lootdrop/magic_loot_tier_1/x3, /turf/open/floor/rogue/ruinedwood/spiral, /area/rogue/outdoors/beach/north) @@ -49525,7 +49525,7 @@ /obj/item/reagent_containers/food/snacks/rogue/friedrat, /obj/item/reagent_containers/food/snacks/rogue/friedrat, /obj/item/reagent_containers/food/snacks/rogue/friedrat, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/dirt, /area/rogue/indoors/cave) "kFl" = ( @@ -49746,7 +49746,7 @@ /turf/open/floor/rogue/church, /area/rogue/indoors/shelter) "kHr" = ( -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/naturalstone, /area/rogue/under/cave) "kHu" = ( @@ -52861,7 +52861,7 @@ /obj/structure/closet/crate/chest/neu_iron, /obj/effect/spawner/lootdrop/roguetown/dungeon/weapons, /obj/effect/spawner/lootdrop/roguetown/dungeon/armor, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/ruinedwood, /area/rogue/indoors/shelter) "loW" = ( @@ -52935,7 +52935,7 @@ /obj/structure/table/wood/long_table, /obj/item/ingot/steel, /obj/item/ingot/steel, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/hexstone, /area/rogue/under/cave/fishmandungeon) "lpV" = ( @@ -54900,7 +54900,7 @@ /obj/structure/closet/crate/chest/crate, /obj/item/storage/belt/rogue/pouch/coins/poor, /obj/item/reagent_containers/glass/cup/silver/small, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /obj/effect/spawner/lootdrop/valuable_jewelry_spawner, /turf/open/floor/rogue/naturalstone, /area/rogue/under/cave) @@ -56136,7 +56136,7 @@ /turf/open/floor/rogue/concrete, /area/rogue/indoors/town) "lZg" = ( -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/dirt, /area/rogue/indoors/cave) "lZh" = ( @@ -57101,7 +57101,7 @@ "mhA" = ( /obj/structure/table/wood, /obj/effect/decal/cleanable/dirt/dust, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/tile/masonic/single, /area/rogue/under/cave/dukecourt) "mhC" = ( @@ -60529,7 +60529,7 @@ "mWY" = ( /obj/structure/closet/crate/chest/old_crate, /obj/effect/spawner/lootdrop/general_loot_hi, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/ruinedwood, /area/rogue/indoors/shelter) "mXb" = ( @@ -60574,7 +60574,7 @@ pixel_y = 16 }, /obj/structure/table/church/end/alt, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/grass, /area/rogue/outdoors/mountains/decap/minotaurfort) "mXo" = ( @@ -63068,7 +63068,7 @@ /area/rogue/indoors/town/garrison) "nzd" = ( /obj/effect/landmark/chest_or_mimic/loot_chest, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/dirt, /area/rogue/under/cave/dukecourt) "nzh" = ( @@ -64086,7 +64086,7 @@ /obj/effect/decal/cleanable/dirt/cobweb{ dir = 1 }, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/naturalstone, /area/rogue/outdoors/mountains) "nLI" = ( @@ -66952,7 +66952,7 @@ "orC" = ( /obj/structure/closet/crate/chest/lootbox, /obj/machinery/light/rogue/candle/blue, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/tile, /area/rogue/indoors/shelter/mountains/decap) "orD" = ( @@ -68260,8 +68260,8 @@ /obj/structure/closet/crate/chest, /obj/effect/spawner/lootdrop/roguetown/dungeon, /obj/effect/spawner/lootdrop/roguetown/dungeon, -/obj/item/roguegem/random, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /obj/effect/spawner/lootdrop/magic_loot_tier_2/x3, /turf/open/floor/rogue/ruinedwood/spiral, /area/rogue/outdoors/beach/north) @@ -69261,7 +69261,7 @@ dir = 1; icon_state = "borderfall" }, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/church, /area/rogue/under/cave/orcdungeon) "oSq" = ( @@ -69423,9 +69423,9 @@ dir = 10; pixel_y = 1 }, -/obj/item/roguegem/random, -/obj/item/roguegem/random, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/cobble/mossy, /area/rogue/outdoors/bog/south) "oTP" = ( @@ -72282,7 +72282,7 @@ /turf/closed/mineral/rogue/silver, /area/rogue/under/cave/his_vault) "pzG" = ( -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /obj/structure/ritualcircle/zizo, /turf/open/floor/rogue/dirt, /area/rogue/indoors/cave) @@ -76370,7 +76370,7 @@ "qrx" = ( /obj/structure/closet/crate/coffin, /obj/item/listenstone, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /obj/effect/spawner/lootdrop/magic_loot_tier_1, /turf/open/floor/rogue/hexstone, /area/rogue/under/cavewet/bogcaves/north) @@ -79635,7 +79635,7 @@ /obj/structure/fluff/psycross/copper{ pixel_y = 16 }, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/grass, /area/rogue/outdoors/mountains/decap/minotaurfort) "qYH" = ( @@ -80237,8 +80237,8 @@ /area/rogue/under/cave/scarymaze) "reM" = ( /obj/structure/closet/crate/chest/loot_chest/locked, -/obj/item/roguegem/random, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /obj/effect/spawner/lootdrop/cheap_jewelry_spawner, /obj/effect/spawner/lootdrop/cheap_jewelry_spawner, /turf/open/floor/carpet/purple, @@ -84964,7 +84964,7 @@ "sjl" = ( /obj/structure/closet/crate/coffin, /obj/effect/spawner/lootdrop/roguetown/dungeon/tools, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /obj/effect/spawner/lootdrop/magic_loot_tier_1, /turf/open/floor/rogue/hexstone, /area/rogue/under/cavewet/bogcaves/north) @@ -86260,7 +86260,7 @@ locked = 1; lockid = "psy_bog_dung_lootkey_two" }, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/naturalstone, /area/rogue/under/cave/his_vault) "suY" = ( @@ -86570,12 +86570,12 @@ lockid = "craftermaster" }, /obj/effect/spawner/lootdrop/roguetown/dungeon/money, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /obj/effect/spawner/lootdrop/roguetown/dungeon/money, /obj/structure/roguemachine/atm, /obj/effect/spawner/lootdrop/roguetown/dungeon/money, -/obj/item/roguegem/random, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/carpet, /area/rogue/indoors/town/dwarfin) "sym" = ( @@ -86760,7 +86760,7 @@ /turf/open/transparent/openspace, /area/rogue/indoors) "sAq" = ( -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/cobblerock, /area/rogue/outdoors/mountains/decap) "sAv" = ( @@ -87988,7 +87988,7 @@ /turf/open/floor/rogue/cobble/mossy, /area/rogue/outdoors/bog/north) "sPU" = ( -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/naturalstone, /area/rogue/indoors/cave) "sPX" = ( @@ -92711,7 +92711,7 @@ /turf/open/floor/rogue/grassred, /area/rogue/outdoors/mountains) "tRx" = ( -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/water/swamp, /area/rogue/under/cave/fishmandungeon) "tRA" = ( @@ -92747,7 +92747,7 @@ /turf/open/floor/rogue/hexstone, /area/rogue/indoors) "tRX" = ( -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/naturalstone, /area/rogue/outdoors/mountains/decap/minotaurfort) "tRY" = ( @@ -95333,13 +95333,13 @@ /area/rogue/under/cave/scarymaze) "uuc" = ( /obj/structure/table/vtable, -/obj/item/roguegem/random, -/obj/item/roguegem/random, -/obj/item/roguegem/random, -/obj/item/roguegem/random, -/obj/item/roguegem/random, -/obj/item/roguegem/random, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/churchbrick, /area/rogue/under/cave/mazedungeon) "uuh" = ( @@ -97472,7 +97472,7 @@ /turf/open/transparent/openspace, /area/rogue/indoors/town) "uQL" = ( -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/church, /area/rogue/under/cave/orcdungeon) "uQM" = ( @@ -99327,7 +99327,7 @@ /obj/structure/fluff/walldeco/bigpainting/lake, /obj/effect/spawner/lootdrop/valuable_jewelry_spawner, /obj/effect/spawner/lootdrop/valuable_jewelry_spawner, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /obj/effect/spawner/lootdrop/roguetown/dungeon/spells, /turf/open/floor/rogue/carpet/lord/center, /area/rogue/under/cave/licharena/bossroom) @@ -100414,7 +100414,7 @@ /area/rogue/under/cave/orcdungeon) "vvV" = ( /obj/item/clothing/cloak/cape/fur, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/dirt/road, /area/rogue/under/cave/dukecourt) "vvW" = ( @@ -101795,7 +101795,7 @@ }, /obj/effect/spawner/lootdrop/valuable_jewelry_spawner, /obj/effect/spawner/lootdrop/valuable_jewelry_spawner, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /obj/effect/spawner/lootdrop/roguetown/dungeon/spells, /turf/open/floor/rogue/carpet/lord/center, /area/rogue/under/cave/licharena/bossroom) @@ -102139,7 +102139,7 @@ /area/rogue/indoors/cave/southern) "vOE" = ( /mob/living/simple_animal/hostile/retaliate/rogue/infernal/imp, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/church, /area/rogue/under/cave/goblinfort) "vOG" = ( @@ -106899,7 +106899,7 @@ /area/rogue/indoors/town) "wPD" = ( /obj/structure/closet/crate/chest/neu_fancy, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/ruinedwood, /area/rogue/indoors/shelter) "wPZ" = ( @@ -107233,7 +107233,7 @@ /turf/open/floor/rogue/metal/barograte/open, /area/rogue/under/underdark/south) "wSV" = ( -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/naturalstone, /area/rogue/outdoors/rtfield) "wSW" = ( @@ -113057,7 +113057,7 @@ /area/rogue/indoors/shelter/mountains/decap) "ygz" = ( /obj/structure/closet/crate/chest/neu_fancy, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /obj/effect/spawner/lootdrop/general_loot_hi/x3, /turf/open/floor/rogue/herringbone, /area/rogue/under/cave/dungeon1/gethsmane/inner) diff --git a/_maps/map_files/dun_world/dun_world.dmm b/_maps/map_files/dun_world/dun_world.dmm index ef8df8c9a79..fcce6b3f4df 100644 --- a/_maps/map_files/dun_world/dun_world.dmm +++ b/_maps/map_files/dun_world/dun_world.dmm @@ -1556,8 +1556,8 @@ /turf/open/transparent/openspace, /area/rogue/druidsgrove) "aqV" = ( -/obj/item/roguegem/random, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/metal/barograte/open, /area/rogue/under/underdark/north) "arh" = ( @@ -2606,7 +2606,7 @@ /turf/open/floor/rogue/dirt/road, /area/rogue/outdoors/mountains) "aEe" = ( -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/dirt, /area/rogue/under/cave) "aEf" = ( @@ -6541,9 +6541,9 @@ locked = 1; lockid = "shop" }, -/obj/item/roguegem/random, -/obj/item/roguegem/random, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/hexstone, /area/rogue/indoors/town/shop) "bxZ" = ( @@ -8731,7 +8731,7 @@ /turf/open/floor/carpet/red, /area/rogue/indoors/town) "bYM" = ( -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/naturalstone, /area/rogue/outdoors/mountains) "bYP" = ( @@ -20870,7 +20870,7 @@ /area/rogue/under/cave/mazedungeon) "eFe" = ( /obj/structure/closet/crate/chest, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/naturalstone, /area/rogue/under/cave) "eFg" = ( @@ -21744,7 +21744,7 @@ /turf/open/floor/rogue/cobble, /area/rogue/outdoors/mountains/decap/gunduzirak) "eON" = ( -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/dirt, /area/rogue/indoors/cave/southern) "ePg" = ( @@ -28285,7 +28285,7 @@ /turf/open/floor/rogue/AzureSand, /area/rogue/outdoors/rtfield) "gmT" = ( -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/dirt, /area/rogue/under/cavewet/bogcaves/north) "gmX" = ( @@ -35067,7 +35067,7 @@ /turf/open/floor/rogue/concrete, /area/rogue/under/town/sewer) "hKU" = ( -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/dirt, /area/rogue/under/cave/orcdungeon) "hKV" = ( @@ -35802,7 +35802,7 @@ /area/rogue/outdoors/rtfield) "hUo" = ( /obj/structure/closet/crate/chest, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/naturalstone, /area/rogue/under/cavewet/bogcaves/north) "hUv" = ( @@ -38612,7 +38612,7 @@ /turf/open/floor/rogue/churchmarble, /area/rogue/under/cave/scarymaze) "iyf" = ( -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/dirt/road, /area/rogue/indoors/cave/east) "iys" = ( @@ -48587,7 +48587,7 @@ /turf/open/floor/rogue/ruinedwood/spiral, /area/rogue/outdoors/town) "kHr" = ( -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/naturalstone, /area/rogue/under/cave) "kHS" = ( @@ -51853,7 +51853,7 @@ /obj/structure/table/wood/long_table, /obj/item/ingot/steel, /obj/item/ingot/steel, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/hexstone, /area/rogue/under/cave/fishmandungeon) "lpL" = ( @@ -55112,7 +55112,7 @@ /turf/open/floor/rogue/concrete, /area/rogue/indoors/town) "lZg" = ( -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/dirt, /area/rogue/indoors/cave) "lZk" = ( @@ -62499,7 +62499,7 @@ /obj/effect/decal/cleanable/dirt/cobweb{ dir = 1 }, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/naturalstone, /area/rogue/outdoors/mountains) "nLC" = ( @@ -65241,7 +65241,7 @@ "orC" = ( /obj/structure/closet/crate/chest/lootbox, /obj/machinery/light/rogue/candle/blue, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/tile, /area/rogue/indoors/shelter/mountains/decap) "orD" = ( @@ -68093,7 +68093,7 @@ dir = 10; pixel_y = 1 }, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/cobble/mossy, /area/rogue/outdoors/bog/south) "oTN" = ( @@ -83720,7 +83720,7 @@ locked = 1; lockid = "psy_bog_dung_lootkey_two" }, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/naturalstone, /area/rogue/under/cave/his_vault) "suY" = ( @@ -84029,7 +84029,7 @@ lockid = "craftermaster" }, /obj/effect/spawner/lootdrop/roguetown/dungeon/money, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /obj/effect/spawner/lootdrop/roguetown/dungeon/money, /obj/structure/roguemachine/atm, /obj/effect/spawner/lootdrop/roguetown/dungeon/money, @@ -84244,7 +84244,7 @@ /turf/open/transparent/openspace, /area/rogue/indoors) "sAq" = ( -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/cobblerock, /area/rogue/outdoors/mountains/decap) "sAr" = ( @@ -85432,7 +85432,7 @@ /turf/open/floor/rogue/dirt/road, /area/rogue/outdoors/rtfield) "sOE" = ( -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/naturalstone, /area/rogue/outdoors/mountains/decap/minotaurfort) "sOH" = ( @@ -85526,7 +85526,7 @@ /turf/open/floor/rogue/cobblerock, /area/rogue/outdoors/town) "sPU" = ( -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/naturalstone, /area/rogue/indoors/cave) "sPX" = ( @@ -92747,8 +92747,8 @@ /area/rogue/under/town/basement/keep) "uuc" = ( /obj/structure/table/vtable, -/obj/item/roguegem/random, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/churchbrick, /area/rogue/under/cave/mazedungeon) "uuh" = ( @@ -96447,7 +96447,7 @@ /obj/structure/fluff/walldeco/bigpainting/lake, /obj/effect/spawner/lootdrop/valuable_jewelry_spawner, /obj/effect/spawner/lootdrop/valuable_jewelry_spawner, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/carpet/lord/center, /area/rogue/under/cave/licharena/bossroom) "vkz" = ( @@ -98836,7 +98836,7 @@ }, /obj/effect/spawner/lootdrop/valuable_jewelry_spawner, /obj/effect/spawner/lootdrop/valuable_jewelry_spawner, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/carpet/lord/center, /area/rogue/under/cave/licharena/bossroom) "vLw" = ( @@ -99163,7 +99163,7 @@ /area/rogue/indoors/town/garrison) "vOE" = ( /mob/living/simple_animal/hostile/retaliate/rogue/infernal/imp, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/church, /area/rogue/under/cave/goblinfort) "vOG" = ( @@ -103838,7 +103838,7 @@ /area/rogue/outdoors/rtfield/eora) "wPD" = ( /obj/structure/closet/crate/chest/neu_fancy, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/ruinedwood, /area/rogue/indoors/shelter) "wPE" = ( @@ -104135,7 +104135,7 @@ /turf/open/floor/rogue/metal/barograte/open, /area/rogue/under/underdark/south) "wSV" = ( -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/naturalstone, /area/rogue/outdoors/rtfield) "wSY" = ( @@ -109821,7 +109821,7 @@ /area/rogue/indoors/shelter/mountains/decap) "ygz" = ( /obj/structure/closet/crate/chest/neu_fancy, -/obj/item/roguegem/random, +/obj/effect/spawner/lootdrop/roguegem/random, /turf/open/floor/rogue/herringbone, /area/rogue/under/cave/dungeon1/gethsmane/inner) "ygB" = ( diff --git a/code/game/objects/items/rogueitems/gems.dm b/code/game/objects/items/rogueitems/gems.dm index 26a49985b17..e86a0a0024e 100644 --- a/code/game/objects/items/rogueitems/gems.dm +++ b/code/game/objects/items/rogueitems/gems.dm @@ -204,7 +204,27 @@ name = "naledic amythortz" desc = "A deep lavender crystal, crackling with magical energy. To a Disciple, it might simply be a keepsake from pilgrimages abroad: but to a Sojourner, it is the leyline to their arcyne-enchanted form of martial combat.
This gemstone can be applied to a yet-unfinished spelltome by those with arcyne potential, in order to recall more spells." -/obj/item/roguegem/random +//CC Edit Begin - Like the Mushrooms, gems should also respect lootdrop spawners for better performance and less strain on the GC. +/obj/effect/spawner/lootdrop/roguegem/random + lootcount = 1 //Its 1 by default but lets make sure to always stay 1. + loot = list(/obj/item/roguegem/ruby = 5, + /obj/item/roguegem/green = 15, + /obj/item/roguegem/blue = 10, + /obj/item/roguegem/yellow = 20, + /obj/item/roguegem/violet = 10, + /obj/item/roguegem/diamond = 5, + /obj/item/riddleofsteel = 1, + /obj/item/rogueore/silver = 3, + /obj/item/roguegem/onyxa = 5, + /obj/item/roguegem/jade = 3, + /obj/item/roguegem/coral = 3, + /obj/item/roguegem/turq = 3, + /obj/item/roguegem/amber = 3, + /obj/item/roguegem/opal = 3, + /obj/item/roguegem/blood_diamond = 1) + fan_out_items = FALSE + +/* /obj/item/roguegem/random name = "random gem" desc = "You shouldn't be seeing this." icon_state = null @@ -228,8 +248,8 @@ /obj/item/roguegem/blood_diamond = 1) var/pickgem = pickweight(newgem) new pickgem(get_turf(src)) - qdel(src) - + qdel(src) */ +//CC Edit End - Performance Improving for the GC /// riddle diff --git a/code/game/objects/items/rogueitems/natural/stones.dm b/code/game/objects/items/rogueitems/natural/stones.dm index 80a6da3e90b..8e0abb58834 100644 --- a/code/game/objects/items/rogueitems/natural/stones.dm +++ b/code/game/objects/items/rogueitems/natural/stones.dm @@ -491,7 +491,7 @@ GLOBAL_LIST_INIT(stone_personality_descs, list( mineralType = /obj/item/reagent_containers/powder/salt /obj/item/natural/rock/gem - mineralType = /obj/item/roguegem/random + mineralType = /obj/effect/spawner/lootdrop/roguegem/random /obj/item/natural/rock/random_ore name = "rock?" diff --git a/code/game/turfs/closed/minerals.dm b/code/game/turfs/closed/minerals.dm index 61f9260ffd8..6c637645390 100644 --- a/code/game/turfs/closed/minerals.dm +++ b/code/game/turfs/closed/minerals.dm @@ -345,7 +345,7 @@ /turf/closed/mineral/rogue/gem icon_state = "mingold" - mineralType = /obj/item/roguegem/random + mineralType = /obj/effect/spawner/lootdrop/roguegem/random rockType = /obj/item/natural/rock/gem spreadChance = 3 spread = 2 diff --git a/code/modules/spells/pantheon/inhumen/matthios.dm b/code/modules/spells/pantheon/inhumen/matthios.dm index f6ee7c36133..65037608a3c 100644 --- a/code/modules/spells/pantheon/inhumen/matthios.dm +++ b/code/modules/spells/pantheon/inhumen/matthios.dm @@ -333,8 +333,8 @@ explosion(get_turf(target), light_impact_range = 1, flame_range = 1, smoke = FALSE) new /obj/item/roguecoin/silver/pile(target.loc) new /obj/item/roguecoin/gold/pile(target.loc) - new /obj/item/roguegem/random(target.loc) - new /obj/item/roguegem/random(target.loc) + new /obj/effect/spawner/lootdrop/roguegem/random(target.loc) + new /obj/effect/spawner/lootdrop/roguegem/random(target.loc) var/list/possible_limbs = list() for(var/zone in list(BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_R_LEG, BODY_ZONE_L_LEG)) diff --git a/modular_causticcove/code/modules/events/adventure/random_loot/random_loot.dm b/modular_causticcove/code/modules/events/adventure/random_loot/random_loot.dm index 58dddb2cc35..c773aab1753 100644 --- a/modular_causticcove/code/modules/events/adventure/random_loot/random_loot.dm +++ b/modular_causticcove/code/modules/events/adventure/random_loot/random_loot.dm @@ -22,5 +22,5 @@ for(var/obj/structure/flora/bush/B in world) if(prob(1)) - new /obj/item/roguegem/random(B) + new /obj/effect/spawner/lootdrop/roguegem/random(B) */ From 45fe2acb6ea3e39f638629205a8b3d5a74f815eb Mon Sep 17 00:00:00 2001 From: Rudy Date: Thu, 26 Mar 2026 12:49:52 -0700 Subject: [PATCH 11/26] Remove Weather Stoplag + Change_Turf 'fix' --- code/controllers/subsystem/lighting.dm | 6 +++--- code/controllers/subsystem/weather.dm | 1 - code/game/turfs/change_turf.dm | 2 +- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/code/controllers/subsystem/lighting.dm b/code/controllers/subsystem/lighting.dm index e44634257a7..627e8de048c 100644 --- a/code/controllers/subsystem/lighting.dm +++ b/code/controllers/subsystem/lighting.dm @@ -49,7 +49,7 @@ SUBSYSTEM_DEF(lighting) var/i = 0 var/list/queue = current_sources while(i < length(queue)) //we don't use for loop here because i cannot be changed during an iteration - i += 1 + i++ var/datum/light_source/L = queue[i] L.update_corners() @@ -77,7 +77,7 @@ SUBSYSTEM_DEF(lighting) // UPDATE CORNERS QUEUE queue = corners_queue while(i < length(queue)) //we don't use for loop here because i cannot be changed during an iteration - i += 1 + i++ var/datum/lighting_corner/C = queue[i] C.needs_update = FALSE //update_objects() can call qdel if the corner is storing no data @@ -102,7 +102,7 @@ SUBSYSTEM_DEF(lighting) // UPDATE OBJECTS QUEUE queue = objects_queue while(i < length(queue)) //we don't use for loop here because i cannot be changed during an iteration - i += 1 + i++ var/atom/movable/lighting_object/O = queue[i] if(QDELETED(O)) diff --git a/code/controllers/subsystem/weather.dm b/code/controllers/subsystem/weather.dm index 561f82433c5..53fe44a3b60 100644 --- a/code/controllers/subsystem/weather.dm +++ b/code/controllers/subsystem/weather.dm @@ -27,7 +27,6 @@ SUBSYSTEM_DEF(weather) C.update_weather() while(current_run.len) - stoplag(1) //CC Edit var/atom/thing = current_run[current_run.len] current_run.len-- if(!thing || QDELETED(thing)) diff --git a/code/game/turfs/change_turf.dm b/code/game/turfs/change_turf.dm index bb910c28132..6a062e318b6 100644 --- a/code/game/turfs/change_turf.dm +++ b/code/game/turfs/change_turf.dm @@ -101,7 +101,7 @@ GLOBAL_LIST_INIT(blacklisted_automated_baseturfs, typecacheof(list( //We do this here so anything that doesn't want to persist can clear itself var/list/old_comp_lookup = comp_lookup?.Copy() var/list/old_signal_procs = signal_procs?.Copy() - if(!path) //CC Edit: This shouldn't runtime yet here we are... it's already checked above, so the path was nulled sometime between here and there? Logs don't lie. + if(!(istype(path, /turf))) //CC Edit - Check for if the path is actually a turf. Some reason the path var changes to 2 values as opposed to an actual type path. return var/turf/W = new path(src) From fd040c0a36d30e5cace0466d0523b346a8b4893a Mon Sep 17 00:00:00 2001 From: Rudy Date: Thu, 26 Mar 2026 13:03:32 -0700 Subject: [PATCH 12/26] Change_Turf fixy 2 --- code/game/turfs/change_turf.dm | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/code/game/turfs/change_turf.dm b/code/game/turfs/change_turf.dm index 6a062e318b6..36040e572fa 100644 --- a/code/game/turfs/change_turf.dm +++ b/code/game/turfs/change_turf.dm @@ -74,6 +74,11 @@ GLOBAL_LIST_INIT(blacklisted_automated_baseturfs, typecacheof(list( else if(path == /turf/open/transparent/openspace) isopenspa = TRUE + //CC Edit; The Path returns a value but the value is 2 points, ex. (25, 250), which obviously isn't a turf. It's causing this to freak out. + // So let's check these turfs way way earlier before we continue. + if(!(istype(path, /turf))) + return FALSE + var/turf/W = new path(src) var/old_opacity = opacity var/old_dynamic_lighting = dynamic_lighting @@ -101,9 +106,6 @@ GLOBAL_LIST_INIT(blacklisted_automated_baseturfs, typecacheof(list( //We do this here so anything that doesn't want to persist can clear itself var/list/old_comp_lookup = comp_lookup?.Copy() var/list/old_signal_procs = signal_procs?.Copy() - if(!(istype(path, /turf))) //CC Edit - Check for if the path is actually a turf. Some reason the path var changes to 2 values as opposed to an actual type path. - return - var/turf/W = new path(src) // WARNING WARNING // Turfs DO NOT lose their signals when they get replaced, REMEMBER THIS From 8c37fe78040d50976933930ec43e7c4f14f7f7f6 Mon Sep 17 00:00:00 2001 From: Rudy Date: Thu, 26 Mar 2026 13:31:34 -0700 Subject: [PATCH 13/26] A --- code/__DEFINES/_tick.dm | 4 ++-- code/game/turfs/change_turf.dm | 9 ++++----- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/code/__DEFINES/_tick.dm b/code/__DEFINES/_tick.dm index 99c6806f559..3ad7584a628 100644 --- a/code/__DEFINES/_tick.dm +++ b/code/__DEFINES/_tick.dm @@ -7,9 +7,9 @@ #define TICK_LIMIT_RUNNING (max(100 - TICK_BYOND_RESERVE - MAPTICK_LAST_INTERNAL_TICK_USAGE, MAPTICK_MC_MIN_RESERVE)) /// Tick limit used to resume things in stoplag -#define TICK_LIMIT_TO_RUN 60 //CC Edit +#define TICK_LIMIT_TO_RUN 50 //CC Edit /// Tick limit for MC while running -#define TICK_LIMIT_MC 100 //CC Edit +#define TICK_LIMIT_MC 90 //CC Edit /// Tick limit while initializing #define TICK_LIMIT_MC_INIT_DEFAULT 98 diff --git a/code/game/turfs/change_turf.dm b/code/game/turfs/change_turf.dm index 36040e572fa..c10b2abcf14 100644 --- a/code/game/turfs/change_turf.dm +++ b/code/game/turfs/change_turf.dm @@ -74,11 +74,6 @@ GLOBAL_LIST_INIT(blacklisted_automated_baseturfs, typecacheof(list( else if(path == /turf/open/transparent/openspace) isopenspa = TRUE - //CC Edit; The Path returns a value but the value is 2 points, ex. (25, 250), which obviously isn't a turf. It's causing this to freak out. - // So let's check these turfs way way earlier before we continue. - if(!(istype(path, /turf))) - return FALSE - var/turf/W = new path(src) var/old_opacity = opacity var/old_dynamic_lighting = dynamic_lighting @@ -106,6 +101,10 @@ GLOBAL_LIST_INIT(blacklisted_automated_baseturfs, typecacheof(list( //We do this here so anything that doesn't want to persist can clear itself var/list/old_comp_lookup = comp_lookup?.Copy() var/list/old_signal_procs = signal_procs?.Copy() + //CC Edit; The Path returns a value but the value is 2 points, ex. (25, 250), which obviously isn't a turf. It's causing this to freak out. + if(!path) //This doesn't do anything but it'll stay until we can figure out what's causing these errant path's. + return + var/turf/W = new path(src) // WARNING WARNING // Turfs DO NOT lose their signals when they get replaced, REMEMBER THIS From 180de96ce489fd4380c02d74aef20f9a70f2f281 Mon Sep 17 00:00:00 2001 From: Rudy Date: Thu, 26 Mar 2026 13:31:55 -0700 Subject: [PATCH 14/26] aa --- code/__DEFINES/_tick.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/__DEFINES/_tick.dm b/code/__DEFINES/_tick.dm index 3ad7584a628..3c3fbd47546 100644 --- a/code/__DEFINES/_tick.dm +++ b/code/__DEFINES/_tick.dm @@ -7,9 +7,9 @@ #define TICK_LIMIT_RUNNING (max(100 - TICK_BYOND_RESERVE - MAPTICK_LAST_INTERNAL_TICK_USAGE, MAPTICK_MC_MIN_RESERVE)) /// Tick limit used to resume things in stoplag -#define TICK_LIMIT_TO_RUN 50 //CC Edit +#define TICK_LIMIT_TO_RUN 60 //CC Edit /// Tick limit for MC while running -#define TICK_LIMIT_MC 90 //CC Edit +#define TICK_LIMIT_MC 80 //CC Edit /// Tick limit while initializing #define TICK_LIMIT_MC_INIT_DEFAULT 98 From d4c40063a7be7e1cf3cdc133065fc511ff648794 Mon Sep 17 00:00:00 2001 From: Rudy Date: Thu, 26 Mar 2026 13:34:27 -0700 Subject: [PATCH 15/26] AAA Okay this might be final. --- code/__DEFINES/_tick.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/__DEFINES/_tick.dm b/code/__DEFINES/_tick.dm index 3c3fbd47546..81ed6a3611b 100644 --- a/code/__DEFINES/_tick.dm +++ b/code/__DEFINES/_tick.dm @@ -1,5 +1,5 @@ /// Percentage of tick to leave for master controller to run -#define MAPTICK_MC_MIN_RESERVE 70 +#define MAPTICK_MC_MIN_RESERVE 80 #define MAPTICK_LAST_INTERNAL_TICK_USAGE (world.map_cpu) /// Tick limit while running normally @@ -7,7 +7,7 @@ #define TICK_LIMIT_RUNNING (max(100 - TICK_BYOND_RESERVE - MAPTICK_LAST_INTERNAL_TICK_USAGE, MAPTICK_MC_MIN_RESERVE)) /// Tick limit used to resume things in stoplag -#define TICK_LIMIT_TO_RUN 60 //CC Edit +#define TICK_LIMIT_TO_RUN 70 //CC Edit /// Tick limit for MC while running #define TICK_LIMIT_MC 80 //CC Edit /// Tick limit while initializing From e6e633d18c274fd4f998ff80767f3e3b27b4fb94 Mon Sep 17 00:00:00 2001 From: Rudy Date: Thu, 26 Mar 2026 13:52:26 -0700 Subject: [PATCH 16/26] Update lights on initialize --- code/game/objects/lighting/_base_light.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/objects/lighting/_base_light.dm b/code/game/objects/lighting/_base_light.dm index b2578ff6c91..72430bf8117 100644 --- a/code/game/objects/lighting/_base_light.dm +++ b/code/game/objects/lighting/_base_light.dm @@ -109,6 +109,7 @@ /obj/machinery/light/Initialize(mapload) . = ..() fog_parter_effect = new fog_parter_effect(get_turf(src), light_outer_range) + update(0) //CC Edit - Turn these fricken lights on. return INITIALIZE_HINT_LATELOAD /obj/machinery/light/LateInitialize() From 6980fdbdbd62a7db22f3ad6d62fd4be5dd31efc5 Mon Sep 17 00:00:00 2001 From: Rudy Date: Thu, 26 Mar 2026 14:16:57 -0700 Subject: [PATCH 17/26] Experimental - Ported TG Allocation Ticks https://github.com/tgstation/tgstation/commit/87234f3fd85f8aa45b1c5f393d14a7ee8705cd2c - Please see THIS PR --- code/__DEFINES/_tick.dm | 22 +-- code/_globalvars/misc.dm | 2 + code/controllers/master.dm | 298 ++++++++++++++++++------------------- 3 files changed, 163 insertions(+), 159 deletions(-) diff --git a/code/__DEFINES/_tick.dm b/code/__DEFINES/_tick.dm index 81ed6a3611b..de165a547d4 100644 --- a/code/__DEFINES/_tick.dm +++ b/code/__DEFINES/_tick.dm @@ -1,17 +1,21 @@ /// Percentage of tick to leave for master controller to run -#define MAPTICK_MC_MIN_RESERVE 80 -#define MAPTICK_LAST_INTERNAL_TICK_USAGE (world.map_cpu) - -/// Tick limit while running normally +#define MAPTICK_MC_MIN_RESERVE 60 +/// internal_tick_usage is updated every tick by extools +#define MAPTICK_LAST_INTERNAL_TICK_USAGE ((Master.normalized_internal_tick_usage / world.tick_lag) * 100) +/// Amount of a tick to reserve for byond regardless of its reported internal_tick_usage #define TICK_BYOND_RESERVE 2 -#define TICK_LIMIT_RUNNING (max(100 - TICK_BYOND_RESERVE - MAPTICK_LAST_INTERNAL_TICK_USAGE, MAPTICK_MC_MIN_RESERVE)) - +/// Tick limit while running normally +#define TICK_LIMIT_RUNNING (max(TICK_LIMIT_RUNNING_BACKGROUND, MAPTICK_MC_MIN_RESERVE)) +/// Tick limit for background things, strictly obeys the internal_tick_usage metric +#define TICK_LIMIT_RUNNING_BACKGROUND (100 - TICK_BYOND_RESERVE - MAPTICK_LAST_INTERNAL_TICK_USAGE) +/// Precent of a tick to require to even bother running anything. (10 percent of the tick_limit_running by default) +#define TICK_MIN_RUNTIME (TICK_LIMIT_RUNNING * 0.1) /// Tick limit used to resume things in stoplag -#define TICK_LIMIT_TO_RUN 70 //CC Edit +#define TICK_LIMIT_TO_RUN (Master.current_ticklimit - TICK_MIN_RUNTIME) /// Tick limit for MC while running -#define TICK_LIMIT_MC 80 //CC Edit +#define TICK_LIMIT_MC (TICK_LIMIT_RUNNING - TICK_MIN_RUNTIME) /// Tick limit while initializing -#define TICK_LIMIT_MC_INIT_DEFAULT 98 +#define TICK_LIMIT_MC_INIT_DEFAULT (100 - TICK_BYOND_RESERVE) /// for general usage of tick_usage #define TICK_USAGE world.tick_usage diff --git a/code/_globalvars/misc.dm b/code/_globalvars/misc.dm index 199d199b913..57fdcea570d 100644 --- a/code/_globalvars/misc.dm +++ b/code/_globalvars/misc.dm @@ -33,3 +33,5 @@ GLOBAL_VAR(bible_icon_state) GLOBAL_VAR(bible_item_state) GLOBAL_VAR(holy_weapon_type) GLOBAL_VAR(holy_armor_type) + +GLOBAL_VAR_INIT(internal_tick_usage, 0.2 * world.tick_lag) diff --git a/code/controllers/master.dm b/code/controllers/master.dm index 4d4bc96676b..ed8e0c83409 100644 --- a/code/controllers/master.dm +++ b/code/controllers/master.dm @@ -36,7 +36,10 @@ GLOBAL_REAL(Master, /datum/controller/master) = new var/sleep_delta = 1 - var/make_runtime = 0 + ///Only run ticker subsystems for the next n ticks. + var/skip_ticks = 0 + + var/make_runtime = FALSE var/initializations_finished_with_no_players_logged_in //I wonder what this could be? @@ -58,9 +61,10 @@ GLOBAL_REAL(Master, /datum/controller/master) = new var/static/random_seed - //current tick limit, assigned before running a subsystem. - //used by CHECK_TICK as well so that the procs subsystems call can obey that SS's tick limits + ///current tick limit, assigned before running a subsystem. used by CHECK_TICK as well so that the procs subsystems call can obey that SS's tick limits var/static/current_ticklimit = TICK_LIMIT_RUNNING + /// normalized version of the byond internal tick usage metric to smooth out peaks. + var/normalized_internal_tick_usage = 0 /datum/controller/master/New() if(!config) @@ -68,11 +72,11 @@ GLOBAL_REAL(Master, /datum/controller/master) = new // Highlander-style: there can only be one! Kill off the old and replace it with the new. if(!random_seed) -#ifdef UNIT_TESTS + #ifdef UNIT_TESTS random_seed = 29051994 -#else + #else random_seed = rand(1, 1e9) -#endif + #endif rand_seed(random_seed) var/list/_subsystems = list() @@ -83,7 +87,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new qdel(Master) else var/list/subsytem_types = subtypesof(/datum/controller/subsystem) - sortTim(subsytem_types, GLOBAL_PROC_REF(cmp_subsystem_init)) + sortTim(subsytem_types, /proc/cmp_subsystem_init) for(var/I in subsytem_types) _subsystems += new I Master = src @@ -98,7 +102,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new /datum/controller/master/Shutdown() processing = FALSE - sortTim(subsystems, GLOBAL_PROC_REF(cmp_subsystem_init)) + sortTim(subsystems, /proc/cmp_subsystem_init) reverseRange(subsystems) for(var/datum/controller/subsystem/ss in subsystems) log_world("Shutting down [ss.name] subsystem...") @@ -166,31 +170,25 @@ GLOBAL_REAL(Master, /datum/controller/master) = new to_chat(world, "The Master Controller is having some issues, we will need to re-initialize EVERYTHING") Initialize(20, TRUE) + // Please don't stuff random bullshit here, // Make a subsystem, give it the SS_NO_FIRE flag, and do your work in it's Initialize() /datum/controller/master/Initialize(delay, init_sss, tgs_prime) - set waitfor = 0 + set waitfor = FALSE if(delay) sleep(delay) - if(tgs_prime) - world.TgsInitializationComplete() - if(init_sss) init_subtypes(/datum/controller/subsystem, subsystems) -#ifdef TESTING + to_chat(world, "Initializing subsystems...") -#endif + // Sort subsystems by init_order, so they initialize in the correct order. - sortTim(subsystems, GLOBAL_PROC_REF(cmp_subsystem_init)) + sortTim(subsystems, /proc/cmp_subsystem_init) var/start_timeofday = REALTIMEOFDAY // Initialize subsystems. -//#ifndef TESTSERVER -// var/thing_done = FALSE -//#endif - current_ticklimit = CONFIG_GET(number/tick_limit_mc_init) for (var/datum/controller/subsystem/SS in subsystems) if (SS.flags & SS_NO_INIT) @@ -201,22 +199,21 @@ GLOBAL_REAL(Master, /datum/controller/master) = new var/time = (REALTIMEOFDAY - start_timeofday) / 10 var/msg = "Initializations complete within [time] second[time == 1 ? "" : "s"]!" - -#ifdef TESTING to_chat(world, "[msg]") -#endif log_world(msg) if (!current_runlevel) SetRunLevel(1) - setup_cargo_boat() // Sort subsystems by display setting for easy access. - sortTim(subsystems, GLOBAL_PROC_REF(cmp_subsystem_display)) + sortTim(subsystems, /proc/cmp_subsystem_display) // Set world options. world.change_fps(CONFIG_GET(number/fps)) var/initialized_tod = REALTIMEOFDAY + if(tgs_prime) + world.TgsInitializationComplete() + if(sleep_offline_after_initializations) world.sleep_offline = TRUE sleep(1) @@ -226,24 +223,23 @@ GLOBAL_REAL(Master, /datum/controller/master) = new initializations_finished_with_no_players_logged_in = initialized_tod < REALTIMEOFDAY - 10 // Loop. Master.StartProcessing(0) - SSgamemode.handle_picking_storyteller() /datum/controller/master/proc/SetRunLevel(new_runlevel) var/old_runlevel = current_runlevel if(isnull(old_runlevel)) old_runlevel = "NULL" - + testing("MC: Runlevel changed from [old_runlevel] to [new_runlevel]") current_runlevel = log(2, new_runlevel) + 1 if(current_runlevel < 1) CRASH("Attempted to set invalid runlevel: [new_runlevel]") // Starts the mc, and sticks around to restart it if the loop ever ends. /datum/controller/master/proc/StartProcessing(delay) - set waitfor = 0 + set waitfor = FALSE if(delay) sleep(delay) - + testing("Master starting processing") var/rtn = Loop() if (rtn > 0 || processing < 0) return //this was suppose to happen. @@ -276,8 +272,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new SS.state = SS_IDLE if (SS.flags & SS_TICKER) tickersubsystems += SS - // Timer subsystems aren't allowed to bunch up, so we offset them a bit - timer += world.tick_lag * rand(0, 1) + timer += world.tick_lag * rand(1, 5) SS.next_fire = timer continue @@ -296,9 +291,9 @@ GLOBAL_REAL(Master, /datum/controller/master) = new queue_tail = null //these sort by lower priorities first to reduce the number of loops needed to add subsequent SS's to the queue //(higher subsystems will be sooner in the queue, adding them later in the loop means we don't have to loop thru them next queue add) - sortTim(tickersubsystems, GLOBAL_PROC_REF(cmp_subsystem_priority)) + sortTim(tickersubsystems, /proc/cmp_subsystem_priority) for(var/I in runlevel_sorted_subsystems) - sortTim(I, GLOBAL_PROC_REF(cmp_subsystem_priority)) //I is a list, sort it bro + sortTim(runlevel_sorted_subsystems, /proc/cmp_subsystem_priority) I += tickersubsystems var/cached_runlevel = current_runlevel @@ -315,12 +310,15 @@ GLOBAL_REAL(Master, /datum/controller/master) = new while (1) tickdrift = max(0, MC_AVERAGE_FAST(tickdrift, (((REALTIMEOFDAY - init_timeofday) - (world.time - init_time)) / world.tick_lag))) + normalized_internal_tick_usage = max(0, MC_AVG_FAST_UP_SLOW_DOWN(normalized_internal_tick_usage, GLOB.internal_tick_usage)) var/starting_tick_usage = TICK_USAGE if (processing <= 0) current_ticklimit = TICK_LIMIT_RUNNING sleep(10) continue + sleep_delta = MC_AVERAGE_FAST(sleep_delta, 1) //decay sleep_delta + //Anti-tick-contention heuristics: //if there are mutiple sleeping procs running before us hogging the cpu, we have to run later. // (because sleeps are processed in the order received, longer sleeps are more likely to run first) @@ -334,39 +332,36 @@ GLOBAL_REAL(Master, /datum/controller/master) = new if (last_run + CEILING(world.tick_lag * (processing * sleep_delta), world.tick_lag) < world.time) sleep_delta += 1 - sleep_delta = MC_AVERAGE_FAST(sleep_delta, 1) //decay sleep_delta - if (starting_tick_usage > (TICK_LIMIT_MC*0.75)) //we ran 3/4 of the way into the tick sleep_delta += 1 //debug if (make_runtime) var/datum/controller/subsystem/SS - SS.can_fire = 0 + SS.can_fire = FALSE if (!Failsafe || (Failsafe.processing_interval > 0 && (Failsafe.lasttick+(Failsafe.processing_interval*5)) < world.time)) new/datum/controller/failsafe() // (re)Start the failsafe. //now do the actual stuff - if (!queue_head || !(iteration % 3)) + if (!skip_ticks) var/checking_runlevel = current_runlevel if(cached_runlevel != checking_runlevel) //resechedule subsystems - var/list/old_subsystems = current_runlevel_subsystems cached_runlevel = checking_runlevel current_runlevel_subsystems = runlevel_sorted_subsystems[cached_runlevel] - //now we'll go through all the subsystems we want to offset and give them a next_fire - for(var/datum/controller/subsystem/SS as anything in current_runlevel_subsystems) - //we only want to offset it if it's new and also behind - if(SS.next_fire > world.time || (SS in old_subsystems)) - continue - SS.next_fire = world.time + world.tick_lag * rand(0, DS2TICKS(min(SS.wait, 2 SECONDS))) + var/stagger = world.time + for(var/I in current_runlevel_subsystems) + var/datum/controller/subsystem/SS = I + if(SS.next_fire <= world.time) + stagger += world.tick_lag * rand(1, 5) + SS.next_fire = stagger subsystems_to_check = current_runlevel_subsystems else subsystems_to_check = tickersubsystems - if (CheckQueue(subsystems_to_check) <= 0) + if (!CheckQueue(subsystems_to_check)) if (!SoftReset(tickersubsystems, runlevel_sorted_subsystems)) log_world("MC: SoftReset() failed, crashing") return @@ -378,7 +373,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new continue if (queue_head) - if (RunQueue() <= 0) + if (!RunQueue()) if (!SoftReset(tickersubsystems, runlevel_sorted_subsystems)) log_world("MC: SoftReset() failed, crashing") return @@ -395,10 +390,10 @@ GLOBAL_REAL(Master, /datum/controller/master) = new iteration++ last_run = world.time + if (skip_ticks) + skip_ticks-- src.sleep_delta = MC_AVERAGE_FAST(src.sleep_delta, sleep_delta) current_ticklimit = TICK_LIMIT_RUNNING - if (processing * sleep_delta <= world.tick_lag) - current_ticklimit -= (TICK_LIMIT_RUNNING * 0.25) //reserve the tail 1/4 of the next tick for the mc if we plan on running next tick sleep(world.tick_lag * (processing * sleep_delta)) @@ -406,8 +401,6 @@ GLOBAL_REAL(Master, /datum/controller/master) = new // This is what decides if something should run. /datum/controller/master/proc/CheckQueue(list/subsystemstocheck) - . = 0 //so the mc knows if we runtimed - //we create our variables outside of the loops to save on overhead var/datum/controller/subsystem/SS var/SS_flags @@ -429,136 +422,139 @@ GLOBAL_REAL(Master, /datum/controller/master) = new if ((SS_flags & (SS_TICKER|SS_KEEP_TIMING)) == SS_KEEP_TIMING && SS.last_fire + (SS.wait * 0.75) > world.time) continue SS.enqueue() - . = 1 + return TRUE // so MC knows if we runtime // Run thru the queue of subsystems to run, running them while balancing out their allocated tick precentage /datum/controller/master/proc/RunQueue() - . = 0 - var/datum/controller/subsystem/queue_node - var/queue_node_flags - var/queue_node_priority + var/datum/controller/subsystem/queue_node = queue_head //The subsystem we're running right now + var/queue_node_flags //Cache of queue node flags + var/queue_node_priority //Cache of queue node priority var/queue_node_paused - var/current_tick_budget - var/tick_precentage - var/tick_remaining - var/ran = TRUE //this is right - var/ran_non_ticker = FALSE - var/bg_calc //have we swtiched current_tick_budget to background mode yet? - var/tick_usage + var/current_tick_budget = queue_priority_count + var/tick_precentage //tick % used, used for calculating tick remaining + var/tick_remaining //How much of the tick we've got left over to do stuff + var/ran_non_ticker = FALSE //Whether we've started running non-ticker subsystems yet + var/bg_calc = FALSE //have we swtiched current_tick_budget to background mode yet? + var/tick_usage //How much of a tick we're using in this queue node //keep running while we have stuff to run and we haven't gone over a tick - // this is so subsystems paused eariler can use tick time that later subsystems never used - while (ran && queue_head && TICK_USAGE < TICK_LIMIT_MC) - ran = FALSE - bg_calc = FALSE - current_tick_budget = queue_priority_count - queue_node = queue_head - while (queue_node) - if (ran && TICK_USAGE > TICK_LIMIT_RUNNING) - break - - queue_node_flags = queue_node.flags - queue_node_priority = queue_node.queued_priority - - //super special case, subsystems where we can't make them pause mid way through - //if we can't run them this tick (without going over a tick) - //we bump up their priority and attempt to run them next tick - //(unless we haven't even ran anything this tick, since its unlikely they will ever be able run - // in those cases, so we just let them run) - if (queue_node_flags & SS_NO_TICK_CHECK) - if (queue_node.tick_usage > TICK_LIMIT_RUNNING - TICK_USAGE && ran_non_ticker) + //this is so subsystems paused eariler can use tick time that later subsystems never used + while (queue_head && queue_node && TICK_USAGE < TICK_LIMIT_MC) + queue_node_flags = queue_node.flags + queue_node_priority = queue_node.queued_priority + + + if(!(queue_node_flags & SS_TICKER) && skip_ticks) + queue_node = queue_node.queue_next + continue + + //super special case, subsystems where we can't make them pause mid way through + //if we can't run them this tick (without going over a tick) + //we bump up their priority and attempt to run them next tick + //(unless we haven't even ran anything this tick, since its unlikely they will ever be able run + // in those cases, so we just let them run) + + + if (queue_node_flags & SS_NO_TICK_CHECK) + if (queue_node.tick_usage > TICK_LIMIT_RUNNING - TICK_USAGE && ran_non_ticker) + if (!(queue_node_flags & SS_BACKGROUND)) queue_node.queued_priority += queue_priority_count * 0.1 queue_priority_count -= queue_node_priority queue_priority_count += queue_node.queued_priority - current_tick_budget -= queue_node_priority - queue_node = queue_node.queue_next - continue + current_tick_budget -= queue_node_priority + queue_node = queue_node.queue_next + continue - if ((queue_node_flags & SS_BACKGROUND) && !bg_calc) - current_tick_budget = queue_priority_count_bg - bg_calc = TRUE + //Checks if we're in background calculation mode yet and sets us to it if we are + if (!bg_calc && (queue_node_flags & SS_BACKGROUND)) + current_tick_budget = queue_priority_count_bg + bg_calc = TRUE - tick_remaining = TICK_LIMIT_RUNNING - TICK_USAGE + tick_remaining = ((bg_calc) ? (TICK_LIMIT_RUNNING_BACKGROUND) : (TICK_LIMIT_RUNNING)) - TICK_USAGE - if (current_tick_budget > 0 && queue_node_priority > 0) - tick_precentage = tick_remaining / (current_tick_budget / queue_node_priority) - else - tick_precentage = tick_remaining + if (tick_remaining < TICK_MIN_RUNTIME) + current_tick_budget -= queue_node_priority + queue_node = queue_node.queue_next + continue - tick_precentage = max(tick_precentage*0.5, tick_precentage-queue_node.tick_overrun) + if (current_tick_budget > 0 && queue_node_priority > 0) + tick_precentage = tick_remaining / (current_tick_budget / queue_node_priority) + else + tick_precentage = tick_remaining - current_ticklimit = round(TICK_USAGE + tick_precentage) + tick_precentage = max(TICK_MIN_RUNTIME, tick_precentage*0.5, tick_precentage-queue_node.tick_overrun) - if (!(queue_node_flags & SS_TICKER)) - ran_non_ticker = TRUE - ran = TRUE + current_ticklimit = round(TICK_USAGE + tick_precentage) - queue_node_paused = (queue_node.state == SS_PAUSED || queue_node.state == SS_PAUSING) - last_type_processed = queue_node + //Check for if we ran a non-ticker ss, used for check if we can start processing SS_NO_TICK_CHECK stuff yet + if(!(queue_node_flags & SS_TICKER)) + ran_non_ticker = TRUE - queue_node.state = SS_RUNNING + queue_node_paused = (queue_node.state == SS_PAUSED || queue_node.state == SS_PAUSING) + last_type_processed = queue_node - tick_usage = TICK_USAGE - var/state = queue_node.ignite(queue_node_paused) - tick_usage = TICK_USAGE - tick_usage + queue_node.state = SS_RUNNING - if (state == SS_RUNNING) - state = SS_IDLE - current_tick_budget -= queue_node_priority + tick_usage = TICK_USAGE + var/state = queue_node.ignite(queue_node_paused) + tick_usage = TICK_USAGE - tick_usage + if(state == SS_RUNNING) + state = SS_IDLE + current_tick_budget -= queue_node_priority - if (tick_usage < 0) - tick_usage = 0 - queue_node.tick_overrun = max(0, MC_AVG_FAST_UP_SLOW_DOWN(queue_node.tick_overrun, tick_usage-tick_precentage)) - queue_node.state = state + if(tick_usage < 0) + tick_usage = 0 + queue_node.tick_overrun = max(0, MC_AVG_FAST_UP_SLOW_DOWN(queue_node.tick_overrun, tick_usage-tick_precentage)) + queue_node.state = state - if (state == SS_PAUSED) - queue_node.paused_ticks++ - queue_node.paused_tick_usage += tick_usage - queue_node = queue_node.queue_next - continue - - queue_node.ticks = MC_AVERAGE(queue_node.ticks, queue_node.paused_ticks) - tick_usage += queue_node.paused_tick_usage - - queue_node.tick_usage = MC_AVERAGE_FAST(queue_node.tick_usage, tick_usage) + if(state == SS_PAUSED) + queue_node.paused_ticks++ + queue_node.paused_tick_usage += tick_usage + queue_node = queue_node.queue_next + continue - queue_node.cost = MC_AVERAGE_FAST(queue_node.cost, TICK_DELTA_TO_MS(tick_usage)) - queue_node.paused_ticks = 0 - queue_node.paused_tick_usage = 0 + queue_node.ticks = MC_AVERAGE(queue_node.ticks, queue_node.paused_ticks) + tick_usage += queue_node.paused_tick_usage - if (queue_node_flags & SS_BACKGROUND) //update our running total - queue_priority_count_bg -= queue_node_priority - else - queue_priority_count -= queue_node_priority + queue_node.tick_usage = MC_AVERAGE_FAST(queue_node.tick_usage, tick_usage) - queue_node.last_fire = world.time - queue_node.times_fired++ + queue_node.cost = MC_AVERAGE_FAST(queue_node.cost, TICK_DELTA_TO_MS(tick_usage)) + queue_node.paused_ticks = 0 + queue_node.paused_tick_usage = 0 - if (queue_node_flags & SS_TICKER) - queue_node.next_fire = world.time + (world.tick_lag * queue_node.wait) - else if (queue_node_flags & SS_POST_FIRE_TIMING) - queue_node.next_fire = world.time + queue_node.wait + (world.tick_lag * (queue_node.tick_overrun/100)) - else if (queue_node_flags & SS_KEEP_TIMING) - queue_node.next_fire += queue_node.wait - else - queue_node.next_fire = queue_node.queued_time + queue_node.wait + (world.tick_lag * (queue_node.tick_overrun/100)) + if (bg_calc) //update our running total + queue_priority_count_bg -= queue_node_priority + else + queue_priority_count -= queue_node_priority + + queue_node.last_fire = world.time + queue_node.times_fired++ + + //Calculate next fire + if (queue_node_flags & SS_TICKER) + queue_node.next_fire = world.time + (world.tick_lag * queue_node.wait) + else if (queue_node_flags & SS_POST_FIRE_TIMING) + queue_node.next_fire = world.time + queue_node.wait + (world.tick_lag * (queue_node.tick_overrun/100)) + else if (queue_node_flags & SS_KEEP_TIMING) + queue_node.next_fire += queue_node.wait + else + queue_node.next_fire = queue_node.queued_time + queue_node.wait + (world.tick_lag * (queue_node.tick_overrun/100)) - queue_node.queued_time = 0 + queue_node.queued_time = 0 - //remove from queue - queue_node.dequeue() + //remove from queue + queue_node.dequeue() - queue_node = queue_node.queue_next + queue_node = queue_node.queue_next - . = 1 + return TRUE // so MC knows if we runtime //resets the queue, and all subsystems, while filtering out the subsystem lists // called if any mc's queue procs runtime or exit improperly. /datum/controller/master/proc/SoftReset(list/ticker_SS, list/runlevel_SS) - . = 0 log_world("MC: SoftReset called, resetting MC queue state.") if (!istype(subsystems) || !istype(ticker_SS) || !istype(runlevel_SS)) log_world("MC: SoftReset: Bad list contents: '[subsystems]' '[ticker_SS]' '[runlevel_SS]'") @@ -595,16 +591,18 @@ GLOBAL_REAL(Master, /datum/controller/master) = new queue_priority_count = 0 queue_priority_count_bg = 0 log_world("MC: SoftReset: Finished.") - . = 1 + return TRUE // so MC knows if we runtime +/// Warns us that the end of tick byond map_update will be laggier then normal, so that we can just skip running subsystems this tick. +/datum/controller/master/proc/laggy_byond_map_update_incoming() + if (!skip_ticks) + skip_ticks = 1 -/datum/controller/master/stat_entry() - if(!statclick) - statclick = new/obj/effect/statclick/debug(null, "Initializing...", src) +/datum/controller/master/stat_entry(msg) + msg = "(TickRate:[Master.processing]) (Iteration:[Master.iteration]) (TickLimit: [round(Master.current_ticklimit, 0.1)])" + return msg - stat("Byond:", "(FPS:[world.fps]) (TickCount:[world.time/world.tick_lag]) (TickDrift:[round(Master.tickdrift,1)]([round((Master.tickdrift/(world.time/world.tick_lag))*100,0.1)]%))") - stat("Master Controller:", statclick.update("(TickRate:[Master.processing]) (Iteration:[Master.iteration])")) /datum/controller/master/StartLoadingMap() //disallow more than one map to load at once, multithreading it will just cause race conditions @@ -632,6 +630,6 @@ GLOBAL_REAL(Master, /datum/controller/master) = new processing = CONFIG_GET(number/mc_tick_rate/high_pop_mc_tick_rate) /datum/controller/master/proc/OnConfigLoad() - for(var/thing in subsystems) + for (var/thing in subsystems) var/datum/controller/subsystem/SS = thing SS.OnConfigLoad() From 51983aa9c6679df7644f487b91c4e9cdd4196599 Mon Sep 17 00:00:00 2001 From: Rudy Date: Thu, 26 Mar 2026 14:33:49 -0700 Subject: [PATCH 18/26] Adds in new list sorting procs --- code/__HELPERS/_lists.dm | 59 +++++++ code/__HELPERS/sorts/InsertSort.dm | 2 +- code/__HELPERS/sorts/MergeSort.dm | 2 +- code/__HELPERS/sorts/TimSort.dm | 2 +- code/__HELPERS/sorts/__main.dm | 246 +++++++++++++++-------------- 5 files changed, 188 insertions(+), 123 deletions(-) diff --git a/code/__HELPERS/_lists.dm b/code/__HELPERS/_lists.dm index bb1e3777d0a..5c43b94d0aa 100644 --- a/code/__HELPERS/_lists.dm +++ b/code/__HELPERS/_lists.dm @@ -819,3 +819,62 @@ GLOBAL_LIST_EMPTY(string_lists) // Finally return the list using regular english_list builder. return english_list(out, nothing_text, and_text, comma_text, final_comma_text) + +/** + * Move a single element from position from_index within a list, to position to_index + * All elements in the range [1,to_index) before the move will be before the pivot afterwards + * All elements in the range [to_index, L.len+1) before the move will be after the pivot afterwards + * In other words, it's as if the range [from_index,to_index) have been rotated using a <<< operation common to other languages. + * from_index and to_index must be in the range [1,L.len+1] + * This will preserve associations ~Carnie +**/ +/proc/move_element(list/inserted_list, from_index, to_index) + if(from_index == to_index || from_index + 1 == to_index) //no need to move + return + if(from_index > to_index) + ++from_index //since a null will be inserted before from_index, the index needs to be nudged right by one + + inserted_list.Insert(to_index, null) + inserted_list.Swap(from_index, to_index) + inserted_list.Cut(from_index, from_index + 1) + +///replaces reverseList ~Carnie +/proc/reverse_range(list/inserted_list, start = 1, end = 0) + if(inserted_list.len) + start = start % inserted_list.len + end = end % (inserted_list.len + 1) + if(start <= 0) + start += inserted_list.len + if(end <= 0) + end += inserted_list.len + 1 + + --end + while(start < end) + inserted_list.Swap(start++, end--) + + return inserted_list + +/** + * Move elements [from_index,from_index+len) to [to_index-len, to_index) + * Same as moveElement but for ranges of elements + * This will preserve associations ~Carnie +**/ +/proc/move_range(list/inserted_list, from_index, to_index, len = 1) + var/distance = abs(to_index - from_index) + if(len >= distance) //there are more elements to be moved than the distance to be moved. Therefore the same result can be achieved (with fewer operations) by moving elements between where we are and where we are going. The result being, our range we are moving is shifted left or right by dist elements + if(from_index <= to_index) + return //no need to move + from_index += len //we want to shift left instead of right + + for(var/i in 1 to distance) + inserted_list.Insert(from_index, null) + inserted_list.Swap(from_index, to_index) + inserted_list.Cut(to_index, to_index + 1) + else + if(from_index > to_index) + from_index += len + + for(var/i in 1 to len) + inserted_list.Insert(to_index, null) + inserted_list.Swap(from_index, to_index) + inserted_list.Cut(from_index, from_index + 1) diff --git a/code/__HELPERS/sorts/InsertSort.dm b/code/__HELPERS/sorts/InsertSort.dm index 4c8c207abe6..54b73ba140c 100644 --- a/code/__HELPERS/sorts/InsertSort.dm +++ b/code/__HELPERS/sorts/InsertSort.dm @@ -8,7 +8,7 @@ if(toIndex <= 0) toIndex += L.len + 1 - var/datum/sortInstance/SI = GLOB.sortInstance + var/datum/sort_instance/SI = GLOB.sort_instance if(!SI) SI = new SI.L = L diff --git a/code/__HELPERS/sorts/MergeSort.dm b/code/__HELPERS/sorts/MergeSort.dm index 9c85f37f7c6..b7266962e63 100644 --- a/code/__HELPERS/sorts/MergeSort.dm +++ b/code/__HELPERS/sorts/MergeSort.dm @@ -8,7 +8,7 @@ if(toIndex <= 0) toIndex += L.len + 1 - var/datum/sortInstance/SI = GLOB.sortInstance + var/datum/sort_instance/SI = GLOB.sort_instance if(!SI) SI = new SI.L = L diff --git a/code/__HELPERS/sorts/TimSort.dm b/code/__HELPERS/sorts/TimSort.dm index 7191d1ee55c..cec104f4057 100644 --- a/code/__HELPERS/sorts/TimSort.dm +++ b/code/__HELPERS/sorts/TimSort.dm @@ -8,7 +8,7 @@ if(toIndex <= 0) toIndex += L.len + 1 - var/datum/sortInstance/SI = GLOB.sortInstance + var/datum/sort_instance/SI = GLOB.sort_instance if(!SI) SI = new diff --git a/code/__HELPERS/sorts/__main.dm b/code/__HELPERS/sorts/__main.dm index cc394a0649a..1ea784a820c 100644 --- a/code/__HELPERS/sorts/__main.dm +++ b/code/__HELPERS/sorts/__main.dm @@ -8,19 +8,19 @@ //When we get into galloping mode, we stay there until both runs win less often than MIN_GALLOP consecutive times. #define MIN_GALLOP 7 - //This is a global instance to allow much of this code to be reused. The interfaces are kept separately -GLOBAL_DATUM_INIT(sortInstance, /datum/sortInstance, new()) -/datum/sortInstance +//This is a global instance to allow much of this code to be reused. The interfaces are kept separately +GLOBAL_DATUM_INIT(sort_instance, /datum/sort_instance, new()) +/datum/sort_instance //The array being sorted. var/list/L //The comparator proc-reference - var/cmp = /proc/cmp_numeric_asc + var/cmp = GLOBAL_PROC_REF(cmp_numeric_asc) //whether we are sorting list keys (0: L[i]) or associated values (1: L[L[i]]) var/associative = 0 - //This controls when we get *into* galloping mode. It is initialized to MIN_GALLOP. + //This controls when we get *into* galloping mode. It is initialized to MIN_GALLOP. //The mergeLo and mergeHi methods nudge it higher for random data, and lower for highly structured data. var/minGallop = MIN_GALLOP @@ -31,7 +31,7 @@ GLOBAL_DATUM_INIT(sortInstance, /datum/sortInstance, new()) var/list/runLens = list() -/datum/sortInstance/proc/timSort(start, end) +/datum/sort_instance/proc/timSort(start, end) runBases.Cut() runLens.Cut() @@ -82,26 +82,27 @@ GLOBAL_DATUM_INIT(sortInstance, /datum/sortInstance, new()) return L -/* -Sorts the specified portion of the specified array using a binary -insertion sort. This is the best method for sorting small numbers -of elements. It requires O(n log n) compares, but O(n^2) data -movement (worst case). - -If the initial part of the specified range is already sorted, -this method can take advantage of it: the method assumes that the -elements in range [lo,start) are already sorted - -lo the index of the first element in the range to be sorted -hi the index after the last element in the range to be sorted -start the index of the first element in the range that is not already known to be sorted -*/ -/datum/sortInstance/proc/binarySort(lo, hi, start) + /* + Sorts the specified portion of the specified array using a binary + insertion sort. This is the best method for sorting small numbers + of elements. It requires O(n log n) compares, but O(n^2) data + movement (worst case). + + If the initial part of the specified range is already sorted, + this method can take advantage of it: the method assumes that the + elements in range [lo,start) are already sorted + + lo the index of the first element in the range to be sorted + hi the index after the last element in the range to be sorted + start the index of the first element in the range that is not already known to be sorted + */ +/datum/sort_instance/proc/binarySort(lo, hi, start) //ASSERT(lo <= start && start <= hi) if(start <= lo) start = lo + 1 - for(,start < hi, ++start) + var/list/L = src.L + for(start in start to hi - 1) var/pivot = fetchElement(L,start) //set left and right to the index where pivot belongs @@ -112,34 +113,35 @@ start the index of the first element in the range that is not already known to b //[lo, left) elements <= pivot < [right, start) elements //in other words, find where the pivot element should go using bisection search while(left < right) - var/mid = (left + right) >> 1 //round((left+right)/2) + var/mid = (left + right) >> 1 //round((left+right)/2) if(call(cmp)(fetchElement(L,mid), pivot) > 0) right = mid else left = mid+1 //ASSERT(left == right) - moveElement(L, start, left) //move pivot element to correct location in the sorted range + move_element(L, start, left) //move pivot element to correct location in the sorted range -/* -Returns the length of the run beginning at the specified position and reverses the run if it is back-to-front + /* + Returns the length of the run beginning at the specified position and reverses the run if it is back-to-front -A run is the longest ascending sequence with: - a[lo] <= a[lo + 1] <= a[lo + 2] <= ... -or the longest descending sequence with: - a[lo] > a[lo + 1] > a[lo + 2] > ... + A run is the longest ascending sequence with: + a[lo] <= a[lo + 1] <= a[lo + 2] <= ... + or the longest descending sequence with: + a[lo] > a[lo + 1] > a[lo + 2] > ... -For its intended use in a stable mergesort, the strictness of the -definition of "descending" is needed so that the call can safely -reverse a descending sequence without violating stability. -*/ -/datum/sortInstance/proc/countRunAndMakeAscending(lo, hi) + For its intended use in a stable mergesort, the strictness of the + definition of "descending" is needed so that the call can safely + reverse a descending sequence without violating stability. + */ +/datum/sort_instance/proc/countRunAndMakeAscending(lo, hi) //ASSERT(lo < hi) var/runHi = lo + 1 if(runHi >= hi) return 1 + var/list/L = src.L var/last = fetchElement(L,lo) var/current = fetchElement(L,runHi++) @@ -150,7 +152,7 @@ reverse a descending sequence without violating stability. if(call(cmp)(current, last) >= 0) break ++runHi - reverseRange(L, lo, runHi) + reverse_range(L, lo, runHi) else while(runHi < hi) last = current @@ -161,22 +163,22 @@ reverse a descending sequence without violating stability. return runHi - lo -//Returns the minimum acceptable run length for an array of the specified length. -//Natural runs shorter than this will be extended with binarySort -/datum/sortInstance/proc/minRunLength(n) + //Returns the minimum acceptable run length for an array of the specified length. + //Natural runs shorter than this will be extended with binarySort +/datum/sort_instance/proc/minRunLength(n) //ASSERT(n >= 0) - var/r = 0 //becomes 1 if any bits are shifted off + var/r = 0 //becomes 1 if any bits are shifted off while(n >= MIN_MERGE) r |= (n & 1) n >>= 1 return n + r -//Examines the stack of runs waiting to be merged and merges adjacent runs until the stack invariants are reestablished: -// runLen[i-3] > runLen[i-2] + runLen[i-1] -// runLen[i-2] > runLen[i-1] -//This method is called each time a new run is pushed onto the stack. -//So the invariants are guaranteed to hold for i runLen[i-2] + runLen[i-1] + // runLen[i-2] > runLen[i-1] + //This method is called each time a new run is pushed onto the stack. + //So the invariants are guaranteed to hold for i= 2) var/n = runBases.len - 1 if(n > 1 && runLens[n-1] <= runLens[n] + runLens[n+1]) @@ -186,12 +188,12 @@ reverse a descending sequence without violating stability. else if(runLens[n] <= runLens[n+1]) mergeAt(n) else - break //Invariant is established + break //Invariant is established -//Merges all runs on the stack until only one remains. -//Called only once, to finalise the sort -/datum/sortInstance/proc/mergeForceCollapse() + //Merges all runs on the stack until only one remains. + //Called only once, to finalise the sort +/datum/sort_instance/proc/mergeForceCollapse() while(runBases.len >= 2) var/n = runBases.len - 1 if(n > 1 && runLens[n-1] < runLens[n+1]) @@ -199,10 +201,10 @@ reverse a descending sequence without violating stability. mergeAt(n) -//Merges the two consecutive runs at stack indices i and i+1 -//Run i must be the penultimate or antepenultimate run on the stack -//In other words, i must be equal to stackSize-2 or stackSize-3 -/datum/sortInstance/proc/mergeAt(i) + //Merges the two consecutive runs at stack indices i and i+1 + //Run i must be the penultimate or antepenultimate run on the stack + //In other words, i must be equal to stackSize-2 or stackSize-3 +/datum/sort_instance/proc/mergeAt(i) //ASSERT(runBases.len >= 2) //ASSERT(i >= 1) //ASSERT(i == runBases.len - 1 || i == runBases.len - 2) @@ -221,7 +223,6 @@ reverse a descending sequence without violating stability. runLens.Cut(i+1, i+2) runBases.Cut(i+1, i+2) - //Find where the first element of run2 goes in run1. //Prior elements in run1 can be ignored (because they're already in place) var/k = gallopRight(fetchElement(L,base2), base1, len1, 0) @@ -245,20 +246,21 @@ reverse a descending sequence without violating stability. mergeHi(base1, len1, base2, len2) -/* - Locates the position to insert key within the specified sorted range - If the range contains elements equal to key, this will return the index of the LEFTMOST of those elements + /* + Locates the position to insert key within the specified sorted range + If the range contains elements equal to key, this will return the index of the LEFTMOST of those elements - key the element to be inserted into the sorted range - base the index of the first element of the sorted range - len the length of the sorted range, must be greater than 0 - hint the offset from base at which to begin the search, such that 0 <= hint < len; i.e. base <= hint < base+hint + key the element to be inserted into the sorted range + base the index of the first element of the sorted range + len the length of the sorted range, must be greater than 0 + hint the offset from base at which to begin the search, such that 0 <= hint < len; i.e. base <= hint < base+hint - Returns the index at which to insert element 'key' -*/ -/datum/sortInstance/proc/gallopLeft(key, base, len, hint) + Returns the index at which to insert element 'key' + */ +/datum/sort_instance/proc/gallopLeft(key, base, len, hint) //ASSERT(len > 0 && hint >= 0 && hint < len) + var/list/L = src.L var/lastOffset = 0 var/offset = 1 if(call(cmp)(key, fetchElement(L,base+hint)) > 0) @@ -302,29 +304,30 @@ reverse a descending sequence without violating stability. //ASSERT(lastOffset == offset) return offset -/** - * Like gallopLeft, except that if the range contains an element equal to - * key, gallopRight returns the index after the rightmost equal element. - * - * @param key the key whose insertion point to search for - * @param a the array in which to search - * @param base the index of the first element in the range - * @param len the length of the range; must be > 0 - * @param hint the index at which to begin the search, 0 <= hint < n. - * The closer hint is to the result, the faster this method will run. - * @param c the comparator used to order the range, and to search - * @return the int k, 0 <= k <= n such that a[b + k - 1] <= key < a[b + k] - */ -/datum/sortInstance/proc/gallopRight(key, base, len, hint) + /** + * Like gallopLeft, except that if the range contains an element equal to + * key, gallopRight returns the index after the rightmost equal element. + * + * @param key the key whose insertion point to search for + * @param a the array in which to search + * @param base the index of the first element in the range + * @param len the length of the range; must be > 0 + * @param hint the index at which to begin the search, 0 <= hint < n. + * The closer hint is to the result, the faster this method will run. + * @param c the comparator used to order the range, and to search + * @return the int k, 0 <= k <= n such that `a[b + k - 1] <= key < a[b + k]` + */ +/datum/sort_instance/proc/gallopRight(key, base, len, hint) //ASSERT(len > 0 && hint >= 0 && hint < len) + var/list/L = src.L var/offset = 1 var/lastOffset = 0 - if(call(cmp)(key, fetchElement(L,base+hint)) < 0) //key <= L[base+hint] - var/maxOffset = hint + 1 //therefore we want to insert somewhere in the range [base,base+hint] = [base+,base+(hint+1)) - while(offset < maxOffset && call(cmp)(key, fetchElement(L,base+hint-offset)) < 0) //we are iterating backwards + if(call(cmp)(key, fetchElement(L,base+hint)) < 0) //key <= L[base+hint] + var/maxOffset = hint + 1 //therefore we want to insert somewhere in the range [base,base+hint] = [base+,base+(hint+1)) + while(offset < maxOffset && call(cmp)(key, fetchElement(L,base+hint-offset)) < 0) //we are iterating backwards lastOffset = offset - offset = (offset << 1) + 1 //1 3 7 15 + offset = (offset << 1) + 1 //1 3 7 15 if(offset > maxOffset) offset = maxOffset @@ -333,8 +336,8 @@ reverse a descending sequence without violating stability. lastOffset = hint - offset offset = hint - temp - else //key > L[base+hint] - var/maxOffset = len - hint //therefore we want to insert somewhere in the range (base+hint,base+len) = [base+hint+1, base+hint+(len-hint)) + else //key > L[base+hint] + var/maxOffset = len - hint //therefore we want to insert somewhere in the range (base+hint,base+len) = [base+hint+1, base+hint+(len-hint)) while(offset < maxOffset && call(cmp)(key, fetchElement(L,base+hint+offset)) >= 0) lastOffset = offset offset = (offset << 1) + 1 @@ -351,9 +354,9 @@ reverse a descending sequence without violating stability. while(lastOffset < offset) var/m = lastOffset + ((offset - lastOffset) >> 1) - if(call(cmp)(key, fetchElement(L,base+m)) < 0) //key <= L[base+m] + if(call(cmp)(key, fetchElement(L,base+m)) < 0) //key <= L[base+m] offset = m - else //key > L[base+m] + else //key > L[base+m] lastOffset = m + 1 //ASSERT(lastOffset == offset) @@ -361,39 +364,40 @@ reverse a descending sequence without violating stability. return offset -//Merges two adjacent runs in-place in a stable fashion. -//For performance this method should only be called when len1 <= len2! -/datum/sortInstance/proc/mergeLo(base1, len1, base2, len2) + //Merges two adjacent runs in-place in a stable fashion. + //For performance this method should only be called when len1 <= len2! +/datum/sort_instance/proc/mergeLo(base1, len1, base2, len2) //ASSERT(len1 > 0 && len2 > 0 && base1 + len1 == base2) + var/list/L = src.L var/cursor1 = base1 var/cursor2 = base2 //degenerate cases if(len2 == 1) - moveElement(L, cursor2, cursor1) + move_element(L, cursor2, cursor1) return if(len1 == 1) - moveElement(L, cursor1, cursor2+len2) + move_element(L, cursor1, cursor2+len2) return //Move first element of second run - moveElement(L, cursor2++, cursor1++) + move_element(L, cursor2++, cursor1++) --len2 outer: while(1) - var/count1 = 0 //# of times in a row that first run won - var/count2 = 0 // " " " " " " second run won + var/count1 = 0 //# of times in a row that first run won + var/count2 = 0 // " " " " " " second run won - //do the straightfoward thin until one run starts winning consistently + //do the straightforward thin until one run starts winning consistently do //ASSERT(len1 > 1 && len2 > 0) if(call(cmp)(fetchElement(L,cursor2), fetchElement(L,cursor1)) < 0) - moveElement(L, cursor2++, cursor1++) + move_element(L, cursor2++, cursor1++) --len2 ++count2 @@ -413,7 +417,7 @@ reverse a descending sequence without violating stability. while((count1 | count2) < minGallop) - //one run is winning consistently so galloping may provide huge benifits + //one run is winning consistently so galloping may provide huge benefits //so try galloping, until such time as the run is no longer consistently winning do //ASSERT(len1 > 1 && len2 > 0) @@ -426,7 +430,7 @@ reverse a descending sequence without violating stability. if(len1 <= 1) break outer - moveElement(L, cursor2, cursor1) + move_element(L, cursor2, cursor1) ++cursor2 ++cursor1 if(--len2 == 0) @@ -434,7 +438,7 @@ reverse a descending sequence without violating stability. count2 = gallopLeft(fetchElement(L,cursor1), cursor2, len2, 0) if(count2) - moveRange(L, cursor2, cursor1, count2) + move_range(L, cursor2, cursor1, count2) cursor2 += count2 cursor1 += count2 @@ -458,41 +462,42 @@ reverse a descending sequence without violating stability. if(len1 == 1) //ASSERT(len2 > 0) - moveElement(L, cursor1, cursor2+len2) + move_element(L, cursor1, cursor2+len2) //else //ASSERT(len2 == 0) //ASSERT(len1 > 1) -/datum/sortInstance/proc/mergeHi(base1, len1, base2, len2) +/datum/sort_instance/proc/mergeHi(base1, len1, base2, len2) //ASSERT(len1 > 0 && len2 > 0 && base1 + len1 == base2) - var/cursor1 = base1 + len1 - 1 //start at end of sublists + var/list/L = src.L + var/cursor1 = base1 + len1 - 1 //start at end of sublists var/cursor2 = base2 + len2 - 1 //degenerate cases if(len2 == 1) - moveElement(L, base2, base1) + move_element(L, base2, base1) return if(len1 == 1) - moveElement(L, base1, cursor2+1) + move_element(L, base1, cursor2+1) return - moveElement(L, cursor1--, cursor2-- + 1) + move_element(L, cursor1--, cursor2-- + 1) --len1 outer: while(1) - var/count1 = 0 //# of times in a row that first run won - var/count2 = 0 // " " " " " " second run won + var/count1 = 0 //# of times in a row that first run won + var/count2 = 0 // " " " " " " second run won - //do the straightfoward thing until one run starts winning consistently + //do the straightforward thing until one run starts winning consistently do //ASSERT(len1 > 0 && len2 > 1) if(call(cmp)(fetchElement(L,cursor2), fetchElement(L,cursor1)) < 0) - moveElement(L, cursor1--, cursor2-- + 1) + move_element(L, cursor1--, cursor2-- + 1) --len1 ++count1 @@ -511,16 +516,16 @@ reverse a descending sequence without violating stability. break outer while((count1 | count2) < minGallop) - //one run is winning consistently so galloping may provide huge benifits + //one run is winning consistently so galloping may provide huge benefits //so try galloping, until such time as the run is no longer consistently winning do //ASSERT(len1 > 0 && len2 > 1) - count1 = len1 - gallopRight(fetchElement(L,cursor2), base1, len1, len1-1) //should cursor1 be base1? + count1 = len1 - gallopRight(fetchElement(L,cursor2), base1, len1, len1-1) //should cursor1 be base1? if(count1) cursor1 -= count1 - moveRange(L, cursor1+1, cursor2+1, count1) //cursor1+1 == cursor2 by definition + move_range(L, cursor1+1, cursor2+1, count1) //cursor1+1 == cursor2 by definition cursor2 -= count1 len1 -= count1 @@ -541,7 +546,7 @@ reverse a descending sequence without violating stability. if(len2 <= 1) break outer - moveElement(L, cursor1--, cursor2-- + 1) + move_element(L, cursor1--, cursor2-- + 1) --len1 if(len1 == 0) @@ -552,20 +557,20 @@ reverse a descending sequence without violating stability. if(minGallop < 0) minGallop = 0 - minGallop += 2 // Penalize for leaving gallop mode + minGallop += 2 // Penalize for leaving gallop mode if(len2 == 1) //ASSERT(len1 > 0) cursor1 -= len1 - moveRange(L, cursor1+1, cursor2+1, len1) + move_range(L, cursor1+1, cursor2+1, len1) //else //ASSERT(len1 == 0) //ASSERT(len2 > 0) -/datum/sortInstance/proc/mergeSort(start, end) +/datum/sort_instance/proc/mergeSort(start, end) var/remaining = end - start //If array is small, do an insertion sort @@ -599,7 +604,7 @@ reverse a descending sequence without violating stability. else if(runLens[n] <= runLens[n+1]) mergeAt2(n) else - break //Invariant is established + break //Invariant is established while(runBases.len >= 2) var/n = runBases.len - 1 @@ -609,7 +614,8 @@ reverse a descending sequence without violating stability. return L -/datum/sortInstance/proc/mergeAt2(i) +/datum/sort_instance/proc/mergeAt2(i) + var/list/L = src.L var/cursor1 = runBases[i] var/cursor2 = runBases[i+1] @@ -625,7 +631,7 @@ reverse a descending sequence without violating stability. break val1 = fetchElement(L,cursor1) else - moveElement(L,cursor2,cursor1) + move_element(L,cursor2,cursor1) if(++cursor2 >= end2) break From ae18201f509007cecdb62a279b69923898206cfd Mon Sep 17 00:00:00 2001 From: Rudy Date: Thu, 26 Mar 2026 14:53:54 -0700 Subject: [PATCH 19/26] Goodbye evil /list/var/priority runtimes!!! --- code/controllers/master.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/controllers/master.dm b/code/controllers/master.dm index ed8e0c83409..327e7b20e91 100644 --- a/code/controllers/master.dm +++ b/code/controllers/master.dm @@ -291,9 +291,9 @@ GLOBAL_REAL(Master, /datum/controller/master) = new queue_tail = null //these sort by lower priorities first to reduce the number of loops needed to add subsequent SS's to the queue //(higher subsystems will be sooner in the queue, adding them later in the loop means we don't have to loop thru them next queue add) - sortTim(tickersubsystems, /proc/cmp_subsystem_priority) + sortTim(tickersubsystems, GLOBAL_PROC_REF(cmp_subsystem_priority)) for(var/I in runlevel_sorted_subsystems) - sortTim(runlevel_sorted_subsystems, /proc/cmp_subsystem_priority) + sortTim(I, GLOBAL_PROC_REF(cmp_subsystem_priority)) I += tickersubsystems var/cached_runlevel = current_runlevel From afdbbe6d91983a9b863aa9e9f3d1dc2dcc84eda3 Mon Sep 17 00:00:00 2001 From: Rudy Date: Thu, 26 Mar 2026 15:01:48 -0700 Subject: [PATCH 20/26] OH RIGHT DON'T MAKE THIS A BACKGROUND PROCESS --- code/controllers/subsystem/processing/processing.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/controllers/subsystem/processing/processing.dm b/code/controllers/subsystem/processing/processing.dm index c5d6dfa1268..8a8dca3b3a0 100644 --- a/code/controllers/subsystem/processing/processing.dm +++ b/code/controllers/subsystem/processing/processing.dm @@ -3,7 +3,7 @@ SUBSYSTEM_DEF(processing) name = "Processing" priority = FIRE_PRIORITY_PROCESS - flags = SS_BACKGROUND|SS_POST_FIRE_TIMING|SS_NO_INIT + flags = SS_POST_FIRE_TIMING|SS_NO_INIT wait = 10 var/stat_tag = "P" //Used for logging From a519b4d7032ff65b56813d3244d092a1f70794b8 Mon Sep 17 00:00:00 2001 From: Rudy Date: Thu, 26 Mar 2026 15:21:38 -0700 Subject: [PATCH 21/26] No more Soundloop lists --- code/modules/spells/spell_types/wizard/utility/light.dm | 2 +- modular_causticcove/code/modules/reformgem/reformportal.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/spells/spell_types/wizard/utility/light.dm b/code/modules/spells/spell_types/wizard/utility/light.dm index ed6cf90e7f2..22b959bea1b 100644 --- a/code/modules/spells/spell_types/wizard/utility/light.dm +++ b/code/modules/spells/spell_types/wizard/utility/light.dm @@ -75,7 +75,7 @@ /obj/item/flashlight/flare/light/Initialize() . = ..() - soundloop = new(list(src), FALSE) + soundloop = new(src, FALSE) on = TRUE START_PROCESSING(SSobj, src) diff --git a/modular_causticcove/code/modules/reformgem/reformportal.dm b/modular_causticcove/code/modules/reformgem/reformportal.dm index 3d969342100..743211046ee 100644 --- a/modular_causticcove/code/modules/reformgem/reformportal.dm +++ b/modular_causticcove/code/modules/reformgem/reformportal.dm @@ -15,7 +15,7 @@ /obj/structure/respawn_portal/Initialize() . = ..() - soundloop = new(list(src), FALSE) + soundloop = new(src, FALSE) soundloop.start() /obj/structure/respawn_portal/attack_ghost(mob/dead/observer/user) //Bit Jank for now but just copied over the Reform Option code... Maybe this will work? If a Ghost escapes the belly somehow lol From 672473a336dc2096512bcb13bbf6cc06de419454 Mon Sep 17 00:00:00 2001 From: Rudy Date: Thu, 26 Mar 2026 15:36:24 -0700 Subject: [PATCH 22/26] Should make static lights properly update at RS --- code/game/objects/lighting/_base_roguelight.dm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/game/objects/lighting/_base_roguelight.dm b/code/game/objects/lighting/_base_roguelight.dm index dd0273bd132..4431ca88dd9 100644 --- a/code/game/objects/lighting/_base_roguelight.dm +++ b/code/game/objects/lighting/_base_roguelight.dm @@ -24,6 +24,10 @@ update_icon() if(!roundstart_forbid) seton(TRUE) + //CC Edit Begin - LET THERE BE LIGHT!!! + if(light_system == STATIC_LIGHT) + update_light() + //CC Edit Begin - LET THERE BE LIGHT!!! . = ..() /obj/machinery/light/rogue/weather_trigger(W) From 60890da9e6948a0a72f08279c48b17390a41c338 Mon Sep 17 00:00:00 2001 From: Rudy Date: Thu, 26 Mar 2026 18:24:43 -0700 Subject: [PATCH 23/26] More Tweaks --- code/__HELPERS/time.dm | 2 +- code/datums/looping_sounds/_looping_sound.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/__HELPERS/time.dm b/code/__HELPERS/time.dm index 0a50d6adf4c..ccc9b45958c 100644 --- a/code/__HELPERS/time.dm +++ b/code/__HELPERS/time.dm @@ -103,7 +103,7 @@ GLOBAL_VAR_INIT(date_override_offset, 0) SStreasury.distribute_estate_incomes() SStreasury.distribute_daily_payments() SStreasury.distribute_interest() - for(var/mob/living/player in GLOB.mob_list) + for(var/mob/living/player in GLOB.joined_player_list) if(player.stat != DEAD && player.client) player.do_time_change() diff --git a/code/datums/looping_sounds/_looping_sound.dm b/code/datums/looping_sounds/_looping_sound.dm index 763e595bd29..bcfbb3ed90c 100644 --- a/code/datums/looping_sounds/_looping_sound.dm +++ b/code/datums/looping_sounds/_looping_sound.dm @@ -160,7 +160,7 @@ GLOBAL_LIST_EMPTY(created_sound_groups) if(direct) S.channel = channel S.volume = volume - var/atom/thing = parent?.resolve() //Caustic Edit - This was causing 70k+ Runtimes in 2 hours cause Parent here was null somehow? I hope this ? prevents it. + var/atom/thing = parent.resolve() if (!thing) return From 03cdd16c60073378117332a88eb6539336acf863 Mon Sep 17 00:00:00 2001 From: Rudy Date: Thu, 26 Mar 2026 18:24:53 -0700 Subject: [PATCH 24/26] Unfinished Stopping Point --- code/controllers/subsystem/machines.dm | 4 ++-- code/controllers/subsystem/tracks.dm | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/code/controllers/subsystem/machines.dm b/code/controllers/subsystem/machines.dm index 72098ebe64d..83b7dbbbd06 100644 --- a/code/controllers/subsystem/machines.dm +++ b/code/controllers/subsystem/machines.dm @@ -1,8 +1,8 @@ SUBSYSTEM_DEF(machines) name = "Machines" init_order = INIT_ORDER_MACHINES - flags = SS_KEEP_TIMING -// wait = 1 + flags = SS_BACKGROUND + //wait = 1 var/list/processing = list() var/list/currentrun = list() diff --git a/code/controllers/subsystem/tracks.dm b/code/controllers/subsystem/tracks.dm index bb5d31f0181..2eeeb5f4e08 100644 --- a/code/controllers/subsystem/tracks.dm +++ b/code/controllers/subsystem/tracks.dm @@ -1,8 +1,8 @@ PROCESSING_SUBSYSTEM_DEF(tracks) name = "Tracks" priority = FIRE_PRIORITY_TRACKS - wait = 100 - flags = SS_BACKGROUND + wait = 10 SECONDS + flags = SS_TICKER runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME // Object pooling From 4787150819d0fd3a58c5756f38a426ffbcda8999 Mon Sep 17 00:00:00 2001 From: Rudy Date: Thu, 26 Mar 2026 18:37:02 -0700 Subject: [PATCH 25/26] mob_lists -> player and client lists --- code/__HELPERS/time.dm | 2 +- code/controllers/subsystem/job.dm | 8 ++++---- .../roguemachine/questing/questing_components.dm | 1 + .../roguetown/roguemachine/questing/types/__quest.dm | 7 ++++++- code/modules/spells/roguetown/acolyte/necra.dm | 4 ++-- code/modules/vampire_neu/objects/scrying.dm | 2 +- 6 files changed, 15 insertions(+), 9 deletions(-) diff --git a/code/__HELPERS/time.dm b/code/__HELPERS/time.dm index 0a50d6adf4c..04aabb6c448 100644 --- a/code/__HELPERS/time.dm +++ b/code/__HELPERS/time.dm @@ -103,7 +103,7 @@ GLOBAL_VAR_INIT(date_override_offset, 0) SStreasury.distribute_estate_incomes() SStreasury.distribute_daily_payments() SStreasury.distribute_interest() - for(var/mob/living/player in GLOB.mob_list) + for(var/mob/living/player in GLOB.joined_player_list) //CC Edit mob_list -> joined_player_list if(player.stat != DEAD && player.client) player.do_time_change() diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm index fdb29430632..b1d10349735 100644 --- a/code/controllers/subsystem/job.dm +++ b/code/controllers/subsystem/job.dm @@ -886,7 +886,7 @@ SUBSYSTEM_DEF(job) /////////////////////////////////// /datum/controller/subsystem/job/proc/get_living_heads() . = list() - for(var/i in GLOB.human_list) + for(var/i in GLOB.joined_player_list) //CC Edit human_list -> joined_player_list var/mob/living/carbon/human/player = i if(player.stat != DEAD && player.mind && (player.mind.assigned_role in GLOB.command_positions)) . |= player.mind @@ -897,7 +897,7 @@ SUBSYSTEM_DEF(job) //////////////////////////// /datum/controller/subsystem/job/proc/get_all_heads() . = list() - for(var/i in GLOB.mob_list) + for(var/i in GLOB.joined_player_list) //CC Edit mob_list -> joined_player_list var/mob/player = i if(player.mind && (player.mind.assigned_role in GLOB.command_positions)) . |= player.mind @@ -907,7 +907,7 @@ SUBSYSTEM_DEF(job) ////////////////////////////////////////////// /datum/controller/subsystem/job/proc/get_living_sec() . = list() - for(var/i in GLOB.human_list) + for(var/i in GLOB.joined_player_list) //CC Edit human_list -> joined_player_list var/mob/living/carbon/human/player = i if(player.stat != DEAD && player.mind && (player.mind.assigned_role in GLOB.security_positions)) . |= player.mind @@ -917,7 +917,7 @@ SUBSYSTEM_DEF(job) //////////////////////////////////////// /datum/controller/subsystem/job/proc/get_all_sec() . = list() - for(var/i in GLOB.human_list) + for(var/i in GLOB.joined_player_list) //CC Edit human_list -> joined_player_list var/mob/living/carbon/human/player = i if(player.mind && (player.mind.assigned_role in GLOB.security_positions)) . |= player.mind diff --git a/code/modules/roguetown/roguemachine/questing/questing_components.dm b/code/modules/roguetown/roguemachine/questing/questing_components.dm index 720b6df7748..1f68dd4c6f0 100644 --- a/code/modules/roguetown/roguemachine/questing/questing_components.dm +++ b/code/modules/roguetown/roguemachine/questing/questing_components.dm @@ -16,6 +16,7 @@ if(is_mob) var/mob/M = parent M.add_filter(outline_filter_id, 2, list("type" = "outline", "color" = "#ff0000", "size" = 0.5)) + GLOB.quest_mobs += M //CC Edit for registering mobs to quests so we don't go through a global list RegisterSignal(parent, COMSIG_MOB_DEATH, PROC_REF(on_target_death)) RegisterSignal(parent, COMSIG_PARENT_EXAMINE, PROC_REF(on_mob_examine)) else diff --git a/code/modules/roguetown/roguemachine/questing/types/__quest.dm b/code/modules/roguetown/roguemachine/questing/types/__quest.dm index 5841eda2584..108acbab8cd 100644 --- a/code/modules/roguetown/roguemachine/questing/types/__quest.dm +++ b/code/modules/roguetown/roguemachine/questing/types/__quest.dm @@ -1,3 +1,8 @@ +//CC Edit Begin +//This list holds all mobs currently associated with active quests. +GLOBAL_LIST_EMPTY(quest_mobs) +//CC Edit End + /datum/quest var/title = "" var/datum/weakref/quest_giver_reference @@ -37,7 +42,7 @@ /datum/quest/Destroy() // Clean up mobs with quest components - for(var/mob/living/M in GLOB.mob_list) + for(var/mob/living/M in GLOB.quest_mobs) var/datum/component/quest_object/Q = M.GetComponent(/datum/component/quest_object) if(Q && Q.quest_ref?.resolve() == src) M.remove_filter("quest_item_outline") diff --git a/code/modules/spells/roguetown/acolyte/necra.dm b/code/modules/spells/roguetown/acolyte/necra.dm index f92704b2750..4a187e8e122 100644 --- a/code/modules/spells/roguetown/acolyte/necra.dm +++ b/code/modules/spells/roguetown/acolyte/necra.dm @@ -124,7 +124,7 @@ var/mob/living/carbon/spirit/capturedsoul = null var/list/souloptions = list() var/list/itemstore = list() - for(var/mob/living/carbon/spirit/S in GLOB.mob_list) + for(var/mob/living/carbon/spirit/S in GLOB.player_list) //CC Edit mob_list -> player_list if(S.summoned) continue if(!S.client) @@ -134,7 +134,7 @@ if(!pickedsoul) to_chat(user, span_warning("I was unable to commune with a soul.")) return - for(var/mob/living/carbon/spirit/P in GLOB.mob_list) + for(var/mob/living/carbon/spirit/P in GLOB.player_list) //CC Edit mob_list -> player_list if(P.livingname == pickedsoul) to_chat(P, "You feel yourself being pulled out of the Underworld.") sleep(2 SECONDS) diff --git a/code/modules/vampire_neu/objects/scrying.dm b/code/modules/vampire_neu/objects/scrying.dm index 9b5ca96bdeb..458e04bb49b 100644 --- a/code/modules/vampire_neu/objects/scrying.dm +++ b/code/modules/vampire_neu/objects/scrying.dm @@ -100,7 +100,7 @@ to_chat(V, span_boldnotice("A message from [src.real_name]:[msg]")) for(var/datum/mind/D in SSmapping.retainer.death_knights) to_chat(D, span_boldnotice("A message from [src.real_name]:[msg]")) - for(var/mob/dead/observer/rogue/arcaneeye/A in GLOB.mob_list) + for(var/mob/dead/observer/rogue/arcaneeye/A in GLOB.player_list) //CC Edit mob_list -> player_list to_chat(A, span_boldnotice("A message from [src.real_name]:[msg]")) /mob/dead/observer/rogue/arcaneeye/proc/eye_up() From 57cf14be460fd6afe96fa2e08de8938215c16136 Mon Sep 17 00:00:00 2001 From: Rudy Date: Thu, 26 Mar 2026 18:59:28 -0700 Subject: [PATCH 26/26] Smaller minor tweaks --- code/controllers/subsystem/machines.dm | 2 +- code/modules/roguetown/roguemachine/scomm/scomm.dm | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/code/controllers/subsystem/machines.dm b/code/controllers/subsystem/machines.dm index 83b7dbbbd06..cb5c7cafed2 100644 --- a/code/controllers/subsystem/machines.dm +++ b/code/controllers/subsystem/machines.dm @@ -1,7 +1,7 @@ SUBSYSTEM_DEF(machines) name = "Machines" init_order = INIT_ORDER_MACHINES - flags = SS_BACKGROUND + flags = SS_KEEP_TIMING //wait = 1 var/list/processing = list() var/list/currentrun = list() diff --git a/code/modules/roguetown/roguemachine/scomm/scomm.dm b/code/modules/roguetown/roguemachine/scomm/scomm.dm index 1d269b7e78b..9e36199190a 100644 --- a/code/modules/roguetown/roguemachine/scomm/scomm.dm +++ b/code/modules/roguetown/roguemachine/scomm/scomm.dm @@ -102,13 +102,15 @@ popup.open(FALSE) /obj/structure/roguemachine/scomm/process() - if(world.time <= next_decree) - return - next_decree = world.time + rand(3 MINUTES, 8 MINUTES) + //CC Edit Begin - Moves this to return earlier if we really don't have any decrees or are muted so we don't check for the time and set a new RANDOM time every process... if(!GLOB.lord_decrees.len) return if(!speaking) return + //CC Edit End + if(world.time <= next_decree) + return + next_decree = world.time + rand(3 MINUTES, 8 MINUTES) say("The [SSticker.rulertype] Decrees: [pick(GLOB.lord_decrees)]", spans = list("info")) /obj/structure/roguemachine/scomm/attack_hand(mob/living/user)