diff --git a/.gitignore b/.gitignore
index 281548f93c4..1c09a157dc1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,6 +4,7 @@
/data/**/*
#Ignore compiled files and other files generated during compilation.
+*.mdme
*.dmb
*.rsc
*.lk
@@ -181,4 +182,5 @@ Temporary Items
-*.before
\ No newline at end of file
+*.before
+*.d
diff --git a/_maps/map_files/BirdStation/BirdStation.dmm b/_maps/map_files/BirdStation/BirdStation.dmm
index c15747c8fc1..fead623ae1f 100644
--- a/_maps/map_files/BirdStation/BirdStation.dmm
+++ b/_maps/map_files/BirdStation/BirdStation.dmm
@@ -1807,7 +1807,7 @@
"aIM" = (/obj/machinery/camera/autoname,/turf/open/floor/engine,/area/toxins/xenobiology)
"aIN" = (/obj/structure/chair{dir = 8},/turf/open/floor/plasteel{icon_state = "dark"},/area/shuttle/escape)
"aIO" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/snacks/boiledspaghetti{name = "pasghetti"; pixel_x = 4; pixel_y = 7},/turf/open/floor/plasteel{icon_state = "dark"},/area/shuttle/escape)
-"aIP" = (/obj/machinery/door/airlock/shuttle,/obj/docking_port/mobile/emergency{dheight = 0; dir = 8; dwidth = 6; height = 18; travelDir = 90; width = 14},/obj/docking_port/stationary{dheight = 0; dir = 8; dwidth = 6; height = 18; id = "emergency_home"; name = "emergency evac bay"; width = 14},/turf/open/floor/plasteel/shuttle{icon_state = "shuttlefloor3"},/area/shuttle/escape)
+"aIP" = (/obj/machinery/door/airlock/shuttle,/obj/docking_port/mobile/emergency{dheight = 0; dir = 8; dwidth = 6; height = 18; travelDir = 90; width = 14; name = "Birdboat emergency shuttle"},/obj/docking_port/stationary{dheight = 0; dir = 8; dwidth = 6; height = 18; id = "emergency_home"; name = "emergency evac bay"; width = 14},/turf/open/floor/plasteel/shuttle{icon_state = "shuttlefloor3"},/area/shuttle/escape)
"aIQ" = (/obj/machinery/atmospherics/pipe/simple/cyan/hidden,/turf/open/floor/plasteel,/area/hallway/secondary/exit)
"aIR" = (/obj/machinery/hologram/holopad,/turf/open/floor/plasteel,/area/engine/engineering)
"aIS" = (/obj/structure/cable/cyan{icon_state = "1-4"},/obj/structure/cable/cyan{icon_state = "1-8"},/turf/open/floor/plasteel,/area/hallway/secondary/exit)
diff --git a/_maps/map_files/DreamStation/dreamstation04.dmm b/_maps/map_files/DreamStation/dreamstation04.dmm
index a2c597f1c0a..21e15705007 100644
--- a/_maps/map_files/DreamStation/dreamstation04.dmm
+++ b/_maps/map_files/DreamStation/dreamstation04.dmm
@@ -46217,6 +46217,7 @@
name = "Emergency Shuttle Airlock"
},
/obj/docking_port/mobile/emergency{
+ name = "Box emergency shuttle";
dir = 8
},
/obj/docking_port/stationary{
diff --git a/_maps/map_files/EfficiencyStation/EfficiencyStation.dmm b/_maps/map_files/EfficiencyStation/EfficiencyStation.dmm
index cfece55a966..87f832acec6 100644
--- a/_maps/map_files/EfficiencyStation/EfficiencyStation.dmm
+++ b/_maps/map_files/EfficiencyStation/EfficiencyStation.dmm
@@ -59664,6 +59664,7 @@
/area/shuttle/escape)
"cgb" = (
/obj/docking_port/mobile/emergency{
+ name = "Box emergency shuttle";
dir = 2
},
/obj/docking_port/stationary{
diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm
index d27566ed208..4719d8260e8 100644
--- a/_maps/map_files/MetaStation/MetaStation.dmm
+++ b/_maps/map_files/MetaStation/MetaStation.dmm
@@ -99116,7 +99116,7 @@
dir = 2;
dwidth = 5;
height = 14;
- name = "MetaStation emergency shuttle";
+ name = "Meta emergency shuttle";
width = 25
},
/obj/docking_port/stationary{
diff --git a/_maps/map_files/TgStation/tgstation.2.1.3.dmm b/_maps/map_files/TgStation/tgstation.2.1.3.dmm
index df61d13b779..159e1b29002 100644
--- a/_maps/map_files/TgStation/tgstation.2.1.3.dmm
+++ b/_maps/map_files/TgStation/tgstation.2.1.3.dmm
@@ -2611,7 +2611,7 @@
name = "Emergency Shuttle Airlock"
},
/obj/docking_port/mobile/emergency{
- name = "BoxStation emergency shuttle"
+ name = "Box emergency shuttle"
},
/obj/docking_port/stationary{
dir = 4;
diff --git a/_maps/shuttles/emergency_birdboat.dmm b/_maps/shuttles/emergency_birdboat.dmm
index 80b1bc6fb43..648bc2e9cd8 100644
--- a/_maps/shuttles/emergency_birdboat.dmm
+++ b/_maps/shuttles/emergency_birdboat.dmm
@@ -44,7 +44,7 @@
"aR" = (/obj/machinery/door/airlock/shuttle,/turf/open/floor/plasteel/shuttle{icon_state = "shuttlefloor3"},/area/shuttle/escape)
"aS" = (/obj/structure/chair{dir = 8},/turf/open/floor/plasteel{icon_state = "dark"},/area/shuttle/escape)
"aT" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/snacks/boiledspaghetti{name = "pasghetti";pixel_x = 4;pixel_y = 7},/turf/open/floor/plasteel{icon_state = "dark"},/area/shuttle/escape)
-"aU" = (/obj/machinery/door/airlock/shuttle,/obj/docking_port/mobile/emergency{dheight = 0;dir = 8;dwidth = 6;height = 18;travelDir = 90;width = 14;timid = 1},/turf/open/floor/plasteel/shuttle{icon_state = "shuttlefloor3"},/area/shuttle/escape)
+"aU" = (/obj/machinery/door/airlock/shuttle,/obj/docking_port/mobile/emergency{dheight = 0;dir = 8;dwidth = 6;height = 18;travelDir = 90;width = 14;timid = 1;name = "Birdboat emergency escape shuttle"},/turf/open/floor/plasteel/shuttle{icon_state = "shuttlefloor3"},/area/shuttle/escape)
"aV" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/snacks/chocolatebar,/turf/open/floor/plasteel{icon_state = "dark"},/area/shuttle/escape)
"aW" = (/obj/structure/chair{dir = 1},/obj/structure/window/reinforced,/turf/open/floor/plasteel{icon_state = "dark"},/area/shuttle/escape)
"aX" = (/turf/closed/wall/shuttle{icon_state = "swall2";dir = 2},/area/shuttle/escape)
diff --git a/_maps/shuttles/emergency_box.dmm b/_maps/shuttles/emergency_box.dmm
index 159e7b94fd1..a3698b1fe04 100644
--- a/_maps/shuttles/emergency_box.dmm
+++ b/_maps/shuttles/emergency_box.dmm
@@ -39,7 +39,7 @@
"aM" = (/obj/structure/table,/turf/open/floor/plasteel/shuttle{icon_state = "shuttlefloor3"},/area/shuttle/escape)
"aN" = (/turf/closed/wall/shuttle{icon_state = "swall7";dir = 2},/area/shuttle/escape)
"aO" = (/turf/closed/wall/shuttle{icon_state = "swallc4";dir = 2},/area/shuttle/escape)
-"aP" = (/obj/machinery/door/airlock/shuttle{name = "Emergency Shuttle Airlock"},/obj/docking_port/mobile/emergency{timid = 1},/turf/open/floor/plating,/area/shuttle/escape)
+"aP" = (/obj/machinery/door/airlock/shuttle{name = "Emergency Shuttle Airlock"},/obj/docking_port/mobile/emergency{timid = 1; name = "Box emergency shuttle"},/turf/open/floor/plating,/area/shuttle/escape)
"aQ" = (/obj/structure/extinguisher_cabinet{pixel_x = -5;pixel_y = 30},/turf/open/floor/plasteel/shuttle,/area/shuttle/escape)
"aR" = (/obj/structure/extinguisher_cabinet{pixel_x = 27;pixel_y = 0},/turf/open/floor/plasteel/shuttle,/area/shuttle/escape)
"aS" = (/obj/structure/chair{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plasteel/shuttle{icon_state = "shuttlefloor3"},/area/shuttle/escape)
diff --git a/_maps/shuttles/emergency_meta.dmm b/_maps/shuttles/emergency_meta.dmm
index 948f36a7b5e..ecbbaa8d9e9 100644
--- a/_maps/shuttles/emergency_meta.dmm
+++ b/_maps/shuttles/emergency_meta.dmm
@@ -5,7 +5,7 @@
"ae" = (/turf/closed/wall/shuttle{icon_state = "swall12";dir = 2},/area/shuttle/escape)
"af" = (/obj/machinery/door/airlock/shuttle{name = "Emergency Shuttle Airlock"},/turf/open/floor/plasteel/shuttle,/area/shuttle/escape)
"ag" = (/obj/structure/sign/nosmoking_2,/turf/closed/wall/shuttle{icon_state = "swall12";dir = 2},/area/shuttle/escape)
-"ah" = (/obj/machinery/door/airlock/shuttle{name = "Emergency Shuttle Airlock"},/obj/docking_port/mobile/emergency{dir = 2;dwidth = 5;height = 14;name = "MetaStation emergency shuttle";width = 25;timid = 1},/turf/open/floor/plasteel/shuttle,/area/shuttle/escape)
+"ah" = (/obj/machinery/door/airlock/shuttle{name = "Emergency Shuttle Airlock"},/obj/docking_port/mobile/emergency{dir = 2;dwidth = 5;height = 14;name = "Meta emergency shuttle";width = 25;timid = 1},/turf/open/floor/plasteel/shuttle,/area/shuttle/escape)
"ai" = (/turf/closed/wall/shuttle{icon_state = "swall_s10";dir = 2},/area/shuttle/escape)
"aj" = (/turf/closed/wall/shuttle{tag = "icon-wall3 (NORTHWEST)";icon_state = "wall3";dir = 9},/area/shuttle/escape)
"ak" = (/turf/closed/wall/shuttle{icon_state = "swall3";dir = 2},/area/shuttle/escape)
diff --git a/code/datums/shuttles.dm b/code/datums/shuttles.dm
index 77afc9e5f36..f7abb4d5944 100644
--- a/code/datums/shuttles.dm
+++ b/code/datums/shuttles.dm
@@ -48,11 +48,11 @@
/datum/map_template/shuttle/emergency/birdboat
suffix = "birdboat"
- name = "emergency shuttle (Birdboat)"
+ name = "Birdboat emergency shuttle"
/datum/map_template/shuttle/emergency/box
suffix = "box"
- name = "emergency shuttle (Box)"
+ name = "Box emergency shuttle"
/datum/map_template/shuttle/emergency/clown
suffix = "clown"
@@ -85,7 +85,7 @@
/datum/map_template/shuttle/emergency/meta
suffix = "meta"
- name = "emergency shuttle (Metastation)"
+ name = "Meta emergency shuttle"
/datum/map_template/shuttle/emergency/narnar
suffix = "narnar"
diff --git a/code/game/objects/effects/portals.dm b/code/game/objects/effects/portals.dm
index e616299f688..c44eb8d5356 100644
--- a/code/game/objects/effects/portals.dm
+++ b/code/game/objects/effects/portals.dm
@@ -49,6 +49,8 @@
qdel(src)
return
if (istype(M, /atom/movable))
+ if(istype(M, /mob/living/simple_animal/hostile/megafauna))
+ message_admins("[M] (FLW) has teleported through [src].")
do_teleport(M, target, precision) ///You will appear adjacent to the beacon
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index 11c21972abb..b9d460d430a 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -65,7 +65,8 @@ var/list/admin_verbs_admin = list(
/client/proc/toggle_AI_interact, /*toggle admin ability to interact with machines as an AI*/
/client/proc/customiseSNPC, /* Customise any interactive crewmembers in the world */
/client/proc/resetSNPC, /* Resets any interactive crewmembers in the world */
- /client/proc/toggleSNPC /* Toggles an npc's processing mode */
+ /client/proc/toggleSNPC, /* Toggles an npc's processing mode */
+ /client/proc/open_shuttle_manipulator /* Opens shuttle manipulator UI */
)
var/list/admin_verbs_ban = list(
/client/proc/unban_panel,
diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm
index 6f4d7247a9e..482a450a832 100644
--- a/code/modules/admin/verbs/randomverbs.dm
+++ b/code/modules/admin/verbs/randomverbs.dm
@@ -983,3 +983,11 @@ var/list/datum/outfit/custom_outfits = list() //Admin created outfits
message_admins("[key_name_admin(usr)] toggled their admin antag HUD [adding_hud ? "ON" : "OFF"].")
log_admin("[key_name(usr)] toggled their admin antag HUD [adding_hud ? "ON" : "OFF"].")
feedback_add_details("admin_verb","TAH") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
+
+/client/proc/open_shuttle_manipulator()
+ set category = "Admin"
+ set name = "Shuttle Manipulator"
+ set desc = "Opens the shuttle manipulator UI."
+
+ for(var/obj/machinery/shuttle_manipulator/M in machines)
+ M.ui_interact(usr)
diff --git a/code/modules/mining/equipment_locker.dm b/code/modules/mining/equipment_locker.dm
index aefb61aae1e..74d5ca7f9f0 100644
--- a/code/modules/mining/equipment_locker.dm
+++ b/code/modules/mining/equipment_locker.dm
@@ -582,6 +582,7 @@
/obj/effect/portal/wormhole/jaunt_tunnel/teleport(atom/movable/M)
if(istype(M, /obj/effect))
return
+
if(istype(M, /atom/movable))
if(do_teleport(M, target, 6))
// KERPLUNK
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm
index d71a079b733..715b9350ba0 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm
@@ -56,7 +56,7 @@
if(isliving(target))
var/mob/living/L = target
if(L.stat == DEAD)
- usr.visible_message(
+ src.visible_message(
"[src] devours [L]!",
"You feast on [L], restoring your health!")
adjustBruteLoss(-L.maxHealth)
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm
index 09c51bde9be..0ec7ad5f7cd 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm
@@ -33,3 +33,13 @@
else
..()
+/mob/living/simple_animal/hostile/megafauna/onShuttleMove()
+ var/turf/oldloc = loc
+ . = ..()
+ if(!.)
+ return
+ var/turf/newloc = loc
+ message_admins("Megafauna [src] \
+ (FLW) \
+ moved via shuttle from ([oldloc.x],[oldloc.y],[oldloc.z]) to \
+ ([newloc.x],[newloc.y],[newloc.z])")
diff --git a/code/modules/shuttle/emergency.dm b/code/modules/shuttle/emergency.dm
index 26b754d31f5..f5134d2e4a4 100644
--- a/code/modules/shuttle/emergency.dm
+++ b/code/modules/shuttle/emergency.dm
@@ -276,10 +276,12 @@
timer = world.time
send2irc("Server", "The Emergency Shuttle has docked with the station.")
priority_announce("The Emergency Shuttle has docked with the station. You have [timeLeft(600)] minutes to board the Emergency Shuttle.", null, 'sound/AI/shuttledock.ogg', "Priority")
+ feedback_add_details("emergency_shuttle", src.name)
//Gangs only have one attempt left if the shuttle has docked with the station to prevent suffering from dominator delays
for(var/datum/gang/G in ticker.mode.gangs)
if(isnum(G.dom_timer))
+
G.dom_attempts = 0
else
G.dom_attempts = min(1,G.dom_attempts)
diff --git a/code/modules/shuttle/manipulator.dm b/code/modules/shuttle/manipulator.dm
index d30cc49f381..dd59412b055 100644
--- a/code/modules/shuttle/manipulator.dm
+++ b/code/modules/shuttle/manipulator.dm
@@ -156,9 +156,14 @@
else if(S)
. = TRUE
// If successful, returns the mobile docking port
- var/mdp = action_load(S)
+ var/obj/docking_port/mobile/mdp = action_load(S)
if(mdp)
user.forceMove(get_turf(mdp))
+ message_admins("[key_name_admin(usr)] loaded [mdp] \
+ with the shuttle manipulator.")
+ log_admin("[key_name(usr)] loaded [mdp] with the \
+ shuttle manipulator.")
+ feedback_add_details("shuttle_manipulator", mdp.name)
update_icon()
@@ -219,8 +224,6 @@
existing_shuttle = null
selected = null
- return preview_shuttle
-
/obj/machinery/shuttle_manipulator/proc/load_template(
datum/map_template/shuttle/S)
// load shuttle template, centred at shuttle import landmark,
diff --git a/tools/linux_build.py b/tools/linux_build.py
index 00ab4698c69..ef83210e217 100755
--- a/tools/linux_build.py
+++ b/tools/linux_build.py
@@ -26,8 +26,14 @@ def stage1():
wait(p)
play("sound/misc/compiler-stage1.ogg")
-def stage2():
- p = subprocess.Popen("DreamMaker tgstation.dme", shell=True)
+def stage2(map):
+ if map:
+ txt = "-M{}".format(map)
+ else:
+ txt = ''
+ args = "bash dm.sh {} tgstation.dme".format(txt)
+ print(args)
+ p = subprocess.Popen(args, shell=True)
wait(p)
def stage3():
@@ -56,6 +62,7 @@ def main():
parser = argparse.ArgumentParser()
parser.add_argument('-s','---stage',default=1,type=int)
parser.add_argument('--only',action='store_true')
+ parser.add_argument('-m','--map',type=str)
args = parser.parse_args()
stage = args.stage
assert stage in (1,2,3)
@@ -64,7 +71,7 @@ def main():
if not args.only:
stage = 2
if stage == 2:
- stage2()
+ stage2(args.map)
if not args.only:
stage = 3
if stage == 3: