From 6a70a982df0ceaa14b304c6941e001ede4a0efd3 Mon Sep 17 00:00:00 2001 From: Whoneedspacee Date: Mon, 11 Feb 2019 12:01:51 -0500 Subject: [PATCH] [Ready] Megafauna VR Training Simulator (#42353) * lava arena is now not the default for swoop attack adds mass fire attack, sends fire lines out from the drake in 360 degrees lava pools now have a chance to be spawned with the fire breath attack adds greater delay for lava pools on lesser ash drake so they don't just all instantly get placed lava arena doesn't needlessly recalculate the turfs it will be using every pass now enraged state, procs when you try to escape from the lava arena attack without fighting it normally, colors the drake turns its brightness up as it glows, then shoots out fire everywhere, also heals the drake for 250 health. fixes a bug where fire lines wouldn't appear if their range would put the calculated end turf outside the map fixes a bug where indestructible open turfs would turn into basalt on the lava arena attack fixes a bug where lava arena safe spots would be on indestructible closed turfs drake swoops now have a greater default recovery time * fixes stupid text error * adds vr mining sleepers to the lavaland mining base which can be used to train with megafauna and test out other items removes useless code from colossus's file including having a dead icon of the drake and butchering results adds virtual versions of each megafauna which don't drop any items and are deleted upon death adds the vr mining map * adds virtual megafauna spawners and their respective icons, spawn 1 megafauna at their location and are indestructible changes default virtual megafauna hunter gear to be more like the default mining gear * adds more items to spawning in mining vr megafauna spawner nests can no longer be pushed virtual megafauna now have a limit to how far they can move away from their nest adds arenas and fast bluespace tile paths to each megafauna spawner and gives the mining base some walls to protect it * adds mining vr map to the away mission config adds perm portals, linked two way portals who are linked by id and can be set in mapping files by editing instance adds megafauna portals for the arenas fixes up some junk on the mining vr map adds a spawn delay for megafauna spawners after the linked megafaunas death fixes a bug where bubblegum could teleport outside of his arena * adds true spawn var to bubblegum to easily handle clones / virtual versions of it spawning fixes bug where virtual legion would release the real legion when damaged moves vr mining code to the away missions code to adhere to contributing.md * converts map files to tgm adds arena cleanup and fixes runtime bugs on virtual megafauna spawn and death * reverts local drake changes * fixes bug where drake corpses still had a gps signal removes worthless include * adds the crusher trophies to the vr mining kit no more granting null achievements you stinky virtual megafauna this map really didn't need to be 255x255 im sorry * even smaller map wowee also please compile * adds respawning item crates for the lavaland items and healing junk even smaller map and some filler spaces for possible future bosses removes lavaland map changes mining vr now works properly with other vr maps and is randomly selected working with normal vr sleepers on station fixes permanent being permanant my bad * lavaland map stop being changed * maybe a bit overkill with the amount of healing items * reordering i guess but why is the rum gone * work please * Update Lavaland.dmm * Update Lavaland.dmm * adds force stop option to portals so you can choose to not chain teleports with non linked portals.dm permanent portals now can be var edited mid game and still work (cool admin events? idk) permanent portals are no longer deleted if they don't have a linked portal adds one way portals, portals that lead somewhere but have no return portal. basically non hardlinked portals but able to be done in map and edit stuff adds recall portals for the vr megafauna arenas, one way portals but you can recall to them by using a one time use spell (no it is not tied to your real mind it is tied to the vr mind) virtual megafauna can no longer escape their arenas moves some virtual megafauna procs to the main megafauna file to reduce needless code * recall portals can now be chained and the portal recall spell can now go back in a stack reverse style * adds boss rush mode, fight all of the bosses successively with only one break in the middle without dying object spawners can now choose their datum spawner type through a var moves some virtual megafauna code from the megafauna file to the megafauna spawner datum * adds new goodies to the end of the boss rush removes a lot of the copy pastad code in the vr megafauna adds true spawn var, decides whether or not the megafauna should grant achievements or have an internal gps, used for bubblegum hallucinations and virtual megafauna internal gps are now added on the base megafauna path hierophant's crusher trophy no longer spawns at its beacon (let's be honest some people missed it because of this) so it works properly with the crusher loot var --- _maps/RandomZLevels/VR/mining_VR.dmm | 9807 +++++++++++++++++ code/game/objects/effects/portals.dm | 55 +- code/game/objects/structures/spawner.dm | 3 +- .../awaymissions/mission_code/mining.dm | 290 + .../hostile/megafauna/blood_drunk_miner.dm | 2 +- .../hostile/megafauna/bubblegum.dm | 24 +- .../hostile/megafauna/colossus.dm | 9 +- .../simple_animal/hostile/megafauna/drake.dm | 6 +- .../hostile/megafauna/hierophant.dm | 7 +- .../simple_animal/hostile/megafauna/legion.dm | 9 +- .../hostile/megafauna/megafauna.dm | 17 +- .../hostile/megafauna/swarmer.dm | 2 +- config/awaymissionconfig.txt | 3 +- icons/mob/nest.dmi | Bin 12839 -> 17626 bytes tgstation.dme | 1 + 15 files changed, 10198 insertions(+), 37 deletions(-) create mode 100644 _maps/RandomZLevels/VR/mining_VR.dmm create mode 100644 code/modules/awaymissions/mission_code/mining.dm diff --git a/_maps/RandomZLevels/VR/mining_VR.dmm b/_maps/RandomZLevels/VR/mining_VR.dmm new file mode 100644 index 00000000000..afce8e88e63 --- /dev/null +++ b/_maps/RandomZLevels/VR/mining_VR.dmm @@ -0,0 +1,9807 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/obj/structure/spawner/megafauna/dragon, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/awaymission/vr/miner) +"ab" = ( +/obj/effect/landmark/vr_spawn/miner, +/turf/open/floor/bluespace{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) +"ac" = ( +/obj/structure/closet/crate/necropolis/vr_mining_gear/accelerator, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/awaymission/vr/miner) +"ad" = ( +/obj/structure/closet/crate/necropolis/vr_mining_gear/crusher, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/awaymission/vr/miner) +"ae" = ( +/turf/open/floor/sepia{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) +"af" = ( +/obj/structure/closet/crate/necropolis/vr_mining_gear/armor, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/awaymission/vr/miner) +"ag" = ( +/turf/open/floor/mineral/silver{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) +"ah" = ( +/turf/open/floor/mineral/gold{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) +"ai" = ( +/obj/effect/portal/permanent/one_way/recall{ + id = "boss rush entry virtual megafauna"; + name = "boss rush portal" + }, +/turf/open/floor/mineral/gold{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) +"aj" = ( +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/awaymission/vr/miner) +"ak" = ( +/turf/closed/indestructible/sandstone, +/area/awaymission/vr/miner) +"al" = ( +/turf/closed/indestructible/riveted/hierophant, +/area/awaymission/vr/miner) +"am" = ( +/turf/open/indestructible/hierophant, +/area/awaymission/vr/miner) +"an" = ( +/obj/effect/light_emitter{ + set_cap = 3; + set_luminosity = 5 + }, +/turf/open/indestructible/hierophant, +/area/awaymission/vr/miner) +"ao" = ( +/turf/open/indestructible/hierophant/two, +/area/awaymission/vr/miner) +"ap" = ( +/obj/structure/spawner/megafauna/blood_drunk, +/obj/effect/portal/permanent/one_way/destroy{ + id = "boss rush entry virtual megafauna"; + name = "boss rush entry portal" + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/awaymission/vr/miner) +"aq" = ( +/obj/effect/light_emitter{ + set_cap = 3; + set_luminosity = 5 + }, +/turf/open/indestructible/hierophant/two, +/area/awaymission/vr/miner) +"ar" = ( +/obj/structure/spawner/megafauna/hierophant, +/obj/effect/portal/permanent/one_way/destroy{ + id = "hierophant virtual arena"; + name = "hierophant arena portal" + }, +/turf/open/indestructible/hierophant/two, +/area/awaymission/vr/miner) +"as" = ( +/obj/structure/closet/crate/necropolis/vr_mining_gear/healing, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/awaymission/vr/miner) +"at" = ( +/obj/structure/spawner/megafauna/bubblegum, +/obj/effect/portal/permanent/one_way/destroy{ + id = "boss rush continue virtual megafauna"; + name = "boss rush continue exit portal" + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/awaymission/vr/miner) +"au" = ( +/turf/open/floor/bluespace{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) +"av" = ( +/turf/closed/indestructible/riveted, +/area/awaymission/vr/miner) +"aw" = ( +/obj/structure/spawner/megafauna/hierophant, +/turf/open/indestructible/hierophant/two, +/area/awaymission/vr/miner) +"ax" = ( +/obj/structure/closet/crate/necropolis/vr_mining_gear/food, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/awaymission/vr/miner) +"ay" = ( +/obj/structure/spawner/megafauna/blood_drunk, +/obj/effect/portal/permanent/one_way/destroy{ + id = "blood drunk miner virtual arena"; + name = "blood drunk miner arena portal" + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/awaymission/vr/miner) +"az" = ( +/turf/closed/indestructible/riveted/boss, +/area/awaymission/vr/miner) +"aA" = ( +/turf/open/indestructible/necropolis, +/area/awaymission/vr/miner) +"aB" = ( +/obj/structure/closet/crate/necropolis/vr_mining_gear/misc, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/awaymission/vr/miner) +"aC" = ( +/obj/structure/spawner/megafauna/colossus, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/awaymission/vr/miner) +"aD" = ( +/obj/structure/spawner/megafauna/bubblegum, +/obj/effect/portal/permanent/one_way/destroy{ + id = "bubblegum virtual arena"; + name = "bubblegum arena portal" + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/awaymission/vr/miner) +"aE" = ( +/obj/structure/spawner/megafauna/legion, +/turf/open/indestructible/necropolis, +/area/awaymission/vr/miner) +"aF" = ( +/obj/effect/portal/permanent/one_way/keep{ + id = "boss rush continue virtual megafauna"; + name = "boss rush continue portal" + }, +/turf/open/floor/mineral/silver{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) +"aG" = ( +/obj/structure/spawner/megafauna/colossus, +/obj/effect/portal/permanent/one_way/destroy{ + id = "colossus virtual arena"; + name = "colossus arena portal" + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/awaymission/vr/miner) +"aH" = ( +/obj/structure/spawner/megafauna/dragon, +/obj/effect/portal/permanent/one_way/destroy{ + id = "ash drake virtual arena"; + name = "ash drake arena portal" + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/awaymission/vr/miner) +"aI" = ( +/obj/machinery/shower{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/awaymission/vr/miner) +"aJ" = ( +/turf/closed/indestructible/necropolis, +/area/awaymission/vr/miner) +"aK" = ( +/turf/closed/indestructible/fakedoor, +/area/awaymission/vr/miner) +"aL" = ( +/obj/effect/decal/cleanable/blood/bubblegum, +/turf/open/floor/mineral/plastitanium{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) +"aM" = ( +/obj/effect/decal/cleanable/blood/bubblegum, +/obj/effect/portal/permanent/one_way/recall{ + id = "bubblegum virtual arena"; + name = "bubblegum arena portal" + }, +/turf/open/floor/mineral/plastitanium{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) +"aN" = ( +/obj/structure/spawner/megafauna/legion, +/obj/effect/portal/permanent/one_way/destroy{ + id = "legion virtual arena"; + name = "legion arena portal" + }, +/turf/open/indestructible/necropolis, +/area/awaymission/vr/miner) +"aO" = ( +/obj/effect/portal/permanent/one_way/recall{ + id = "hierophant virtual arena"; + name = "hierophant arena portal" + }, +/turf/open/indestructible/hierophant, +/area/awaymission/vr/miner) +"aP" = ( +/obj/structure/fluff/drake_statue, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/awaymission/vr/miner) +"aQ" = ( +/obj/structure/stone_tile/slab, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/awaymission/vr/miner) +"aR" = ( +/obj/structure/stone_tile/surrounding, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/awaymission/vr/miner) +"aS" = ( +/turf/open/floor/bronze{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) +"aT" = ( +/turf/open/floor/fakepit{ + canSmoothWith = null; + icon = 'icons/turf/floors/magic_chasm.dmi'; + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) +"aU" = ( +/obj/structure/stone_tile/slab/burnt, +/turf/open/lava/smooth/lava_land_surface, +/area/awaymission/vr/miner) +"aV" = ( +/obj/structure/stone_tile/block, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/awaymission/vr/miner) +"aW" = ( +/obj/structure/stone_tile/slab, +/obj/effect/portal/permanent/one_way/recall{ + id = "blood drunk miner virtual arena"; + name = "blood drunk miner arena portal" + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/awaymission/vr/miner) +"aX" = ( +/turf/open/floor/clockwork/reebe{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) +"aY" = ( +/obj/structure/chair/sofa/corner{ + dir = 1 + }, +/turf/open/floor/mineral/silver{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) +"aZ" = ( +/obj/structure/chair/sofa, +/turf/open/floor/mineral/silver{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) +"ba" = ( +/obj/structure/chair/sofa/left, +/turf/open/floor/mineral/silver{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) +"bb" = ( +/obj/structure/closet/crate/necropolis/vr_mining_gear/crusher, +/turf/open/floor/mineral/silver{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) +"bc" = ( +/obj/structure/closet/crate/necropolis/vr_mining_gear/armor, +/turf/open/floor/mineral/silver{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) +"bd" = ( +/obj/structure/closet/crate/necropolis/vr_mining_gear/accelerator, +/turf/open/floor/mineral/silver{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) +"be" = ( +/obj/structure/closet/crate/necropolis/vr_mining_gear/healing, +/turf/open/floor/mineral/silver{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) +"bf" = ( +/obj/structure/closet/crate/necropolis/vr_mining_gear/food, +/turf/open/floor/mineral/silver{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) +"bg" = ( +/obj/effect/portal/permanent/one_way/recall{ + id = "colossus virtual arena"; + name = "colossus arena portal" + }, +/turf/open/floor/fakepit{ + canSmoothWith = null; + icon = 'icons/turf/floors/magic_chasm.dmi'; + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) +"bh" = ( +/obj/structure/closet/crate/necropolis/vr_mining_gear/misc, +/turf/open/floor/mineral/silver{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) +"bi" = ( +/obj/structure/chair/sofa/right, +/turf/open/floor/mineral/silver{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) +"bj" = ( +/obj/structure/chair/sofa/corner, +/turf/open/floor/mineral/silver{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) +"bk" = ( +/obj/structure/chair/sofa{ + dir = 4 + }, +/turf/open/floor/mineral/silver{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) +"bl" = ( +/obj/structure/chair/sofa{ + dir = 8 + }, +/turf/open/floor/mineral/silver{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) +"bm" = ( +/obj/structure/chair/sofa/right{ + dir = 4 + }, +/turf/open/floor/mineral/silver{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) +"bn" = ( +/obj/structure/chair/sofa/left{ + dir = 8 + }, +/turf/open/floor/mineral/silver{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) +"bo" = ( +/obj/structure/table/wood, +/turf/open/floor/mineral/gold{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) +"bp" = ( +/obj/structure/chair/sofa/corner{ + dir = 1 + }, +/turf/open/floor/bronze{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) +"bq" = ( +/obj/structure/chair/sofa, +/turf/open/floor/bronze{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) +"br" = ( +/obj/structure/chair/sofa/left, +/turf/open/floor/bronze{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) +"bs" = ( +/obj/structure/chair/sofa/right, +/turf/open/floor/bronze{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) +"bt" = ( +/obj/structure/stone_tile/slab/burnt, +/obj/effect/portal/permanent/one_way/recall{ + id = "ash drake virtual arena"; + name = "ash drake arena portal" + }, +/turf/open/lava/smooth/lava_land_surface, +/area/awaymission/vr/miner) +"bu" = ( +/obj/effect/portal/permanent/one_way/recall{ + id = "legion virtual arena"; + name = "legion arena portal" + }, +/turf/open/indestructible/necropolis, +/area/awaymission/vr/miner) +"bv" = ( +/obj/structure/chair/sofa/corner, +/turf/open/floor/bronze{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) +"bw" = ( +/obj/structure/chair/sofa{ + dir = 4 + }, +/turf/open/floor/bronze{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) +"bx" = ( +/obj/structure/table/wood, +/turf/open/floor/clockwork/reebe{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) +"by" = ( +/obj/structure/chair/sofa{ + dir = 8 + }, +/turf/open/floor/bronze{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) +"bz" = ( +/obj/structure/chair/sofa/right{ + dir = 4 + }, +/turf/open/floor/bronze{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) +"bA" = ( +/obj/structure/chair/sofa/left{ + dir = 8 + }, +/turf/open/floor/bronze{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) +"ek" = ( +/obj/item/book/granter/spell/charge, +/turf/open/floor/bronze{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) +"eq" = ( +/obj/item/book/granter/spell/forcewall, +/turf/open/floor/bronze{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) +"jQ" = ( +/obj/item/gun/magic/staff/healing, +/turf/open/floor/bronze{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) +"kN" = ( +/obj/item/wisp_lantern, +/turf/open/floor/bronze{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) +"lJ" = ( +/obj/item/sord, +/turf/open/floor/bronze{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) +"nv" = ( +/obj/item/gun/energy/pulse/destroyer, +/turf/open/floor/bronze{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) +"pY" = ( +/obj/item/gun/magic/staff/honk, +/turf/open/floor/bronze{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) +"uE" = ( +/obj/item/book/granter/spell/fireball, +/turf/open/floor/bronze{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) +"xx" = ( +/obj/item/katana, +/turf/open/floor/bronze{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) +"Ag" = ( +/obj/structure/table/wood, +/obj/item/book/granter/spell/mindswap, +/turf/open/floor/clockwork/reebe{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) +"JW" = ( +/obj/item/gun/energy/kinetic_accelerator/crossbow, +/turf/open/floor/bronze{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) +"RR" = ( +/obj/item/gun/magic/staff/spellblade, +/turf/open/floor/bronze{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) +"RY" = ( +/obj/item/book/granter/spell/sacredflame, +/turf/open/floor/bronze{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) +"Uf" = ( +/obj/item/book/granter/spell/barnyard, +/turf/open/floor/bronze{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) +"Wh" = ( +/obj/structure/chair/sofa{ + dir = 8 + }, +/mob/living/simple_animal/hostile/skeleton/plasmaminer, +/turf/open/floor/bronze{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/awaymission/vr/miner) + +(1,1,1) = {" +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +"} +(2,1,1) = {" +av +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +al +al +al +al +al +al +al +al +al +al +al +al +al +al +al +al +al +al +al +al +al +al +al +av +"} +(3,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +al +am +am +am +am +am +am +am +am +am +am +an +am +am +am +am +am +am +am +am +am +am +al +av +"} +(4,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +av +av +av +av +av +av +av +av +av +av +av +av +ab +ab +ab +av +av +av +av +av +av +av +av +av +av +av +av +av +al +am +am +am +an +an +am +am +am +al +am +am +am +al +am +am +am +an +an +am +am +am +al +av +"} +(5,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +av +av +av +av +av +av +av +av +av +av +av +av +ab +ab +ab +av +av +av +av +av +av +av +av +av +av +av +av +av +al +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +al +av +"} +(6,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +av +av +av +av +av +av +av +av +av +av +av +av +ab +ab +ab +av +av +av +av +av +av +av +av +av +av +av +av +av +al +am +an +am +al +al +am +an +am +am +am +an +am +am +am +an +am +al +al +am +an +am +al +av +"} +(7,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +av +av +av +av +av +av +av +av +av +av +av +av +au +au +au +av +av +av +av +av +av +av +av +av +av +av +av +av +al +am +an +am +al +al +am +an +am +am +am +an +am +am +am +an +am +al +al +am +an +am +al +av +"} +(8,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ac +au +au +au +as +aI +aI +aI +aj +aj +aj +aj +aj +aj +aj +aj +av +al +am +am +am +am +am +ao +ao +ao +ao +ao +ao +ao +ao +ao +ao +ao +am +am +am +am +am +al +av +"} +(9,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ad +au +au +au +ax +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +av +al +am +am +am +an +an +ao +ao +ao +al +ao +ao +ao +al +ao +ao +ao +an +an +am +am +am +al +av +"} +(10,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +af +au +au +au +aB +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +av +al +am +am +am +am +am +ao +ao +ao +ao +ao +aq +ao +ao +ao +ao +ao +am +am +am +am +am +al +av +"} +(11,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +au +au +au +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +av +al +am +al +am +am +am +ao +al +ao +ao +ao +ao +ao +ao +ao +al +ao +am +am +am +al +am +al +av +"} +(12,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +aj +aj +aj +aj +aj +aj +aQ +aR +aQ +au +au +au +au +au +au +au +au +au +ae +ae +ae +aj +aj +aj +aj +aj +aj +av +al +am +am +am +am +am +ao +ao +ao +ao +ao +ao +ao +ao +ao +ao +ao +am +am +am +am +am +al +av +"} +(13,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ay +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +aj +aj +aj +aj +aj +aj +aQ +aW +aQ +au +au +au +au +au +au +au +au +au +ae +ae +ae +aj +aj +aj +aj +aj +aj +av +al +an +am +am +an +an +ao +ao +aq +ao +ao +ar +ao +ao +aq +ao +ao +an +an +am +am +an +al +av +"} +(14,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +aj +aj +aj +aj +aj +aj +aR +aQ +aV +au +au +au +au +au +au +au +au +au +ae +ae +ae +aj +aj +aj +aj +aj +aj +av +al +am +am +am +am +am +ao +ao +ao +ao +ao +ao +ao +ao +ao +ao +ao +am +am +am +am +am +al +av +"} +(15,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +au +au +au +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +av +al +am +al +am +am +am +ao +al +ao +ao +ao +ao +ao +ao +ao +al +ao +am +am +am +al +am +al +av +"} +(16,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +au +au +au +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +av +al +am +am +am +am +am +ao +ao +ao +ao +ao +aq +ao +ao +ao +ao +ao +am +am +am +am +am +al +av +"} +(17,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +au +au +au +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +av +al +am +am +am +an +an +ao +ao +ao +al +ao +ao +ao +al +ao +ao +ao +an +an +am +am +am +al +av +"} +(18,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +au +au +au +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +av +al +am +am +am +am +am +ao +ao +ao +ao +ao +ao +ao +ao +ao +ao +ao +am +am +am +am +am +al +av +"} +(19,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +aj +aj +aj +aj +aj +aj +aU +aU +aU +au +au +au +au +au +au +au +au +au +ae +ae +ae +aj +aj +aj +aj +aj +aj +av +al +am +an +am +al +al +am +an +am +am +am +an +am +am +am +an +am +al +al +am +an +am +al +av +"} +(20,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +aj +aj +aj +aj +aj +aP +aU +bt +aU +au +au +au +au +au +au +au +au +au +ae +ae +ae +aj +aj +aj +aj +aj +aj +av +al +am +an +am +al +al +am +an +am +am +am +an +am +am +am +an +am +al +al +am +an +am +al +av +"} +(21,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +aj +aj +aj +aj +aj +aj +aU +aU +aU +au +au +au +au +au +au +au +au +au +ae +ae +ae +aj +aj +aj +aj +aj +aj +av +al +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +al +av +"} +(22,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +au +au +au +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +av +al +am +am +am +an +an +am +am +am +al +am +am +am +al +am +am +am +an +an +am +am +am +al +av +"} +(23,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +au +au +au +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +av +al +am +am +am +am +am +am +am +am +am +am +an +am +am +am +am +am +am +am +am +am +am +al +av +"} +(24,1,1) = {" +av +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +av +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +au +au +au +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +av +al +al +al +al +al +al +al +al +al +al +al +al +al +al +al +al +al +al +al +al +al +al +al +av +"} +(25,1,1) = {" +av +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +av +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +au +au +au +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +av +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +av +"} +(26,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +aj +aj +aj +aj +aj +aj +aT +aT +aT +au +au +au +au +au +au +au +au +au +ae +ae +ae +aj +aj +aj +aj +aj +aj +av +az +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +az +av +"} +(27,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +aj +aj +aj +aj +aj +aj +aT +bg +aT +au +au +au +au +au +au +au +au +au +ae +ae +ae +aj +aj +aj +aj +aj +aj +av +az +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +az +av +"} +(28,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +aj +aj +aj +aj +aj +aj +aT +aT +aT +au +au +au +au +au +au +au +au +au +ae +ae +ae +aj +aj +aj +aj +aj +aj +av +az +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +az +av +"} +(29,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +au +au +au +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +av +az +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +az +av +"} +(30,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +au +au +au +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +av +az +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +az +av +"} +(31,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +au +au +au +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +av +az +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +az +av +"} +(32,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +au +au +au +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +av +az +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +az +av +"} +(33,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +aj +aj +aj +aj +aj +aj +aL +aL +aL +au +au +au +au +au +au +au +au +au +ae +ae +ae +aj +aj +aj +aj +aj +aj +av +az +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +az +av +"} +(34,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +aj +aj +aj +aj +aj +aj +aL +aM +aL +au +au +au +au +au +au +au +au +au +ae +ae +ae +aj +aj +aj +aj +aj +aj +av +az +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +az +av +"} +(35,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +aj +aj +aj +aj +aj +aj +aL +aL +aL +au +au +au +au +au +au +au +au +au +ae +ae +ae +aj +aj +aj +aj +aj +aj +av +az +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +az +av +"} +(36,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aD +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +au +au +au +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +av +az +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aN +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +az +av +"} +(37,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +au +au +au +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +av +az +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +az +av +"} +(38,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +au +au +au +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +av +az +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +az +av +"} +(39,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +au +au +au +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +av +az +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +az +av +"} +(40,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +aj +aj +aj +aj +aj +aj +am +am +am +au +au +au +au +au +au +au +au +au +ae +ae +ae +aj +aj +aj +aj +aj +aj +av +az +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +az +av +"} +(41,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +aj +aj +aj +aj +aj +aj +am +aO +am +au +au +au +au +au +au +au +au +au +ae +ae +ae +aj +aj +aj +aj +aj +aj +av +az +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +az +av +"} +(42,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +aj +aj +aj +aj +aj +aj +am +am +am +au +au +au +au +au +au +au +au +au +ae +ae +ae +aj +aj +aj +aj +aj +aj +av +az +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +az +av +"} +(43,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +au +au +au +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +av +az +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +az +av +"} +(44,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +au +au +au +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +av +az +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +az +av +"} +(45,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +au +au +au +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +av +az +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +az +av +"} +(46,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +au +au +au +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +av +az +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +az +av +"} +(47,1,1) = {" +av +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +av +aj +aj +aj +aj +aj +aj +aA +aA +aA +au +au +au +au +au +au +au +au +au +ae +ae +ae +aj +aj +aj +aj +aj +aj +av +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +av +"} +(48,1,1) = {" +av +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +av +aj +aj +aj +aj +aj +aj +aA +bu +aA +au +au +au +au +au +au +au +au +au +ae +ae +ae +aj +aj +aj +aj +aj +aj +av +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +av +"} +(49,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +aj +aj +aj +aj +aj +aj +aA +aA +aA +au +au +au +au +au +au +au +au +au +ae +ae +ae +aj +aj +aj +aj +aj +aj +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +"} +(50,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ag +ah +ag +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +"} +(51,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ah +ai +ah +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +"} +(52,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ag +ah +ag +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +"} +(53,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +"} +(54,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +"} +(55,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +"} +(56,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +"} +(57,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +"} +(58,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +"} +(59,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aG +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aH +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +"} +(60,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +"} +(61,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +"} +(62,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +"} +(63,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +"} +(64,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +"} +(65,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +"} +(66,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +"} +(67,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +"} +(68,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +"} +(69,1,1) = {" +av +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +av +"} +(70,1,1) = {" +av +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +av +"} +(71,1,1) = {" +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +"} +(72,1,1) = {" +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +"} +(73,1,1) = {" +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ak +aY +bk +bk +bm +ag +ag +ag +ag +ag +ak +"} +(74,1,1) = {" +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ak +aZ +bo +bo +bo +ah +ah +ah +ah +ag +ak +"} +(75,1,1) = {" +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ak +aZ +bo +ah +ah +ah +ah +ah +ah +ag +ak +"} +(76,1,1) = {" +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ak +ba +bo +ah +ah +ah +ah +ah +ah +ag +ak +"} +(77,1,1) = {" +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ak +ag +ah +ah +ah +ah +ah +ah +ah +ag +ak +"} +(78,1,1) = {" +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ak +ag +ah +ah +ah +ah +ah +ah +ah +ag +ak +"} +(79,1,1) = {" +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ak +ag +ah +ah +ah +ah +ah +ah +ah +ag +ak +"} +(80,1,1) = {" +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ak +bb +ah +ah +ah +ah +ah +ah +ah +ag +ak +"} +(81,1,1) = {" +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ak +bc +ah +ah +ah +ah +ah +ah +ah +ag +ak +"} +(82,1,1) = {" +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ak +bd +ah +ah +ah +ah +ah +ah +ah +ag +ak +"} +(83,1,1) = {" +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ap +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aK +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aa +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aK +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aC +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aK +ag +ah +ah +ah +ah +ah +ah +ah +aF +ak +"} +(84,1,1) = {" +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ak +be +ah +ah +ah +ah +ah +ah +ah +ag +ak +"} +(85,1,1) = {" +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ak +bf +ah +ah +ah +ah +ah +ah +ah +ag +ak +"} +(86,1,1) = {" +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ak +bh +ah +ah +ah +ah +ah +ah +ah +ag +ak +"} +(87,1,1) = {" +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ak +ag +ah +ah +ah +ah +ah +ah +ah +ag +ak +"} +(88,1,1) = {" +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ak +ag +ah +ah +ah +ah +ah +ah +ah +ag +ak +"} +(89,1,1) = {" +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ak +ag +ah +ah +ah +ah +ah +ah +ah +ag +ak +"} +(90,1,1) = {" +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ak +bi +bo +ah +ah +ah +ah +ah +ah +ag +ak +"} +(91,1,1) = {" +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ak +aZ +bo +ah +ah +ah +ah +ah +ah +ag +ak +"} +(92,1,1) = {" +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ak +aZ +bo +bo +bo +ah +ah +ah +ah +ag +ak +"} +(93,1,1) = {" +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +ak +bj +bl +bl +bn +ag +ag +ag +ag +ag +ak +"} +(94,1,1) = {" +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +"} +(95,1,1) = {" +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +al +al +al +al +al +al +al +al +al +al +al +al +al +al +al +al +al +al +al +al +al +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +"} +(96,1,1) = {" +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +am +am +am +am +am +am +am +am +am +am +an +am +am +am +am +am +am +am +am +am +am +az +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aJ +bp +bw +bw +bz +aS +aS +aS +aS +aS +aJ +"} +(97,1,1) = {" +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +am +am +am +an +an +am +am +am +al +am +am +am +al +am +am +am +an +an +am +am +am +az +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aJ +bq +bx +bx +bx +aX +aX +aX +aX +aS +aJ +"} +(98,1,1) = {" +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +az +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aJ +bq +bx +aX +aX +aX +aX +aX +aX +aS +aJ +"} +(99,1,1) = {" +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +am +an +am +al +al +am +an +am +am +am +an +am +am +am +an +am +al +al +am +an +am +az +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aJ +br +bx +aX +aX +aX +aX +aX +aX +aS +aJ +"} +(100,1,1) = {" +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +am +an +am +al +al +am +an +am +am +am +an +am +am +am +an +am +al +al +am +an +am +az +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aJ +aS +aX +aX +aX +aX +aX +aX +aX +Uf +aJ +"} +(101,1,1) = {" +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +am +am +am +am +am +ao +ao +ao +ao +ao +ao +ao +ao +ao +ao +ao +am +am +am +am +am +az +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aJ +aS +aX +aX +aX +aX +aX +aX +aX +uE +aJ +"} +(102,1,1) = {" +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +am +am +am +an +an +ao +ao +ao +al +ao +ao +ao +al +ao +ao +ao +an +an +am +am +am +az +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aJ +aS +aX +aX +aX +aX +aX +aX +aX +RY +aJ +"} +(103,1,1) = {" +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +am +am +am +am +am +ao +ao +ao +ao +ao +aq +ao +ao +ao +ao +ao +am +am +am +am +am +az +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aJ +aS +aX +aX +aX +aX +aX +aX +aX +nv +aJ +"} +(104,1,1) = {" +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +am +al +am +am +am +ao +al +ao +ao +ao +ao +ao +ao +ao +al +ao +am +am +am +al +am +az +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aJ +aS +aX +aX +aX +aX +aX +aX +aX +kN +aJ +"} +(105,1,1) = {" +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +am +am +am +am +am +ao +ao +ao +ao +ao +ao +ao +ao +ao +ao +ao +am +am +am +am +am +az +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aJ +aS +aX +aX +aX +aX +aX +aX +aX +pY +aJ +"} +(106,1,1) = {" +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +at +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aK +an +am +am +an +an +ao +ao +aq +ao +ao +aw +ao +ao +aq +ao +ao +an +an +am +am +an +aK +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aE +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aK +aS +aX +aX +aX +aX +aX +aX +aX +RR +aJ +"} +(107,1,1) = {" +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +am +am +am +am +am +ao +ao +ao +ao +ao +ao +ao +ao +ao +ao +ao +am +am +am +am +am +az +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aJ +aS +aX +aX +aX +aX +aX +aX +aX +jQ +aJ +"} +(108,1,1) = {" +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +am +al +am +am +am +ao +al +ao +ao +ao +ao +ao +ao +ao +al +ao +am +am +am +al +am +az +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aJ +aS +aX +aX +aX +aX +aX +aX +aX +lJ +aJ +"} +(109,1,1) = {" +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +am +am +am +am +am +ao +ao +ao +ao +ao +aq +ao +ao +ao +ao +ao +am +am +am +am +am +az +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aJ +aS +aX +aX +aX +aX +aX +aX +aX +JW +aJ +"} +(110,1,1) = {" +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +am +am +am +an +an +ao +ao +ao +al +ao +ao +ao +al +ao +ao +ao +an +an +am +am +am +az +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aJ +aS +aX +aX +aX +aX +aX +aX +aX +eq +aJ +"} +(111,1,1) = {" +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +am +am +am +am +am +ao +ao +ao +ao +ao +ao +ao +ao +ao +ao +ao +am +am +am +am +am +az +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aJ +aS +aX +aX +aX +aX +aX +aX +aX +ek +aJ +"} +(112,1,1) = {" +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +am +an +am +al +al +am +an +am +am +am +an +am +am +am +an +am +al +al +am +an +am +az +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aJ +aS +aX +aX +aX +aX +aX +aX +aX +xx +aJ +"} +(113,1,1) = {" +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +am +an +am +al +al +am +an +am +am +am +an +am +am +am +an +am +al +al +am +an +am +az +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aJ +bs +bx +aX +aX +aX +aX +aX +aX +aS +aJ +"} +(114,1,1) = {" +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +az +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aJ +bq +bx +aX +aX +aX +aX +aX +aX +aS +aJ +"} +(115,1,1) = {" +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +am +am +am +an +an +am +am +am +al +am +am +am +al +am +am +am +an +an +am +am +am +az +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aJ +bq +Ag +bx +bx +aX +aX +aX +aX +aS +aJ +"} +(116,1,1) = {" +az +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +az +am +am +am +am +am +am +am +am +am +am +an +am +am +am +am +am +am +am +am +am +am +az +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aA +aJ +bv +Wh +by +bA +aS +aS +aS +aS +aS +aJ +"} +(117,1,1) = {" +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +al +al +al +al +al +al +al +al +al +al +al +al +al +al +al +al +al +al +al +al +al +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +az +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +"} diff --git a/code/game/objects/effects/portals.dm b/code/game/objects/effects/portals.dm index c480bb6409f..df204273a7e 100644 --- a/code/game/objects/effects/portals.dm +++ b/code/game/objects/effects/portals.dm @@ -49,7 +49,9 @@ user.forceMove(get_turf(src)) return TRUE -/obj/effect/portal/Crossed(atom/movable/AM, oldloc) +/obj/effect/portal/Crossed(atom/movable/AM, oldloc, force_stop = 0) + if(force_stop) + return ..() if(isobserver(AM)) return ..() if(linked && (get_turf(oldloc) == get_turf(linked))) @@ -184,3 +186,54 @@ else real_target = get_turf(linked) return real_target + +/obj/effect/portal/permanent + name = "permanent portal" + desc = "An unwavering portal that will never fade." + var/id // var edit or set id in map editor + hardlinked = FALSE // dont qdel my portal nerd + +/obj/effect/portal/permanent/Initialize(mapload, _creator, _lifespan = 0, obj/effect/portal/_linked, automatic_link = FALSE, turf/hard_target_override, atmos_link_override) + . = ..() + set_linked() + +/obj/effect/portal/permanent/proc/get_linked() + if(!id) + return + for(var/obj/effect/portal/permanent/P in GLOB.portals - src) + if(P.id && P.id == id) // gets portals with the same id, there should only be two permanent portals with the same id + return P + +/obj/effect/portal/permanent/proc/set_linked() + var/obj/effect/portal/permanent/other = get_linked() + if(!other) + return + other.linked = src + linked = other + +/obj/effect/portal/permanent/teleport(atom/movable/M, force = FALSE) + if(!linked) // try to search for a new one if something was var edited etc + set_linked() + . = ..() + +/obj/effect/portal/permanent/one_way // doesn't have a return portal + name = "one-way portal" + desc = "You get the feeling that this might not be the safest thing you've ever done." + var/keep // if this is a portal that should be kept + +/obj/effect/portal/permanent/one_way/set_linked() + var/obj/effect/portal/permanent/one_way/other = get_linked() + if(!other) + return + hard_target = get_turf(other) + other.hard_target = get_turf(src) + if(!other.keep) + qdel(other) + if(!keep) + qdel(src) + +/obj/effect/portal/permanent/one_way/keep // because its nice to be able to tell which is which on the map + keep = TRUE + +/obj/effect/portal/permanent/one_way/destroy + keep = FALSE diff --git a/code/game/objects/structures/spawner.dm b/code/game/objects/structures/spawner.dm index 3cd08e91c0f..12b03d5f9a7 100644 --- a/code/game/objects/structures/spawner.dm +++ b/code/game/objects/structures/spawner.dm @@ -13,10 +13,11 @@ var/mob_types = list(/mob/living/simple_animal/hostile/carp) var/spawn_text = "emerges from" var/faction = list("hostile") + var/spawner_type = /datum/component/spawner /obj/structure/spawner/Initialize() . = ..() - AddComponent(/datum/component/spawner, mob_types, spawn_time, faction, spawn_text, max_mobs) + AddComponent(spawner_type, mob_types, spawn_time, faction, spawn_text, max_mobs) /obj/structure/spawner/attack_animal(mob/living/simple_animal/M) if(faction_check(faction, M.faction, FALSE)&&!M.client) diff --git a/code/modules/awaymissions/mission_code/mining.dm b/code/modules/awaymissions/mission_code/mining.dm new file mode 100644 index 00000000000..03142fb826b --- /dev/null +++ b/code/modules/awaymissions/mission_code/mining.dm @@ -0,0 +1,290 @@ +// // +// -----Vr Stuff----- // +// // + +/area/awaymission/vr/miner + name = "VrMining" + requires_power = FALSE + dynamic_lighting = DYNAMIC_LIGHTING_DISABLED + +/datum/outfit/job/miner/equipped/vr + name = "Virtual Reality Miner" + suit = /obj/item/clothing/suit/hooded/explorer + mask = /obj/item/clothing/mask/gas/explorer + glasses = /obj/item/clothing/glasses/hud/health + suit_store = /obj/item/tank/internals/oxygen + internals_slot = SLOT_S_STORE + backpack_contents = list( + /obj/item/gun/energy/kinetic_accelerator=2) + +/obj/effect/landmark/vr_spawn/miner + vr_outfit = /datum/outfit/job/miner/equipped/vr + +/obj/structure/closet/crate/necropolis/vr_mining_gear + name = "armory chest" + desc = "Has some sick nasty respawning gear." + icon_state = "necrocrate" + resistance_flags = INDESTRUCTIBLE + anchored = TRUE + move_resist=INFINITY + var/respawn_loot = list() // put types and count in here + +/obj/structure/closet/crate/necropolis/vr_mining_gear/dump_contents() // respawn loot on the chest + var/atom/L = drop_location() + for(var/type in respawn_loot) + var/count = respawn_loot[type] + if(!isnum(count))//Default to 1 + count = 1 + for(var/i = 1 to count) + new type(L) + +/obj/structure/closet/crate/necropolis/vr_mining_gear/take_contents() // delete loot on the chest + var/atom/L = drop_location() + for(var/atom/movable/AM in L) + if(AM == src || isliving(AM)) + continue + qdel(AM) + +/obj/structure/closet/crate/necropolis/vr_mining_gear/armor + name = "Armor Chest" + desc = "Contains an assortment of lavaland armors." + respawn_loot = list( + /obj/item/clothing/suit/hooded/cloak/drake=1, + /obj/item/clothing/suit/space/hostile_environment=1, + /obj/item/clothing/head/helmet/space/hostile_environment=1, + /obj/item/clothing/suit/space/hardsuit/cult=1, + /obj/item/clothing/suit/space/hardsuit/ert/paranormal/beserker=1, + /obj/item/clothing/suit/space/hardsuit/ert/paranormal/inquisitor=1, + /obj/item/stack/sheet/animalhide/goliath_hide=6) + +/obj/structure/closet/crate/necropolis/vr_mining_gear/accelerator + name = "Kinetic Accelerator Chest" + desc = "Contains an assortment of kinetic accelerator equipment." + respawn_loot = list( + /obj/item/gun/energy/kinetic_accelerator=1, + /obj/item/borg/upgrade/modkit/lifesteal=1, + /obj/item/borg/upgrade/modkit/aoe/mobs=1, + /obj/item/borg/upgrade/modkit/tracer=1, + /obj/item/borg/upgrade/modkit/tracer/adjustable=1, + /obj/item/borg/upgrade/modkit/chassis_mod=1, + /obj/item/borg/upgrade/modkit/chassis_mod/orange=1, + /obj/item/borg/upgrade/modkit/aoe/turfs/andmobs=1, + /obj/item/borg/upgrade/modkit/cooldown/repeater=1, + /obj/item/borg/upgrade/modkit/resonator_blasts=1, + /obj/item/borg/upgrade/modkit/bounty=1, + /obj/item/borg/upgrade/modkit/range=3, + /obj/item/borg/upgrade/modkit/damage=3, + /obj/item/borg/upgrade/modkit/cooldown=3) + +/obj/structure/closet/crate/necropolis/vr_mining_gear/crusher + name = "Kinetic Crusher Chest" + desc = "Contains an assortment of kinetic crusher equipment." + respawn_loot = list( + /obj/item/twohanded/required/kinetic_crusher=1, + /obj/item/crusher_trophy/vortex_talisman=1, + /obj/item/crusher_trophy/demon_claws=1, + /obj/item/crusher_trophy/tail_spike=1, + /obj/item/crusher_trophy/miner_eye=1, + /obj/item/crusher_trophy/legion_skull=1, + /obj/item/crusher_trophy/goliath_tentacle=1, + /obj/item/crusher_trophy/blaster_tubes/magma_wing=1, + /obj/item/crusher_trophy/watcher_wing=1, + /obj/item/crusher_trophy/blaster_tubes=1) + +/obj/structure/closet/crate/necropolis/vr_mining_gear/healing + name = "Healing Chest" + desc = "Contains an assortment of healing items." + respawn_loot = list( + /obj/item/reagent_containers/hypospray/medipen/survival=1, + /obj/item/storage/firstaid/brute=1, + /obj/item/hivelordstabilizer=3, + /obj/item/organ/regenerative_core/legion=3) + +/obj/structure/closet/crate/necropolis/vr_mining_gear/food + name = "Food Chest" + desc = "Fresh from the virtual cafeteria." + respawn_loot = list( + /obj/item/reagent_containers/food/snacks/donkpocket/warm=5) + +/obj/structure/closet/crate/necropolis/vr_mining_gear/misc + name = "Miscellaneous Chest" + desc = "Contains an assortment of random lavaland items." + respawn_loot = list( + /obj/item/warp_cube/red=1, + /obj/item/reagent_containers/glass/bottle/potion/flight=1, + /obj/item/organ/heart/cursed/wizard=1, + /obj/item/immortality_talisman=1, + /obj/item/book/granter/spell/summonitem=1) + +// // +// -----Virtual Megafauna Spawners ---- // +// // + +/datum/component/spawner/megafauna + var/spawn_wait_time = 150 // time to next spawn when the megafauna dies, 15 seconds + var/initial_spawned = FALSE // so we don't clear the arena and open the door on the initial spawn + var/nest_range = 10 + +/datum/component/spawner/megafauna/try_spawn_mob() + STOP_PROCESSING(SSprocessing, src) + if(spawned_mobs.len < max_mobs && initial_spawned) + var/obj/structure/spawner/megafauna/MS = parent + MS.cleanup_arena() + spawn_delay = world.time + spawn_wait_time + var/turf/check = get_ranged_target_turf(get_turf(MS), SOUTH, nest_range + 1) + if(istype(check, /turf/closed/indestructible/fakedoor)) + check.ChangeTurf(/turf/open/floor/plating/asteroid/basalt/lava_land_surface) + sleep(spawn_wait_time) + check.ChangeTurf(/turf/closed/indestructible/fakedoor) + else + sleep(spawn_wait_time) + . = ..() + initial_spawned = TRUE + START_PROCESSING(SSprocessing, src) + +/obj/structure/spawner/megafauna + name = "generic megafauna spawner" + desc = "Literally does nothing." + resistance_flags = INDESTRUCTIBLE + move_resist = INFINITY + max_mobs = 1 + icon = 'icons/mob/nest.dmi' + spawn_text = "appears onto" + density = FALSE + spawner_type = /datum/component/spawner/megafauna + var/nest_range = 10 + +/obj/structure/spawner/megafauna/proc/cleanup_arena() + for(var/obj/effect/decal/B in urange(nest_range, src)) + qdel(B) // go away blood and garbage shit + +/obj/structure/spawner/megafauna/blood_drunk + name = "drunken beacon" + desc = "Creates holographic versions of a blood drunken miner." + icon_state = "blood_drunk" + mob_types = list(/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/virtual) + +/obj/structure/spawner/megafauna/dragon + name = "flame beacon" + desc = "Creates holographic versions of a fire breathing drake." + icon_state = "dragon" + mob_types = list(/mob/living/simple_animal/hostile/megafauna/dragon/virtual) + +/obj/structure/spawner/megafauna/bubblegum + name = "bloody beacon" + desc = "Creates holographic versions of the king of the slaughter demons." + icon_state = "bubblegum" + mob_types = list(/mob/living/simple_animal/hostile/megafauna/bubblegum/virtual) + +/obj/structure/spawner/megafauna/colossus + name = "radiant beacon" + desc = "Creates holographic versions of a godlike creature." + icon_state = "colossus" + mob_types = list(/mob/living/simple_animal/hostile/megafauna/colossus/virtual) + +/obj/structure/spawner/megafauna/hierophant + name = "beacon beacon" + desc = "Creates holographic versions of a destructive magical club." + icon_state = "hierophant" + mob_types = list(/mob/living/simple_animal/hostile/megafauna/hierophant/virtual) + +/obj/structure/spawner/megafauna/legion + name = "skull beacon" + desc = "Creates holographic versions of a gigantic skull demon guarding the necropolis." + icon_state = "legion" + mob_types = list(/mob/living/simple_animal/hostile/megafauna/legion/virtual) + +// // +// ----- Recall Portals ---- // +// // + +/obj/effect/proc_holder/spell/portal_recall + name = "Portal Recall" + desc = "This will teleport you back to your previously used portal. One use only." + clothes_req = FALSE + action_icon_state = "blink" + var/list/recall_portals = list() + +/obj/effect/proc_holder/spell/portal_recall/Click(mob/user = usr) + if(!recall_portals.len) + user.mind.RemoveSpell(src) // remove spell if no portals left + var/turf/recall_turf = get_turf(recall_portals[recall_portals.len]) + if(recall_turf) + do_teleport(user, recall_turf, 0, no_effects = FALSE, channel = TELEPORT_CHANNEL_BLUESPACE) + recall_portals -= recall_portals[recall_portals.len] + if(!recall_portals.len) + user.mind.RemoveSpell(src) // remove spell if no portals left + +/obj/effect/portal/permanent/one_way/recall + name = "recall portal" + desc = "Gives you a one time ability to return to this portal once you have entered." + mech_sized = TRUE + keep = TRUE + +/obj/effect/portal/permanent/one_way/recall/Crossed(atom/movable/AM, oldloc) + if(ismob(AM)) + var/mob/user = AM + var/check = locate(/obj/effect/proc_holder/spell/portal_recall) in user.mind.spell_list + if(check) + var/obj/effect/proc_holder/spell/portal_recall/mob_recall = check + for(var/obj/effect/portal/permanent/one_way/recall/P in mob_recall.recall_portals) + if(src == P) + return ..(AM, oldloc, force_stop = 1) // don't teleport if they have a recall spell with this portal already (or have just teleported onto it) + return ..() + +/obj/effect/portal/permanent/one_way/recall/teleport(atom/movable/M, force = FALSE) + . = ..() + if(ismob(M)) + var/mob/user = M + var/findspell = locate(/obj/effect/proc_holder/spell/portal_recall) in user.mind.spell_list + var/obj/effect/proc_holder/spell/portal_recall/personal_recall = findspell ? findspell : new + personal_recall.recall_portals += src + if(!findspell) + user.mind.AddSpell(personal_recall) + +// // +// -----Virtual Megafauna----- // +// // + +/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/virtual + name = "blood-drunk miner hologram" + desc = "A holographic miner, eternally hunting." + crusher_loot = list() + loot = list() + true_spawn = 0 + +/mob/living/simple_animal/hostile/megafauna/dragon/virtual + name = "ash drake hologram" + desc = "A holographic dragon, once weak, now fierce." + del_on_death = 1 // goodbye corpse + crusher_loot = list() + loot = list() + true_spawn = 0 + +/mob/living/simple_animal/hostile/megafauna/bubblegum/virtual + name = "bubblegum hologram" + desc = "A holographic version of the king of the slaughter demons. You feel something oddly real staring back at you." + crusher_loot = list() + loot = list() + true_spawn = 0 + +/mob/living/simple_animal/hostile/megafauna/colossus/virtual + name = "colossus hologram" + desc = "A holographic god. One of the strongest creatures that has ever lived." + crusher_loot = list() + loot = list() + true_spawn = 0 + +/mob/living/simple_animal/hostile/megafauna/hierophant/virtual + name = "hierophant hologram" + desc = "A holographic club. It's said to wipe from existence those who fall to its rhythm." + crusher_loot = list() + loot = list() + true_spawn = 0 + +/mob/living/simple_animal/hostile/megafauna/legion/virtual + name = "Legion Hologram" + desc = "One of many... holograms." + crusher_loot = list() + loot = list() + true_spawn = 0 diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm index f28c969b703..1eec7328f4e 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm @@ -44,6 +44,7 @@ Difficulty: Medium wander = FALSE del_on_death = TRUE blood_volume = BLOOD_VOLUME_NORMAL + internal_type = /obj/item/gps/internal/miner medal_type = BOSS_MEDAL_MINER var/obj/item/melee/transforming/cleaving_saw/miner/miner_saw var/time_until_next_transform = 0 @@ -80,7 +81,6 @@ Difficulty: Medium /mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/Initialize() . = ..() - internal = new/obj/item/gps/internal/miner(src) miner_saw = new(src) /mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/adjustHealth(amount, updating_health = TRUE, forced = FALSE) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm index 035a912453b..16694d6188f 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm @@ -53,6 +53,7 @@ Difficulty: Hard blood_volume = BLOOD_VOLUME_MAXIMUM //BLEED FOR ME var/charging = 0 var/enrage_till = null + internal_type = /obj/item/gps/internal/bubblegum medal_type = BOSS_MEDAL_BUBBLEGUM score_type = BUBBLEGUM_SCORE deathmessage = "sinks into a pool of blood, fleeing the battle. You've won, for now... " @@ -113,16 +114,14 @@ Difficulty: Hard /mob/living/simple_animal/hostile/megafauna/bubblegum/Initialize() . = ..() - if(istype(src, /mob/living/simple_animal/hostile/megafauna/bubblegum/hallucination)) - return - for(var/mob/living/simple_animal/hostile/megafauna/bubblegum/B in GLOB.mob_living_list) - if(B != src) - return INITIALIZE_HINT_QDEL //There can be only one + if(true_spawn) + for(var/mob/living/simple_animal/hostile/megafauna/bubblegum/B in GLOB.mob_living_list) + if(B != src) + return INITIALIZE_HINT_QDEL //There can be only one var/obj/effect/proc_holder/spell/bloodcrawl/bloodspell = new AddSpell(bloodspell) if(istype(loc, /obj/effect/dummy/phased_mob/slaughter)) bloodspell.phased = TRUE - internal = new/obj/item/gps/internal/bubblegum(src) /mob/living/simple_animal/hostile/megafauna/bubblegum/grant_achievement(medaltype,scoretype) . = ..() @@ -411,10 +410,11 @@ Difficulty: Hard var/turf/place = locate(chargeat.x + cos(ang) * times, chargeat.y + sin(ang) * times, chargeat.z) if(!place) continue - if(!srcplaced && useoriginal) - forceMove(place) - srcplaced = 1 - continue + if(!nest || nest && nest.parent && get_dist(nest.parent, place) <= nest_range) + if(!srcplaced && useoriginal) + forceMove(place) + srcplaced = 1 + continue var/mob/living/simple_animal/hostile/megafauna/bubblegum/hallucination/B = new /mob/living/simple_animal/hostile/megafauna/bubblegum/hallucination(src.loc) B.forceMove(place) INVOKE_ASYNC(B, .proc/charge, chargeat, delay, chargepast) @@ -433,6 +433,7 @@ Difficulty: Hard score_type = null deathmessage = "Explodes into a pool of blood!" deathsound = 'sound/effects/splat.ogg' + true_spawn = 0 /mob/living/simple_animal/hostile/megafauna/bubblegum/hallucination/Initialize() ..() @@ -466,9 +467,6 @@ Difficulty: Hard /mob/living/simple_animal/hostile/megafauna/bubblegum/hallucination/try_bloodattack() return -/mob/living/simple_animal/hostile/megafauna/bubblegum/hallucination/grant_achievement(medaltype,scoretype) - return - /mob/living/simple_animal/hostile/megafauna/bubblegum/proc/slaughterlings() visible_message("[src] summons a shoal of slaughterlings!") var/max_amount = 6 diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm index d9c182b3686..29a320021eb 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm @@ -30,7 +30,7 @@ Difficulty: Very Hard attack_sound = 'sound/magic/clockwork/ratvar_attack.ogg' icon_state = "eva" icon_living = "eva" - icon_dead = "dragon_dead" + icon_dead = "" friendly = "stares down" icon = 'icons/mob/lavaland/96x96megafauna.dmi' speak_emote = list("roars") @@ -42,11 +42,11 @@ Difficulty: Very Hard ranged = 1 pixel_x = -32 del_on_death = 1 + internal_type = /obj/item/gps/internal/colossus medal_type = BOSS_MEDAL_COLOSSUS score_type = COLOSSUS_SCORE crusher_loot = list(/obj/structure/closet/crate/necropolis/colossus/crusher) loot = list(/obj/structure/closet/crate/necropolis/colossus) - butcher_results = list(/obj/item/stack/ore/diamond = 5, /obj/item/stack/sheet/sinew = 5, /obj/item/stack/sheet/animalhide/ashdrake = 10, /obj/item/stack/sheet/bone = 30) deathmessage = "disintegrates, leaving a glowing core in its wake." deathsound = 'sound/magic/demon_dies.ogg' @@ -89,11 +89,6 @@ Difficulty: Very Hard ranged_cooldown = world.time + 40 INVOKE_ASYNC(src, .proc/alternating_dir_shots) - -/mob/living/simple_animal/hostile/megafauna/colossus/Initialize() - . = ..() - internal = new/obj/item/gps/internal/colossus(src) - /obj/effect/temp_visual/at_shield name = "anti-toolbox field" desc = "A shimmering forcefield protecting the colossus." diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm index b18d56477c8..c969d513938 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm @@ -57,6 +57,7 @@ Difficulty: Medium guaranteed_butcher_results = list(/obj/item/stack/sheet/animalhide/ashdrake = 10) var/swooping = NONE var/player_cooldown = 0 + internal_type = /obj/item/gps/internal/dragon medal_type = BOSS_MEDAL_DRAKE score_type = DRAKE_SCORE deathmessage = "collapses into a pile of bones, its flesh sloughing away." @@ -68,7 +69,10 @@ Difficulty: Medium /mob/living/simple_animal/hostile/megafauna/dragon/Initialize() smallsprite.Grant(src) . = ..() - internal = new/obj/item/gps/internal/dragon(src) + +/mob/living/simple_animal/hostile/megafauna/dragon/death() + QDEL_NULL(internal) // so drake corpses don't have a gps signal + . = ..() /mob/living/simple_animal/hostile/megafauna/dragon/ex_act(severity, target) if(severity == 3) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm index 1cbbe722ad7..b530f68998e 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm @@ -56,8 +56,9 @@ Difficulty: Hard ranged_cooldown_time = 40 aggro_vision_range = 21 //so it can see to one side of the arena to the other loot = list(/obj/item/hierophant_club) - crusher_loot = list(/obj/item/hierophant_club) + crusher_loot = list(/obj/item/hierophant_club, /obj/item/crusher_trophy/vortex_talisman) wander = FALSE + internal_type = /obj/item/gps/internal/hierophant medal_type = BOSS_MEDAL_HIEROPHANT score_type = HIEROPHANT_SCORE del_on_death = TRUE @@ -80,12 +81,8 @@ Difficulty: Hard /mob/living/simple_animal/hostile/megafauna/hierophant/Initialize() . = ..() - internal = new/obj/item/gps/internal/hierophant(src) spawned_beacon = new(loc) -/mob/living/simple_animal/hostile/megafauna/hierophant/spawn_crusher_loot() - new /obj/item/crusher_trophy/vortex_talisman(get_turf(spawned_beacon)) - /mob/living/simple_animal/hostile/megafauna/hierophant/Life() . = ..() if(. && spawned_beacon && !QDELETED(spawned_beacon) && !client) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm index 9150d273f53..06a5c4e58db 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm @@ -39,6 +39,7 @@ Difficulty: Medium ranged_cooldown_time = 20 var/size = 5 var/charging = 0 + internal_type = /obj/item/gps/internal/legion medal_type = BOSS_MEDAL_LEGION score_type = LEGION_SCORE pixel_y = -90 @@ -50,17 +51,13 @@ Difficulty: Medium appearance_flags = 0 mouse_opacity = MOUSE_OPACITY_ICON -/mob/living/simple_animal/hostile/megafauna/legion/Initialize() - . = ..() - internal = new/obj/item/gps/internal/legion(src) - /mob/living/simple_animal/hostile/megafauna/legion/GiveTarget(new_target) . = ..() if(target) wander = TRUE /mob/living/simple_animal/hostile/megafauna/legion/adjustHealth(amount, updating_health = TRUE, forced = FALSE) - if(GLOB.necropolis_gate) + if(GLOB.necropolis_gate && true_spawn) GLOB.necropolis_gate.toggle_the_gate(null, TRUE) //very clever. return ..() @@ -136,6 +133,8 @@ Difficulty: Medium elimination = 0 else if(prob(5)) loot = list(/obj/structure/closet/crate/necropolis/tendril) + if(!true_spawn) + loot = null ..() /obj/item/gps/internal/legion diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm index 4fdf84efcbb..89facd23a48 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm @@ -33,10 +33,15 @@ var/elimination = 0 var/anger_modifier = 0 var/obj/item/gps/internal + var/internal_type var/recovery_time = 0 + var/true_spawn = 1 // if this is a megafauna that should grant achievements, or have a gps signal + var/nest_range = 10 /mob/living/simple_animal/hostile/megafauna/Initialize(mapload) . = ..() + if(internal_type && true_spawn) + internal = new internal_type(src) apply_status_effect(STATUS_EFFECT_CRUSHERDAMAGETRACKING) add_trait(TRAIT_NO_TELEPORT, MEGAFAUNA_TRAIT) @@ -44,6 +49,16 @@ QDEL_NULL(internal) . = ..() +/mob/living/simple_animal/hostile/megafauna/Moved() + if(nest && nest.parent && get_dist(nest.parent, src) > nest_range) + var/turf/closest = get_turf(nest.parent) + for(var/i = 1 to nest_range) + closest = get_step(closest, get_dir(closest, src)) + forceMove(closest) // someone teleported out probably and the megafauna kept chasing them + target = null + return + return ..() + /mob/living/simple_animal/hostile/megafauna/prevent_content_explosion() return TRUE @@ -56,7 +71,7 @@ if(C && crusher_loot && C.total_damage >= maxHealth * 0.6) spawn_crusher_loot() crusher_kill = TRUE - if(!(flags_1 & ADMIN_SPAWNED_1)) + if(true_spawn && !(flags_1 & ADMIN_SPAWNED_1)) var/tab = "megafauna_kills" if(crusher_kill) tab = "megafauna_kills_crusher" diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm index c7d90f9556a..8698b8953b6 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm @@ -48,6 +48,7 @@ GLOBAL_LIST_INIT(AISwarmerCapsByType, list(/mob/living/simple_animal/hostile/swa health = 750 maxHealth = 750 //""""low-ish"""" HP because it's a passive boss, and the swarm itself is the real foe mob_biotypes = list(MOB_ROBOTIC) + internal_type = /obj/item/gps/internal/swarmer_beacon medal_type = BOSS_MEDAL_SWARMERS score_type = SWARMER_BEACON_SCORE faction = list("mining", "boss", "swarmer") @@ -66,7 +67,6 @@ GLOBAL_LIST_INIT(AISwarmerCapsByType, list(/mob/living/simple_animal/hostile/swa /mob/living/simple_animal/hostile/megafauna/swarmer_swarm_beacon/Initialize() . = ..() swarmer_caps = GLOB.AISwarmerCapsByType //for admin-edits - internal = new/obj/item/gps/internal/swarmer_beacon(src) for(var/ddir in GLOB.cardinals) new /obj/structure/swarmer/blockade (get_step(src, ddir)) var/mob/living/simple_animal/hostile/swarmer/ai/resource/R = new(loc) diff --git a/config/awaymissionconfig.txt b/config/awaymissionconfig.txt index 222e14705c9..51197eae7a7 100644 --- a/config/awaymissionconfig.txt +++ b/config/awaymissionconfig.txt @@ -21,6 +21,7 @@ #_maps/RandomZLevels/research.dmm #_maps/RandomZLevels/Cabin.dmm #_maps/RandomZLevels/beach2.dmm +_maps/RandomZLevels/VR/mining_VR.dmm _maps/RandomZLevels/VR/murderdome.dmm _maps/RandomZLevels/VR/snowdin_VR.dmm -_maps/RandomZLevels/VR/syndicate_trainer.dmm +_maps/RandomZLevels/VR/syndicate_trainer.dmm \ No newline at end of file diff --git a/icons/mob/nest.dmi b/icons/mob/nest.dmi index e75d325e8a9fc17e183e1b1166168b3962179b56..23bc6d72cdccf05eeca3f6905cd20cd1f8070b7c 100644 GIT binary patch literal 17626 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 N