mirror of
https://github.com/yogstation13/Yogstation.git
synced 2025-02-26 09:04:50 +00:00
Adds admin logging to megafauna movement
🆑 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/. /🆑 Megafauna adminnotifies on portal TP Standard shuttle names and logging Also ignore .mdme files Muh commit Actually works and stuff
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -4,6 +4,7 @@
|
||||
/data/**/*
|
||||
|
||||
#Ignore compiled files and other files generated during compilation.
|
||||
*.mdme
|
||||
*.dmb
|
||||
*.rsc
|
||||
*.lk
|
||||
@@ -182,3 +183,4 @@ Temporary Items
|
||||
|
||||
|
||||
|
||||
*.before
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -46217,6 +46217,7 @@
|
||||
name = "Emergency Shuttle Airlock"
|
||||
},
|
||||
/obj/docking_port/mobile/emergency{
|
||||
name = "Box emergency shuttle";
|
||||
dir = 8
|
||||
},
|
||||
/obj/docking_port/stationary{
|
||||
|
||||
@@ -59664,6 +59664,7 @@
|
||||
/area/shuttle/escape)
|
||||
"cgb" = (
|
||||
/obj/docking_port/mobile/emergency{
|
||||
name = "Box emergency shuttle";
|
||||
dir = 2
|
||||
},
|
||||
/obj/docking_port/stationary{
|
||||
|
||||
@@ -99116,7 +99116,7 @@
|
||||
dir = 2;
|
||||
dwidth = 5;
|
||||
height = 14;
|
||||
name = "MetaStation emergency shuttle";
|
||||
name = "Meta emergency shuttle";
|
||||
width = 25
|
||||
},
|
||||
/obj/docking_port/stationary{
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -49,6 +49,8 @@
|
||||
qdel(src)
|
||||
return
|
||||
if (istype(M, /atom/movable))
|
||||
if(istype(M, /mob/living/simple_animal/hostile/megafauna))
|
||||
message_admins("[M] (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[M]'>FLW</A>) has teleported through [src].")
|
||||
do_teleport(M, target, precision) ///You will appear adjacent to the beacon
|
||||
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
if(isliving(target))
|
||||
var/mob/living/L = target
|
||||
if(L.stat == DEAD)
|
||||
usr.visible_message(
|
||||
src.visible_message(
|
||||
"<span class='danger'>[src] devours [L]!</span>",
|
||||
"<span class='userdanger'>You feast on [L], restoring your health!</span>")
|
||||
adjustBruteLoss(-L.maxHealth)
|
||||
|
||||
@@ -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] \
|
||||
(<A HREF='?_src_=holder;adminplayerobservefollow=\ref[src]'>FLW</A>) \
|
||||
moved via shuttle from ([oldloc.x],[oldloc.y],[oldloc.z]) to \
|
||||
([newloc.x],[newloc.y],[newloc.z])")
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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.</span>")
|
||||
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,
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user