Files
Bubberstation/code/modules/awaymissions/mission_code/mining.dm
Whoneedspacee 5b89dea70f [Ready] The Virtual Reality Hub (#42879)
About The Pull Request

VR sleepers now lead to the VR Hub, a place with a bunch of portals that lead you to other areas, or just has chill stuff like a bar. Includes portals to all the old vr maps, the megafauna training simulator map, a soon to be minecraft map, and my crappy game runner where you run away from falling tiles and fight to be the last person to survive. Merges murderdome and syndicate trainer into the vr hub map so they spawn every time with vr. Recall portals now can have multiple exits to support the old vr waypoint system from the hub. Also moves a lot of stuff around in the files to make it more organized. There's now also a ghost role that can access VR as well with infinite spawns.

VR NOW HAS A CONFIG OPTION SO ENABLE IT OR VR WILL NOT WORK.
Why It's Good For The Game

Being a ghost is boring for most people, it's nice to have a place for people to hang out rather than just leave the server. This is also a nice place where people can put gamemodes they're testing or other fun little minigames that can't be main gamemodes. VR currently is not used by really anyone so I don't see anyone getting bothered by this PR as well.
2019-04-22 12:16:11 +12:00

319 lines
11 KiB
Plaintext

/area/awaymission/vr/megafauna_arena
name = "Virtual Reality Megafauna Trainer Safe Area"
icon_state = "awaycontent3"
/area/awaymission/vr/megafauna_arena/arena
name = "Virtual Reality Megafauna Trainer Fighting Area"
icon_state = "awaycontent4"
pacifist = FALSE
/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/portal/permanent/one_way/recall/megafauna_arena
name = "Megafauna Arena Portal"
desc = "Fight against megafauna in the safety of virtual reality."
equipment = /datum/outfit/job/miner/equipped/vr
recall_equipment = /datum/outfit/vr
id = "vr megafauna arena"
light_color = LIGHT_COLOR_FIRE
light_power = 1
light_range = 10
/obj/effect/portal/permanent/one_way/destroy/megafauna_arena
name = "Megafauna Arena Exit Portal"
id = "vr megafauna arena"
/obj/effect/portal/permanent/one_way/recall/blood_drunk_miner
name = "Blood Drunk Miner Arena Portal"
desc = "You see a faded miner through the portal. His rippling eyes stare directly at you."
id = "vr blood drunk miner"
/obj/effect/portal/permanent/one_way/destroy/blood_drunk_miner
name = "Blood Drunk Miner Arena Exit Portal"
id = "vr blood drunk miner"
/obj/effect/portal/permanent/one_way/recall/dragon
name = "Ash Drake Arena Portal"
desc = "The crackling fires of hell burn on the other side."
id = "vr ash drake"
/obj/effect/portal/permanent/one_way/destroy/dragon
name = "Ash Drake Arena Exit Portal"
id = "vr ash drake"
/obj/effect/portal/permanent/one_way/recall/bubblegum
name = "Bubblegum Arena Portal"
desc = "The arena of the king of the slaughter demons. Doesn't he control all versions of himself?"
id = "vr bubblegum"
/obj/effect/portal/permanent/one_way/destroy/bubblegum
name = "Bubblegum Arena Exit Portal"
id = "vr bubblegum"
/obj/effect/portal/permanent/one_way/recall/colossus
name = "Colossus Arena Portal"
desc = "Colossus are quite dangerous in close quarters."
id = "vr colossus"
/obj/effect/portal/permanent/one_way/destroy/colossus
name = "Colossus Arena Exit Portal"
id = "vr colossus"
/obj/effect/portal/permanent/one_way/recall/hierophant
name = "Hierophant Arena Portal"
desc = "They call him the hierophant. He's the king of the rumba beat. When he plays the maracas you go Chick chicky boom Chick chicky boom."
id = "vr hierophant"
/obj/effect/portal/permanent/one_way/destroy/hierophant
name = "Hierophant Arena Exit Portal"
id = "vr hierophant"
/obj/effect/portal/permanent/one_way/recall/legion
name = "Legion Arena Portal"
desc = "The portal to the defender of the necropolis. He's mostly there for show."
id = "vr legion"
/obj/effect/portal/permanent/one_way/destroy/legion
name = "Legion Arena Exit Portal"
id = "vr legion"
/obj/effect/portal/permanent/one_way/recall/vr_boss_rush
name = "Boss Rush Portal"
desc = "You're not certain this is even possible."
id = "vr boss rush"
/obj/effect/portal/permanent/one_way/destroy/vr_boss_rush
name = "Boss Rush Exit Portal"
id = "vr boss rush"
/obj/effect/portal/permanent/one_way/keep/vr_boss_rush_continue
name = "Boss Rush Continue Portal"
desc = "You're halfway there. These next fights are even tougher, however."
id = "vr boss rush continue"
/obj/effect/portal/permanent/one_way/destroy/vr_boss_rush_continue
name = "Boss Rush Continue Exit Portal"
id = "vr boss rush continue"
/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,
/obj/item/extinguisher=1)
/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)
/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