diff --git a/_maps/shuttles/emergency_luxury.dmm b/_maps/shuttles/emergency_luxury.dmm
new file mode 100644
index 00000000000..e56f3419356
--- /dev/null
+++ b/_maps/shuttles/emergency_luxury.dmm
@@ -0,0 +1,77 @@
+"aa" = (/turf/open/space,/area/space)
+"ab" = (/turf/closed/indestructible/riveted/uranium,/area/shuttle/escape)
+"ac" = (/obj/machinery/door/airlock/external,/turf/open/floor/plating{tag = "icon-wood-broken2"; icon_state = "wood-broken2"},/area/shuttle/escape)
+"ad" = (/obj/machinery/door/airlock/gold,/obj/effect/forcefield/luxury_shuttle{name = "Ticket Booth"},/turf/open/floor/mineral/gold,/area/shuttle/escape)
+"ae" = (/obj/docking_port/mobile/emergency{dir = 2; dwidth = 5; height = 14; name = "Luxury emergency shuttle"; timid = 1; width = 25},/obj/machinery/door/airlock/gold,/obj/effect/forcefield/luxury_shuttle{name = "Ticket Booth"},/turf/open/floor/mineral/gold,/area/shuttle/escape)
+"af" = (/turf/open/floor/plating{tag = "icon-wood-broken3"; icon_state = "wood-broken3"},/area/shuttle/escape)
+"ag" = (/turf/open/floor/plating{tag = "icon-wood"; icon_state = "wood"},/area/shuttle/escape)
+"ah" = (/turf/open/floor/plating{tag = "icon-wood-broken"; icon_state = "wood-broken"},/area/shuttle/escape)
+"ai" = (/turf/open/floor/plating{tag = "icon-wood-broken5"; icon_state = "wood-broken5"},/area/shuttle/escape)
+"aj" = (/turf/open/floor/mineral/gold,/area/shuttle/escape)
+"ak" = (/obj/item/weapon/twohanded/required/kirbyplants{tag = "icon-plant-10"; icon_state = "plant-10"},/turf/open/floor/mineral/gold,/area/shuttle/escape)
+"al" = (/obj/structure/mirror{pixel_y = 32},/turf/open/floor/mineral/gold,/area/shuttle/escape)
+"am" = (/turf/open/floor/plating{tag = "icon-wood-broken7"; icon_state = "wood-broken7"},/area/shuttle/escape)
+"an" = (/turf/open/floor/plating{tag = "icon-wood-broken2"; icon_state = "wood-broken2"},/area/shuttle/escape)
+"ao" = (/turf/open/floor/plating{tag = "icon-wood-broken6"; icon_state = "wood-broken6"},/area/shuttle/escape)
+"ap" = (/obj/structure/toilet{dir = 4; icon_state = "toilet00"; tag = "icon-toilet00 (NORTH)"},/turf/open/floor/mineral/gold,/area/shuttle/escape)
+"aq" = (/obj/machinery/door/airlock/gold,/turf/open/floor/mineral/gold,/area/shuttle/escape)
+"ar" = (/obj/structure/shuttle/engine/propulsion{dir = 4},/turf/open/floor/plating/airless,/area/shuttle/escape)
+"as" = (/obj/structure/shuttle/engine/heater{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plating/airless,/area/shuttle/escape)
+"at" = (/turf/open/floor/carpet,/area/shuttle/escape)
+"au" = (/obj/structure/chair/comfy,/turf/open/floor/carpet,/area/shuttle/escape)
+"av" = (/obj/structure/chair/comfy{tag = "icon-comfychair (EAST)"; icon_state = "comfychair"; dir = 4},/turf/open/floor/mineral/gold,/area/shuttle/escape)
+"aw" = (/obj/machinery/computer/communications,/turf/open/floor/mineral/gold,/area/shuttle/escape)
+"ax" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/meatballspaghetti,/turf/open/floor/carpet,/area/shuttle/escape)
+"ay" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/notasandwich,/turf/open/floor/carpet,/area/shuttle/escape)
+"az" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/pastatomato,/turf/open/floor/carpet,/area/shuttle/escape)
+"aA" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/kebab/tofu,/turf/open/floor/carpet,/area/shuttle/escape)
+"aB" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/honkdae,/turf/open/floor/carpet,/area/shuttle/escape)
+"aC" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/enchiladas,/turf/open/floor/carpet,/area/shuttle/escape)
+"aD" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/candiedapple,/turf/open/floor/carpet,/area/shuttle/escape)
+"aE" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/burger/baconburger,/turf/open/floor/carpet,/area/shuttle/escape)
+"aF" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/benedict,/turf/open/floor/carpet,/area/shuttle/escape)
+"aG" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/cakeslice/chocolate,/turf/open/floor/carpet,/area/shuttle/escape)
+"aH" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/chowmein,/turf/open/floor/carpet,/area/shuttle/escape)
+"aI" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/dulcedebatataslice,/turf/open/floor/carpet,/area/shuttle/escape)
+"aJ" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/salad/validsalad,/turf/open/floor/carpet,/area/shuttle/escape)
+"aK" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/carneburrito,/turf/open/floor/carpet,/area/shuttle/escape)
+"aL" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/chawanmushi,/turf/open/floor/carpet,/area/shuttle/escape)
+"aM" = (/obj/machinery/computer/emergency_shuttle,/turf/open/floor/mineral/gold,/area/shuttle/escape)
+"aN" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/melonfruitbowl,/turf/open/floor/carpet,/area/shuttle/escape)
+"aO" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/khachapuri,/turf/open/floor/carpet,/area/shuttle/escape)
+"aP" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/grilledcheese,/turf/open/floor/carpet,/area/shuttle/escape)
+"aQ" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/cherry,/turf/open/floor/carpet,/area/shuttle/escape)
+"aR" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/honeybun,/turf/open/floor/carpet,/area/shuttle/escape)
+"aS" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/eggplantparm,/turf/open/floor/carpet,/area/shuttle/escape)
+"aT" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/copypasta,/turf/open/floor/carpet,/area/shuttle/escape)
+"aU" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/bearsteak,/turf/open/floor/carpet,/area/shuttle/escape)
+"aV" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/boiledspaghetti,/turf/open/floor/carpet,/area/shuttle/escape)
+"aW" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/cherrycupcake,/turf/open/floor/carpet,/area/shuttle/escape)
+"aX" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/customizable/pizza,/turf/open/floor/carpet,/area/shuttle/escape)
+"aY" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/hotdog,/turf/open/floor/carpet,/area/shuttle/escape)
+"aZ" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/pie/grapetart,/turf/open/floor/carpet,/area/shuttle/escape)
+"ba" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/burger/superbite,/turf/open/floor/carpet,/area/shuttle/escape)
+"bb" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/cakeslice/slimecake,/turf/open/floor/carpet,/area/shuttle/escape)
+"bc" = (/obj/machinery/computer/station_alert,/turf/open/floor/mineral/gold,/area/shuttle/escape)
+"bd" = (/obj/structure/chair/comfy{tag = "icon-comfychair (NORTH)"; icon_state = "comfychair"; dir = 1},/turf/open/floor/carpet,/area/shuttle/escape)
+"be" = (/obj/machinery/computer/crew,/turf/open/floor/mineral/gold,/area/shuttle/escape)
+"bf" = (/obj/machinery/sleeper{tag = "icon-sleeper-open (EAST)"; icon_state = "sleeper-open"; dir = 4},/turf/open/floor/mineral/gold,/area/shuttle/escape)
+"bg" = (/obj/item/weapon/twohanded/required/kirbyplants{icon_state = "plant-21"; layer = 4.1; pixel_x = -3; pixel_y = 3},/turf/open/floor/mineral/gold,/area/shuttle/escape)
+"bh" = (/turf/open/floor/plating/beach/coastline_b,/area/shuttle/escape)
+
+(1,1,1) = {"
+aaabababababababababacababadabababababaeababababab
+ababafagagagahagagaiagabajajajajajajajajabakajalab
+abamaganagagagagagaoagabajajajajajajajajabapajajab
+ababababababababababababajajajajajajajajabababaqab
+abababakajajajajajajajajajajajajajajajajajajajajab
+arasabajatauauauauauauauauauauauauauauauatajavawab
+arasabajataxayazaAaBaCaDaEaFaGaHaIaJaKaLatajavaMab
+arasabajataNaOaPaQaRaSaTaUaVaWaXaYaZbabbatajavbcab
+arasabajatbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdatajavbeab
+abababajajajajajajajajajajajajajajajajajajajajajab
+abbfajajajajajajajajajajajajajajajajajajajajajajab
+abbfajajajbgbhbhbhbhbhbhbhbhbhbhbhbhbhbgajajajajab
+abababakajbgbhbhbhbhbhbhbhbhbhbhbhbhbhbgajajajakab
+aaabababababababababababababababababababababababab
+"}
diff --git a/code/datums/shuttles.dm b/code/datums/shuttles.dm
index e935bb70ecb..fad7fa23915 100644
--- a/code/datums/shuttles.dm
+++ b/code/datums/shuttles.dm
@@ -42,7 +42,8 @@
/datum/map_template/shuttle/emergency/asteroid
suffix = "asteroid"
- name = "Asteroid emergency shuttle"
+ 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 = 3000
/datum/map_template/shuttle/emergency/bar
@@ -58,19 +59,29 @@
/datum/map_template/shuttle/emergency/meteor
suffix = "meteor"
- name = "an asteroid with engines strapped to it"
+ name = "An Asteroid With Engines Strapped To It"
description = "A hollowed out asteroid with engines strapped to it. Due to its size and difficulty in steering it, this shuttle may damage the docking area."
admin_notes = "This shuttle will likely crush escape, killing anyone there."
credit_cost = -5000
+/datum/map_template/shuttle/emergency/luxury
+ suffix = "luxury"
+ name = "Luxury Shuttle"
+ description = "A luxurious golden shuttle complete with an indoor swimming pool. Each crewmember wishing to board must bring 500 credits, payable in cash and mineral coin."
+ admin_notes = "Due to the limited space for non paying crew, this shuttle may cause a riot."
+ credit_cost = 10000
+
/datum/map_template/shuttle/emergency/birdboat
suffix = "birdboat"
- name = "Birdboat emergency shuttle"
+ 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 = 1000
/datum/map_template/shuttle/emergency/box
suffix = "box"
- name = "Box emergency shuttle"
+ name = "Box Station Emergency Shuttle"
credit_cost = 2000
+ description = "The gold standard in emergency exfiltration, this tried and true design is equipped with everything the crew needs for a safe flight home."
/datum/map_template/shuttle/emergency/clown
suffix = "clown"
@@ -105,13 +116,15 @@
/datum/map_template/shuttle/emergency/meta
suffix = "meta"
- name = "Meta emergency shuttle"
+ name = "Meta Station Emergency Shuttle"
credit_cost = 4000
+ description = "A fairly standard shuttle, though larger and slightly better equipped than the Box Station variant."
/datum/map_template/shuttle/emergency/mini
suffix = "mini"
name = "Ministation emergency shuttle"
credit_cost = 1000
+ description = "Despite it's namesake, this shuttle is actually only slightly smaller than standard, and still complete with a brig and medbay."
/datum/map_template/shuttle/emergency/narnar
suffix = "narnar"
@@ -126,7 +139,9 @@
/datum/map_template/shuttle/emergency/pubby
suffix = "pubby"
- name = "Pubby emergency shuttle"
+ name = "Pubby Station Emergency Shuttle"
+ description = "A small, but feature complete shuttle. It boasts a card table to keep crew members occupied on the long flight home."
+ credit_cost = 1000
/datum/map_template/shuttle/emergency/supermatter
suffix = "supermatter"
@@ -158,7 +173,7 @@
/datum/map_template/shuttle/emergency/goon
suffix = "goon"
- name = "NES Port"
+ name = "NES Port Shuttle"
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."
diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm
index fb06b49ed07..7b8b3276bbf 100644
--- a/code/game/machinery/computer/communications.dm
+++ b/code/game/machinery/computer/communications.dm
@@ -527,7 +527,7 @@ var/const/CALL_SHUTTLE_REASON_LENGTH = 12
if(S.credit_cost < INFINITY)
dat += "[S.name] | [S.credit_cost] Credits
"
dat += "[S.description]
"
- dat += "(Purchase)
"
+ dat += "(Purchase)
"
dat += "
\[ [(src.state != STATE_DEFAULT) ? "Main Menu | " : ""]Close \]"
diff --git a/code/modules/admin/fun_balloon.dm b/code/modules/admin/fun_balloon.dm
index a63ad829f7d..ad5190d9bf4 100644
--- a/code/modules/admin/fun_balloon.dm
+++ b/code/modules/admin/fun_balloon.dm
@@ -98,4 +98,49 @@
var/new_dir = turn(SM.dir, 180)
SM.loc = get_ranged_target_turf(SM, new_dir, rand(3,15))
break
- qdel(src)
\ No newline at end of file
+ qdel(src)
+
+
+
+//meteor/asteroid shuttle slamming into the station
+
+/obj/effect/station_crash
+ name = "station crash"
+ desc = "With no survivors!"
+ icon = 'icons/obj/weapons.dmi'
+ icon_state = "syndballoon"
+ anchored = TRUE
+
+
+//Luxury Shuttle Blockers
+
+/obj/effect/forcefield/luxury_shuttle
+ var/threshhold = 500
+ var/list/approved_passengers = list()
+
+/obj/effect/forcefield/luxury_shuttle/CanPass(atom/movable/mover, turf/target, height=0)
+ if(mover in approved_passengers)
+ return 1
+
+ if(!isliving(mover)) //No stowaways
+ return 0
+
+ var/total_cash = 0
+ var/list/counted_money = list()
+
+ for(var/obj/item/weapon/coin/C in mover)
+ total_cash += C.value
+ counted_money += C
+ for(var/obj/item/stack/spacecash/S in mover)
+ total_cash += S.value
+ counted_money += S
+
+ if(total_cash >= threshhold)
+ for(var/obj/I in counted_money)
+ qdel()
+ mover << "Thank you for your payment! Please enjoy your flight."
+ approved_passengers += mover
+ return 1
+ else
+ mover << "You don't have enough money to enter the main shuttle. You'll have to fly coach."
+ return 0