From 008b044ac59bbaa972c8efc6754bcebebd73c669 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Sat, 12 Aug 2023 04:39:32 +0200 Subject: [PATCH] [MIRROR] Emergency shuttle information display improvements [MDB IGNORE] (#23016) * Emergency shuttle information display improvements * Update emergency.dm * Update emergency.dm * Modular shuttles --------- Co-authored-by: Tim Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com> --- _maps/shuttles/whiteship_birdshot.dmm | 13 +- _maps/shuttles/whiteship_meta.dmm | 42 +- code/datums/shuttles/_shuttle.dm | 83 +++ code/datums/shuttles/arrival.dm | 35 ++ code/datums/shuttles/assault_pod.dm | 7 + code/datums/shuttles/aux_base.dm | 11 + code/datums/shuttles/cargo.dm | 36 ++ .../{shuttles.dm => shuttles/emergency.dm} | 560 ++---------------- code/datums/shuttles/ert.dm | 8 + code/datums/shuttles/escape_pod.dm | 23 + code/datums/shuttles/ferry.dm | 40 ++ code/datums/shuttles/hunter.dm | 19 + code/datums/shuttles/infiltrator.dm | 13 + code/datums/shuttles/mining.dm | 62 ++ code/datums/shuttles/pirate.dm | 31 + code/datums/shuttles/ruin.dm | 28 + code/datums/shuttles/snowdin.dm | 11 + code/datums/shuttles/starfury.dm | 20 + code/datums/shuttles/whiteship.dm | 58 ++ .../game/machinery/computer/communications.dm | 1 + .../circuitboards/computer_circuitboards.dm | 8 - code/modules/shuttle/white_ship.dm | 24 - .../advanced_shuttles/code/shuttles.dm | 1 + .../modules/mapping/code/shuttles.dm | 1 + tgstation.dme | 18 +- .../tgui/interfaces/CommunicationsConsole.js | 11 +- 26 files changed, 591 insertions(+), 573 deletions(-) create mode 100644 code/datums/shuttles/_shuttle.dm create mode 100644 code/datums/shuttles/arrival.dm create mode 100644 code/datums/shuttles/assault_pod.dm create mode 100644 code/datums/shuttles/aux_base.dm create mode 100644 code/datums/shuttles/cargo.dm rename code/datums/{shuttles.dm => shuttles/emergency.dm} (57%) create mode 100644 code/datums/shuttles/ert.dm create mode 100644 code/datums/shuttles/escape_pod.dm create mode 100644 code/datums/shuttles/ferry.dm create mode 100644 code/datums/shuttles/hunter.dm create mode 100644 code/datums/shuttles/infiltrator.dm create mode 100644 code/datums/shuttles/mining.dm create mode 100644 code/datums/shuttles/pirate.dm create mode 100644 code/datums/shuttles/ruin.dm create mode 100644 code/datums/shuttles/snowdin.dm create mode 100644 code/datums/shuttles/starfury.dm create mode 100644 code/datums/shuttles/whiteship.dm diff --git a/_maps/shuttles/whiteship_birdshot.dmm b/_maps/shuttles/whiteship_birdshot.dmm index cdc9011daa7..65c3fbc5502 100644 --- a/_maps/shuttles/whiteship_birdshot.dmm +++ b/_maps/shuttles/whiteship_birdshot.dmm @@ -812,9 +812,6 @@ /turf/open/floor/iron/small, /area/shuttle/abandoned/cargo) "Bs" = ( -/obj/machinery/computer/shuttle/white_ship/bridge{ - dir = 8 - }, /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small/broken/directional/south, /obj/machinery/button/door/directional/south{ @@ -827,6 +824,7 @@ name = "Bridge Blast Door Control"; pixel_x = 6 }, +/obj/structure/table/greyscale, /turf/open/floor/iron/dark/small, /area/shuttle/abandoned/bridge) "Bt" = ( @@ -948,10 +946,10 @@ /turf/open/floor/catwalk_floor, /area/shuttle/abandoned/crew) "FK" = ( -/obj/machinery/computer/shuttle/white_ship/pod/recall{ +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer/shuttle/white_ship/bridge{ dir = 1 }, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark/small, /area/shuttle/abandoned/bridge) "FL" = ( @@ -1393,14 +1391,11 @@ /turf/open/floor/iron/smooth_large, /area/shuttle/abandoned/cargo) "Uu" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 4 - }, +/obj/structure/chair/comfy/shuttle, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark/small, /area/shuttle/abandoned/bridge) "UK" = ( -/obj/structure/table/greyscale, /obj/effect/decal/cleanable/dirt, /obj/machinery/turretid{ icon_state = "control_kill"; diff --git a/_maps/shuttles/whiteship_meta.dmm b/_maps/shuttles/whiteship_meta.dmm index 65900f2dafb..4d907da6697 100644 --- a/_maps/shuttles/whiteship_meta.dmm +++ b/_maps/shuttles/whiteship_meta.dmm @@ -664,6 +664,10 @@ pixel_x = 14 }, /obj/structure/cable, +/obj/item/megaphone{ + pixel_x = -2; + pixel_y = -4 + }, /turf/open/floor/iron/dark, /area/shuttle/abandoned/bridge) "cf" = ( @@ -686,12 +690,12 @@ /area/shuttle/abandoned/bridge) "cg" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/computer/shuttle/white_ship/pod/recall{ - dir = 8 - }, /obj/effect/turf_decal/tile/blue/anticorner/contrasted{ dir = 1 }, +/obj/machinery/computer/shuttle/white_ship/bridge{ + dir = 8 + }, /turf/open/floor/iron/dark, /area/shuttle/abandoned/bridge) "ch" = ( @@ -768,13 +772,16 @@ /turf/open/floor/iron, /area/shuttle/abandoned/bar) "cv" = ( -/obj/machinery/computer/shuttle/white_ship/bridge{ - dir = 8 - }, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 8 }, +/obj/structure/table, +/obj/item/folder/blue{ + pixel_x = 6; + pixel_y = 9 + }, +/obj/machinery/recharger, /turf/open/floor/iron/dark, /area/shuttle/abandoned/bridge) "cx" = ( @@ -828,28 +835,19 @@ /obj/structure/table, /obj/machinery/light/small/built/directional/west, /obj/effect/decal/cleanable/dirt, +/obj/machinery/cell_charger, +/obj/item/stock_parts/cell/high, /obj/item/radio/off{ pixel_x = 6; pixel_y = 7 }, -/obj/item/megaphone{ - pixel_x = -2; - pixel_y = -4 - }, /turf/open/floor/iron/dark, /area/shuttle/abandoned/bridge) "cE" = ( -/obj/structure/table, /obj/machinery/firealarm/directional/south, /obj/effect/decal/cleanable/dirt, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/obj/item/storage/toolbox/emergency{ - pixel_x = -12 - }, -/obj/item/wrench{ - pixel_x = -12 - }, +/obj/item/wrench, +/obj/item/storage/toolbox/emergency, /turf/open/floor/iron/dark, /area/shuttle/abandoned/bridge) "cF" = ( @@ -1652,15 +1650,9 @@ /turf/open/floor/iron/dark, /area/shuttle/abandoned/cargo) "wE" = ( -/obj/structure/table, /obj/machinery/airalarm/directional/north, /obj/effect/mapping_helpers/airalarm/all_access, /obj/effect/decal/cleanable/dirt, -/obj/item/folder/blue{ - pixel_x = 6; - pixel_y = 9 - }, -/obj/machinery/recharger, /turf/open/floor/iron/dark, /area/shuttle/abandoned/bridge) "xK" = ( diff --git a/code/datums/shuttles/_shuttle.dm b/code/datums/shuttles/_shuttle.dm new file mode 100644 index 00000000000..0100a3d85da --- /dev/null +++ b/code/datums/shuttles/_shuttle.dm @@ -0,0 +1,83 @@ +/datum/map_template/shuttle + name = "Base Shuttle Template" + var/prefix = "_maps/shuttles/" + var/suffix + /** + * Port ID is the place this template should be docking at, set on '/obj/docking_port/stationary' + * Because getShuttle() compares port_id to shuttle_id to find an already existing shuttle, + * you should set shuttle_id to be the same as port_id if you want them to be replacable. + */ + var/port_id + /// ID of the shuttle, make sure it matches port_id if necessary. + var/shuttle_id + /// Information to display on communication console about the shuttle + var/description + /// The recommended occupancy limit for the shuttle (count chairs, beds, and benches then round to 5) + var/occupancy_limit + /// Description of the prerequisition that has to be achieved for the shuttle to be purchased + var/prerequisites + /// Shuttle warnings and hazards to the admin who spawns the shuttle + var/admin_notes + /// How much does this shuttle cost the cargo budget to purchase? Put in terms of CARGO_CRATE_VALUE to properly scale the cost with the current balance of cargo's income. + var/credit_cost = INFINITY + /// What job accesses can buy this shuttle? If null, this shuttle cannot be bought. + var/list/who_can_purchase = list(ACCESS_CAPTAIN) + /// Whether or not this shuttle is locked to emags only. + var/emag_only = FALSE + /// If set, overrides default movement_force on shuttle + var/list/movement_force + + var/port_x_offset + var/port_y_offset + var/extra_desc = "" + +/datum/map_template/shuttle/proc/prerequisites_met() + return TRUE + +/datum/map_template/shuttle/New() + shuttle_id = "[port_id]_[suffix]" + mappath = "[prefix][shuttle_id].dmm" + . = ..() + +/datum/map_template/shuttle/preload_size(path, cache) + . = ..(path, TRUE) // Done this way because we still want to know if someone actualy wanted to cache the map + if(!cached_map) + return + + var/offset = discover_offset(/obj/docking_port/mobile) + + port_x_offset = offset[1] + port_y_offset = offset[2] + + if(!cache) + cached_map = null + +/datum/map_template/shuttle/load(turf/T, centered, register=TRUE) + . = ..() + if(!.) + return + var/list/turfs = block( locate(.[MAP_MINX], .[MAP_MINY], .[MAP_MINZ]), + locate(.[MAP_MAXX], .[MAP_MAXY], .[MAP_MAXZ])) + for(var/i in 1 to turfs.len) + var/turf/place = turfs[i] + if(isspaceturf(place)) // This assumes all shuttles are loaded in a single spot then moved to their real destination. + continue + + if (place.count_baseturfs() < 2) // Some snowflake shuttle shit + continue + + place.insert_baseturf(3, /turf/baseturf_skipover/shuttle) + + for(var/obj/docking_port/mobile/port in place) + port.calculate_docking_port_information(src) + // initTemplateBounds explicitly ignores the shuttle's docking port, to ensure that it calculates the bounds of the shuttle correctly + // so we need to manually initialize it here + SSatoms.InitializeAtoms(list(port)) + if(register) + port.register() + +//Whatever special stuff you want +/datum/map_template/shuttle/post_load(obj/docking_port/mobile/M) + if(movement_force) + M.movement_force = movement_force.Copy() + M.linkup() diff --git a/code/datums/shuttles/arrival.dm b/code/datums/shuttles/arrival.dm new file mode 100644 index 00000000000..376de809afa --- /dev/null +++ b/code/datums/shuttles/arrival.dm @@ -0,0 +1,35 @@ +/datum/map_template/shuttle/arrival + port_id = "arrival" + who_can_purchase = null + +/datum/map_template/shuttle/arrival/box + suffix = "box" + name = "arrival shuttle (Box)" + +/datum/map_template/shuttle/arrival/donut + suffix = "donut" + name = "arrival shuttle (Donut)" + +/datum/map_template/shuttle/arrival/birdshot + suffix = "birdshot" + name = "arrival shuttle (Birdshot)" + +/datum/map_template/shuttle/arrival/delta + suffix = "delta" + name = "arrival shuttle (Delta)" + +/datum/map_template/shuttle/arrival/kilo + suffix = "kilo" + name = "arrival shuttle (Kilo)" + +/datum/map_template/shuttle/arrival/pubby + suffix = "pubby" + name = "arrival shuttle (Pubby)" + +/datum/map_template/shuttle/arrival/omega + suffix = "omega" + name = "arrival shuttle (Omega)" + +/datum/map_template/shuttle/arrival/northstar + suffix = "northstar" + name = "arrival shuttle (North Star)" diff --git a/code/datums/shuttles/assault_pod.dm b/code/datums/shuttles/assault_pod.dm new file mode 100644 index 00000000000..63a885f92ea --- /dev/null +++ b/code/datums/shuttles/assault_pod.dm @@ -0,0 +1,7 @@ +/datum/map_template/shuttle/assault_pod + port_id = "assault_pod" + who_can_purchase = null + +/datum/map_template/shuttle/assault_pod/default + suffix = "default" + name = "assault pod (Default)" diff --git a/code/datums/shuttles/aux_base.dm b/code/datums/shuttles/aux_base.dm new file mode 100644 index 00000000000..c377e278b90 --- /dev/null +++ b/code/datums/shuttles/aux_base.dm @@ -0,0 +1,11 @@ +/datum/map_template/shuttle/aux_base + port_id = "aux_base" + who_can_purchase = null + +/datum/map_template/shuttle/aux_base/default + suffix = "default" + name = "auxilliary base (Default)" + +/datum/map_template/shuttle/aux_base/small + suffix = "small" + name = "auxilliary base (Small)" diff --git a/code/datums/shuttles/cargo.dm b/code/datums/shuttles/cargo.dm new file mode 100644 index 00000000000..a18b7a4ac9a --- /dev/null +++ b/code/datums/shuttles/cargo.dm @@ -0,0 +1,36 @@ +/datum/map_template/shuttle/cargo + port_id = "cargo" + name = "Base Shuttle Template (Cargo)" + who_can_purchase = null + +/datum/map_template/shuttle/cargo/kilo + suffix = "kilo" + name = "supply shuttle (Kilo)" + +/datum/map_template/shuttle/cargo/birdboat + suffix = "birdboat" + name = "supply shuttle (Birdboat)" + +/datum/map_template/shuttle/cargo/donut + suffix = "donut" + name = "supply shuttle (Donut)" + +/datum/map_template/shuttle/cargo/pubby + suffix = "pubby" + name = "supply shuttle (Pubby)" + +/datum/map_template/shuttle/cargo/birdshot + suffix = "birdshot" + name = "supply shuttle (Birdshot)" + +/datum/map_template/shuttle/cargo/box + suffix = "box" + name = "cargo ferry (Box)" + +/datum/map_template/shuttle/cargo/delta + suffix = "delta" + name = "cargo ferry (Delta)" + +/datum/map_template/shuttle/cargo/northstar + suffix = "northstar" + name = "cargo ferry (North Star)" diff --git a/code/datums/shuttles.dm b/code/datums/shuttles/emergency.dm similarity index 57% rename from code/datums/shuttles.dm rename to code/datums/shuttles/emergency.dm index c335b0ac60d..af87dc641d8 100644 --- a/code/datums/shuttles.dm +++ b/code/datums/shuttles/emergency.dm @@ -1,154 +1,13 @@ #define EMAG_LOCKED_SHUTTLE_COST (CARGO_CRATE_VALUE * 50) -/datum/map_template/shuttle - name = "Base Shuttle Template" - var/prefix = "_maps/shuttles/" - var/suffix - /** - * Port ID is the place this template should be docking at, set on '/obj/docking_port/stationary' - * Because getShuttle() compares port_id to shuttle_id to find an already existing shuttle, - * you should set shuttle_id to be the same as port_id if you want them to be replacable. - */ - var/port_id - ///ID of the shuttle, make sure it matches port_id if necessary. - var/shuttle_id - - var/description - var/prerequisites - var/admin_notes - /// How much does this shuttle cost the cargo budget to purchase? Put in terms of CARGO_CRATE_VALUE to properly scale the cost with the current balance of cargo's income. - var/credit_cost = INFINITY - /// What job accesses can buy this shuttle? If null, this shuttle cannot be bought. - var/list/who_can_purchase = list(ACCESS_CAPTAIN) - /// Whether or not this shuttle is locked to emags only. - var/emag_only = FALSE - /// If set, overrides default movement_force on shuttle - var/list/movement_force - - var/port_x_offset - var/port_y_offset - var/extra_desc = "" - -/datum/map_template/shuttle/proc/prerequisites_met() - return TRUE - -/datum/map_template/shuttle/New() - shuttle_id = "[port_id]_[suffix]" - mappath = "[prefix][shuttle_id].dmm" - . = ..() - -/datum/map_template/shuttle/preload_size(path, cache) - . = ..(path, TRUE) // Done this way because we still want to know if someone actualy wanted to cache the map - if(!cached_map) - return - - var/offset = discover_offset(/obj/docking_port/mobile) - - port_x_offset = offset[1] - port_y_offset = offset[2] - - if(!cache) - cached_map = null - -/datum/map_template/shuttle/load(turf/T, centered, register=TRUE) - . = ..() - if(!.) - return - var/list/turfs = block( locate(.[MAP_MINX], .[MAP_MINY], .[MAP_MINZ]), - locate(.[MAP_MAXX], .[MAP_MAXY], .[MAP_MAXZ])) - for(var/i in 1 to turfs.len) - var/turf/place = turfs[i] - if(isspaceturf(place)) // This assumes all shuttles are loaded in a single spot then moved to their real destination. - continue - - if (place.count_baseturfs() < 2) // Some snowflake shuttle shit - continue - - place.insert_baseturf(3, /turf/baseturf_skipover/shuttle) - - for(var/obj/docking_port/mobile/port in place) - port.calculate_docking_port_information(src) - // initTemplateBounds explicitly ignores the shuttle's docking port, to ensure that it calculates the bounds of the shuttle correctly - // so we need to manually initialize it here - SSatoms.InitializeAtoms(list(port)) - if(register) - port.register() - -//Whatever special stuff you want -/datum/map_template/shuttle/post_load(obj/docking_port/mobile/M) - if(movement_force) - M.movement_force = movement_force.Copy() - M.linkup() - /datum/map_template/shuttle/emergency // SKYRAT EDIT OVERRIDE - OVERRIDEN IN ADVANCED_SHUTTLES - shuttles.dm port_id = "emergency" name = "Base Shuttle Template (Emergency)" -/datum/map_template/shuttle/cargo - port_id = "cargo" - name = "Base Shuttle Template (Cargo)" - who_can_purchase = null - -/datum/map_template/shuttle/ferry - port_id = "ferry" - name = "Base Shuttle Template (Ferry)" - -/datum/map_template/shuttle/whiteship - port_id = "whiteship" - -/datum/map_template/shuttle/labour - port_id = "labour" - who_can_purchase = null - -/datum/map_template/shuttle/mining - port_id = "mining" - who_can_purchase = null - -/datum/map_template/shuttle/mining_common - port_id = "mining_common" - who_can_purchase = null - -/datum/map_template/shuttle/arrival - port_id = "arrival" - who_can_purchase = null - -/datum/map_template/shuttle/infiltrator - port_id = "infiltrator" - who_can_purchase = null - -/datum/map_template/shuttle/aux_base - port_id = "aux_base" - who_can_purchase = null - -/datum/map_template/shuttle/escape_pod - port_id = "escape_pod" - who_can_purchase = null - -/datum/map_template/shuttle/assault_pod - port_id = "assault_pod" - who_can_purchase = null - -/datum/map_template/shuttle/pirate - port_id = "pirate" - who_can_purchase = null - -/datum/map_template/shuttle/hunter - port_id = "hunter" - who_can_purchase = null - -/datum/map_template/shuttle/ruin //For random shuttles in ruins - port_id = "ruin" - who_can_purchase = null - -/datum/map_template/shuttle/snowdin - port_id = "snowdin" - who_can_purchase = null - -/datum/map_template/shuttle/ert - port_id = "ert" - who_can_purchase = null - -// Shuttles start here: +/datum/map_template/shuttle/emergency/New() + . = ..() + if(!occupancy_limit && who_can_purchase) + CRASH("The [name] needs an occupancy limit!") /datum/map_template/shuttle/emergency/backup prefix = "_maps/shuttles/" @@ -163,6 +22,7 @@ admin_notes = "No brig, no medical facilities." credit_cost = CARGO_CRATE_VALUE * 5 who_can_purchase = list(ACCESS_CAPTAIN, ACCESS_CE) + occupancy_limit = "Flexible" /datum/map_template/shuttle/emergency/construction/post_load() . = ..() @@ -170,18 +30,19 @@ var/datum/supply_pack/P = SSshuttle.supply_packs[/datum/supply_pack/engineering/shuttle_engine] P.special_enabled = TRUE - /datum/map_template/shuttle/emergency/asteroid suffix = "asteroid" name = "Asteroid Station Emergency Shuttle" description = "A respectable mid-sized shuttle that first saw service shuttling Nanotrasen crew to and from their asteroid belt embedded facilities." credit_cost = CARGO_CRATE_VALUE * 6 + occupancy_limit = "50" /datum/map_template/shuttle/emergency/venture suffix = "venture" name = "Venture Emergency Shuttle" description = "A mid-sized shuttle for those who like a lot of space for their legs." credit_cost = CARGO_CRATE_VALUE * 10 + occupancy_limit = "45" /datum/map_template/shuttle/emergency/bar suffix = "bar" @@ -190,6 +51,7 @@ admin_notes = "Bardrone and Barmaid are GODMODE, will be automatically sentienced by the fun balloon at 60 seconds before arrival. \ Has medical facilities." credit_cost = CARGO_CRATE_VALUE * 10 + occupancy_limit = "30" /datum/map_template/shuttle/emergency/pod suffix = "pod" @@ -197,6 +59,7 @@ description = "We did not expect an evacuation this quickly. All we have available is two escape pods." admin_notes = "For player punishment." who_can_purchase = null + occupancy_limit = "10" /datum/map_template/shuttle/emergency/russiafightpit suffix = "russiafightpit" @@ -204,6 +67,7 @@ description = "Dis is a high-quality shuttle, da. Many seats, lots of space, all equipment! Even includes entertainment! Such as lots to drink, and a fighting arena for drunk crew to have fun! If arena not fun enough, simply press button of releasing bears. Do not worry, bears trained not to break out of fighting pit, so totally safe so long as nobody stupid or drunk enough to leave door open. Try not to let asimov babycons ruin fun!" admin_notes = "Includes a small variety of weapons. And bears. Only captain-access can release the bears. Bears won't smash the windows themselves, but they can escape if someone lets them." credit_cost = CARGO_CRATE_VALUE * 10 // While the shuttle is rusted and poorly maintained, trained bears are costly. + occupancy_limit = "40" /datum/map_template/shuttle/emergency/meteor suffix = "meteor" @@ -212,6 +76,7 @@ admin_notes = "This shuttle will likely crush escape, killing anyone there." credit_cost = CARGO_CRATE_VALUE * 30 movement_force = list("KNOCKDOWN" = 3, "THROW" = 2) + occupancy_limit = "CONDEMNED" /datum/map_template/shuttle/emergency/monastery suffix = "monastery" @@ -221,7 +86,8 @@ emag_only = TRUE credit_cost = EMAG_LOCKED_SHUTTLE_COST * 1.8 movement_force = list("KNOCKDOWN" = 3, "THROW" = 5) - who_can_purchase = null //SKYRAT EDIT CHANGE + occupancy_limit = "70" + who_can_purchase = null //SKYRAT EDIT ADDITION /datum/map_template/shuttle/emergency/luxury suffix = "luxury" @@ -231,13 +97,16 @@ admin_notes = "Due to the limited space for non paying crew, this shuttle may cause a riot." emag_only = TRUE credit_cost = EMAG_LOCKED_SHUTTLE_COST + occupancy_limit = "75" /datum/map_template/shuttle/emergency/medisim suffix = "medisim" name = "Medieval Reality Simulation Dome" description = "A state of the art simulation dome, loaded onto your shuttle! Watch and laugh at how petty humanity used to be before it reached the stars. Guaranteed to be at least 40% historically accurate." + prerequisites = "A special holodeck simulation might allow this shuttle to be loaded." admin_notes = "Ghosts can spawn in and fight as knights or archers. The CTF auto restarts, so no admin intervention necessary." credit_cost = 20000 + occupancy_limit = "30" /datum/map_template/shuttle/emergency/medisim/prerequisites_met() return SSshuttle.shuttle_purchase_requirements_met[SHUTTLE_UNLOCK_MEDISIM] @@ -249,13 +118,16 @@ admin_notes = "Flaming hot. The main area has a dance machine as well as plasma floor tiles that will be ignited by players every single time." emag_only = TRUE credit_cost = EMAG_LOCKED_SHUTTLE_COST + occupancy_limit = "10" /datum/map_template/shuttle/emergency/arena suffix = "arena" name = "The Arena" - description = "The crew must pass through an otherworldy arena to board this shuttle. Expect massive casualties. The source of the Bloody Signal must be tracked down and eliminated to unlock this shuttle." + description = "The crew must pass through an otherworldy arena to board this shuttle. Expect massive casualties." + prerequisites = "The source of the Bloody Signal must be tracked down and eliminated to unlock this shuttle." admin_notes = "RIP AND TEAR." credit_cost = CARGO_CRATE_VALUE * 20 + occupancy_limit = "1/2" /// Whether the arena z-level has been created var/arena_loaded = FALSE @@ -278,12 +150,14 @@ name = "Birdboat Station Emergency Shuttle" description = "Though a little on the small side, this shuttle is feature complete, which is more than can be said for the pattern of station it was commissioned for." credit_cost = CARGO_CRATE_VALUE * 2 + occupancy_limit = "25" /datum/map_template/shuttle/emergency/box suffix = "box" name = "Box Station Emergency Shuttle" credit_cost = CARGO_CRATE_VALUE * 4 description = "The gold standard in emergency exfiltration, this tried and true design is equipped with everything the crew needs for a safe flight home." + occupancy_limit = "45" /datum/map_template/shuttle/emergency/donut suffix = "donut" @@ -291,6 +165,7 @@ description = "The perfect spearhead for any crude joke involving the station's shape, this shuttle supports a separate containment cell for prisoners and a compact medical wing." admin_notes = "Has airlocks on both sides of the shuttle and will probably intersect near the front on some stations that build past departures." credit_cost = CARGO_CRATE_VALUE * 5 + occupancy_limit = "60" /datum/map_template/shuttle/emergency/clown suffix = "clown" @@ -302,6 +177,7 @@ Have a fun ride!" admin_notes = "Brig is replaced by anchored greentext book surrounded by lavaland chasms, stationside door has been removed to prevent accidental dropping. No brig." credit_cost = CARGO_CRATE_VALUE * 16 + occupancy_limit = "HONK" /datum/map_template/shuttle/emergency/cramped suffix = "cramped" @@ -311,36 +187,42 @@ \n\ Contains contraband armory guns, maintenance loot, and abandoned crates!" admin_notes = "Due to origin as a solo piloted secure vessel, has an active GPS onboard labeled STV5. Has roughly as much space as Hi Daniel, except with explosive crates." + occupancy_limit = "5" /datum/map_template/shuttle/emergency/meta suffix = "meta" name = "Meta Station Emergency Shuttle" credit_cost = CARGO_CRATE_VALUE * 8 description = "A fairly standard shuttle, though larger and slightly better equipped than the Box Station variant." + occupancy_limit = "45" /datum/map_template/shuttle/emergency/kilo suffix = "kilo" name = "Kilo Station Emergency Shuttle" credit_cost = CARGO_CRATE_VALUE * 10 description = "A fully functional shuttle including a complete infirmary, storage facilties and regular amenities." + occupancy_limit = "55" /datum/map_template/shuttle/emergency/mini suffix = "mini" name = "Ministation emergency shuttle" credit_cost = CARGO_CRATE_VALUE * 2 description = "Despite its namesake, this shuttle is actually only slightly smaller than standard, and still complete with a brig and medbay." + occupancy_limit = "35" /datum/map_template/shuttle/emergency/tram suffix = "tram" name = "Tram Station Emergency Shuttle" credit_cost = CARGO_CRATE_VALUE * 4 description = "A train but in space, choo choo!" + occupancy_limit = "35" /datum/map_template/shuttle/emergency/birdshot suffix = "birdshot" name = "Birdshot Station Emergency Shuttle" credit_cost = CARGO_CRATE_VALUE * 2 description = "We pulled this one out of Mothball just for you!" + occupancy_limit = "40" /datum/map_template/shuttle/emergency/scrapheap suffix = "scrapheap" @@ -349,6 +231,7 @@ description = "Comrade! We see you are having trouble with money, yes? If you have money issue, very little money, we are looking for good shuttle, emergency shuttle. You take best in sector shuttle, we take yours, you get money, da? Please do not lean on window, fragile like fina china. -Ivan" admin_notes = "An abomination with no functional medbay, sections missing, and some very fragile windows. Surprisingly airtight. When bought, gives a good influx of money, but can only be bought if the budget is literally 0 credits." movement_force = list("KNOCKDOWN" = 3, "THROW" = 2) + occupancy_limit = "30" /datum/map_template/shuttle/emergency/scrapheap/prerequisites_met() return SSshuttle.shuttle_purchase_requirements_met[SHUTTLE_UNLOCK_SCRAPHEAP] @@ -359,7 +242,9 @@ description = "Looks like this shuttle may have wandered into the darkness between the stars on route to the station. Let's not think too hard about where all the bodies came from." admin_notes = "Contains real cult ruins, mob eyeballs, and inactive constructs. Cult mobs will automatically be sentienced by fun balloon. \ Cloning pods in 'medbay' area are showcases and nonfunctional." + prerequisites = "Mysterious cult runes may need to be banished before this shuttle can be summoned." credit_cost = 6667 ///The joke is the number so no defines + occupancy_limit = "666" /datum/map_template/shuttle/emergency/narnar/prerequisites_met() return SSshuttle.shuttle_purchase_requirements_met[SHUTTLE_UNLOCK_NARNAR] @@ -370,6 +255,7 @@ description = "A train but in space! Complete with a first, second class, brig and storage area." admin_notes = "Choo choo motherfucker!" credit_cost = CARGO_CRATE_VALUE * 2 + occupancy_limit = "50" /datum/map_template/shuttle/emergency/cere suffix = "cere" @@ -378,6 +264,7 @@ an engine room stocked with various supplies, and a crew capacity of 80+ to top it all off. Live large, live Cere." admin_notes = "Seriously big, even larger than the Delta shuttle." credit_cost = CARGO_CRATE_VALUE * 20 + occupancy_limit = "110" /datum/map_template/shuttle/emergency/supermatter suffix = "supermatter" @@ -393,6 +280,7 @@ emag_only = TRUE credit_cost = EMAG_LOCKED_SHUTTLE_COST movement_force = list("KNOCKDOWN" = 3, "THROW" = 2) + occupancy_limit = "15" /datum/map_template/shuttle/emergency/imfedupwiththisworld suffix = "imfedupwiththisworld" @@ -403,12 +291,14 @@ emag_only = TRUE credit_cost = EMAG_LOCKED_SHUTTLE_COST movement_force = list("KNOCKDOWN" = 3, "THROW" = 2) + occupancy_limit = "5" /datum/map_template/shuttle/emergency/goon suffix = "goon" name = "NES Port" description = "The Nanotrasen Emergency Shuttle Port(NES Port for short) is a shuttle used at other less known Nanotrasen facilities and has a more open inside for larger crowds, but fewer onboard shuttle facilities." credit_cost = CARGO_CRATE_VALUE + occupancy_limit = "40" /datum/map_template/shuttle/emergency/rollerdome suffix = "rollerdome" @@ -417,6 +307,7 @@ He says this shuttle is based off an old entertainment complex from the 1990s, though our database has no records on anything pertaining to that decade." admin_notes = "ONLY NINETIES KIDS REMEMBER. Uses the fun balloon and drone from the Emergency Bar." credit_cost = CARGO_CRATE_VALUE * 30 + occupancy_limit = "5" /datum/map_template/shuttle/emergency/basketball suffix = "bballhooper" @@ -426,6 +317,7 @@ It also wasn't manufactured to deal with the form-factor of some of your stations... good luck with that." admin_notes = "A larger shuttle built around a basketball stadium: entirely impractical but just a complete blast!" credit_cost = CARGO_CRATE_VALUE * 10 + occupancy_limit = "30" /datum/map_template/shuttle/emergency/wabbajack suffix = "wabbajack" @@ -435,6 +327,7 @@ Needless to say, no engineering team wanted to go near the thing, and it's only being used as an Emergency Escape Shuttle because there is literally nothing else available." admin_notes = "If the crew can solve the puzzle, they will wake the wabbajack statue. It will likely not end well. There's a reason it's boarded up. Maybe they should have just left it alone." credit_cost = CARGO_CRATE_VALUE * 30 + occupancy_limit = "30" /datum/map_template/shuttle/emergency/wabbajack/prerequisites_met() return SSshuttle.shuttle_purchase_requirements_met[SHUTTLE_UNLOCK_WABBAJACK] @@ -444,6 +337,7 @@ name = "Omegastation Emergency Shuttle" description = "On the smaller size with a modern design, this shuttle is for the crew who like the cosier things, while still being able to stretch their legs." credit_cost = CARGO_CRATE_VALUE * 2 + occupancy_limit = "30" /datum/map_template/shuttle/emergency/cruise suffix = "cruise" @@ -451,6 +345,7 @@ description = "Ordinarily reserved for special functions and events, the Cruise Shuttle Independence can bring a summery cheer to your next station evacuation for a 'modest' fee!" admin_notes = "This motherfucker is BIG. You might need to force dock it." credit_cost = CARGO_CRATE_VALUE * 100 + occupancy_limit = "80" /datum/map_template/shuttle/emergency/monkey suffix = "nature" @@ -458,6 +353,7 @@ description = "A large shuttle with a center biodome that is flourishing with life. Frolick with the monkeys! (Extra monkeys are stored on the bridge.)" admin_notes = "Pretty freakin' large, almost as big as Raven or Cere. Excercise caution with it." credit_cost = CARGO_CRATE_VALUE * 16 + occupancy_limit = "45" /datum/map_template/shuttle/emergency/casino suffix = "casino" @@ -465,6 +361,7 @@ description = "A luxurious casino packed to the brim with everything you need to start new gambling addicitions!" admin_notes = "The ship is a bit chunky, so watch where you park it." credit_cost = 7777 + occupancy_limit = "85" /datum/map_template/shuttle/emergency/shadow suffix = "shadow" @@ -472,6 +369,7 @@ description = "Guaranteed to get you somewhere FAST. With a custom-built plasma engine, this bad boy will put more distance between you and certain danger than any other!" admin_notes = "The aft of the ship has a plasma tank that starts ignited. May get released by crew. The plasma windows next to the engine heaters will also erupt into flame, and also risk getting released by crew." credit_cost = CARGO_CRATE_VALUE * 50 + occupancy_limit = "40" /datum/map_template/shuttle/emergency/fish suffix = "fish" @@ -479,6 +377,7 @@ description = "Trades such amenities as 'storage space' and 'sufficient seating' for an artifical environment ideal for fishing, plus ample supplies (also for fishing)." admin_notes = "There's a chasm in it, it has railings but that won't stop determined players." credit_cost = CARGO_CRATE_VALUE * 10 + occupancy_limit = "35" /datum/map_template/shuttle/emergency/lance suffix = "lance" @@ -486,6 +385,7 @@ description = "A brand new shuttle by Nanotrasen's finest in shuttle-engineering, it's designed to tactically slam into a destroyed station, dispatching threats and saving crew at the same time! Be careful to stay out of it's path." admin_notes = "WARNING: This shuttle is designed to crash into the station. It has turrets, similar to the raven." credit_cost = CARGO_CRATE_VALUE * 70 + occupancy_limit = "50" /datum/map_template/shuttle/emergency/tranquility suffix = "tranquility" @@ -493,6 +393,7 @@ description = "A large shuttle, covered in flora and comfortable resting areas. The perfect way to end a peaceful shift" admin_notes = "it's pretty big, and comfy. Be careful when placing it down!" credit_cost = CARGO_CRATE_VALUE * 25 + occupancy_limit = "40" /datum/map_template/shuttle/emergency/hugcage suffix = "hugcage" @@ -500,6 +401,7 @@ description = "A small cozy shuttle with plenty of beds for tired or sensitive spacemen, and a box for pillow-fights." admin_notes = "Has a sentience fun balloon for pets." credit_cost = CARGO_CRATE_VALUE * 16 + occupancy_limit = "20" /datum/map_template/shuttle/emergency/fame suffix = "fame" @@ -507,124 +409,7 @@ description = "A grandiose shuttle that has a red carpet leading to the hall of fame. Are you worthy to stand among the best spessmen in existence?" admin_notes = "Designed around persistence from memories, trophies, photos, and statues." credit_cost = CARGO_CRATE_VALUE * 25 - -/datum/map_template/shuttle/ferry/base - suffix = "base" - name = "transport ferry" - description = "Standard issue Box/Metastation CentCom ferry." - -/datum/map_template/shuttle/ferry/meat - suffix = "meat" - name = "\"meat\" ferry" - description = "Ahoy! We got all kinds o' meat aft here. Meat from plant people, people who be dark, not in a racist way, just they're dark black. \ - Oh and lizard meat too,mighty popular that is. Definitely 100% fresh, just ask this guy here. *person on meatspike moans* See? \ - Definitely high quality meat, nothin' wrong with it, nothin' added, definitely no zombifyin' reagents!" - admin_notes = "Meat currently contains no zombifying reagents, lizard on meatspike must be spawned in." - -/datum/map_template/shuttle/ferry/lighthouse - suffix = "lighthouse" - name = "The Lighthouse(?)" - description = "*static*... part of a much larger vessel, possibly military in origin. \ - The weapon markings aren't anything we've seen ...static... by almost never the same person twice, possible use of unknown storage ...static... \ - seeing ERT officers onboard, but no missions are on file for ...static...static...annoying jingle... only at The LIGHTHOUSE! \ - Fulfilling needs you didn't even know you had. We've got EVERYTHING, and something else!" - admin_notes = "Currently larger than ferry docking port on Box, will not hit anything, but must be force docked. Trader and ERT bodyguards are not included." - -/datum/map_template/shuttle/ferry/fancy - suffix = "fancy" - name = "fancy transport ferry" - description = "At some point, someone upgraded the ferry to have fancier flooring... and fewer seats." - -/datum/map_template/shuttle/ferry/kilo - suffix = "kilo" - name = "kilo transport ferry" - description = "Standard issue CentCom Ferry for Kilo pattern stations. Includes additional equipment and rechargers." - -/datum/map_template/shuttle/ferry/northstar - suffix = "northstar" - name = "north star transport ferry" - description = "In the very depths of the frontier, you'll need a rugged shuttle capable of delivering crew, this is that." - -/datum/map_template/shuttle/whiteship/box - suffix = "box" - name = "Hospital Ship" - description = "Whiteship with medical supplies. Zombies do not currently spawn corpses, and are not infectious." - -/datum/map_template/shuttle/whiteship/meta - suffix = "meta" - name = "Salvage Ship" - description = "Whiteship that focuses on a large cargo bay that players can build in. Spawns with Syndicate mobs who do not drop corpses and are highly aggressive." - -/datum/map_template/shuttle/whiteship/pubby - suffix = "pubby" - name = "NT Science Vessel" - description = "A small science vessel that uses just one area and is full of angry ants." - -/datum/map_template/shuttle/whiteship/cere - suffix = "cere" - name = "NT Heavy Salvage Vessel" - description = "A beefy, well-rounded salvage vessel with a pair of corpses (miner and engineer) and a Captain's hat. Equipped with solar sails and a PACMAN generator." - -/datum/map_template/shuttle/whiteship/birdshot - suffix = "birdshot" - name = "NT Patrol Bee" - description = "A small patrol vessel with a central corridor connecting all rooms. Features 2 small cargo bays and a brig. Spawns with an agressive and deadly Gelatinous Cube" - -/datum/map_template/shuttle/whiteship/kilo - suffix = "kilo" - name = "NT Mining Shuttle" - description = "A mining vessel with a curious shape starting with a few angry netherworld mobs." - -/datum/map_template/shuttle/whiteship/donut - suffix = "donut" - name = "NT Long-Distance Bluespace Jumper" - description = "A ship hit with an engine blowout, leaving it as a depressurised husk. Has infinite power, although likely to bait people into removing that property. Also the most open out of all the whiteships, and starts with a 25% ripley chance." - -/datum/map_template/shuttle/whiteship/tram - suffix = "tram" - name = "NT Long-Distance Bluespace Freighter" - description = "A long shuttle that starts with Nanotrasen private security corpses. DOES NOT FIT IN THE BASE DOCKS! Does fit in Deep Space's dock though." - -/datum/map_template/shuttle/whiteship/delta - suffix = "delta" - name = "NT Frigate" - description = "A standard whiteship with big spiders onboard. PACMAN generator is not wired and next to main grid cabling, so it requires some work." - -/datum/map_template/shuttle/whiteship/pod - suffix = "whiteship_pod" - name = "Salvage Pod" - description = "There is no map for this vessel and it was supposed to be used with the Meta-class. Do not try to spawn it!" - -/datum/map_template/shuttle/whiteship/personalshuttle - suffix = "personalshuttle" - name = "Personal Travel Shuttle" - description = "A small vessel with a few zombies and an engineer's corpse that can be looted." - -/datum/map_template/shuttle/whiteship/obelisk - suffix = "obelisk" - name = "Obelisk" - description = "A large research vessel affected by the Cult of Nar'Sie. PACMAN generator is not wired and next to main grid cabling, so it requires some work." - admin_notes = "Not actually an obelisk, has nonsentient cult constructs." - -/datum/map_template/shuttle/cargo/kilo - suffix = "kilo" - name = "supply shuttle (Kilo)" - -/datum/map_template/shuttle/cargo/birdboat - suffix = "birdboat" - name = "supply shuttle (Birdboat)" - -/datum/map_template/shuttle/cargo/donut - suffix = "donut" - name = "supply shuttle (Donut)" - -/datum/map_template/shuttle/cargo/pubby - suffix = "pubby" - name = "supply shuttle (Pubby)" - -/datum/map_template/shuttle/cargo/birdshot - suffix = "birdshot" - name = "supply shuttle (Birdshot)" + occupancy_limit = "55" /datum/map_template/shuttle/emergency/delta suffix = "delta" @@ -632,6 +417,7 @@ description = "A large shuttle for a large station, this shuttle can comfortably fit all your overpopulation and crowding needs. Complete with all facilities plus additional equipment." admin_notes = "Go big or go home." credit_cost = CARGO_CRATE_VALUE * 15 + occupancy_limit = "75" /datum/map_template/shuttle/emergency/northstar suffix = "northstar" @@ -639,6 +425,7 @@ description = "A rugged shuttle meant for long-distance transit from the tips of the frontier to Central Command and back. \ moderately comfortable and large, but cramped." credit_cost = CARGO_CRATE_VALUE * 14 + occupancy_limit = "55" /datum/map_template/shuttle/emergency/raven suffix = "raven" @@ -648,252 +435,19 @@ This escape shuttle boasts shields and numerous anti-personnel turrets guarding its perimeter to fend off meteors and enemy boarding attempts." admin_notes = "Comes with turrets that will target anything without the neutral faction (nuke ops, xenos etc, but not pets)." credit_cost = CARGO_CRATE_VALUE * 60 + occupancy_limit = "CLASSIFIED" /datum/map_template/shuttle/emergency/zeta suffix = "zeta" name = "Tr%nPo2r& Z3TA" description = "A glitch appears on your monitor, flickering in and out of the options laid before you. \ - It seems strange and alien, you may need a special technology to access the signal.." + It seems strange and alien..." + prerequisites = "You may need a special technology to access the signal." admin_notes = "Has alien surgery tools, and a void core that provides unlimited power." credit_cost = CARGO_CRATE_VALUE * 16 + occupancy_limit = "xxx" /datum/map_template/shuttle/emergency/zeta/prerequisites_met() return SSshuttle.shuttle_purchase_requirements_met[SHUTTLE_UNLOCK_ALIENTECH] -/datum/map_template/shuttle/arrival/box - suffix = "box" - name = "arrival shuttle (Box)" - -/datum/map_template/shuttle/cargo/box - suffix = "box" - name = "cargo ferry (Box)" - -/datum/map_template/shuttle/mining/box - suffix = "box" - name = "mining shuttle (Box)" - -/datum/map_template/shuttle/labour/box - suffix = "box" - name = "labour shuttle (Box)" - -/datum/map_template/shuttle/labour/generic - suffix = "generic" - name = "labour shuttle (Generic)" - -/datum/map_template/shuttle/arrival/donut - suffix = "donut" - name = "arrival shuttle (Donut)" - -/datum/map_template/shuttle/arrival/birdshot - suffix = "birdshot" - name = "arrival shuttle (Birdshot)" - -/datum/map_template/shuttle/infiltrator/basic - suffix = "basic" - name = "basic syndicate infiltrator" - description = "Base Syndicate infiltrator, spawned by default for nukeops to use." - -/datum/map_template/shuttle/infiltrator/advanced - suffix = "advanced" - name = "advanced syndicate infiltrator" - description = "A much larger version of the standard Syndicate infiltrator that feels more like Kilostation. Has APCs, but power is not a concern for nuclear operatives. Also comes with atmos!" - -/datum/map_template/shuttle/cargo/delta - suffix = "delta" - name = "cargo ferry (Delta)" - -/datum/map_template/shuttle/mining/delta - suffix = "delta" - name = "mining shuttle (Delta)" - -/datum/map_template/shuttle/mining/kilo - suffix = "kilo" - name = "mining shuttle (Kilo)" - -/datum/map_template/shuttle/mining/large - suffix = "large" - name = "mining shuttle (Large)" - -/datum/map_template/shuttle/mining/northstar - suffix = "northstar" - name = "mining shuttle (North Star)" - -/datum/map_template/shuttle/labour/delta - suffix = "delta" - name = "labour shuttle (Delta)" - -/datum/map_template/shuttle/labour/kilo - suffix = "kilo" - name = "labour shuttle (Kilo)" - -/datum/map_template/shuttle/mining_common/meta - suffix = "meta" - name = "lavaland shuttle (Meta)" - -/datum/map_template/shuttle/mining_common/kilo - suffix = "kilo" - name = "lavaland shuttle (Kilo)" - -/datum/map_template/shuttle/mining_common/northstar - suffix = "northstar" - name = "lavaland shuttle (North Star)" - -/datum/map_template/shuttle/arrival/delta - suffix = "delta" - name = "arrival shuttle (Delta)" - -/datum/map_template/shuttle/arrival/kilo - suffix = "kilo" - name = "arrival shuttle (Kilo)" - -/datum/map_template/shuttle/arrival/pubby - suffix = "pubby" - name = "arrival shuttle (Pubby)" - -/datum/map_template/shuttle/arrival/omega - suffix = "omega" - name = "arrival shuttle (Omega)" - -/datum/map_template/shuttle/aux_base/default - suffix = "default" - name = "auxilliary base (Default)" - -/datum/map_template/shuttle/aux_base/small - suffix = "small" - name = "auxilliary base (Small)" - -/datum/map_template/shuttle/escape_pod/default - suffix = "default" - name = "escape pod (Default)" - description = "Base escape pod with 2 tiles of interior space." - -/datum/map_template/shuttle/escape_pod/large - suffix = "large" - name = "escape pod (Large)" - description = "Actually the old Pubbystation monastery shuttle." - -/datum/map_template/shuttle/escape_pod/luxury - suffix = "luxury" - name = "escape pod (Luxury)" - description = "Upgraded escape pod with 3 tiles of interior space." - -/datum/map_template/shuttle/escape_pod/cramped - suffix = "cramped" - name = "escape pod (Cramped)" - description = "Downgraded escape pod that lacks a window and only has one seat, alongside lacking an emergency safe." - -/datum/map_template/shuttle/assault_pod/default - suffix = "default" - name = "assault pod (Default)" - -/datum/map_template/shuttle/pirate/default - suffix = "default" - name = "pirate ship (Default)" - -/datum/map_template/shuttle/pirate/silverscale - suffix = "silverscale" - name = "pirate ship (Silver Scales)" - -/datum/map_template/shuttle/pirate/dutchman - suffix = "dutchman" - name = "pirate ship (Flying Dutchman)" - -/datum/map_template/shuttle/pirate/interdyne - suffix = "interdyne" - name = "pirate ship (Pharmaceutics Biocraft)" - -/datum/map_template/shuttle/pirate/grey - suffix = "grey" - name = "pirate ship (The Space Toolbox)" - -/datum/map_template/shuttle/pirate/irs - suffix = "irs" - name = "pirate ship (Space IRS)" - -/datum/map_template/shuttle/pirate/geode - suffix = "geode" - name = "pirate ship (Lustrous Geode)" - -/datum/map_template/shuttle/hunter/space_cop - suffix = "space_cop" - name = "Police Spacevan" - -/datum/map_template/shuttle/hunter/russian - suffix = "russian" - name = "Russian Cargo Ship" - -/datum/map_template/shuttle/hunter/bounty - suffix = "bounty" - name = "Bounty Hunter Ship" - -/datum/map_template/shuttle/hunter/psyker - suffix = "psyker" - name = "Psyker Fortune-Telling Ship" - -/datum/map_template/shuttle/starfury - port_id = "starfury" - who_can_purchase = null - -/datum/map_template/shuttle/starfury/fighter_one - suffix = "fighter1" - name = "SBC Starfury Fighter (1)" - -/datum/map_template/shuttle/starfury/fighter_two - suffix = "fighter2" - name = "SBC Starfury Fighter (2)" - -/datum/map_template/shuttle/starfury/fighter_three - suffix = "fighter3" - name = "SBC Starfury Fighter (3)" - -/datum/map_template/shuttle/starfury/corvette - suffix = "corvette" - name = "SBC Starfury Corvette" - -/datum/map_template/shuttle/ruin/cyborg_mothership - suffix = "cyborg_mothership" - name = "Cyborg Mothership" - description = "A highly industrialised vessel designed for silicon operation infested with hivebots and space vines." - -/datum/map_template/shuttle/ruin/caravan_victim - suffix = "caravan_victim" - name = "Small Freighter" - description = "Small freight vessel, starts near blacked-out with 3 Syndicate Commandos and 1 Syndicate Stormtrooper, alongside a large hull breach." - -/datum/map_template/shuttle/ruin/pirate_cutter - suffix = "pirate_cutter" - name = "Pirate Cutter" - description = "Small pirate vessel with ballistic turrets. Spawns with 3 pirate mobs, one of which drops an energy cutlass." - -/datum/map_template/shuttle/ruin/syndicate_dropship - suffix = "syndicate_dropship" - name = "Syndicate Dropship" - description = "Light Syndicate vessel with laser turrets. Spawns with a Syndicate mob in the bridge." - -/datum/map_template/shuttle/ruin/syndicate_fighter_shiv - suffix = "syndicate_fighter_shiv" - name = "Syndicate Fighter" - description = "A small Syndicate vessel with exactly one tile of useful interior space and 4 laser turrets. Starts with a Syndicate mob in the pilot's seat, and extremely cramped." - -/datum/map_template/shuttle/snowdin/mining - suffix = "mining" - name = "Snowdin Mining Elevator" - -/datum/map_template/shuttle/snowdin/excavation - suffix = "excavation" - name = "Snowdin Excavation Elevator" - -/datum/map_template/shuttle/arrival/northstar - suffix = "northstar" - name = "arrival shuttle (North Star)" - -/datum/map_template/shuttle/cargo/northstar - suffix = "northstar" - name = "cargo ferry (North Star)" - -// Custom ERT shuttles -/datum/map_template/shuttle/ert/bounty - suffix = "bounty" - name = "Bounty Hunter ERT Shuttle" - #undef EMAG_LOCKED_SHUTTLE_COST diff --git a/code/datums/shuttles/ert.dm b/code/datums/shuttles/ert.dm new file mode 100644 index 00000000000..843daf34c80 --- /dev/null +++ b/code/datums/shuttles/ert.dm @@ -0,0 +1,8 @@ +/datum/map_template/shuttle/ert + port_id = "ert" + who_can_purchase = null + +// Custom ERT shuttles +/datum/map_template/shuttle/ert/bounty + suffix = "bounty" + name = "Bounty Hunter ERT Shuttle" diff --git a/code/datums/shuttles/escape_pod.dm b/code/datums/shuttles/escape_pod.dm new file mode 100644 index 00000000000..0b2f35dd9dd --- /dev/null +++ b/code/datums/shuttles/escape_pod.dm @@ -0,0 +1,23 @@ +/datum/map_template/shuttle/escape_pod + port_id = "escape_pod" + who_can_purchase = null + +/datum/map_template/shuttle/escape_pod/default + suffix = "default" + name = "escape pod (Default)" + description = "Base escape pod with 2 tiles of interior space." + +/datum/map_template/shuttle/escape_pod/large + suffix = "large" + name = "escape pod (Large)" + description = "Actually the old Pubbystation monastery shuttle." + +/datum/map_template/shuttle/escape_pod/luxury + suffix = "luxury" + name = "escape pod (Luxury)" + description = "Upgraded escape pod with 3 tiles of interior space." + +/datum/map_template/shuttle/escape_pod/cramped + suffix = "cramped" + name = "escape pod (Cramped)" + description = "Downgraded escape pod that lacks a window and only has one seat, alongside lacking an emergency safe." diff --git a/code/datums/shuttles/ferry.dm b/code/datums/shuttles/ferry.dm new file mode 100644 index 00000000000..e4f540992ff --- /dev/null +++ b/code/datums/shuttles/ferry.dm @@ -0,0 +1,40 @@ +/datum/map_template/shuttle/ferry + port_id = "ferry" + name = "Base Shuttle Template (Ferry)" + +/datum/map_template/shuttle/ferry/base + suffix = "base" + name = "transport ferry" + description = "Standard issue Box/Metastation CentCom ferry." + +/datum/map_template/shuttle/ferry/meat + suffix = "meat" + name = "\"meat\" ferry" + description = "Ahoy! We got all kinds o' meat aft here. Meat from plant people, people who be dark, not in a racist way, just they're dark black. \ + Oh and lizard meat too,mighty popular that is. Definitely 100% fresh, just ask this guy here. *person on meatspike moans* See? \ + Definitely high quality meat, nothin' wrong with it, nothin' added, definitely no zombifyin' reagents!" + admin_notes = "Meat currently contains no zombifying reagents, lizard on meatspike must be spawned in." + +/datum/map_template/shuttle/ferry/lighthouse + suffix = "lighthouse" + name = "The Lighthouse(?)" + description = "*static*... part of a much larger vessel, possibly military in origin. \ + The weapon markings aren't anything we've seen ...static... by almost never the same person twice, possible use of unknown storage ...static... \ + seeing ERT officers onboard, but no missions are on file for ...static...static...annoying jingle... only at The LIGHTHOUSE! \ + Fulfilling needs you didn't even know you had. We've got EVERYTHING, and something else!" + admin_notes = "Currently larger than ferry docking port on Box, will not hit anything, but must be force docked. Trader and ERT bodyguards are not included." + +/datum/map_template/shuttle/ferry/fancy + suffix = "fancy" + name = "fancy transport ferry" + description = "At some point, someone upgraded the ferry to have fancier flooring... and fewer seats." + +/datum/map_template/shuttle/ferry/kilo + suffix = "kilo" + name = "kilo transport ferry" + description = "Standard issue CentCom Ferry for Kilo pattern stations. Includes additional equipment and rechargers." + +/datum/map_template/shuttle/ferry/northstar + suffix = "northstar" + name = "north star transport ferry" + description = "In the very depths of the frontier, you'll need a rugged shuttle capable of delivering crew, this is that." diff --git a/code/datums/shuttles/hunter.dm b/code/datums/shuttles/hunter.dm new file mode 100644 index 00000000000..d8b7f708324 --- /dev/null +++ b/code/datums/shuttles/hunter.dm @@ -0,0 +1,19 @@ +/datum/map_template/shuttle/hunter + port_id = "hunter" + who_can_purchase = null + +/datum/map_template/shuttle/hunter/space_cop + suffix = "space_cop" + name = "Police Spacevan" + +/datum/map_template/shuttle/hunter/russian + suffix = "russian" + name = "Russian Cargo Ship" + +/datum/map_template/shuttle/hunter/bounty + suffix = "bounty" + name = "Bounty Hunter Ship" + +/datum/map_template/shuttle/hunter/psyker + suffix = "psyker" + name = "Psyker Fortune-Telling Ship" diff --git a/code/datums/shuttles/infiltrator.dm b/code/datums/shuttles/infiltrator.dm new file mode 100644 index 00000000000..26f877f996e --- /dev/null +++ b/code/datums/shuttles/infiltrator.dm @@ -0,0 +1,13 @@ +/datum/map_template/shuttle/infiltrator + port_id = "infiltrator" + who_can_purchase = null + +/datum/map_template/shuttle/infiltrator/basic + suffix = "basic" + name = "basic syndicate infiltrator" + description = "Base Syndicate infiltrator, spawned by default for nukeops to use." + +/datum/map_template/shuttle/infiltrator/advanced + suffix = "advanced" + name = "advanced syndicate infiltrator" + description = "A much larger version of the standard Syndicate infiltrator that feels more like Kilostation. Has APCs, but power is not a concern for nuclear operatives. Also comes with atmos!" diff --git a/code/datums/shuttles/mining.dm b/code/datums/shuttles/mining.dm new file mode 100644 index 00000000000..ffd5cb04785 --- /dev/null +++ b/code/datums/shuttles/mining.dm @@ -0,0 +1,62 @@ +// LABOUR SHUTTLES +/datum/map_template/shuttle/labour + port_id = "labour" + who_can_purchase = null + +/datum/map_template/shuttle/labour/box + suffix = "box" + name = "labour shuttle (Box)" + +/datum/map_template/shuttle/labour/generic + suffix = "generic" + name = "labour shuttle (Generic)" + +/datum/map_template/shuttle/labour/delta + suffix = "delta" + name = "labour shuttle (Delta)" + +/datum/map_template/shuttle/labour/kilo + suffix = "kilo" + name = "labour shuttle (Kilo)" + +// MINING SHUTTLES +/datum/map_template/shuttle/mining + port_id = "mining" + who_can_purchase = null + +/datum/map_template/shuttle/mining/box + suffix = "box" + name = "mining shuttle (Box)" + +/datum/map_template/shuttle/mining/delta + suffix = "delta" + name = "mining shuttle (Delta)" + +/datum/map_template/shuttle/mining/kilo + suffix = "kilo" + name = "mining shuttle (Kilo)" + +/datum/map_template/shuttle/mining/large + suffix = "large" + name = "mining shuttle (Large)" + +/datum/map_template/shuttle/mining/northstar + suffix = "northstar" + name = "mining shuttle (North Star)" + +// MINING COMMON SHUTTLES +/datum/map_template/shuttle/mining_common + port_id = "mining_common" + who_can_purchase = null + +/datum/map_template/shuttle/mining_common/meta + suffix = "meta" + name = "lavaland shuttle (Meta)" + +/datum/map_template/shuttle/mining_common/kilo + suffix = "kilo" + name = "lavaland shuttle (Kilo)" + +/datum/map_template/shuttle/mining_common/northstar + suffix = "northstar" + name = "lavaland shuttle (North Star)" diff --git a/code/datums/shuttles/pirate.dm b/code/datums/shuttles/pirate.dm new file mode 100644 index 00000000000..27360a92cf4 --- /dev/null +++ b/code/datums/shuttles/pirate.dm @@ -0,0 +1,31 @@ +/datum/map_template/shuttle/pirate + port_id = "pirate" + who_can_purchase = null + +/datum/map_template/shuttle/pirate/default + suffix = "default" + name = "pirate ship (Default)" + +/datum/map_template/shuttle/pirate/silverscale + suffix = "silverscale" + name = "pirate ship (Silver Scales)" + +/datum/map_template/shuttle/pirate/dutchman + suffix = "dutchman" + name = "pirate ship (Flying Dutchman)" + +/datum/map_template/shuttle/pirate/interdyne + suffix = "interdyne" + name = "pirate ship (Pharmaceutics Biocraft)" + +/datum/map_template/shuttle/pirate/grey + suffix = "grey" + name = "pirate ship (The Space Toolbox)" + +/datum/map_template/shuttle/pirate/irs + suffix = "irs" + name = "pirate ship (Space IRS)" + +/datum/map_template/shuttle/pirate/geode + suffix = "geode" + name = "pirate ship (Lustrous Geode)" diff --git a/code/datums/shuttles/ruin.dm b/code/datums/shuttles/ruin.dm new file mode 100644 index 00000000000..511e2d6ecdc --- /dev/null +++ b/code/datums/shuttles/ruin.dm @@ -0,0 +1,28 @@ +/datum/map_template/shuttle/ruin + port_id = "ruin" + who_can_purchase = null + +/datum/map_template/shuttle/ruin/cyborg_mothership + suffix = "cyborg_mothership" + name = "Cyborg Mothership" + description = "A highly industrialised vessel designed for silicon operation infested with hivebots and space vines." + +/datum/map_template/shuttle/ruin/caravan_victim + suffix = "caravan_victim" + name = "Small Freighter" + description = "Small freight vessel, starts near blacked-out with 3 Syndicate Commandos and 1 Syndicate Stormtrooper, alongside a large hull breach." + +/datum/map_template/shuttle/ruin/pirate_cutter + suffix = "pirate_cutter" + name = "Pirate Cutter" + description = "Small pirate vessel with ballistic turrets. Spawns with 3 pirate mobs, one of which drops an energy cutlass." + +/datum/map_template/shuttle/ruin/syndicate_dropship + suffix = "syndicate_dropship" + name = "Syndicate Dropship" + description = "Light Syndicate vessel with laser turrets. Spawns with a Syndicate mob in the bridge." + +/datum/map_template/shuttle/ruin/syndicate_fighter_shiv + suffix = "syndicate_fighter_shiv" + name = "Syndicate Fighter" + description = "A small Syndicate vessel with exactly one tile of useful interior space and 4 laser turrets. Starts with a Syndicate mob in the pilot's seat, and extremely cramped." diff --git a/code/datums/shuttles/snowdin.dm b/code/datums/shuttles/snowdin.dm new file mode 100644 index 00000000000..bbee38ed991 --- /dev/null +++ b/code/datums/shuttles/snowdin.dm @@ -0,0 +1,11 @@ +/datum/map_template/shuttle/snowdin + port_id = "snowdin" + who_can_purchase = null + +/datum/map_template/shuttle/snowdin/mining + suffix = "mining" + name = "Snowdin Mining Elevator" + +/datum/map_template/shuttle/snowdin/excavation + suffix = "excavation" + name = "Snowdin Excavation Elevator" diff --git a/code/datums/shuttles/starfury.dm b/code/datums/shuttles/starfury.dm new file mode 100644 index 00000000000..510033d6436 --- /dev/null +++ b/code/datums/shuttles/starfury.dm @@ -0,0 +1,20 @@ +/datum/map_template/shuttle/starfury + port_id = "starfury" + who_can_purchase = null + +/datum/map_template/shuttle/starfury/fighter_one + suffix = "fighter1" + name = "SBC Starfury Fighter (1)" + +/datum/map_template/shuttle/starfury/fighter_two + suffix = "fighter2" + name = "SBC Starfury Fighter (2)" + +/datum/map_template/shuttle/starfury/fighter_three + suffix = "fighter3" + name = "SBC Starfury Fighter (3)" + +/datum/map_template/shuttle/starfury/corvette + suffix = "corvette" + name = "SBC Starfury Corvette" + diff --git a/code/datums/shuttles/whiteship.dm b/code/datums/shuttles/whiteship.dm new file mode 100644 index 00000000000..0b48575e057 --- /dev/null +++ b/code/datums/shuttles/whiteship.dm @@ -0,0 +1,58 @@ +/datum/map_template/shuttle/whiteship + port_id = "whiteship" + +/datum/map_template/shuttle/whiteship/box + suffix = "box" + name = "Hospital Ship" + description = "Whiteship with medical supplies. Zombies do not currently spawn corpses, and are not infectious." + +/datum/map_template/shuttle/whiteship/meta + suffix = "meta" + name = "Salvage Ship" + description = "Whiteship that focuses on a large cargo bay that players can build in. Spawns with Syndicate mobs who do not drop corpses and are highly aggressive." + +/datum/map_template/shuttle/whiteship/pubby + suffix = "pubby" + name = "NT Science Vessel" + description = "A small science vessel that uses just one area and is full of angry ants." + +/datum/map_template/shuttle/whiteship/cere + suffix = "cere" + name = "NT Heavy Salvage Vessel" + description = "A beefy, well-rounded salvage vessel with a pair of corpses (miner and engineer) and a Captain's hat. Equipped with solar sails and a PACMAN generator." + +/datum/map_template/shuttle/whiteship/birdshot + suffix = "birdshot" + name = "NT Patrol Bee" + description = "A small patrol vessel with a central corridor connecting all rooms. Features 2 small cargo bays and a brig. Spawns with an agressive and deadly Gelatinous Cube" + +/datum/map_template/shuttle/whiteship/kilo + suffix = "kilo" + name = "NT Mining Shuttle" + description = "A mining vessel with a curious shape starting with a few angry netherworld mobs." + +/datum/map_template/shuttle/whiteship/donut + suffix = "donut" + name = "NT Long-Distance Bluespace Jumper" + description = "A ship hit with an engine blowout, leaving it as a depressurised husk. Has infinite power, although likely to bait people into removing that property. Also the most open out of all the whiteships, and starts with a 25% ripley chance." + +/datum/map_template/shuttle/whiteship/tram + suffix = "tram" + name = "NT Long-Distance Bluespace Freighter" + description = "A long shuttle that starts with Nanotrasen private security corpses. DOES NOT FIT IN THE BASE DOCKS! Does fit in Deep Space's dock though." + +/datum/map_template/shuttle/whiteship/delta + suffix = "delta" + name = "NT Frigate" + description = "A standard whiteship with big spiders onboard. PACMAN generator is not wired and next to main grid cabling, so it requires some work." + +/datum/map_template/shuttle/whiteship/personalshuttle + suffix = "personalshuttle" + name = "Personal Travel Shuttle" + description = "A small vessel with a few zombies and an engineer's corpse that can be looted." + +/datum/map_template/shuttle/whiteship/obelisk + suffix = "obelisk" + name = "Obelisk" + description = "A large research vessel affected by the Cult of Nar'Sie. PACMAN generator is not wired and next to main grid cabling, so it requires some work." + admin_notes = "Not actually an obelisk, has nonsentient cult constructs." diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index 27f498c6cdf..42fcb01344d 100755 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -660,6 +660,7 @@ GLOBAL_VAR_INIT(cops_arrived, FALSE) shuttles += list(list( "name" = shuttle_template.name, "description" = shuttle_template.description, + "occupancy_limit" = shuttle_template.occupancy_limit, "creditCost" = shuttle_template.credit_cost, "emagOnly" = shuttle_template.emag_only, "prerequisites" = shuttle_template.prerequisites, diff --git a/code/game/objects/items/circuitboards/computer_circuitboards.dm b/code/game/objects/items/circuitboards/computer_circuitboards.dm index d6ac5b5b201..f04c6e0058f 100644 --- a/code/game/objects/items/circuitboards/computer_circuitboards.dm +++ b/code/game/objects/items/circuitboards/computer_circuitboards.dm @@ -324,14 +324,6 @@ greyscale_colors = CIRCUIT_COLOR_GENERIC build_path = /obj/machinery/computer/shuttle/white_ship/bridge -/obj/item/circuitboard/computer/white_ship/pod - name = "Salvage Pod" - build_path = /obj/machinery/computer/shuttle/white_ship/pod - -/obj/item/circuitboard/computer/white_ship/pod/recall - name = "Salvage Pod Recall" - build_path = /obj/machinery/computer/shuttle/white_ship/pod/recall - /obj/item/circuitboard/computer/bountypad name = "Bounty Pad" build_path = /obj/machinery/computer/piratepad_control/civilian diff --git a/code/modules/shuttle/white_ship.dm b/code/modules/shuttle/white_ship.dm index e451844f8ce..b222fde787b 100644 --- a/code/modules/shuttle/white_ship.dm +++ b/code/modules/shuttle/white_ship.dm @@ -15,19 +15,6 @@ . = ..() AddComponent(/datum/component/gps, SPACE_SIGNAL_GPSTAG) -/obj/machinery/computer/shuttle/white_ship/pod - name = "Salvage Pod Console" - desc = "Used to control the Salvage Pod." - circuit = /obj/item/circuitboard/computer/white_ship/pod - shuttleId = "whiteship_pod" - possible_destinations = "whiteship_pod_home;whiteship_pod_custom" - -/obj/machinery/computer/shuttle/white_ship/pod/recall - name = "Salvage Pod Recall Console" - desc = "Used to recall the Salvage Pod." - circuit = /obj/item/circuitboard/computer/white_ship/pod/recall - possible_destinations = "whiteship_pod_home" - /obj/machinery/computer/camera_advanced/shuttle_docker/whiteship name = "White Ship Navigation Computer" desc = "Used to designate a precise transit location for the White Ship." @@ -40,17 +27,6 @@ y_offset = -10 designate_time = 100 -/obj/machinery/computer/camera_advanced/shuttle_docker/whiteship/pod - name = "Salvage Pod Navigation Computer" - desc = "Used to designate a precise transit location for the Salvage Pod." - shuttleId = "whiteship_pod" - shuttlePortId = "whiteship_pod_custom" - jump_to_ports = list("whiteship_pod_home" = 1) - view_range = 0 - x_offset = -2 - y_offset = 0 - designate_time = 0 - /obj/machinery/computer/camera_advanced/shuttle_docker/whiteship/Initialize(mapload) . = ..() GLOB.jam_on_wardec += src diff --git a/modular_skyrat/modules/advanced_shuttles/code/shuttles.dm b/modular_skyrat/modules/advanced_shuttles/code/shuttles.dm index 37e9782624a..c6ed394a8e4 100644 --- a/modular_skyrat/modules/advanced_shuttles/code/shuttles.dm +++ b/modular_skyrat/modules/advanced_shuttles/code/shuttles.dm @@ -61,6 +61,7 @@ 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)" diff --git a/modular_skyrat/modules/mapping/code/shuttles.dm b/modular_skyrat/modules/mapping/code/shuttles.dm index 999266ed676..74bfd4f863c 100644 --- a/modular_skyrat/modules/mapping/code/shuttles.dm +++ b/modular_skyrat/modules/mapping/code/shuttles.dm @@ -9,6 +9,7 @@ description = "The perfect shuttle for rectangle enthuasiasts, this long and slender shuttle has been known for it's incredible(Citation Needed) safety rating." admin_notes = "Has airlocks on both sides of the shuttle and will probably ram deltastation's maint wing below medical. Oh well?" credit_cost = CARGO_CRATE_VALUE * 4 + occupancy_limit = 45 /*----- Black Market Shuttle Datum + related code -----*/ /datum/map_template/shuttle/ruin/blackmarket_chevvy diff --git a/tgstation.dme b/tgstation.dme index fb838f9ddf3..a220083b9e7 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -801,7 +801,6 @@ #include "code\datums\request_message.dm" #include "code\datums\ruins.dm" #include "code\datums\saymode.dm" -#include "code\datums\shuttles.dm" #include "code\datums\signals.dm" #include "code\datums\spawners_menu.dm" #include "code\datums\sprite_accessories.dm" @@ -1572,6 +1571,23 @@ #include "code\datums\screentips\atom_context.dm" #include "code\datums\screentips\item_context.dm" #include "code\datums\screentips\screentips.dm" +#include "code\datums\shuttles\_shuttle.dm" +#include "code\datums\shuttles\arrival.dm" +#include "code\datums\shuttles\assault_pod.dm" +#include "code\datums\shuttles\aux_base.dm" +#include "code\datums\shuttles\cargo.dm" +#include "code\datums\shuttles\emergency.dm" +#include "code\datums\shuttles\ert.dm" +#include "code\datums\shuttles\escape_pod.dm" +#include "code\datums\shuttles\ferry.dm" +#include "code\datums\shuttles\hunter.dm" +#include "code\datums\shuttles\infiltrator.dm" +#include "code\datums\shuttles\mining.dm" +#include "code\datums\shuttles\pirate.dm" +#include "code\datums\shuttles\ruin.dm" +#include "code\datums\shuttles\snowdin.dm" +#include "code\datums\shuttles\starfury.dm" +#include "code\datums\shuttles\whiteship.dm" #include "code\datums\skills\_skill.dm" #include "code\datums\skills\cleaning.dm" #include "code\datums\skills\fishing.dm" diff --git a/tgui/packages/tgui/interfaces/CommunicationsConsole.js b/tgui/packages/tgui/interfaces/CommunicationsConsole.js index e9b5e193a46..6e8ac4f2b6d 100644 --- a/tgui/packages/tgui/interfaces/CommunicationsConsole.js +++ b/tgui/packages/tgui/interfaces/CommunicationsConsole.js @@ -193,9 +193,14 @@ const PageBuyingShuttle = (props, context) => { /> }> {shuttle.description} - {shuttle.prerequisites ? ( - Prerequisites: {shuttle.prerequisites} - ) : null} + + Occupancy Limit: {shuttle.occupancy_limit} + + + {shuttle.prerequisites ? ( + Prerequisitces: {shuttle.prerequisites} + ) : null} + ))}