WIP mergefixes

Signed-off-by: Cael_Aislinn <cael_aislinn@yahoo.com.au>
This commit is contained in:
Cael_Aislinn
2012-09-26 20:10:58 +10:00
parent 7ab7b989f2
commit 640ce4fd5c
14 changed files with 125 additions and 1165 deletions
+47 -156
View File
@@ -9,23 +9,12 @@ var/global/floorIsLava = 0
log_adminwarn(rendered)
for (var/client/C in admin_list)
if (C)
if(C.holder.level)
if(C.holder.level > -3 && C.holder.level != 0)
var/msg = rendered
if (admin_ref)
msg = dd_replacetext(msg, "%admin_ref%", "\ref[C]")
if (admin_holder_ref && C.holder)
msg = dd_replacetext(msg, "%holder_ref%", "\ref[C.holder]")
C << msg
/proc/msg_admin_attack(var/text) //Toggleable Attack Messages
var/rendered = "<span class=\"admin\"><span class=\"prefix\">ADMIN LOG:</span> <span class=\"message\">[text]</span></span>"
log_adminwarn(rendered)
for (var/client/C in admin_list)
if (C)
if(!C.STFU_atklog)
var/msg = rendered
C << msg
var/msg = rendered
if (admin_ref)
msg = dd_replacetext(msg, "%admin_ref%", "\ref[C]")
if (admin_holder_ref && C.holder)
msg = dd_replacetext(msg, "%holder_ref%", "\ref[C.holder]")
C << msg
///////////////////////////////////////////////////////////////////////////////////////////////Panels
@@ -160,9 +149,6 @@ var/global/floorIsLava = 0
body += "<A href='?src=\ref[src];tdome2=\ref[M]'>Thunderdome 2</A> | "
body += "<A href='?src=\ref[src];tdomeadmin=\ref[M]'>Thunderdome Admin</A> | "
body += "<A href='?src=\ref[src];tdomeobserve=\ref[M]'>Thunderdome Observer</A> | "
body += "<A href='?src=\ref[src];granttaj=\ref[M]'>Grant Tajaran (Temp)</A> | "
body += "<A href='?src=\ref[src];grantsog=\ref[M]'>Grant Soghun (Temp)</A> | "
body += "<A href='?src=\ref[src];grantskrell=\ref[M]'>Grant Skrell (Temp)</A> | "
body += "<br>"
body += "</body></html>"
@@ -176,82 +162,6 @@ var/global/floorIsLava = 0
set name = "Access Newscaster Network"
set desc = "Allows you to view, add and edit news feeds."
/datum/player_info/var/author // admin who authored the information
/datum/player_info/var/rank //rank of admin who made the notes
/datum/player_info/var/content // text content of the information
/datum/player_info/var/timestamp // Because this is bloody annoying
/obj/admins/proc/player_has_info(var/key as text)
var/savefile/info = new("data/player_saves/[copytext(key, 1, 2)]/[key]/info.sav")
var/list/infos
info >> infos
if(!infos || !infos.len) return 0
else return 1
/obj/admins/proc/show_player_info(var/key as text)
set category = "Admin"
set name = "Show Player Info"
if (!istype(src,/obj/admins))
src = usr.client.holder
if (!istype(src,/obj/admins))
usr << "Error: you are not an admin!"
return
var/dat = "<html><head><title>Info on [key]</title></head>"
dat += "<body>"
var/savefile/info = new("data/player_saves/[copytext(key, 1, 2)]/[key]/info.sav")
var/list/infos
info >> infos
if(!infos)
dat += "No information found on the given key.<br>"
else
var/update_file = 0
var/i = 0
for(var/datum/player_info/I in infos)
i += 1
if(!I.timestamp)
I.timestamp = "Pre-4/3/2012"
update_file = 1
if(!I.rank)
I.rank = "N/A"
update_file = 1
dat += "<font color=#008800>[I.content]</font> <i>by [I.author] ([I.rank])</i> on <i><font color=blue>[I.timestamp]</i></font> "
if(I.author == usr.key)
dat += "<A href='?src=\ref[src];remove_player_info=[key];remove_index=[i]'>Remove</A>"
dat += "<br><br>"
if(update_file) info << infos
dat += "<br>"
dat += "<A href='?src=\ref[src];add_player_info=[key]'>Add Comment</A><br>"
dat += "</body></html>"
usr << browse(dat, "window=adminplayerinfo;size=480x480")
/obj/admins/proc/show_skills(var/mob/living/carbon/human/M as mob in world)
set category = "Admin"
set name = "Show Skills"
if (!istype(src,/obj/admins))
src = usr.client.holder
if (!istype(src,/obj/admins))
usr << "Error: you are not an admin!"
return
show_skill_window(usr, M)
return
/client/proc/update_mob_sprite(mob/living/carbon/human/H as mob)
set category = "Admin"
set name = "Update Mob Sprite"
set desc = "Should fix any mob sprite update errors."
if (!holder)
src << "Only administrators may use this command."
return
if(istype(H))
H.regenerate_icons()
if (!istype(src,/datum/admins))
src = usr.client.holder
if (!istype(src,/datum/admins))
@@ -452,21 +362,6 @@ var/global/floorIsLava = 0
dat += "</table>"
usr << browse(dat, "window=ban;size=400x400")
/obj/admins/proc/PlayerNotes()
var/dat = "<B>Player notes</B><HR><table>"
var/savefile/S=new("data/player_notes.sav")
var/list/note_keys
S >> note_keys
if(!note_keys)
dat += "No notes found."
else
sortList(note_keys)
for(var/t in note_keys)
dat += text("<tr><td><A href='?src=\ref[src];view_player_info=[t]'>[t]</A></td></tr>")
dat += "</table>"
usr << browse(dat, "window=player_notes;size=400x400")
/datum/admins/proc/Game()
var/dat
@@ -505,10 +400,6 @@ var/global/floorIsLava = 0
dat += "<A href='?src=\ref[src];create_turf=1'>Create Turf</A><br>"
if(lvl >= 5)
dat += "<A href='?src=\ref[src];create_mob=1'>Create Mob</A><br>"
if(lvl >= 3 )
dat += "<br><A href='?src=\ref[src];vsc=airflow'>Edit Airflow Settings</A><br>"
dat += "<A href='?src=\ref[src];vsc=plasma'>Edit Plasma Settings</A><br>"
dat += "<A href='?src=\ref[src];vsc=default'>Choose a default ZAS setting</A><br>"
// if(lvl == 6 )
usr << browse(dat, "window=admin2;size=210x180")
return
@@ -577,7 +468,6 @@ var/global/floorIsLava = 0
<A href='?src=\ref[src];secretsfun=radiation'>Irradiate the station</A><BR>
<A href='?src=\ref[src];secretsfun=prison_break'>Trigger a Prison Break</A><BR>
<A href='?src=\ref[src];secretsfun=virus'>Trigger a Virus Outbreak</A><BR>
<A href='?src=\ref[src];secretsfun=trigger_armed_response_team'>Trigger the Emergency Response Team</A><BR>
<A href='?src=\ref[src];secretsfun=immovable'>Spawn an Immovable Rod</A><BR>
<A href='?src=\ref[src];secretsfun=lightsout'>Toggle a "lights out" event</A><BR>
<A href='?src=\ref[src];secretsfun=ionstorm'>Spawn an Ion Storm</A><BR>
@@ -608,7 +498,6 @@ var/global/floorIsLava = 0
<A href='?src=\ref[src];secretsfun=movealienship'>Move Alien Dinghy</A><BR>
<A href='?src=\ref[src];secretsfun=moveminingshuttle'>Move Mining Shuttle</A><BR>
<A href='?src=\ref[src];secretsfun=blackout'>Break all lights</A><BR>
<A href='?src=\ref[src];secretsfun=electric'>Trigger Electrical Storm</A><BR>"
<A href='?src=\ref[src];secretsfun=whiteout'>Fix all lights</A><BR>
<A href='?src=\ref[src];secretsfun=friendai'>Best Friend AI</A><BR>
<A href='?src=\ref[src];secretsfun=floorlava'>The floor is lava! (DANGEROUS)</A><BR>"}
@@ -638,50 +527,11 @@ var/global/floorIsLava = 0
usr << browse(dat, "window=secrets")
return
/obj/admins/proc/Voting()
var/dat
var/lvl = 0
switch(src.rank)
if("Moderator")
lvl = 1
if("Temporary Admin")
lvl = 2
if("Admin Candidate")
lvl = 3
if("Trial Admin")
lvl = 4
if("Badmin")
lvl = 5
if("Game Admin")
lvl = 6
if("Game Master")
lvl = 7
dat += "<center><B>Voting</B></center><hr>\n"
if(lvl > 0)
dat += {"
<A href='?src=\ref[src];votekill=1'>Abort Vote</A><br>
<A href='?src=\ref[src];vmode=1'>Start Vote</A><br>
<A href='?src=\ref[src];voteres=1'>Toggle Voting</A><br>
"}
usr << browse(dat, "window=admin2;size=210x160")
return
/////////////////////////////////////////////////////////////////////////////////////////////////admins2.dm merge
//i.e. buttons/verbs
/*
/obj/admins/proc/vmode()
set category = "Server"
set hidden = 1 // It doesn't have a cancel button, so it shouldn't be autocompleted. Should be started via Voting() instead
if (!usr.client.holder)
return
/datum/admins/proc/restart()
set category = "Server"
@@ -1088,6 +938,47 @@ var/global/floorIsLava = 0
if(!ai_number)
usr << "<b>No AIs located</b>" //Just so you know the thing is actually working and not just ignoring you.
/datum/admins/proc/show_skills(var/mob/living/carbon/human/M as mob in world)
set category = "Admin"
set name = "Show Skills"
if (!istype(src,/datum/admins))
src = usr.client.holder
if (!istype(src,/datum/admins))
usr << "Error: you are not an admin!"
return
show_skill_window(usr, M)
return
/client/proc/update_mob_sprite(mob/living/carbon/human/H as mob)
set category = "Admin"
set name = "Update Mob Sprite"
set desc = "Should fix any mob sprite update errors."
if (!holder)
src << "Only administrators may use this command."
return
if(istype(H))
H.regenerate_icons()
/datum/admins/proc/PlayerNotes()
var/dat = "<B>Player notes</B><HR><table>"
var/savefile/S=new("data/player_notes.sav")
var/list/note_keys
S >> note_keys
if(!note_keys)
dat += "No notes found."
else
sortList(note_keys)
for(var/t in note_keys)
dat += text("<tr><td><A href='?src=\ref[src];view_player_info=[t]'>[t]</A></td></tr>")
dat += "</table>"
usr << browse(dat, "window=player_notes;size=400x400")
//
//
//ALL DONE
+25 -49
View File
@@ -107,80 +107,54 @@
if (holder) //THE BELOW handles granting powers. The above is for special cases only!
holder.owner = src
//---- Special Admin Ranks
//Retired admin
if (holder.level == -3)
verbs += /client/proc/cmd_admin_say
verbs += /client/proc/cmd_mod_say
return
//Admin Observer
if (holder.level >= -1)
if (holder.level == -1)
verbs += /client/proc/investigate_show
verbs += /client/proc/cmd_admin_say
verbs += /client/proc/cmd_mod_say
verbs += /client/proc/cmd_admin_gib_self
verbs += /client/proc/update_mob_sprite
verbs += /client/proc/deadmin_self
else if (holder.level == -3) // Retired Admin
verbs += /client/proc/cmd_admin_say
verbs += /client/proc/cmd_mod_say
return
else return
//Moderator
if (holder.level >= 0)
if (holder.level == 0)
verbs += /client/proc/cmd_admin_pm_context
verbs += /client/proc/cmd_admin_pm_panel
verbs += /client/proc/hide_verbs
verbs += /client/proc/deadmin_self
verbs += /client/proc/admin_ghost
verbs += /client/proc/Report
verbs += /client/proc/display_admin_reports
verbs += /obj/admins/proc/show_skills
else return
if(holder.level == 0) //Moderators don't get asay, only msay
verbs -= /client/proc/cmd_admin_say
verbs -= /client/proc/investigate_show
verbs -= /client/proc/cmd_admin_gib_self
verbs += /datum/admins/proc/show_skills
verbs += /client/proc/mod_panel
verbs += /client/proc/admin_ghost
return
//
//MOVED FROM MODERATOR
//
verbs += /obj/admins/proc/announce
verbs += /obj/admins/proc/startnow
verbs += /obj/admins/proc/toggleAI //Toggle the AI
verbs += /obj/admins/proc/toggleenter //Toggle enterting
verbs += /obj/admins/proc/toggleguests //Toggle guests entering
verbs += /obj/admins/proc/toggleooc //toggle ooc
verbs += /obj/admins/proc/toggleoocdead //toggle ooc for dead/unc
verbs += /obj/admins/proc/show_player_panel
verbs += /client/proc/deadchat //toggles deadchat
//verbs += /client/proc/cmd_admin_mute --was never used (according to stats trackind) - use show player panel --erro
verbs += /client/proc/cmd_admin_subtle_message
//verbs += /client/proc/warn - was never used
verbs += /client/proc/dsay
//---- Full Admin Ranks
if (holder.level > 0)
verbs += /client/proc/cmd_admin_say
verbs += /client/proc/cmd_mod_say
verbs += /client/proc/admin_ghost
verbs += /client/proc/game_panel
verbs += /client/proc/player_panel
verbs += /client/proc/player_panel_new
verbs += /client/proc/unban_panel
verbs += /client/proc/jobbans
verbs += /client/proc/unjobban_panel
verbs += /client/proc/check_ai_laws
//verbs += /client/proc/cmd_admin_prison --Merged with player panel
//verbs += /datum/admins/proc/unprison --Merged with player panel
else return
else return
//Temporary Admin
if (holder.level >= 1)
verbs += /obj/admins/proc/delay //game start delay
verbs += /obj/admins/proc/immreboot //immediate reboot
verbs += /obj/admins/proc/restart //restart
verbs += /datum/admins/proc/delay //game start delay
verbs += /datum/admins/proc/immreboot //immediate reboot
verbs += /datum/admins/proc/restart //restart
verbs += /client/proc/cmd_admin_check_contents
verbs += /client/proc/cmd_admin_create_centcom_report
verbs += /client/proc/toggle_hear_deadcast
verbs += /client/proc/toggle_hear_radio
verbs += /client/proc/deadmin_self
//verbs += /client/proc/cmd_admin_attack_log --Merged with view variables
verbs += /client/proc/playernotes
//Admin Candidate
if (holder.level >= 2)
@@ -464,10 +438,12 @@
verbs -= /client/proc/mod_panel
verbs -= /client/proc/admin_deny_shuttle
verbs -= /client/proc/playernotes
verbs -= /obj/admins/proc/show_skills
verbs -= /datum/admins/proc/show_skills
verbs -= /client/proc/Report
verbs -= /client/proc/display_admin_reports
verbs -= /client/proc/editappear
verbs -= /client/proc/cmd_mod_say
verbs -= /client/proc/playernotes
return
/client/proc/admin_ghost()
+16 -129
View File
@@ -1,125 +1,3 @@
<<<<<<< HEAD
//allows right clicking mobs to send an admin PM to their client, forwards the selected mob's client to cmd_admin_pm
/client/proc/cmd_admin_pm_context(mob/M as mob in mob_list)
set category = null
set name = "Admin PM Mob"
if(!holder)
src << "<font color='red'>Error: Admin-PM-Context: Only administrators may use this command.</font>"
return
if( !ismob(M) || !M.client ) return
cmd_admin_pm(M.client,null)
feedback_add_details("admin_verb","APMM") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
//shows a list of clients we could send PMs to, then forwards our choice to cmd_admin_pm
/client/proc/cmd_admin_pm_panel()
set category = "Admin"
set name = "Admin PM"
if(!holder)
src << "<font color='red'>Error: Admin-PM-Panel: Only administrators may use this command.</font>"
return
var/list/client/targets[0]
for(var/client/T)
if(T.mob)
if(istype(T.mob, /mob/new_player))
targets["(New Player) - [T]"] = T
else if(istype(T.mob, /mob/dead/observer))
targets["[T.mob.name](Ghost) - [T]"] = T
else
targets["[T.mob.real_name](as [T.mob.name]) - [T]"] = T
else
targets["(No Mob) - [T]"] = T
var/list/sorted = sortList(targets)
var/target = input(src,"To whom shall we send a message?","Admin PM",null) in sorted|null
cmd_admin_pm(targets[target],null)
feedback_add_details("admin_verb","APM") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
//takes input from cmd_admin_pm_context, cmd_admin_pm_panel or /client/Topic and sends them a PM.
//Fetching a message if needed. src is the sender and C is the target client
/client/proc/cmd_admin_pm(var/client/C, var/msg)
if(src.muted_adminhelp)
src << "<font color='red'>Error: Admin-PM: You are unable to use admin PM-s (muted by admins).</font>"
return
if( !C || !istype(C,/client) )
if(holder) src << "<font color='red'>Error: Admin-PM: Client not found.</font>"
else adminhelp(msg) //admin we are replying to left. adminhelp instead
return
//get message text, limit it's length.and clean/escape html
if(!msg)
msg = input(src,"Message:", "Private message to [C.key]") as text|null
if(!msg) return
if(!C)
if(holder) src << "<font color='red'>Error: Admin-PM: Client not found.</font>"
else adminhelp(msg) //admin we are replying to has vanished, adminhelp instead
return
if (src.handle_spam_prevention(msg,MUTE_ADMINHELP))
return
//clean the message if it's not sent by a GA or GM
if( !holder || !(holder.rank in list("Game Admin", "Game Master")) )
msg = sanitize(copytext(msg,1,MAX_MESSAGE_LEN))
if(!msg) return
if(C.holder)
if(holder) //both are admins
if(holder.rank == "Moderator") //If moderator
C << "<font color='maroon'>Mod PM from-<b>[key_name(src, C, 1)]</b>: [msg]</font>"
src << "<font color='blue'>Mod PM to-<b>[key_name(C, src, 1)]</b>: [msg]</font>"
else
C << "<font color='red'>Admin PM from-<b>[key_name(src, C, 1)]</b>: [msg]</font>"
src << "<font color='blue'>Admin PM to-<b>[key_name(C, src, 1)]</b>: [msg]</font>"
else //recipient is an admin but sender is not
C << "<font color='red'>Reply PM from-<b>[key_name(src, C, 1)]</b>: [msg]</font>"
src << "<font color='blue'>PM to-<b>Admins</b>: [msg]</font>"
//play the recieving admin the adminhelp sound (if they have them enabled)
if(C.sound_adminhelp)
C << 'sound/effects/adminhelp.ogg'
else
if(holder) //sender is an admin but recipient is not. Do BIG RED TEXT
if(holder.rank == "Moderator")
C << "<font color='maroon'>Mod PM from-<b>[key_name(src, C, 0)]</b>: [msg]</font>"
C << "<font color='maroon'><i>Click on the moderators's name to reply.</i></font>"
src << "<font color='blue'>Mod PM to-<b>[key_name(C, src, 1)]</b>: [msg]</font>"
else
C << "<font color='red' size='4'><b>-- Administrator private message --</b></font>"
C << "<font color='red'>Admin PM from-<b>[key_name(src, C, 0)]</b>: [msg]</font>"
C << "<font color='red'><i>Click on the administrator's name to reply.</i></font>"
src << "<font color='blue'>Admin PM to-<b>[key_name(C, src, 1)]</b>: [msg]</font>"
//always play non-admin recipients the adminhelp sound
C << 'sound/effects/adminhelp.ogg'
//AdminPM popup for ApocStation and anybody else who wants to use it. Set it with POPUP_ADMIN_PM in config.txt ~Carn
if(config.popup_admin_pm)
spawn() //so we don't hold the caller proc up
var/sender = src
var/sendername = key
var/reply = input(C, msg,"Admin PM from-[sendername]", "") as text|null //show message and await a reply
if(C && reply)
if(sender)
C.cmd_admin_pm(sender,reply) //sender is still about, let's reply to them
else
adminhelp(reply) //sender has left, adminhelp instead
return
else //neither are admins
src << "<font color='red'>Error: Admin-PM: Non-admin to non-admin PM communication is forbidden.</font>"
return
log_admin("PM: [key_name(src)]->[key_name(C)]: [msg]")
//we don't use message_admins here because the sender/receiver might get it too
for(var/client/X) //there are fewer clients than mobs
if(X.holder && X.key!=key && X.key!=C.key) //check client/X is an admin and isn't the sender or recipient
X << "<B><font color='blue'>PM: [key_name(src, X, 0)]-&gt;[key_name(C, X, 0)]:</B> \blue [msg]</font>" //inform X
=======
//allows right clicking mobs to send an admin PM to their client, forwards the selected mob's client to cmd_admin_pm
/client/proc/cmd_admin_pm_context(mob/M as mob in mob_list)
set category = null
@@ -187,8 +65,12 @@
if(C.holder)
if(holder) //both are admins
C << "<font color='red'>Admin PM from-<b>[key_name(src, C, 1)]</b>: [msg]</font>"
src << "<font color='blue'>Admin PM to-<b>[key_name(C, src, 1)]</b>: [msg]</font>"
if(holder.rank == "Moderator") //If moderator
C << "<font color='maroon'>Mod PM from-<b>[key_name(src, C, 1)]</b>: [msg]</font>"
src << "<font color='blue'>Mod PM to-<b>[key_name(C, src, 1)]</b>: [msg]</font>"
else
C << "<font color='red'>Admin PM from-<b>[key_name(src, C, 1)]</b>: [msg]</font>"
src << "<font color='blue'>Admin PM to-<b>[key_name(C, src, 1)]</b>: [msg]</font>"
else //recipient is an admin but sender is not
C << "<font color='red'>Reply PM from-<b>[key_name(src, C, 1)]</b>: [msg]</font>"
@@ -200,10 +82,15 @@
else
if(holder) //sender is an admin but recipient is not. Do BIG RED TEXT
C << "<font color='red' size='4'><b>-- Administrator private message --</b></font>"
C << "<font color='red'>Admin PM from-<b>[key_name(src, C, 0)]</b>: [msg]</font>"
C << "<font color='red'><i>Click on the administrator's name to reply.</i></font>"
src << "<font color='blue'>Admin PM to-<b>[key_name(C, src, 1)]</b>: [msg]</font>"
if(holder.rank == "Moderator")
C << "<font color='maroon'>Mod PM from-<b>[key_name(src, C, 0)]</b>: [msg]</font>"
C << "<font color='maroon'><i>Click on the moderators's name to reply.</i></font>"
src << "<font color='blue'>Mod PM to-<b>[key_name(C, src, 1)]</b>: [msg]</font>"
else
C << "<font color='red' size='4'><b>-- Administrator private message --</b></font>"
C << "<font color='red'>Admin PM from-<b>[key_name(src, C, 0)]</b>: [msg]</font>"
C << "<font color='red'><i>Click on the administrator's name to reply.</i></font>"
src << "<font color='blue'>Admin PM to-<b>[key_name(C, src, 1)]</b>: [msg]</font>"
//always play non-admin recipients the adminhelp sound
C << 'sound/effects/adminhelp.ogg'
@@ -231,4 +118,4 @@
for(var/client/X) //there are fewer clients than mobs
if(X.holder && X.key!=key && X.key!=C.key) //check client/X is an admin and isn't the sender or recipient
X << "<B><font color='blue'>PM: [key_name(src, X, 0)]-&gt;[key_name(C, X, 0)]:</B> \blue [msg]</font>" //inform X
>>>>>>> remotes/git-svn