mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-10 17:52:36 +00:00
[MIRROR] Abandoned Domains: Adds two new psyker-oriented virtual domains [MDB IGNORE] (#24303)
* Abandoned Domains: Adds two new psyker-oriented virtual domains (#78892) ## About The Pull Request _Really? Bitrunning maps are so simple you could do them with your eyes closed? Hmmmmm..._ This adds two new medium-difficulty virtual domains to the pool -- Crate Chaos and Infected Domain. These two domains take you to neglected corners of the virtual world. These are unstable, bizarre locales that do not support the bitrunning machine's visual display, and must be traversed using echolocation. **_These domains have been designed around you being a psyker, and will turn your bitrunner avatar into a psyker until they leave the domain._** _**Crate Chaos:** Low cost, medium reward._ Sneak into an abandoned virtual domain, where they store all of the loot crates. There's about 40-ish crates in this space, and one of them (RANDOM) is the encrypted cache we're looking for. The crates must be manually inspected, requiring you to drop your weapon for a few moments, but that shouldn't be a problem. There's no hostiles, just a bunch of crates... right? This one has very few shenanigans or threats in it. It's meant to be an introductory experience to interfacing with things as a psyker, and getting the rhythm down for moving between visual pulses. _**Infected Domain:** Medium cost, high reward._ Enter another abandoned virtual domain. This one was sealed off from the digital world after the cyber-police failed to contain a virus that zombified its inhabitants, leaving it to grow unstable and full of holes. Fortunately, you're provided with the single best tool for arming yourself against zombies in any video game, ever -- Your very own Mystery Box. Get armed with (basically) whatever gun you want, and go put those wacky psyker abilities to use against those zombies. This one is a lot meaner. Many chasms, landmines, and zombies. Walk slowly, stay with your fellow bitrunners, and if it's too hard, there's no shame in going back and rolling for a better gun! The domains themselves are VERY simple, since there's little need for decor or particularly complex layouts. The idea is that you should be able to see everything you need to see in a given room/area with a single vision pulse. Here's what one of the maps looks like:  Err, uh, I mean... This is what the maps look like: <details> <summary>SPOILERS BEWARE</summary> <br>   (You wanna find out if there's something cool under those red lines? Go there yourself!) </details> These two psyker maps come with their own psyker safehouse too -- The Bathroom. It's gross, the medical supplies are kind of just sitting there on the floor... It looks a little bit better when you're blind, I guess.  ## Why It's Good For The Game I like psykers a lot more than I'm willing to admit. Unfortunately, the jankiness of echolocation provides such a disadvantage at times, that any "real" conflict is usually over before the psyker is even aware they're taking damage. Fortunately, the controlled environments that bitrunning maps are perfect for psykers. They give the opportunity to craft an experience around the player being blind, rather than forcing them to play blind through a seeing mans world. These two domains should present players with a unique challenge that is designed around playing as a psyker, with slightly higher-than-usual rewards for their trouble. More importantly -- They're fun! ## Changelog 🆑 Rhials add: Two new psyker-oriented virtual domains -- Crate Chaos and Infected Domain. add: Map helper for cyber-police corpse spawn. add: Map helper for swapping the encrypted crate in an area with a random crate from that same area. /🆑 * Abandoned Domains: Adds two new psyker-oriented virtual domains --------- Co-authored-by: Rhials <28870487+Rhials@users.noreply.github.com>
This commit is contained in:
155
_maps/safehouses/bathroom.dmm
Normal file
155
_maps/safehouses/bathroom.dmm
Normal file
@@ -0,0 +1,155 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"a" = (
|
||||
/obj/effect/decal/cleanable/dirt/dust,
|
||||
/turf/open/floor/iron/freezer,
|
||||
/area/virtual_domain/safehouse)
|
||||
"c" = (
|
||||
/obj/effect/decal/cleanable/dirt/dust,
|
||||
/obj/structure/extinguisher_cabinet/directional/north,
|
||||
/turf/open/floor/iron/freezer,
|
||||
/area/virtual_domain/safehouse)
|
||||
"e" = (
|
||||
/obj/effect/spawner/structure/window,
|
||||
/obj/effect/decal/cleanable/blood/splatter/over_window,
|
||||
/turf/open/floor/iron/freezer,
|
||||
/area/virtual_domain/safehouse)
|
||||
"q" = (
|
||||
/obj/structure/urinal/directional/west,
|
||||
/turf/open/floor/iron/freezer,
|
||||
/area/virtual_domain/safehouse)
|
||||
"s" = (
|
||||
/obj/effect/landmark/bitrunning/cache_goal_turf,
|
||||
/obj/effect/turf_decal/loading_area{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/light/small/blacklight/directional/east,
|
||||
/turf/open/floor/bitrunning_transport,
|
||||
/area/virtual_domain/safehouse)
|
||||
"v" = (
|
||||
/obj/machinery/light/small/blacklight/directional/east,
|
||||
/obj/effect/decal/cleanable/blood,
|
||||
/obj/effect/decal/cleanable/blood/tracks,
|
||||
/obj/vehicle/ridden/wheelchair,
|
||||
/obj/effect/spawner/random/medical/injector,
|
||||
/turf/open/floor/iron/freezer,
|
||||
/area/virtual_domain/safehouse)
|
||||
"x" = (
|
||||
/obj/structure/railing/corner/end{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/iron/freezer,
|
||||
/area/virtual_domain/safehouse)
|
||||
"y" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/machinery/light/small/blacklight/directional/west,
|
||||
/obj/effect/spawner/random/medical/medkit,
|
||||
/obj/effect/spawner/random/medical/medkit,
|
||||
/obj/effect/spawner/random/medical/minor_healing,
|
||||
/turf/open/floor/iron/freezer,
|
||||
/area/virtual_domain/safehouse)
|
||||
"z" = (
|
||||
/obj/structure/sign/poster/abductor/random/directional/east,
|
||||
/obj/effect/decal/cleanable/blood/tracks,
|
||||
/turf/open/floor/iron/freezer,
|
||||
/area/virtual_domain/safehouse)
|
||||
"D" = (
|
||||
/turf/open/floor/iron/freezer,
|
||||
/area/virtual_domain/safehouse)
|
||||
"G" = (
|
||||
/turf/closed/wall/mineral/silver,
|
||||
/area/virtual_domain/safehouse)
|
||||
"J" = (
|
||||
/obj/structure/railing,
|
||||
/obj/effect/landmark/bitrunning/cache_goal_turf,
|
||||
/obj/effect/turf_decal/loading_area{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/bitrunning_transport,
|
||||
/area/virtual_domain/safehouse)
|
||||
"M" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/structure/toilet{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/iron/freezer,
|
||||
/area/virtual_domain/safehouse)
|
||||
"N" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/floor/iron/freezer,
|
||||
/area/virtual_domain/safehouse)
|
||||
"T" = (
|
||||
/obj/effect/landmark/bitrunning/hololadder_spawn,
|
||||
/turf/open/floor/iron/freezer,
|
||||
/area/virtual_domain/safehouse)
|
||||
"V" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/structure/extinguisher_cabinet/directional/north,
|
||||
/turf/open/floor/iron/freezer,
|
||||
/area/virtual_domain/safehouse)
|
||||
"X" = (
|
||||
/obj/structure/fans/tiny,
|
||||
/obj/machinery/door/airlock/freezer,
|
||||
/turf/open/floor/iron/freezer,
|
||||
/area/virtual_domain/safehouse)
|
||||
"Z" = (
|
||||
/obj/effect/decal/cleanable/dirt/dust,
|
||||
/obj/machinery/light/small/blacklight/directional/west,
|
||||
/turf/open/floor/iron/freezer,
|
||||
/area/virtual_domain/safehouse)
|
||||
|
||||
(1,1,1) = {"
|
||||
G
|
||||
G
|
||||
G
|
||||
G
|
||||
G
|
||||
G
|
||||
"}
|
||||
(2,1,1) = {"
|
||||
G
|
||||
Z
|
||||
M
|
||||
q
|
||||
y
|
||||
G
|
||||
"}
|
||||
(3,1,1) = {"
|
||||
G
|
||||
c
|
||||
D
|
||||
a
|
||||
T
|
||||
G
|
||||
"}
|
||||
(4,1,1) = {"
|
||||
X
|
||||
a
|
||||
D
|
||||
D
|
||||
T
|
||||
G
|
||||
"}
|
||||
(5,1,1) = {"
|
||||
G
|
||||
V
|
||||
x
|
||||
N
|
||||
T
|
||||
G
|
||||
"}
|
||||
(6,1,1) = {"
|
||||
G
|
||||
s
|
||||
J
|
||||
z
|
||||
v
|
||||
e
|
||||
"}
|
||||
(7,1,1) = {"
|
||||
G
|
||||
G
|
||||
G
|
||||
G
|
||||
G
|
||||
G
|
||||
"}
|
||||
1074
_maps/virtual_domains/psyker_shuffle.dmm
Normal file
1074
_maps/virtual_domains/psyker_shuffle.dmm
Normal file
File diff suppressed because it is too large
Load Diff
1215
_maps/virtual_domains/psyker_zombies.dmm
Normal file
1215
_maps/virtual_domains/psyker_zombies.dmm
Normal file
File diff suppressed because it is too large
Load Diff
@@ -63,3 +63,41 @@
|
||||
/obj/effect/landmark/bitrunning/safehouse_spawn
|
||||
name = "Bitrunning safehouse spawn"
|
||||
icon_state = "safehouse"
|
||||
|
||||
///Swaps the locations of an encrypted crate in the area with another randomly selected crate.
|
||||
///Randomizes names, so you have to inspect crates manually.
|
||||
/obj/effect/landmark/bitrunning/crate_replacer
|
||||
name = "Bitrunning Goal Crate Randomizer"
|
||||
icon_state = "crate"
|
||||
|
||||
/obj/effect/landmark/bitrunning/crate_replacer/Initialize(mapload)
|
||||
. = ..()
|
||||
|
||||
#ifndef UNIT_TESTS
|
||||
var/list/crate_list = list()
|
||||
var/obj/structure/closet/crate/secure/bitrunning/encrypted/encrypted_crate
|
||||
var/area/my_area = get_area(src)
|
||||
|
||||
for(var/turf/area_turf as anything in my_area.get_contained_turfs())
|
||||
for(var/obj/structure/closet/crate/crate_to_check in area_turf)
|
||||
if(istype(crate_to_check, /obj/structure/closet/crate/secure/bitrunning/encrypted))
|
||||
encrypted_crate = crate_to_check
|
||||
crate_to_check.desc += span_hypnophrase(" This feels like the crate we're looking for!")
|
||||
else
|
||||
crate_list += crate_to_check
|
||||
crate_to_check.name = "Unidentified Crate"
|
||||
|
||||
if(!encrypted_crate)
|
||||
stack_trace("Bitrunning Goal Crate Randomizer failed to find an encrypted crate to swap positions for.")
|
||||
return
|
||||
if(!length(crate_list))
|
||||
stack_trace("Bitrunning Goal Crate Randomizer failed to find any NORMAL crates to swap positions for.")
|
||||
return
|
||||
|
||||
var/original_location = encrypted_crate.loc
|
||||
var/obj/structure/closet/crate/selected_crate = pick(crate_list)
|
||||
|
||||
encrypted_crate.abstract_move(selected_crate.loc)
|
||||
selected_crate.abstract_move(original_location)
|
||||
|
||||
#endif
|
||||
|
||||
@@ -41,3 +41,17 @@
|
||||
officer_uniform.has_sensor = NO_SENSORS
|
||||
officer_uniform.sensor_mode = SENSOR_OFF
|
||||
user.update_suit_sensors()
|
||||
|
||||
/datum/outfit/echolocator
|
||||
name = "Bitrunning Echolocator"
|
||||
glasses = /obj/item/clothing/glasses/blindfold
|
||||
ears = /obj/item/radio/headset/psyker //Navigating without these is horrible.
|
||||
uniform = /obj/item/clothing/under/abductor
|
||||
gloves = /obj/item/clothing/gloves/fingerless
|
||||
shoes = /obj/item/clothing/shoes/jackboots
|
||||
suit = /obj/item/clothing/suit/jacket/trenchcoat
|
||||
id = /obj/item/card/id/advanced
|
||||
|
||||
/datum/outfit/echolocator/post_equip(mob/living/carbon/human/user, visualsOnly)
|
||||
. = ..()
|
||||
user.psykerize()
|
||||
@@ -0,0 +1,12 @@
|
||||
/datum/lazy_template/virtual_domain/psyker_shuffle
|
||||
name = "Crate Chaos"
|
||||
cost = BITRUNNER_COST_LOW
|
||||
desc = "Sneak into an abandoned corner of the virtual world, where they store all of the crates. \
|
||||
Warning -- Virtual domain does not support visual display. This mission must be completed using echolocation."
|
||||
difficulty = BITRUNNER_DIFFICULTY_MEDIUM
|
||||
help_text = "Getting used to echolocation may be difficult. Remember to walk slowly, and carefully inspect every crate you come across."
|
||||
key = "psyker_shuffle"
|
||||
map_name = "psyker_shuffle"
|
||||
reward_points = BITRUNNER_REWARD_MEDIUM
|
||||
safehouse_path = /datum/map_template/safehouse/bathroom
|
||||
forced_outfit = /datum/outfit/echolocator
|
||||
@@ -0,0 +1,14 @@
|
||||
/datum/lazy_template/virtual_domain/psyker_zombies
|
||||
name = "Infected Domain"
|
||||
cost = BITRUNNER_COST_MEDIUM
|
||||
desc = "Another neglected corner of the virtual world. This one had to be abandoned due to zombie virus. \
|
||||
Warning -- Virtual domain does not support visual display. This mission must be completed using echolocation."
|
||||
difficulty = BITRUNNER_DIFFICULTY_MEDIUM
|
||||
help_text = "This once-beloved virtual domain has been corrupted by a virus, rendering it unstable, full of holes, and full of ZOMBIES! \
|
||||
There should be a Mystery Box nearby to help get you armed. Get armed, and finish what the cyber-police started!"
|
||||
key = "psyker_zombies"
|
||||
map_name = "psyker_zombies"
|
||||
reward_points = BITRUNNER_REWARD_HIGH
|
||||
safehouse_path = /datum/map_template/safehouse/bathroom
|
||||
forced_outfit = /datum/outfit/echolocator
|
||||
extra_loot = list(/obj/item/radio/headset/psyker = 1) //Looks cool, might make your local burdened chaplain happy.
|
||||
@@ -46,6 +46,9 @@
|
||||
/datum/map_template/safehouse/ice
|
||||
filename = "ice.dmm"
|
||||
|
||||
/datum/map_template/safehouse/bathroom
|
||||
filename = "bathroom.dmm"
|
||||
|
||||
/**
|
||||
* Your safehouse here
|
||||
* /datum/map_template/safehouse/your_type
|
||||
|
||||
@@ -350,3 +350,7 @@
|
||||
/datum/outfit/prey_pod_victim
|
||||
name = "Prey Pod Victim"
|
||||
uniform = /obj/item/clothing/under/rank/rnd/roboticist
|
||||
|
||||
/obj/effect/mob_spawn/corpse/human/cyber_police
|
||||
name = "Dead Cyber Police"
|
||||
outfit = /datum/outfit/cyber_police
|
||||
|
||||
@@ -3347,9 +3347,9 @@
|
||||
#include "code\modules\bitrunning\designs.dm"
|
||||
#include "code\modules\bitrunning\event.dm"
|
||||
#include "code\modules\bitrunning\job.dm"
|
||||
#include "code\modules\bitrunning\outfits.dm"
|
||||
#include "code\modules\bitrunning\turfs.dm"
|
||||
#include "code\modules\bitrunning\antagonists\cyber_police.dm"
|
||||
#include "code\modules\bitrunning\antagonists\outfit.dm"
|
||||
#include "code\modules\bitrunning\components\avatar_connection.dm"
|
||||
#include "code\modules\bitrunning\components\bitrunning_points.dm"
|
||||
#include "code\modules\bitrunning\components\netpod_healing.dm"
|
||||
@@ -3385,6 +3385,8 @@
|
||||
#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"
|
||||
#include "code\modules\bitrunning\virtual_domain\domains\psyker_zombies.dm"
|
||||
#include "code\modules\bitrunning\virtual_domain\domains\stairs_and_cliffs.dm"
|
||||
#include "code\modules\bitrunning\virtual_domain\domains\syndicate_assault.dm"
|
||||
#include "code\modules\bitrunning\virtual_domain\domains\test_only.dm"
|
||||
|
||||
Reference in New Issue
Block a user