- A change to 'who' for admins, which now displays more information. Amongst these is the ckey of the person, the name of the character they're playing, their status as alive, unconscious, dead or observing (joined as observer) and whether they are an antagonist or not. Along with this you get an adminhelp-style (?) link which displays further information about the person. While this might not be considered a 'bugfix' it is necessary due to the removal of the tensioner panel as it gives a quick overview of how many people are alive and how many are dead.

- Removed the obnoxious message blue and red colors which was shown when hydroponics trays were overran by weeds. The message is now blue and has a dot at the end, instead of an exclamation point.
- Made '/obj/effect/debugging/marker' immovable. It was silly that it reacted to air movement.
- Standardized mapping.dm
- Removed the round-end condition of "Everyone is dead! Resetting in 30 seconds!"

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4415 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
baloh.matevz
2012-08-15 00:24:24 +00:00
parent 614c202bc6
commit 5a3b9d7a24
6 changed files with 190 additions and 191 deletions

View File

@@ -12,4 +12,5 @@
// var/mob/corpse = null // observer mode //we use mind.current as the 'corpse' now // var/mob/corpse = null // observer mode //we use mind.current as the 'corpse' now
var/can_reenter_corpse var/can_reenter_corpse
var/datum/hud/living/carbon/hud = null // hud var/datum/hud/living/carbon/hud = null // hud
var/bootime = 0 var/bootime = 0
var/started_as_observer //This variable is set to 1 when you enter the game as an observer. If you died in the game and are a ghsot - this will remain as null. Note that this is not a reliable way to determine if admins started as observers, since they change mobs a lot.

View File

@@ -218,9 +218,8 @@ obj/machinery/hydroponics/proc/weedinvasion() // If a weed growth is sufficient,
src.harvest = 0 src.harvest = 0
src.weedlevel = 0 // Reset src.weedlevel = 0 // Reset
src.pestlevel = 0 // Reset src.pestlevel = 0 // Reset
spawn(5) // Wait a while
src.updateicon() src.updateicon()
src.visible_message("\red[src] has been overtaken by \blue [src.myseed.plantname]!") src.visible_message("\blue [src] has been overtaken by [src.myseed.plantname].")
return return

View File

@@ -26,10 +26,32 @@ proc/get_all_admin_clients()
var/list/peeps = list() var/list/peeps = list()
for (var/client/C in client_list) for (var/client/C in client_list)
var/entry = ""
if (C.stealth && !usr.client.holder) if (C.stealth && !usr.client.holder)
peeps += "\t[C.fakekey]" entry += "\t[C.fakekey]"
else else
peeps += "\t[C.key][C.stealth ? " <i>(as [C.fakekey])</i>" : ""]" entry += "\t[C.key][C.stealth ? " <i>(as [C.fakekey])</i>" : ""]"
if(usr.client.holder)
var/mob/M = C.mob
entry += " - Playing as [M.real_name]"
switch(M.stat)
if(UNCONSCIOUS)
entry += " - <font color='darkgray'><b>Unconscious</b></font>"
if(DEAD)
if(isobserver(M))
var/mob/dead/observer/O = M
if(O.started_as_observer)
entry += " - <font color='gray'>Observing</font>"
else
entry += " - <font color='black'><b>DEAD</b></font>"
else
entry += " - <font color='black'><b>DEAD</b></font>"
if(is_special_character(C.mob))
entry += " - <b><font color='red'>Antagonist</font></b>"
entry += " (<A HREF='?src=\ref[src.client.holder];adminmoreinfo=\ref[M]'>?</A>)"
peeps += entry
peeps = sortList(peeps) peeps = sortList(peeps)

View File

@@ -34,183 +34,184 @@ var/intercom_range_display_status = 0
icon = 'icons/turf/areas.dmi' icon = 'icons/turf/areas.dmi'
icon_state = "yellow" icon_state = "yellow"
/client/proc /obj/effect/debugging/marker/Move()
return 0
do_not_use_these() /client/proc/do_not_use_these()
set category = "Mapping" set category = "Mapping"
set name = "-None of these are for ingame use!!" set name = "-None of these are for ingame use!!"
..() ..()
camera_view() /client/proc/camera_view()
set category = "Mapping" set category = "Mapping"
set name = "Camera Range Display" set name = "Camera Range Display"
if(camera_range_display_status) if(camera_range_display_status)
camera_range_display_status = 0 camera_range_display_status = 0
else else
camera_range_display_status = 1 camera_range_display_status = 1
for(var/obj/effect/debugging/camera_range/C in world) for(var/obj/effect/debugging/camera_range/C in world)
del(C) del(C)
if(camera_range_display_status)
for(var/obj/machinery/camera/C in Cameras)
new/obj/effect/debugging/camera_range(C.loc)
feedback_add_details("admin_verb","mCRD") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
sec_camera_report()
set category = "Mapping"
set name = "Camera Report"
if(!master_controller)
alert(usr,"Master_controller not found.","Sec Camera Report")
return 0
var/list/obj/machinery/camera/CL = list()
if(camera_range_display_status)
for(var/obj/machinery/camera/C in Cameras) for(var/obj/machinery/camera/C in Cameras)
CL += C new/obj/effect/debugging/camera_range(C.loc)
feedback_add_details("admin_verb","mCRD") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
var/output = {"<B>CAMERA ANNOMALITIES REPORT</B><HR>
/client/proc/sec_camera_report()
set category = "Mapping"
set name = "Camera Report"
if(!master_controller)
alert(usr,"Master_controller not found.","Sec Camera Report")
return 0
var/list/obj/machinery/camera/CL = list()
for(var/obj/machinery/camera/C in Cameras)
CL += C
var/output = {"<B>CAMERA ANNOMALITIES REPORT</B><HR>
<B>The following annomalities have been detected. The ones in red need immediate attention: Some of those in black may be intentional.</B><BR><ul>"} <B>The following annomalities have been detected. The ones in red need immediate attention: Some of those in black may be intentional.</B><BR><ul>"}
for(var/obj/machinery/camera/C1 in CL) for(var/obj/machinery/camera/C1 in CL)
for(var/obj/machinery/camera/C2 in CL) for(var/obj/machinery/camera/C2 in CL)
if(C1 != C2) if(C1 != C2)
if(C1.c_tag == C2.c_tag) if(C1.c_tag == C2.c_tag)
output += "<li><font color='red'>c_tag match for sec. cameras at \[[C1.x], [C1.y], [C1.z]\] ([C1.loc.loc]) and \[[C2.x], [C2.y], [C2.z]\] ([C2.loc.loc]) - c_tag is [C1.c_tag]</font></li>" output += "<li><font color='red'>c_tag match for sec. cameras at \[[C1.x], [C1.y], [C1.z]\] ([C1.loc.loc]) and \[[C2.x], [C2.y], [C2.z]\] ([C2.loc.loc]) - c_tag is [C1.c_tag]</font></li>"
if(C1.loc == C2.loc && C1.dir == C2.dir && C1.pixel_x == C2.pixel_x && C1.pixel_y == C2.pixel_y) if(C1.loc == C2.loc && C1.dir == C2.dir && C1.pixel_x == C2.pixel_x && C1.pixel_y == C2.pixel_y)
output += "<li><font color='red'>FULLY overlapping sec. cameras at \[[C1.x], [C1.y], [C1.z]\] ([C1.loc.loc]) Networks: [C1.network] and [C2.network]</font></li>" output += "<li><font color='red'>FULLY overlapping sec. cameras at \[[C1.x], [C1.y], [C1.z]\] ([C1.loc.loc]) Networks: [C1.network] and [C2.network]</font></li>"
if(C1.loc == C2.loc) if(C1.loc == C2.loc)
output += "<li>overlapping sec. cameras at \[[C1.x], [C1.y], [C1.z]\] ([C1.loc.loc]) Networks: [C1.network] and [C2.network]</font></li>" output += "<li>overlapping sec. cameras at \[[C1.x], [C1.y], [C1.z]\] ([C1.loc.loc]) Networks: [C1.network] and [C2.network]</font></li>"
var/turf/T = get_step(C1,turn(C1.dir,180)) var/turf/T = get_step(C1,turn(C1.dir,180))
if(!T || !isturf(T) || !T.density ) if(!T || !isturf(T) || !T.density )
if(!(locate(/obj/structure/grille,T))) if(!(locate(/obj/structure/grille,T)))
var/window_check = 0 var/window_check = 0
for(var/obj/structure/window/W in T) for(var/obj/structure/window/W in T)
if (W.dir == turn(C1.dir,180) || W.dir in list(5,6,9,10) ) if (W.dir == turn(C1.dir,180) || W.dir in list(5,6,9,10) )
window_check = 1 window_check = 1
break
if(!window_check)
output += "<li><font color='red'>Camera not connected to wall at \[[C1.x], [C1.y], [C1.z]\] ([C1.loc.loc]) Network: [C1.network]</color></li>"
output += "</ul>"
usr << browse(output,"window=airreport;size=1000x500")
feedback_add_details("admin_verb","mCRP") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
intercom_view()
set category = "Mapping"
set name = "Intercom Range Display"
if(intercom_range_display_status)
intercom_range_display_status = 0
else
intercom_range_display_status = 1
for(var/obj/effect/debugging/marker/M in world)
del(M)
if(intercom_range_display_status)
for(var/obj/item/device/radio/intercom/I in world)
for(var/turf/T in orange(7,I))
var/obj/effect/debugging/marker/F = new/obj/effect/debugging/marker(T)
if (!(F in view(7,I.loc)))
del(F)
feedback_add_details("admin_verb","mIRD") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
enable_debug_verbs()
set category = "Debug"
set name = "Debug verbs"
src.verbs += /client/proc/do_not_use_these //-errorage
src.verbs += /client/proc/camera_view //-errorage
src.verbs += /client/proc/sec_camera_report //-errorage
src.verbs += /client/proc/intercom_view //-errorage
src.verbs += /client/proc/air_status //Air things
src.verbs += /client/proc/Cell //More air things
src.verbs += /client/proc/atmosscan //check plumbing
src.verbs += /client/proc/powerdebug //check power
src.verbs += /client/proc/count_objects_on_z_level
src.verbs += /client/proc/count_objects_all
src.verbs += /client/proc/cmd_assume_direct_control //-errorage
src.verbs += /client/proc/jump_to_dead_group
src.verbs += /client/proc/startSinglo
src.verbs += /client/proc/ticklag //allows you to set the ticklag.
src.verbs += /client/proc/cmd_admin_grantfullaccess
//src.verbs += /client/proc/cmd_admin_rejuvenate
feedback_add_details("admin_verb","mDV") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
count_objects_on_z_level()
set category = "Mapping"
set name = "Count Objects On Level"
var/level = input("Which z-level?","Level?") as text
if(!level) return
var/num_level = text2num(level)
if(!num_level) return
if(!isnum(num_level)) return
var/type_text = input("Which type path?","Path?") as text
if(!type_text) return
var/type_path = text2path(type_text)
if(!type_path) return
var/count = 0
var/list/atom/atom_list = list()
for(var/atom/A in world)
if(istype(A,type_path))
var/atom/B = A
while(!(isturf(B.loc)))
if(B && B.loc)
B = B.loc
else
break break
if(B) if(!window_check)
if(B.z == num_level) output += "<li><font color='red'>Camera not connected to wall at \[[C1.x], [C1.y], [C1.z]\] ([C1.loc.loc]) Network: [C1.network]</color></li>"
count++
atom_list += A
/*
var/atom/temp_atom
for(var/i = 0; i <= (atom_list.len/10); i++)
var/line = ""
for(var/j = 1; j <= 10; j++)
if(i*10+j <= atom_list.len)
temp_atom = atom_list[i*10+j]
line += " no.[i+10+j]@\[[temp_atom.x], [temp_atom.y], [temp_atom.z]\]; "
world << line*/
world << "There are [count] objects of type [type_path] on z-level [num_level]" output += "</ul>"
feedback_add_details("admin_verb","mOBJZ") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! usr << browse(output,"window=airreport;size=1000x500")
feedback_add_details("admin_verb","mCRP") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
count_objects_all() /client/proc/intercom_view()
set category = "Mapping" set category = "Mapping"
set name = "Count Objects All" set name = "Intercom Range Display"
var/type_text = input("Which type path?","") as text if(intercom_range_display_status)
if(!type_text) return intercom_range_display_status = 0
var/type_path = text2path(type_text) else
if(!type_path) return intercom_range_display_status = 1
var/count = 0 for(var/obj/effect/debugging/marker/M in world)
del(M)
for(var/atom/A in world) if(intercom_range_display_status)
if(istype(A,type_path)) for(var/obj/item/device/radio/intercom/I in world)
count++ for(var/turf/T in orange(7,I))
/* var/obj/effect/debugging/marker/F = new/obj/effect/debugging/marker(T)
var/atom/temp_atom if (!(F in view(7,I.loc)))
for(var/i = 0; i <= (atom_list.len/10); i++) del(F)
var/line = "" feedback_add_details("admin_verb","mIRD") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
for(var/j = 1; j <= 10; j++)
if(i*10+j <= atom_list.len)
temp_atom = atom_list[i*10+j]
line += " no.[i+10+j]@\[[temp_atom.x], [temp_atom.y], [temp_atom.z]\]; "
world << line*/
world << "There are [count] objects of type [type_path] in the game world" /client/proc/enable_debug_verbs()
feedback_add_details("admin_verb","mOBJ") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! set category = "Debug"
set name = "Debug verbs"
src.verbs += /client/proc/do_not_use_these //-errorage
src.verbs += /client/proc/camera_view //-errorage
src.verbs += /client/proc/sec_camera_report //-errorage
src.verbs += /client/proc/intercom_view //-errorage
src.verbs += /client/proc/air_status //Air things
src.verbs += /client/proc/Cell //More air things
src.verbs += /client/proc/atmosscan //check plumbing
src.verbs += /client/proc/powerdebug //check power
src.verbs += /client/proc/count_objects_on_z_level
src.verbs += /client/proc/count_objects_all
src.verbs += /client/proc/cmd_assume_direct_control //-errorage
src.verbs += /client/proc/jump_to_dead_group
src.verbs += /client/proc/startSinglo
src.verbs += /client/proc/ticklag //allows you to set the ticklag.
src.verbs += /client/proc/cmd_admin_grantfullaccess
//src.verbs += /client/proc/cmd_admin_rejuvenate
feedback_add_details("admin_verb","mDV") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/count_objects_on_z_level()
set category = "Mapping"
set name = "Count Objects On Level"
var/level = input("Which z-level?","Level?") as text
if(!level) return
var/num_level = text2num(level)
if(!num_level) return
if(!isnum(num_level)) return
var/type_text = input("Which type path?","Path?") as text
if(!type_text) return
var/type_path = text2path(type_text)
if(!type_path) return
var/count = 0
var/list/atom/atom_list = list()
for(var/atom/A in world)
if(istype(A,type_path))
var/atom/B = A
while(!(isturf(B.loc)))
if(B && B.loc)
B = B.loc
else
break
if(B)
if(B.z == num_level)
count++
atom_list += A
/*
var/atom/temp_atom
for(var/i = 0; i <= (atom_list.len/10); i++)
var/line = ""
for(var/j = 1; j <= 10; j++)
if(i*10+j <= atom_list.len)
temp_atom = atom_list[i*10+j]
line += " no.[i+10+j]@\[[temp_atom.x], [temp_atom.y], [temp_atom.z]\]; "
world << line*/
world << "There are [count] objects of type [type_path] on z-level [num_level]"
feedback_add_details("admin_verb","mOBJZ") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/count_objects_all()
set category = "Mapping"
set name = "Count Objects All"
var/type_text = input("Which type path?","") as text
if(!type_text) return
var/type_path = text2path(type_text)
if(!type_path) return
var/count = 0
for(var/atom/A in world)
if(istype(A,type_path))
count++
/*
var/atom/temp_atom
for(var/i = 0; i <= (atom_list.len/10); i++)
var/line = ""
for(var/j = 1; j <= 10; j++)
if(i*10+j <= atom_list.len)
temp_atom = atom_list[i*10+j]
line += " no.[i+10+j]@\[[temp_atom.x], [temp_atom.y], [temp_atom.z]\]; "
world << line*/
world << "There are [count] objects of type [type_path] in the game world"
feedback_add_details("admin_verb","mOBJ") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!

View File

@@ -50,31 +50,6 @@
/mob/proc/death(gibbed) /mob/proc/death(gibbed)
timeofdeath = world.time timeofdeath = world.time
var/cancel = 0
for(var/mob/M in player_list)
if(M.stat != DEAD)
cancel = 1
break
if(!cancel)
world << "<B>Everyone is dead! Resetting in 30 seconds!</B>"
spawn(300)
for(var/mob/M in player_list)
if(M.stat != DEAD)
world << "Aborting world restart!"
return
feedback_set_details("end_error","no live players")
if(blackbox)
blackbox.save_all_data_to_sql()
sleep(50)
log_game("Rebooting because of no live players")
world.Reboot()
return
living_mob_list -= src living_mob_list -= src
dead_mob_list += src dead_mob_list += src
return ..(gibbed) return ..(gibbed)

View File

@@ -130,6 +130,7 @@
spawning = 1 spawning = 1
src << sound(null, repeat = 0, wait = 0, volume = 85, channel = 1) // MAD JAMS cant last forever yo src << sound(null, repeat = 0, wait = 0, volume = 85, channel = 1) // MAD JAMS cant last forever yo
observer.started_as_observer = 1
close_spawn_windows() close_spawn_windows()
var/obj/O = locate("landmark*Observer-Start") var/obj/O = locate("landmark*Observer-Start")
src << "\blue Now teleporting." src << "\blue Now teleporting."