Scopes updates

- Admin Access
- Attack Log - Prays - Centcomm
- Singluo tells Mods/Admins when stage 4
- PA tells Mods/Admins when it is altered at all
- All stagg get a notification if any of the chat channels are muted at
login
This commit is contained in:
SoundScopes
2014-09-14 03:07:42 +01:00
parent 9d383ede69
commit b7e84139a7
24 changed files with 149 additions and 63 deletions
+16 -4
View File
@@ -11,11 +11,17 @@ var/global/floorIsLava = 0
if(R_ADMIN & C.holder.rights)
C << msg
/proc/message_mods(var/msg)
msg = "<span class=\"admin\"><span class=\"prefix\">MOD LOG:</span> <span class=\"message\">[msg]</span></span>"
for(var/client/C in admins)
if(R_MOD & C.holder.rights)
C << msg
/proc/msg_admin_attack(var/text) //Toggleable Attack Messages
log_attack(text)
var/rendered = "<span class=\"admin\"><span class=\"prefix\">ATTACK:</span> <span class=\"message\">[text]</span></span>"
for(var/client/C in admins)
if(R_MOD || R_ADMIN & C.holder.rights)
if((R_ADMIN & C.holder.rights) || (R_MOD & C.holder.rights))
if(C.prefs.toggles & CHAT_ATTACKLOGS)
var/msg = rendered
C << msg
@@ -28,14 +34,18 @@ var/global/floorIsLava = 0
set name = "Show Player Panel"
set desc="Edit player (respawn, ban, heal, etc)"
if(!check_rights(R_ADMIN|R_MOD)) return
if(!M)
usr << "You seem to be selecting a mob that doesn't exist anymore."
return
/*
if (!istype(src,/datum/admins))
src = usr.client.holder
if (!istype(src,/datum/admins))
usr << "Error: you are not an admin!"
return
*/
var/body = "<html><head><title>Options for [M.key]</title></head>"
body += "<body>Options panel for <b>[M]</b>"
@@ -192,11 +202,14 @@ var/global/floorIsLava = 0
/datum/admins/proc/PlayerNotes()
set category = "Admin"
set name = "Player Notes"
if (!istype(src,/datum/admins))
/* if (!istype(src,/datum/admins))
src = usr.client.holder
if (!istype(src,/datum/admins))
usr << "Error: you are not an admin!"
return
*/
if(!check_rights(R_ADMIN|R_MOD))
return
PlayerNotesPage(1)
/datum/admins/proc/PlayerNotesPage(page)
@@ -246,7 +259,6 @@ var/global/floorIsLava = 0
if(!infos || !infos.len) return 0
else return 1
/datum/admins/proc/show_player_info(var/key as text)
set category = "Admin"
set name = "Show Player Info"
@@ -855,7 +867,7 @@ var/global/floorIsLava = 0
set desc="Delay the game start/end"
set name="Delay"
if(!check_rights(R_SERVER|R_DEV)) return
if(!check_rights(R_SERVER|R_DEBUG)) return
if (!ticker || ticker.current_state != GAME_STATE_PREGAME)
ticker.delay_end = !ticker.delay_end
log_admin("[key_name(usr)] [ticker.delay_end ? "delayed the round end" : "has made the round end normally"].")
+18 -11
View File
@@ -1,17 +1,17 @@
//admin verb groups - They can overlap if you so wish. Only one of each verb will exist in the verbs list regardless
var/list/admin_verbs_default = list(
/datum/admins/proc/show_player_panel, /*shows an interface for individual players, with various links (links require additional flags*/
/client/proc/player_panel,
/client/proc/toggleadminhelpsound, /*toggles whether we hear a sound when adminhelps/PMs are used*/
/client/proc/deadmin_self, /*destroys our own admin datum so we can play as a regular player*/
/client/proc/hide_verbs, /*hides all our adminverbs*/
/client/proc/hide_most_verbs, /*hides all our hideable adminverbs*/
/client/proc/debug_variables, /*allows us to -see- the variables of any instance in the game. +VAREDIT needed to modify*/
/client/proc/check_antagonists, /*shows all antags*/
/client/proc/cmd_mentor_check_new_players
// /client/proc/deadchat /*toggles deadchat on/off*/
)
var/list/admin_verbs_admin = list(
/datum/admins/proc/show_player_panel, /*shows an interface for individual players, with various links (links require additional flags*/
/client/proc/check_antagonists, /*shows all antags*/
/client/proc/alertlevels,
/client/proc/cmd_admin_wind,
/client/proc/cmd_admin_unwind,
@@ -53,11 +53,11 @@ var/list/admin_verbs_admin = list(
/client/proc/check_antagonists,
/client/proc/admin_memo, /*admin memo system. show/delete/write. +SERVER needed to delete admin memos of others*/
/client/proc/dsay, /*talk in deadchat using our ckey/fakekey*/
/client/proc/toggleprayers, /*toggles prayers on/off*/
// /client/proc/toggle_hear_deadcast, /*toggles whether we hear deadchat*/
/client/proc/toggle_hear_radio, /*toggles whether we hear the radio*/
/client/proc/investigate_show, /*various admintools for investigation. Such as a singulo grief-log*/
/client/proc/secrets,
/client/proc/toggleprayers,
/datum/admins/proc/toggleooc, /*toggles ooc on/off for everyone*/
/datum/admins/proc/togglelooc,
/datum/admins/proc/toggleoocdead, /*toggles ooc on/off for everyone who is dead*/
@@ -96,7 +96,7 @@ var/list/admin_verbs_fun = list(
/client/proc/cmd_admin_dress,
/client/proc/cmd_admin_gib_self,
/client/proc/drop_bomb,
/client/proc/everyone_random,
/client/proc/everyone_random,
/client/proc/cinematic,
/client/proc/one_click_antag,
/datum/admins/proc/toggle_aliens,
@@ -112,8 +112,6 @@ var/list/admin_verbs_fun = list(
var/list/admin_verbs_dev = list(
/client/proc/dsay,
/client/proc/togglebuildmodeself,
/datum/admins/proc/restart,
/datum/admins/proc/delay,
/client/proc/giveruntimelog,
/client/proc/getruntimelog,
/client/proc/cmd_admin_list_open_jobs,
@@ -128,12 +126,11 @@ var/list/admin_verbs_dev = list(
/client/proc/cmd_admin_delete,
/client/proc/cmd_debug_del_all,
/client/proc/cmd_debug_tog_aliens,
/datum/admins/proc/restart,
/client/proc/air_report,
/client/proc/reload_admins,
/client/proc/restart_controller,
/client/proc/enable_debug_verbs,
/client/proc/callproc,
/client/proc/toggleattacklogs,
/client/proc/toggledebuglogs,
/client/proc/SDQL_query,
/client/proc/SDQL2_query,
@@ -168,8 +165,10 @@ var/list/admin_verbs_server = list(
/client/proc/check_customitem_activity
)
var/list/admin_verbs_debug = list(
/client/proc/getruntimelog, /*allows us to access runtime logs to somebody*/
/client/proc/getruntimelog, /*allows us to access runtime logs to somebody*/
/client/proc/cmd_admin_list_open_jobs,
/datum/admins/proc/restart,
/datum/admins/proc/delay,
/client/proc/Debug2,
/client/proc/kill_air,
/client/proc/ZASSettings,
@@ -188,7 +187,6 @@ var/list/admin_verbs_debug = list(
/client/proc/toggledebuglogs,
/client/proc/SDQL_query,
/client/proc/SDQL2_query,
/client/proc/cmd_dev_bst,
/client/proc/cmd_dev_reset_gravity
)
var/list/admin_verbs_possess = list(
@@ -274,6 +272,8 @@ var/list/admin_verbs_hideable = list(
/proc/release
)
var/list/admin_verbs_mod = list(
/client/proc/check_antagonists, /*shows all antags*/
/client/proc/cmd_admin_check_contents,
/client/proc/cmd_admin_wind,
/client/proc/cmd_admin_unwind,
/client/proc/cmd_admin_pm_context, /*right-click adminPM interface*/
@@ -281,15 +281,19 @@ var/list/admin_verbs_mod = list(
/client/proc/debug_variables, /*allows us to -see- the variables of any instance in the game.*/
/client/proc/toggleattacklogs,
/client/proc/toggledebuglogs,
/client/proc/toggleprayers,
/datum/admins/proc/PlayerNotes,
/client/proc/admin_ghost, /*allows us to ghost/reenter body at will*/
/client/proc/cmd_mod_say,
/client/proc/check_ai_laws,
/client/proc/jumptomob,
/datum/admins/proc/show_player_info,
/client/proc/player_panel_new,
/client/proc/dsay,
/datum/admins/proc/show_skills,
/datum/admins/proc/show_player_panel,
/client/proc/check_antagonists,
/datum/admins/proc/adjump,
/client/proc/jobbans,
/client/proc/cmd_admin_subtle_message /*send an message to somebody as a 'voice in their head'*/
)
@@ -520,7 +524,7 @@ var/list/admin_verbs_mod = list(
#define AUTOBANTIME 10
/client/proc/warn(warned_ckey)
if(!check_rights(R_ADMIN)) return
if(!check_rights(R_ADMIN|R_MOD)) return
if(!warned_ckey || !istext(warned_ckey)) return
if(warned_ckey in admin_datums)
@@ -797,6 +801,9 @@ var/list/admin_verbs_mod = list(
/client/proc/playernotes()
set name = "Show Player Info"
set category = "Admin"
if(!check_rights(R_ADMIN|R_MOD))
return
if(holder)
holder.PlayerNotes()
return
+10 -7
View File
@@ -364,13 +364,16 @@
<td align=center><A HREF='?src=\ref[src];adminplayeropts=\ref[M]'>X</A></td>
<td align=center><A href='?src=\ref[usr];priv_msg=\ref[M]'>PM</A></td>
"}
switch(is_special_character(M))
if(0)
dat += {"<td align=center><A HREF='?src=\ref[src];traitor=\ref[M]'>Traitor?</A></td>"}
if(1)
dat += {"<td align=center><A HREF='?src=\ref[src];traitor=\ref[M]'><font color=red>Traitor?</font></A></td>"}
if(2)
dat += {"<td align=center><A HREF='?src=\ref[src];traitor=\ref[M]'><font color=red><b>Traitor?</b></font></A></td>"}
if(!check_rights(R_ADMIN|R_MOD))
dat += {"<td align=center><A HREF='?src=\ref[src];traitor=\ref[M]'>Traitor?</A></td>"}
else
switch(is_special_character(M))
if(0)
dat += {"<td align=center><A HREF='?src=\ref[src];traitor=\ref[M]'>Traitor?</A></td>"}
if(1)
dat += {"<td align=center><A HREF='?src=\ref[src];traitor=\ref[M]'><font color=red>Traitor?</font></A></td>"}
if(2)
dat += {"<td align=center><A HREF='?src=\ref[src];traitor=\ref[M]'><font color=red><b>Traitor?</b></font></A></td>"}
dat += "</table></body></html>"
+4 -2
View File
@@ -33,7 +33,7 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","
if(!msg) return
var/original_msg = msg
//explode the input msg into a list
var/list/msglist = text2list(msg, " ")
@@ -94,9 +94,11 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","
msg = "\blue <b><font color=red>HELP: </font>[get_options_bar(mob, 2, 1, 1)][ai_found ? " (<A HREF='?_src_=holder;adminchecklaws=[ref_mob]'>CL</A>)" : ""]:</b> [msg]"
//send this msg to all admins
var/admin_number_present = 0
var/admin_number_afk = 0
for(var/client/X in admins)
if((R_ADMIN|R_MOD) & X.holder.rights)
admin_number_present++
if(X.is_afk())
admin_number_afk++
if(X.prefs.toggles & SOUND_ADMINHELP)
@@ -106,7 +108,7 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","
//show it to the person adminhelping too
src << "<font color='blue'>PM to-<b>Admins</b>: [original_msg]</font>"
var/admin_number_present = admins.len - admin_number_afk
admin_number_present = (admin_number_present - admin_number_afk)
log_admin("HELP: [key_name(src)]: [original_msg] - heard by [admin_number_present] non-AFK admins.")
if(admin_number_present <= 0)
if(!admin_number_afk)
+4 -3
View File
@@ -31,7 +31,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
set category = "Debug"
set name = "Advanced ProcCall"
if(!check_rights(R_DEBUG|R_DEV)) return
if(!check_rights(R_DEBUG)) return
spawn(0)
var/target = null
@@ -436,7 +436,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
GLOBAL_RADIO_TYPE = !GLOBAL_RADIO_TYPE // toggle
log_admin("[key_name(src)] has turned the experimental radio system [GLOBAL_RADIO_TYPE ? "on" : "off"].")
message_admins("[key_name_admin(src)] has turned the experimental radio system [GLOBAL_RADIO_TYPE ? "on" : "off"].", 0)
msg_scopes("[key_name_admin(src)] has turned the experimental radio system [GLOBAL_RADIO_TYPE ? "on" : "off"].", 0)
msg_scopes("[key_name_admin(src)] has turned the experimental radio system [GLOBAL_RADIO_TYPE ? "on" : "off"].", 1)
feedback_add_details("admin_verb","SRM") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/cmd_admin_areatest()
@@ -1103,11 +1103,12 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
return
/client/proc/startSinglo()
set category = "Debug"
set name = "Start Singularity"
set desc = "Sets up the singularity and all machines to get power flowing through the station"
if(!check_rights(R_DEBUG)) return
if(alert("Are you sure? This will start up the engine. Should only be used during debug!",,"Yes","No") != "Yes")
return
+1 -1
View File
@@ -144,7 +144,7 @@ var/list/debug_verbs = list (
,/client/proc/splash
,/client/proc/cmd_admin_areatest
,/client/proc/cmd_admin_rejuvenate
,/datum/admins/proc/show_traitor_panel
// ,/datum/admins/proc/show_traitor_panel //What has this got to do with mapping
,/client/proc/print_jobban_old
,/client/proc/print_jobban_old_filter
,/client/proc/forceEvent
+5 -1
View File
@@ -264,6 +264,10 @@ var/list/forbidden_varedit_object_types = list(
if("marked datum")
L[L.Find(variable)] = holder.marked_datum
world.log << "### VarEdit by [src]: [variable]=[html_encode("[L[L.Find(variable)]]")]"
log_admin("[key_name(src)] modified [variable] to [L[L.Find(variable)]]")
message_admins("[key_name_admin(src)] modified [variable] to [L[L.Find(variable)]]", 1)
msg_scopes("[key_name_admin(src)] modified [variable] to [L[L.Find(variable)]]", 1) // Tell dev's to but not log twice
/client/proc/modify_variables(var/atom/O, var/param_var_name = null, var/autodetect_class = 0)
if(!check_rights(R_VAREDIT|R_DEV)) return
@@ -498,4 +502,4 @@ var/list/forbidden_varedit_object_types = list(
world.log << "### VarEdit by [src]: [O.type] [variable]=[html_encode("[O.vars[variable]]")]"
log_admin("[key_name(src)] modified [original_name]'s [variable] to [O.vars[variable]]")
message_admins("[key_name_admin(src)] modified [original_name]'s [variable] to [O.vars[variable]]", 1)
msg_scopes("[key_name_admin(src)] modified [original_name]'s [variable] to [O.vars[variable]]", 1) // Tell dev's to but look at the logs
msg_scopes("[key_name_admin(src)] modified [original_name]'s [variable] to [O.vars[variable]]", 1) // Tell dev's to but not log twice
+7 -3
View File
@@ -20,7 +20,7 @@
msg = "\blue \icon[cross] <b><font color=purple>PRAY: </font>[key_name(src, 1)] (<A HREF='?_src_=holder;adminmoreinfo=\ref[src]'>?</A>) (<A HREF='?_src_=holder;adminplayeropts=\ref[src]'>PP</A>) (<A HREF='?_src_=vars;Vars=\ref[src]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=\ref[src]'>SM</A>) (<A HREF='?_src_=holder;adminplayerobservejump=\ref[src]'>JMP</A>) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<A HREF='?_src_=holder;adminspawncookie=\ref[src]'>SC</a>):</b> [msg]"
for(var/client/C in admins)
if(C.prefs.toggles & CHAT_PRAYER)
if(((R_ADMIN & C.holder.rights) || (R_MOD & C.holder.rights)) && (C.prefs.toggles & CHAT_PRAYER))
C << msg
usr << "Your prayers have been received by the gods."
@@ -30,9 +30,13 @@
/proc/Centcomm_announce(var/text , var/mob/Sender , var/iamessage)
var/msg = copytext(sanitize(text), 1, MAX_MESSAGE_LEN)
msg = "\blue <b><font color=orange>CENTCOMM[iamessage ? " IA" : ""]:</font>[key_name(Sender, 1)] (<A HREF='?_src_=holder;adminplayeropts=\ref[Sender]'>PP</A>) (<A HREF='?_src_=vars;Vars=\ref[Sender]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=\ref[Sender]'>SM</A>) (<A HREF='?_src_=holder;adminplayerobservejump=\ref[Sender]'>JMP</A>) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<A HREF='?_src_=holder;BlueSpaceArtillery=\ref[Sender]'>BSA</A>) (<A HREF='?_src_=holder;CentcommReply=\ref[Sender]'>RPLY</A>):</b> [msg]"
admins << msg
for(var/client/C in admins)
if((R_ADMIN & C.holder.rights) || (R_MOD & C.holder.rights))
C << msg
/proc/Syndicate_announce(var/text , var/mob/Sender)
var/msg = copytext(sanitize(text), 1, MAX_MESSAGE_LEN)
msg = "\blue <b><font color=crimson>SYNDICATE:</font>[key_name(Sender, 1)] (<A HREF='?_src_=holder;adminplayeropts=\ref[Sender]'>PP</A>) (<A HREF='?_src_=vars;Vars=\ref[Sender]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=\ref[Sender]'>SM</A>) (<A HREF='?_src_=holder;adminplayerobservejump=\ref[Sender]'>JMP</A>) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<A HREF='?_src_=holder;BlueSpaceArtillery=\ref[Sender]'>BSA</A>) (<A HREF='?_src_=holder;SyndicateReply=\ref[Sender]'>RPLY</A>):</b> [msg]"
admins << msg
for(var/client/C in admins)
if((R_ADMIN & C.holder.rights) || (R_MOD & C.holder.rights))
C << msg
+8 -2
View File
@@ -54,7 +54,7 @@
return
cmd_admin_irc_pm()
return
//Logs all hrefs
@@ -155,6 +155,12 @@
if(holder)
add_admin_verbs()
admin_memo_show()
if(!ooc_allowed)
src << "<span class='alert'>OOC is Disabled</span>"
if(!looc_allowed)
src << "<span class='alert'>LOOC is Disabled</span>"
if(!dsay_allowed)
src << "<span class='alert'>Deadchat is Disabled</span>"
log_client_to_db()
@@ -255,7 +261,7 @@
//send resources to the client. It's here in its own proc so we can move it around easiliy if need be
/client/proc/send_resources()
// preload_vox() //Causes long delays with initial start window and subsequent windows when first logged in.
getFiles(
'html/search.js',
'html/panels.css',
+2 -1
View File
@@ -59,10 +59,11 @@ var/scheduledEvent = null
set name = "Trigger Event (Debug Only)"
set category = "Debug"
if(!check_rights(R_DEBUG)) return
if(!holder)
return
if(ispath(type))
new type
message_admins("[key_name_admin(usr)] has triggered an event. ([type])", 1)
msg_scopes("[key_name_admin(usr)] has triggered an event. ([type])", 0)
+3 -1
View File
@@ -18,9 +18,11 @@
if(matches)
if(M.client)
message_admins("<font color='red'><B>Notice: </B></font><font color='blue'><A href='?src=\ref[usr];priv_msg=\ref[src]'>[key_name_admin(src)]</A> has the same [matches] as <A href='?src=\ref[usr];priv_msg=\ref[M]'>[key_name_admin(M)]</A>.</font>", 1)
message_mods("<font color='red'><B>Notice: </B></font><font color='blue'><A href='?src=\ref[usr];priv_msg=\ref[src]'>[key_name_admin(src)]</A> has the same [matches] as <A href='?src=\ref[usr];priv_msg=\ref[M]'>[key_name_admin(M)]</A>.</font>")
log_access("Notice: [key_name(src)] has the same [matches] as [key_name(M)].")
else
message_admins("<font color='red'><B>Notice: </B></font><font color='blue'><A href='?src=\ref[usr];priv_msg=\ref[src]'>[key_name_admin(src)]</A> has the same [matches] as [key_name_admin(M)] (no longer logged in). </font>", 1)
message_mods("<font color='red'><B>Notice: </B></font><font color='blue'><A href='?src=\ref[usr];priv_msg=\ref[src]'>[key_name_admin(src)]</A> has the same [matches] as [key_name_admin(M)] (no longer logged in). </font>")
log_access("Notice: [key_name(src)] has the same [matches] as [key_name(M)] (no longer logged in).")
/mob/Login()
@@ -56,4 +58,4 @@
if(H.species && H.species.abilities)
client.verbs |= H.species.abilities
nanomanager.send_resources(client)
nanomanager.send_resources(client)
@@ -350,6 +350,7 @@ field_generator power level display
if(O.last_warning && temp)
if((world.time - O.last_warning) > 50) //to stop message-spam
temp = 0
message_mods("A singulo exists and a containment field has failed.")
message_admins("A singulo exists and a containment field has failed.",1)
investigate_log("has <font color='red'>failed</font> whilst a singulo exists.","singulo")
O.last_warning = world.time
@@ -87,9 +87,8 @@
if(href_list["togglep"])
src.toggle_power()
investigate_log("turned [active?"<font color='red'>ON</font>":"<font color='green'>OFF</font>"] by [usr.key]","singulo")
if (active)
message_admins("PA Control Computer turned ON by [key_name(usr, usr.client)](<A HREF='?_src_=holder;adminmoreinfo=\ref[usr]'>?</A>) in ([x],[y],[z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)",0,1)
log_game("PA Control Computer turned ON by [usr.ckey]([usr]) in ([x],[y],[z])")
message_admins("PA Control Computer turned [active?"<font color='red'>ON</font>":"<font color='green'>OFF</font>"] by [key_name(usr, usr.client)](<A HREF='?_src_=holder;adminmoreinfo=\ref[usr]'>?</A>) in ([x],[y],[z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)",0,1)
log_game("PA Control Computer turned [active?"<font color='red'>ON</font>":"<font color='green'>OFF</font>"] by [usr.ckey]([usr]) in ([x],[y],[z])")
else if(href_list["scan"])
src.part_scan()
else if(href_list["strengthup"])
@@ -109,6 +108,8 @@
if(strength < 0)
strength = 0
else
message_admins("PA Control Computer decreased to [strength] by [key_name(usr, usr.client)](<A HREF='?_src_=holder;adminmoreinfo=\ref[usr]'>?</A>) in ([x],[y],[z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)",0,1)
log_game("PA Control Computer decreased to [strength] by [usr.ckey]([usr]) in ([x],[y],[z])")
investigate_log("decreased to <font color='green'>[strength]</font> by [usr.key]","singulo")
for(var/obj/structure/particle_accelerator/part in connected_parts)
part.strength = strength
@@ -102,7 +102,9 @@ var/global/list/uneatable = list(
/obj/machinery/singularity/proc/admin_investigate_setup()
last_warning = world.time
var/count = locate(/obj/machinery/containment_field) in orange(30, src)
if(!count) message_admins("A singulo has been created without containment fields active ([x],[y],[z])",1)
if(!count)
message_mods("A singulo has been created without containment fields active ([x],[y],[z])")
message_admins("A singulo has been created without containment fields active ([x],[y],[z])",1)
investigate_log("was created. [count?"":"<font color='red'>No containment fields were active</font>"]","singulo")
/obj/machinery/singularity/proc/dissipate()
@@ -166,6 +168,10 @@ var/global/list/uneatable = list(
dissipate_delay = 10
dissipate_track = 0
dissipate_strength = 10
investigate_log("turned to a stage 4","singulo")
message_mods("Singluo is at stage 4 ([x],[y],[z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)")
message_admins("Singluo is at stage 4 ([x],[y],[z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)",0,1)
log_game("Singluo turned to a stage 4 ([x],[y],[z])")
if(9)//this one also lacks a check for gens because it eats everything
current_size = 9
icon = 'icons/effects/288x288.dmi'