From 3910a546e692e6c1997e7fb3e3d19105533c9dad Mon Sep 17 00:00:00 2001 From: Jack Edge Date: Fri, 27 May 2016 00:38:25 +0100 Subject: [PATCH] Adds admin logging to megafauna movement :cl: coiax rscadd: Admins are now notified if a megafauna uses a wormhole or a shuttle. rscadd: A new Shuttle Manipulator verb has been added for quick access to probably the best and most bugfree feature on /tg/. /:cl: Megafauna adminnotifies on portal TP Standard shuttle names and logging Also ignore .mdme files Muh commit Actually works and stuff --- .gitignore | 4 +++- _maps/map_files/BirdStation/BirdStation.dmm | 2 +- _maps/map_files/DreamStation/dreamstation04.dmm | 1 + .../EfficiencyStation/EfficiencyStation.dmm | 1 + _maps/map_files/MetaStation/MetaStation.dmm | 2 +- _maps/map_files/TgStation/tgstation.2.1.3.dmm | 2 +- _maps/shuttles/emergency_birdboat.dmm | 2 +- _maps/shuttles/emergency_box.dmm | 2 +- _maps/shuttles/emergency_meta.dmm | 2 +- code/datums/shuttles.dm | 6 +++--- code/game/objects/effects/portals.dm | 2 ++ code/modules/admin/admin_verbs.dm | 3 ++- code/modules/admin/verbs/randomverbs.dm | 8 ++++++++ code/modules/mining/equipment_locker.dm | 1 + .../simple_animal/hostile/megafauna/dragon.dm | 2 +- .../simple_animal/hostile/megafauna/megafauna.dm | 10 ++++++++++ code/modules/shuttle/emergency.dm | 2 ++ code/modules/shuttle/manipulator.dm | 9 ++++++--- tools/linux_build.py | 13 ++++++++++--- 19 files changed, 56 insertions(+), 18 deletions(-) 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: