From c1de69dbbfbffd312fc3e82c6f938a2e1d25de16 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Thu, 2 Nov 2023 21:38:21 +0100 Subject: [PATCH] [MIRROR] Removes virtual-specific megafauna, fixes boss map issues [NO GBP] [MDB IGNORE] (#24737) * Removes virtual-specific megafauna, fixes boss map issues [NO GBP] (#79424) ## About The Pull Request Another atomization of the content patch- Let's not subtype everything into virtual variants This also fixes some bugs that were present with vdom boss maps - Made the bubblegum map larger so he wouldn't teleport out - Legion is just far too annoying to have to fix code wise, given that few if anyone tries it with the base virtual equipment
what do you mean too annoying? Legion doesn't handle dying like the standard megafauna - each time it "dies" it looks to see if there's another legion in the entire game world. Given the real one very likely exists, this basically means it won't drop anything. I'd have to modify legion's death proc specifically for the virtual domain. No other megafauna has this level of weirdness (nor splitting behavior) and coupled with the fact I think no one tries the domain, I'm just removing it.
## Why It's Good For The Game Cleans up megafauna subtypes that were specific for the virtual domain. Now, we won't need to keep adding to the list if there's ever a new one Fixes #79203 Fixes #79200 ## Changelog :cl: fix: Bubblegum should no longer teleport out of the simulation when threatened del: Chamber of Echoes map removed as it conflicts with the actual Legion /:cl: * Removes virtual-specific megafauna, fixes boss map issues [NO GBP] --------- Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com> --- _maps/virtual_domains/ash_drake.dmm | 4 +- _maps/virtual_domains/blood_drunk_miner.dmm | 4 +- _maps/virtual_domains/bubblegum.dmm | 2478 ++++++++++++----- _maps/virtual_domains/colossus.dmm | 4 +- _maps/virtual_domains/hierophant.dmm | 4 +- _maps/virtual_domains/wendigo.dmm | 2 +- .../components/virtual_elite_mob.dm | 18 + .../bitrunning/server/signal_handlers.dm | 7 +- .../virtual_domain/domains/ash_drake.dm | 8 - .../domains/blood_drunk_miner.dm | 8 - .../virtual_domain/domains/bubblegum.dm | 8 - .../virtual_domain/domains/colossus.dm | 7 - .../virtual_domain/domains/hierophant.dm | 8 - .../virtual_domain/domains/legion.dm | 20 - .../virtual_domain/domains/wendigo.dm | 8 - code/modules/mob/living/living_defines.dm | 3 - .../unit_tests/simple_animal_freeze.dm | 7 - tgstation.dme | 2 +- 18 files changed, 1787 insertions(+), 813 deletions(-) create mode 100644 code/modules/bitrunning/components/virtual_elite_mob.dm delete mode 100644 code/modules/bitrunning/virtual_domain/domains/legion.dm diff --git a/_maps/virtual_domains/ash_drake.dmm b/_maps/virtual_domains/ash_drake.dmm index 50fbac8696a..6056136a278 100644 --- a/_maps/virtual_domains/ash_drake.dmm +++ b/_maps/virtual_domains/ash_drake.dmm @@ -21,7 +21,7 @@ /obj/machinery/light/small/blacklight/directional/south, /obj/effect/baseturf_helper/virtual_domain, /turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, -/area/virtual_domain/powered) +/area/virtual_domain) "i" = ( /obj/structure/marker_beacon/jade, /turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, @@ -35,7 +35,7 @@ /turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, /area/lavaland/surface/outdoors/virtual_domain) "q" = ( -/mob/living/simple_animal/hostile/megafauna/dragon/virtual_domain, +/mob/living/simple_animal/hostile/megafauna/dragon, /turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, /area/lavaland/surface/outdoors/virtual_domain) "s" = ( diff --git a/_maps/virtual_domains/blood_drunk_miner.dmm b/_maps/virtual_domains/blood_drunk_miner.dmm index c3369a1c822..bf673bd6dfa 100644 --- a/_maps/virtual_domains/blood_drunk_miner.dmm +++ b/_maps/virtual_domains/blood_drunk_miner.dmm @@ -27,7 +27,7 @@ /obj/machinery/light/small/blacklight/directional/south, /obj/effect/baseturf_helper/virtual_domain, /turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, -/area/virtual_domain/powered) +/area/virtual_domain) "i" = ( /obj/structure/stone_tile{ dir = 4 @@ -171,7 +171,7 @@ /obj/structure/stone_tile/surrounding/cracked{ dir = 6 }, -/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/virtual_domain, +/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner, /turf/open/lava/smooth/lava_land_surface, /area/lavaland/surface/outdoors/virtual_domain) "T" = ( diff --git a/_maps/virtual_domains/bubblegum.dmm b/_maps/virtual_domains/bubblegum.dmm index 3381b173539..a801fa49187 100644 --- a/_maps/virtual_domains/bubblegum.dmm +++ b/_maps/virtual_domains/bubblegum.dmm @@ -29,7 +29,7 @@ /obj/machinery/light/small/blacklight/directional/south, /obj/effect/baseturf_helper/virtual_domain, /turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, -/area/virtual_domain/powered) +/area/virtual_domain) "x" = ( /obj/structure/marker_beacon/olive, /turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, @@ -43,7 +43,7 @@ /turf/template_noop, /area/virtual_domain/safehouse) "C" = ( -/mob/living/simple_animal/hostile/megafauna/bubblegum/virtual_domain, +/mob/living/simple_animal/hostile/megafauna/bubblegum, /turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, /area/lavaland/surface/outdoors/virtual_domain) "F" = ( @@ -134,6 +134,16 @@ F F F F +F +F +F +F +F +F +F +F +F +F R "} (2,1,1) = {" @@ -182,51 +192,71 @@ Z Z Z Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z F "} (3,1,1) = {" F Z -a -a Z Z Z -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a Z Z Z -a -a -a -a -a -a -a -a Z Z -a -a -a -a -a -a +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z Z Z Z @@ -235,6 +265,301 @@ F (4,1,1) = {" F Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +F +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +F +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +F +"} +(5,1,1) = {" +F +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +F +"} +(6,1,1) = {" +F +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +F +"} +(7,1,1) = {" +F +Z +Z +F +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +F +"} +(8,1,1) = {" +F +Z +Z +F +Z +Z +Z +a +a +Z +Z +Z +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +Z +Z +Z +a +a +a +a +a +a +a +a +Z +Z +a +a +a +a +a +a +Z +Z +Z +Z +Z +Z +Z +Z +F +"} +(9,1,1) = {" +F +Z +Z +F +Z +Z +Z a a a @@ -278,11 +603,21 @@ a a a Z +Z +Z +Z +Z +Z F "} -(5,1,1) = {" +(10,1,1) = {" F Z +Z +Z +Z +Z +Z a a a @@ -326,11 +661,21 @@ a a p Z +Z +Z +Z +F +Z F "} -(6,1,1) = {" +(11,1,1) = {" F Z +Z +Z +Z +Z +Z a a a @@ -374,11 +719,21 @@ a p p Z +Z +Z +Z +F +Z F "} -(7,1,1) = {" +(12,1,1) = {" F Z +Z +Z +Z +Z +Z a a a @@ -422,252 +777,312 @@ a a p Z -F -"} -(8,1,1) = {" -F -Z -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -Z -Z -a -a -a -Z -Z -F -"} -(9,1,1) = {" -F -Z -a -a -a -a -a -a -p -p -p -p -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -Z -Z -F -"} -(10,1,1) = {" -F -Z -Z -a -a -a -a -a Z Z Z -p -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a Z Z F "} -(11,1,1) = {" -F -Z -Z -a -a -a -a -a -Z -Z -Z -p -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -Z -Z -a -a -a -a -a -a -a -a -p -p -a -a -a -a -a -Z -F -"} -(12,1,1) = {" -F -Z -Z -a -a -a -a -a -p -Z -p -p -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -Z -Z -a -a -a -a -a -a -a -p -a -a -a -a -a -Z -F -"} (13,1,1) = {" F Z Z +Z +Z +Z +Z +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +Z +Z +a +a +a +Z +Z +Z +Z +Z +Z +Z +F +"} +(14,1,1) = {" +F +Z +Z +Z +Z +Z +Z +a +a +a +a +a +a +p +p +p +p +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +Z +Z +Z +Z +Z +Z +Z +F +"} +(15,1,1) = {" +F +Z +Z +Z +Z +Z +Z +Z +a +a +a +a +a +Z +Z +Z +p +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +Z +Z +Z +Z +Z +Z +Z +F +"} +(16,1,1) = {" +F +Z +Z +Z +Z +Z +Z +Z +a +a +a +a +a +Z +Z +Z +p +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +Z +Z +a +a +a +a +a +a +a +a +p +p +a +a +a +a +a +Z +Z +Z +Z +Z +Z +F +"} +(17,1,1) = {" +F +Z +Z +Z +Z +Z +Z +Z +a +a +a +a +a +p +Z +p +p +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +Z +Z +a +a +a +a +a +a +a +p +a +a +a +a +a +Z +Z +Z +Z +Z +Z +F +"} +(18,1,1) = {" +F +Z +Z +Z +Z +Z +Z +Z a a a @@ -710,59 +1125,79 @@ a a a Z -F -"} -(14,1,1) = {" -F -Z -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a Z Z Z -a -a -a -a -a -a -a -a -a -a -a -a -a +Z Z F "} -(15,1,1) = {" +(19,1,1) = {" F Z +Z +Z +Z +Z +Z +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +Z +Z +Z +a +a +a +a +a +a +a +a +a +a +a +a +a +Z +Z +Z +Z +Z +Z +F +"} +(20,1,1) = {" +F +Z +Z +Z +Z +Z +Z a a a @@ -806,11 +1241,21 @@ a a a Z +Z +Z +Z +Z +Z F "} -(16,1,1) = {" +(21,1,1) = {" F Z +Z +Z +Z +Z +Z a a a @@ -854,11 +1299,21 @@ a a a Z +Z +Z +Z +Z +Z F "} -(17,1,1) = {" +(22,1,1) = {" F Z +Z +Z +Z +Z +Z a a a @@ -902,59 +1357,21 @@ a a a Z -F -"} -(18,1,1) = {" -F Z -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +Z +Z +Z Z F "} -(19,1,1) = {" +(23,1,1) = {" F Z +Z +Z +Z +Z +Z a a a @@ -998,11 +1415,79 @@ a a a Z +Z +Z +Z +Z +Z F "} -(20,1,1) = {" +(24,1,1) = {" F Z +Z +Z +Z +Z +Z +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +Z +Z +Z +Z +Z +Z +F +"} +(25,1,1) = {" +F +Z +Z +F +Z +Z +Z a a a @@ -1046,11 +1531,21 @@ a a a Z +Z +Z +Z +Z +Z F "} -(21,1,1) = {" +(26,1,1) = {" F Z +Z +Z +Z +Z +Z a a a @@ -1094,11 +1589,21 @@ S T a Z +Z +Z +Z +Z +F F "} -(22,1,1) = {" +(27,1,1) = {" F Z +Z +Z +Z +Z +Z a a a @@ -1142,11 +1647,21 @@ S S a Z +Z +Z +Z +Z +Z F "} -(23,1,1) = {" +(28,1,1) = {" F Z +Z +Z +Z +Z +Z a a a @@ -1190,11 +1705,21 @@ S S a Z +Z +Z +Z +Z +Z F "} -(24,1,1) = {" +(29,1,1) = {" F Z +Z +Z +Z +Z +Z a a a @@ -1238,59 +1763,21 @@ S S a Z -F -"} -(25,1,1) = {" -F Z -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -S -S -S -S -S -S -a +Z +Z +Z Z F "} -(26,1,1) = {" +(30,1,1) = {" F Z +Z +Z +Z +Z +Z a a a @@ -1334,11 +1821,79 @@ S S a Z +Z +Z +Z +Z +Z F "} -(27,1,1) = {" +(31,1,1) = {" F Z +Z +Z +Z +Z +Z +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +S +S +S +S +S +S +a +Z +Z +Z +Z +Z +Z +F +"} +(32,1,1) = {" +F +Z +Z +Z +Z +Z +Z a a a @@ -1382,11 +1937,21 @@ S A a Z +Z +Z +Z +Z +Z F "} -(28,1,1) = {" +(33,1,1) = {" F Z +Z +Z +Z +Z +Z a a a @@ -1430,11 +1995,21 @@ a a a Z +Z +Z +Z +Z +Z F "} -(29,1,1) = {" +(34,1,1) = {" F Z +Z +Z +Z +Z +Z a a a @@ -1478,59 +2053,21 @@ a a a Z -F -"} -(30,1,1) = {" -F -Z -a -a -a -a -a -a Z Z Z -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +Z Z F "} -(31,1,1) = {" +(35,1,1) = {" F Z +Z +Z +Z +Z +Z a a a @@ -1574,18 +2111,29 @@ a a a Z +Z +Z +Z +Z +Z F "} -(32,1,1) = {" +(36,1,1) = {" F Z +Z +Z +Z +Z +Z a a a a a a -a +Z +Z Z a a @@ -1620,13 +2168,80 @@ a a a a -a +Z +Z +Z +Z +Z Z F "} -(33,1,1) = {" +(37,1,1) = {" F Z +Z +Z +Z +Z +Z +a +a +a +a +a +a +a +Z +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +Z +Z +Z +Z +Z +Z +F +"} +(38,1,1) = {" +F +Z +Z +Z +Z +Z +Z a a a @@ -1670,60 +2285,80 @@ a a a Z -F -"} -(34,1,1) = {" -F Z Z -a -a -a -a Z -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a Z -a -a -a -a -a -a -a -a -a -a -a -a -a Z F "} -(35,1,1) = {" +(39,1,1) = {" F Z Z +Z +Z +Z +Z +Z +a +a +a +a +Z +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +Z +a +a +a +a +a +a +a +a +a +a +a +a +a +Z +Z +Z +Z +Z +Z +F +"} +(40,1,1) = {" +F +Z +Z +Z +Z +Z +Z +Z a a a @@ -1766,107 +2401,137 @@ a a a Z -F -"} -(36,1,1) = {" -F -Z -Z -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a Z Z Z -a -a -a -a -a -a -a -a -a -a -a -a -Z -F -"} -(37,1,1) = {" -F -Z -Z -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a Z Z F "} -(38,1,1) = {" +(41,1,1) = {" F Z +Z +Z +Z +Z +Z +Z +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +Z +Z +Z +a +a +a +a +a +a +a +a +a +a +a +a +Z +Z +Z +Z +Z +Z +F +"} +(42,1,1) = {" +F +Z +Z +F +Z +Z +Z +Z +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +Z +Z +Z +Z +Z +Z +Z +F +"} +(43,1,1) = {" +F +Z +Z +Z +Z +Z +Z a a a @@ -1910,59 +2575,79 @@ a a Z Z -F -"} -(39,1,1) = {" -F -Z -a -a -a -p -p -a -a -a -a -a -a -a -a -a Z Z Z -a -a -a -a -a -p -p -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +Z Z F "} -(40,1,1) = {" +(44,1,1) = {" F Z +Z +Z +Z +Z +Z +a +a +a +p +p +a +a +a +a +a +a +a +a +a +Z +Z +Z +a +a +a +a +a +p +p +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +Z +Z +Z +Z +Z +Z +F +"} +(45,1,1) = {" +F +Z +Z +Z +Z +Z +Z a c a @@ -2006,11 +2691,21 @@ a a a Z +Z +Z +Z +Z +Z F "} -(41,1,1) = {" +(46,1,1) = {" F Z +Z +Z +Z +Z +Z a a a @@ -2054,76 +2749,16 @@ a a a Z -F -"} -(42,1,1) = {" -F Z -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +Z +Z +Z Z F "} -(43,1,1) = {" +(47,1,1) = {" F Z -a -Z -Z -Z -Z -a -a -a -a -a -Z -Z -Z -Z -a -a -a Z Z Z @@ -2135,10 +2770,36 @@ a a a a -Z -Z -Z -Z +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a a a a @@ -2147,12 +2808,13 @@ a a Z Z -a -a +Z +Z +Z Z F "} -(44,1,1) = {" +(48,1,1) = {" F Z Z @@ -2160,6 +2822,132 @@ Z Z Z Z +a +Z +Z +Z +Z +a +a +a +a +a +Z +Z +Z +Z +a +a +a +Z +Z +Z +Z +Z +a +a +a +a +a +a +Z +Z +Z +Z +a +a +a +a +a +a +Z +Z +a +a +Z +Z +Z +Z +Z +Z +F +"} +(49,1,1) = {" +F +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +F +Z +Z +Z +Z +F +"} +(50,1,1) = {" +F +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z Z Z Z @@ -2200,7 +2988,249 @@ Z Z F "} -(45,1,1) = {" +(51,1,1) = {" +F +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +F +"} +(52,1,1) = {" +F +Z +Z +Z +Z +Z +Z +F +F +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +F +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +F +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +F +"} +(53,1,1) = {" +F +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +F +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +F +"} +(54,1,1) = {" +F +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +F +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +F +Z +Z +Z +Z +F +"} +(55,1,1) = {" +F +F +F +F +F +F +F +F +F +F F F F diff --git a/_maps/virtual_domains/colossus.dmm b/_maps/virtual_domains/colossus.dmm index a9c3c6e6d79..fe97dcace42 100644 --- a/_maps/virtual_domains/colossus.dmm +++ b/_maps/virtual_domains/colossus.dmm @@ -30,7 +30,7 @@ /turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, /area/lavaland/surface/outdoors/virtual_domain) "p" = ( -/mob/living/simple_animal/hostile/megafauna/colossus/virtual_domain, +/mob/living/simple_animal/hostile/megafauna/colossus, /turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, /area/lavaland/surface/outdoors/virtual_domain) "q" = ( @@ -41,7 +41,7 @@ /obj/machinery/light/small/blacklight/directional/south, /obj/effect/baseturf_helper/virtual_domain, /turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, -/area/virtual_domain/powered) +/area/virtual_domain) "s" = ( /turf/open/lava/smooth/lava_land_surface, /area/lavaland/surface/outdoors/virtual_domain) diff --git a/_maps/virtual_domains/hierophant.dmm b/_maps/virtual_domains/hierophant.dmm index 02b11ad4e1e..81f8a9f97a7 100644 --- a/_maps/virtual_domains/hierophant.dmm +++ b/_maps/virtual_domains/hierophant.dmm @@ -37,7 +37,7 @@ /turf/closed/indestructible/binary, /area/lavaland/surface/outdoors/virtual_domain) "E" = ( -/mob/living/simple_animal/hostile/megafauna/hierophant/virtual_domain, +/mob/living/simple_animal/hostile/megafauna/hierophant, /turf/open/indestructible/hierophant/two, /area/lavaland/surface/outdoors/virtual_domain) "H" = ( @@ -51,7 +51,7 @@ /obj/machinery/light/small/blacklight/directional/south, /obj/effect/baseturf_helper/virtual_domain, /turf/open/indestructible/hierophant, -/area/virtual_domain/powered) +/area/virtual_domain) "S" = ( /obj/effect/mob_spawn/corpse/human/miner, /turf/open/indestructible/hierophant, diff --git a/_maps/virtual_domains/wendigo.dmm b/_maps/virtual_domains/wendigo.dmm index 17bcb48d688..dcce722cbbd 100644 --- a/_maps/virtual_domains/wendigo.dmm +++ b/_maps/virtual_domains/wendigo.dmm @@ -58,7 +58,7 @@ /turf/open/misc/asteroid/snow/ice/icemoon, /area/icemoon/underground/explored/virtual_domain) "H" = ( -/mob/living/simple_animal/hostile/megafauna/wendigo/virtual_domain, +/mob/living/simple_animal/hostile/megafauna/wendigo, /turf/open/indestructible/necropolis{ initial_gas_mix = "ICEMOON_ATMOS" }, diff --git a/code/modules/bitrunning/components/virtual_elite_mob.dm b/code/modules/bitrunning/components/virtual_elite_mob.dm new file mode 100644 index 00000000000..5a5766ecdf5 --- /dev/null +++ b/code/modules/bitrunning/components/virtual_elite_mob.dm @@ -0,0 +1,18 @@ +/// Removes loot tables from megafauna and lowers their health. +/datum/element/virtual_elite_mob + +/datum/element/virtual_elite_mob/Attach(datum/target) + . = ..() + if(!ismegafauna(target)) + return ELEMENT_INCOMPATIBLE + + var/mob/living/simple_animal/hostile/megafauna/boss = target + + var/new_max = clamp(boss.maxHealth * 0.5, 600, 1200) + boss.maxHealth = new_max + boss.health = new_max + boss.true_spawn = FALSE + boss.loot.Cut() + boss.loot += /obj/structure/closet/crate/secure/bitrunning/encrypted + boss.crusher_loot.Cut() + boss.crusher_loot += /obj/structure/closet/crate/secure/bitrunning/encrypted diff --git a/code/modules/bitrunning/server/signal_handlers.dm b/code/modules/bitrunning/server/signal_handlers.dm index b0464b351fa..40b9d2b2c3f 100644 --- a/code/modules/bitrunning/server/signal_handlers.dm +++ b/code/modules/bitrunning/server/signal_handlers.dm @@ -83,8 +83,11 @@ if(isliving(thing)) // so we can mutate them var/mob/living/creature = thing - if(creature.can_be_cybercop) - mutation_candidate_refs.Add(WEAKREF(creature)) + if(ismegafauna(creature)) + creature.AddElement(/datum/element/virtual_elite_mob) + continue + + mutation_candidate_refs.Add(WEAKREF(creature)) continue if(istype(thing, /obj/effect/mob_spawn/ghost_role)) // so we get threat alerts diff --git a/code/modules/bitrunning/virtual_domain/domains/ash_drake.dm b/code/modules/bitrunning/virtual_domain/domains/ash_drake.dm index 02bb91abc58..83d65a7fb46 100644 --- a/code/modules/bitrunning/virtual_domain/domains/ash_drake.dm +++ b/code/modules/bitrunning/virtual_domain/domains/ash_drake.dm @@ -8,11 +8,3 @@ map_name = "ash_drake" reward_points = BITRUNNER_REWARD_MEDIUM safehouse_path = /datum/map_template/safehouse/lavaland_boss - -/mob/living/simple_animal/hostile/megafauna/dragon/virtual_domain - can_be_cybercop = FALSE - crusher_loot = list(/obj/structure/closet/crate/secure/bitrunning/encrypted) - health = 1600 - loot = list(/obj/structure/closet/crate/secure/bitrunning/encrypted) - maxHealth = 1600 - true_spawn = FALSE diff --git a/code/modules/bitrunning/virtual_domain/domains/blood_drunk_miner.dm b/code/modules/bitrunning/virtual_domain/domains/blood_drunk_miner.dm index abf2e0fc5a9..ad5d22f5175 100644 --- a/code/modules/bitrunning/virtual_domain/domains/blood_drunk_miner.dm +++ b/code/modules/bitrunning/virtual_domain/domains/blood_drunk_miner.dm @@ -8,11 +8,3 @@ map_name = "blood_drunk_miner" reward_points = BITRUNNER_REWARD_MEDIUM safehouse_path = /datum/map_template/safehouse/lavaland_boss - -/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/virtual_domain - can_be_cybercop = FALSE - crusher_loot = list(/obj/structure/closet/crate/secure/bitrunning/encrypted) - health = 1600 - loot = list(/obj/structure/closet/crate/secure/bitrunning/encrypted) - maxHealth = 1600 - true_spawn = FALSE diff --git a/code/modules/bitrunning/virtual_domain/domains/bubblegum.dm b/code/modules/bitrunning/virtual_domain/domains/bubblegum.dm index bede97177cb..4ac4a6476bd 100644 --- a/code/modules/bitrunning/virtual_domain/domains/bubblegum.dm +++ b/code/modules/bitrunning/virtual_domain/domains/bubblegum.dm @@ -9,11 +9,3 @@ map_name = "bubblegum" reward_points = BITRUNNER_REWARD_HIGH safehouse_path = /datum/map_template/safehouse/lavaland_boss - -/mob/living/simple_animal/hostile/megafauna/bubblegum/virtual_domain - can_be_cybercop = FALSE - crusher_loot = list(/obj/structure/closet/crate/secure/bitrunning/encrypted) - health = 2000 - loot = list(/obj/structure/closet/crate/secure/bitrunning/encrypted) - maxHealth = 2000 - true_spawn = FALSE diff --git a/code/modules/bitrunning/virtual_domain/domains/colossus.dm b/code/modules/bitrunning/virtual_domain/domains/colossus.dm index 35ba4eee0ca..9baa011263b 100644 --- a/code/modules/bitrunning/virtual_domain/domains/colossus.dm +++ b/code/modules/bitrunning/virtual_domain/domains/colossus.dm @@ -9,10 +9,3 @@ reward_points = BITRUNNER_REWARD_HIGH safehouse_path = /datum/map_template/safehouse/lavaland_boss -/mob/living/simple_animal/hostile/megafauna/colossus/virtual_domain - can_be_cybercop = FALSE - crusher_loot = list(/obj/structure/closet/crate/secure/bitrunning/encrypted) - loot = list(/obj/structure/closet/crate/secure/bitrunning/encrypted) - health = 2000 - maxHealth = 2000 - true_spawn = FALSE diff --git a/code/modules/bitrunning/virtual_domain/domains/hierophant.dm b/code/modules/bitrunning/virtual_domain/domains/hierophant.dm index 142623f4f81..5b67c9d9bf2 100644 --- a/code/modules/bitrunning/virtual_domain/domains/hierophant.dm +++ b/code/modules/bitrunning/virtual_domain/domains/hierophant.dm @@ -8,11 +8,3 @@ map_name = "hierophant" reward_points = BITRUNNER_REWARD_HIGH safehouse_path = /datum/map_template/safehouse/lavaland_boss - -/mob/living/simple_animal/hostile/megafauna/hierophant/virtual_domain - can_be_cybercop = FALSE - crusher_loot = list(/obj/structure/closet/crate/secure/bitrunning/encrypted) - health = 1700 - loot = list(/obj/structure/closet/crate/secure/bitrunning/encrypted) - maxHealth = 1700 - true_spawn = FALSE diff --git a/code/modules/bitrunning/virtual_domain/domains/legion.dm b/code/modules/bitrunning/virtual_domain/domains/legion.dm deleted file mode 100644 index f1ba146f380..00000000000 --- a/code/modules/bitrunning/virtual_domain/domains/legion.dm +++ /dev/null @@ -1,20 +0,0 @@ -/datum/lazy_template/virtual_domain/legion - name = "Chamber of Echoes" - cost = BITRUNNER_COST_MEDIUM - desc = "A chilling realm that houses Legion's necropolis. Those who succumb to it are forever damned." - difficulty = BITRUNNER_DIFFICULTY_MEDIUM - forced_outfit = /datum/outfit/job/miner - key = "legion" - map_name = "legion" - reward_points = BITRUNNER_REWARD_MEDIUM - safehouse_path = /datum/map_template/safehouse/lavaland_boss - -/mob/living/simple_animal/hostile/megafauna/legion/virtual_domain - can_be_cybercop = FALSE - crusher_loot = list(/obj/structure/closet/crate/secure/bitrunning/encrypted) - health = 1500 - loot = list(/obj/structure/closet/crate/secure/bitrunning/encrypted) - maxHealth = 1500 - true_spawn = FALSE - -// You may be thinking, what about those mini-legions? They're not part of the initial created_atoms list diff --git a/code/modules/bitrunning/virtual_domain/domains/wendigo.dm b/code/modules/bitrunning/virtual_domain/domains/wendigo.dm index fcad3db6faf..fa0d15b92e9 100644 --- a/code/modules/bitrunning/virtual_domain/domains/wendigo.dm +++ b/code/modules/bitrunning/virtual_domain/domains/wendigo.dm @@ -9,11 +9,3 @@ reward_points = BITRUNNER_REWARD_HIGH safehouse_path = /datum/map_template/safehouse/lavaland_boss -/mob/living/simple_animal/hostile/megafauna/wendigo/virtual_domain - can_be_cybercop = FALSE - crusher_loot = list(/obj/structure/closet/crate/secure/bitrunning/encrypted) - guaranteed_butcher_results = list(/obj/item/wendigo_skull = 1) - health = 2000 - loot = list(/obj/structure/closet/crate/secure/bitrunning/encrypted) - maxHealth = 2000 - true_spawn = FALSE diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index 5b2f0fc020b..bbc4a75ede2 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -225,6 +225,3 @@ /// What our current gravity state is. Used to avoid duplicate animates and such var/gravity_state = null - - /// Whether this mob can be mutated into a cybercop via quantum server get_valid_domain_targets(). Specifically dodges megafauna - var/can_be_cybercop = TRUE diff --git a/code/modules/unit_tests/simple_animal_freeze.dm b/code/modules/unit_tests/simple_animal_freeze.dm index 329cbc0bfc9..4a85dbb3deb 100644 --- a/code/modules/unit_tests/simple_animal_freeze.dm +++ b/code/modules/unit_tests/simple_animal_freeze.dm @@ -81,28 +81,21 @@ /mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/doom, /mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/guidance, /mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/hunter, - /mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/virtual_domain, /mob/living/simple_animal/hostile/megafauna/bubblegum, /mob/living/simple_animal/hostile/megafauna/bubblegum/hallucination, - /mob/living/simple_animal/hostile/megafauna/bubblegum/virtual_domain, /mob/living/simple_animal/hostile/megafauna/clockwork_defender, /mob/living/simple_animal/hostile/megafauna/colossus, - /mob/living/simple_animal/hostile/megafauna/colossus/virtual_domain, /mob/living/simple_animal/hostile/megafauna/demonic_frost_miner, /mob/living/simple_animal/hostile/megafauna/dragon, /mob/living/simple_animal/hostile/megafauna/dragon/lesser, - /mob/living/simple_animal/hostile/megafauna/dragon/virtual_domain, /mob/living/simple_animal/hostile/megafauna/hierophant, - /mob/living/simple_animal/hostile/megafauna/hierophant/virtual_domain, /mob/living/simple_animal/hostile/megafauna/legion, - /mob/living/simple_animal/hostile/megafauna/legion/virtual_domain, /mob/living/simple_animal/hostile/megafauna/legion/medium, /mob/living/simple_animal/hostile/megafauna/legion/medium/eye, /mob/living/simple_animal/hostile/megafauna/legion/medium/left, /mob/living/simple_animal/hostile/megafauna/legion/medium/right, /mob/living/simple_animal/hostile/megafauna/legion/small, /mob/living/simple_animal/hostile/megafauna/wendigo, - /mob/living/simple_animal/hostile/megafauna/wendigo/virtual_domain, /mob/living/simple_animal/hostile/mimic, /mob/living/simple_animal/hostile/mimic/copy, /mob/living/simple_animal/hostile/mimic/copy/machine, diff --git a/tgstation.dme b/tgstation.dme index 90f69e83520..e4db80e380b 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -3384,6 +3384,7 @@ #include "code\modules\bitrunning\components\avatar_connection.dm" #include "code\modules\bitrunning\components\bitrunning_points.dm" #include "code\modules\bitrunning\components\netpod_healing.dm" +#include "code\modules\bitrunning\components\virtual_elite_mob.dm" #include "code\modules\bitrunning\objects\byteforge.dm" #include "code\modules\bitrunning\objects\clothing.dm" #include "code\modules\bitrunning\objects\disks.dm" @@ -3413,7 +3414,6 @@ #include "code\modules\bitrunning\virtual_domain\domains\colossus.dm" #include "code\modules\bitrunning\virtual_domain\domains\gondola_asteroid.dm" #include "code\modules\bitrunning\virtual_domain\domains\hierophant.dm" -#include "code\modules\bitrunning\virtual_domain\domains\legion.dm" #include "code\modules\bitrunning\virtual_domain\domains\pipedream.dm" #include "code\modules\bitrunning\virtual_domain\domains\pirates.dm" #include "code\modules\bitrunning\virtual_domain\domains\psyker_shuffle.dm"