mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-24 13:38:41 +01:00
## About The Pull Request **All the credit for this map goes to Zydras of Nova/Skyrat. See [here](https://github.com/NovaSector/NovaSector/pull/773) for the original PR.** This map is, as the name hints at, circular! It is pretty compact, about the size of MetaStation or maybe even KiloStation, however, like IceBox, it has two Z-Levels. ## Why It's Good For The Game We are currently lacking map variety for low to medium population, as we have Box/IceBox, Meta, Tram, and Kilo. That's it. Two of those are different flavors of the same map. Despite having two Z-Levels, this map plays really well on deadpop, as I actually used to run it on a server of my own, so it would work quite well for the deadpop EU hours. ## Proof Of Testing It compiled and ran locally with no issues. See below for some screenshots taken from the original PR, as I forgot to take screenshots when I tested it. <details> <summary>Screenshots/Videos</summary> <img width="1288" height="865" alt="image" src="https://github.com/user-attachments/assets/9c863303-4235-406a-adb3-10b82b24527b" /> <img width="1171" height="902" alt="image" src="https://github.com/user-attachments/assets/47ba2390-182e-4e6a-a318-3403b024cb7f" /> <img width="1304" height="861" alt="image" src="https://github.com/user-attachments/assets/50e1c2c0-7560-43db-8ac1-b6337ccb0533" /> <img width="1170" height="908" alt="image" src="https://github.com/user-attachments/assets/9050c7a4-b428-4b7d-b865-bac3efd2612d" /> <img width="1236" height="1026" alt="image" src="https://github.com/user-attachments/assets/4f4cb92c-c820-42cd-bd68-0d9a8774e314" /> <img width="1161" height="968" alt="image" src="https://github.com/user-attachments/assets/6a4054c0-4693-487a-ae07-e1d56942613b" /> <img width="1166" height="892" alt="image" src="https://github.com/user-attachments/assets/9e858938-92fd-48c8-bfe3-4c7e2702d8c9" /> <img width="1313" height="880" alt="image" src="https://github.com/user-attachments/assets/42642a5d-b757-40a0-a69b-4086f85cf376" /> <img width="1252" height="845" alt="image" src="https://github.com/user-attachments/assets/b62a5bbd-8139-4043-94c1-a57e597c432c" /> </details> ## Changelog 🆑 add: Added a new map: Ouroboros! /🆑 --------- Co-authored-by: shayoki <96078776+shayoki@users.noreply.github.com> Co-authored-by: Roxy <75404941+TealSeer@users.noreply.github.com>
198 lines
6.2 KiB
Plaintext
198 lines
6.2 KiB
Plaintext
#define ARRIVALS_STATION "arrivals_stationary"
|
|
#define ARRIVALS_INTERLINK "arrivals_shuttle"
|
|
#define CONSOLE_ANNOUNCE_COOLDOWN 5 SECONDS
|
|
|
|
/obj/docking_port/mobile/arrivals_skyrat
|
|
name = "NTV Relay"
|
|
shuttle_id = "arrivals_shuttle"
|
|
dir = WEST
|
|
port_direction = SOUTH
|
|
|
|
callTime = 15 SECONDS
|
|
ignitionTime = 6 SECONDS
|
|
rechargeTime = 15 SECONDS
|
|
|
|
movement_force = list("KNOCKDOWN" = 3, "THROW" = 0)
|
|
|
|
///Our shuttle's control console
|
|
var/obj/machinery/computer/shuttle/arrivals/console
|
|
///How much time are we waiting before returning to interlink. Sets itself automatically from config file. 0 = no auto return
|
|
var/wait_time
|
|
///State variable. True when our shuttle is waiting before autoreturn
|
|
var/waiting = FALSE // would've been better to use shuttle's mode variable, but check() resets it to SHUTTLE_IDLE so it's more sane way to make this fully modular
|
|
|
|
/obj/docking_port/mobile/arrivals_skyrat/Initialize(mapload)
|
|
. = ..()
|
|
wait_time = CONFIG_GET(number/arrivals_wait)
|
|
return INITIALIZE_HINT_LATELOAD
|
|
|
|
/obj/docking_port/mobile/arrivals_skyrat/LateInitialize()
|
|
console = get_control_console()
|
|
|
|
/obj/docking_port/mobile/arrivals_skyrat/check()
|
|
. = ..()
|
|
|
|
if(!wait_time) //0 disables autoreturn
|
|
return
|
|
|
|
if(mode != SHUTTLE_IDLE)
|
|
return
|
|
|
|
if(waiting && !timer)
|
|
SSshuttle.moveShuttle(shuttle_id, ARRIVALS_INTERLINK, TRUE) // times up, we're leaving
|
|
waiting = FALSE
|
|
|
|
var/current_dock = getDockedId()
|
|
if (current_dock != ARRIVALS_STATION)
|
|
return
|
|
|
|
if(check_occupied())
|
|
if(!waiting)
|
|
return
|
|
|
|
timer = 0
|
|
waiting = FALSE
|
|
|
|
if(console && console.last_cancel_announce + CONSOLE_ANNOUNCE_COOLDOWN <= world.time)
|
|
console.say("Lifesigns detected onboard, automatic return aborted.")
|
|
console.last_cancel_announce = world.time
|
|
|
|
return
|
|
|
|
if(timer || waiting)
|
|
return
|
|
|
|
setTimer(wait_time)
|
|
waiting = TRUE
|
|
|
|
if(console && console.last_depart_announce + CONSOLE_ANNOUNCE_COOLDOWN <= world.time)
|
|
console.say("Commencing automatic return subroutine in [wait_time / 10] seconds.")
|
|
console.last_depart_announce = world.time
|
|
|
|
/obj/docking_port/mobile/arrivals_skyrat/getModeStr()
|
|
. = ..()
|
|
return waiting ? "RTN" : .
|
|
|
|
/**
|
|
* Checks if our shuttle is occupied by someone alive, and returns `TRUE` if it is, `FALSE` otherwise.
|
|
*/
|
|
/obj/docking_port/mobile/arrivals_skyrat/proc/check_occupied()
|
|
for(var/alive_player in GLOB.alive_player_list)
|
|
if (get_area(alive_player) in shuttle_areas)
|
|
return TRUE
|
|
|
|
return FALSE
|
|
|
|
/obj/machinery/computer/shuttle/arrivals
|
|
name = "arrivals shuttle control"
|
|
desc = "The terminal used to control the arrivals interlink shuttle."
|
|
shuttleId = "arrivals_shuttle"
|
|
possible_destinations = "arrivals_stationary;arrivals_shuttle"
|
|
icon = 'modular_skyrat/modules/advanced_shuttles/icons/computer.dmi'
|
|
icon_state = "computer_frame"
|
|
icon_keyboard = "arrivals_key"
|
|
icon_screen = "arrivals"
|
|
light_color = COLOR_ORANGE_BROWN
|
|
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
|
|
connectable = FALSE //connecting_computer change: since icon_state is not a typical console, it cannot be connectable.
|
|
no_destination_swap = TRUE
|
|
|
|
///[world.time] when console last announced departure
|
|
var/last_depart_announce
|
|
///[world.time] when console last announced canceling shuttle's return
|
|
var/last_cancel_announce
|
|
|
|
/obj/machinery/computer/shuttle/arrivals/recall
|
|
name = "arrivals shuttle recall terminal"
|
|
desc = "Use this if your friends left you behind."
|
|
possible_destinations = "arrivals_stationary;arrivals_shuttle"
|
|
|
|
/*
|
|
* MAP TEMPLATES
|
|
*/
|
|
|
|
/datum/map_template/shuttle/ferry
|
|
name = "NAV Monarch (Ferry)"
|
|
prefix = "_maps/shuttles/skyrat/"
|
|
port_id = "ferry"
|
|
suffix = "skyrat"
|
|
who_can_purchase = null
|
|
|
|
/datum/map_template/shuttle/cargo/skyrat
|
|
name = "NLV Consign (Cargo)"
|
|
prefix = "_maps/shuttles/skyrat/"
|
|
port_id = "cargo"
|
|
suffix = "skyrat"
|
|
|
|
/datum/map_template/shuttle/cargo/skyrat/delta
|
|
suffix = "delta_skyrat" //I hate this. Delta station is one tile different docking-wise, which fucks it ALL up unless we either a) change the map (this would be nonmodular and also press the engine against disposals) or b) this (actually easy, just dumb)
|
|
|
|
/datum/map_template/shuttle/whiteship/blueshift
|
|
name = "SFS Christian"
|
|
description = "A large corvette that seems to have come under attack by some kind of alien infestation. A true asset if it's cleared out and repaired."
|
|
prefix = "_maps/shuttles/skyrat/"
|
|
port_id = "whiteship"
|
|
suffix = "blueshift"
|
|
|
|
/datum/map_template/shuttle/cargo/skyrat/ouroboros
|
|
suffix = "ouroboros"
|
|
|
|
/datum/map_template/shuttle/whiteship/ouroboros
|
|
name = "JN Chasse-Galerie"
|
|
description = "A small Jim Nortons shuttle meant to be a mobile cafe. No hostiles onboard, but multiple corpses of Jim Nortons employees."
|
|
prefix = "_maps/shuttles/skyrat/"
|
|
port_id = "whiteship"
|
|
suffix = "ouroboros"
|
|
|
|
/datum/map_template/shuttle/arrivals_skyrat
|
|
name = "NTV Relay (Arrivals)"
|
|
prefix = "_maps/shuttles/skyrat/"
|
|
port_id = "arrivals"
|
|
suffix = "skyrat"
|
|
who_can_purchase = null
|
|
|
|
/datum/map_template/shuttle/emergency/default
|
|
prefix = "_maps/shuttles/skyrat/"
|
|
suffix = "skyrat"
|
|
name = "Standard Emergency Shuttle"
|
|
description = "Nanotrasen's standard issue emergency shuttle."
|
|
occupancy_limit = 60
|
|
|
|
/datum/map_template/shuttle/labour/skyrat
|
|
name = "NMC Drudge (Labour)"
|
|
prefix = "_maps/shuttles/skyrat/"
|
|
suffix = "skyrat"
|
|
|
|
/obj/docking_port/stationary/laborcamp_home
|
|
roundstart_template = /datum/map_template/shuttle/labour/skyrat
|
|
|
|
/obj/docking_port/stationary/laborcamp_home/kilo
|
|
roundstart_template = /datum/map_template/shuttle/labour/skyrat
|
|
|
|
/datum/map_template/shuttle/mining_common/skyrat
|
|
name = "NMC Chimera (Mining)"
|
|
prefix = "_maps/shuttles/skyrat/"
|
|
suffix = "skyrat"
|
|
|
|
/obj/docking_port/stationary/mining_home/common
|
|
roundstart_template = /datum/map_template/shuttle/mining_common/skyrat
|
|
|
|
/obj/docking_port/stationary/mining_home/common/kilo
|
|
roundstart_template = /datum/map_template/shuttle/mining_common/skyrat
|
|
|
|
/datum/map_template/shuttle/mining/skyrat
|
|
name = "NMC Phoenix (Mining)"
|
|
prefix = "_maps/shuttles/skyrat/"
|
|
suffix = "skyrat"
|
|
|
|
/obj/docking_port/stationary/mining_home
|
|
roundstart_template = /datum/map_template/shuttle/mining/skyrat
|
|
|
|
/datum/map_template/shuttle/mining/skyrat/large
|
|
name = "NMC Manticore (Mining)"
|
|
suffix = "large_skyrat"
|
|
|
|
#undef ARRIVALS_STATION
|
|
#undef ARRIVALS_INTERLINK
|
|
#undef CONSOLE_ANNOUNCE_COOLDOWN
|