Fixes a possible problem where admins could be kicked if ghostize failed whilst they tried to Adminghostize

Fixes Issue 959 - the holder's state was not being set properly. It is now all handled at login. Verbs only update if rank or state have changed. You can bypass this simply by setting holder.state = null  before calling update_admins()
Moved obj/admins stuff into holder.dm so the core stuff is together, pending some possible work on admin-ranks.
Admins can no-longer adminghost whilst in the lobby.


git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4746 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
elly1989@rocketmail.com
2012-09-24 06:06:25 +00:00
parent 508ca6a7d3
commit 9e182f0e39
9 changed files with 2734 additions and 2741 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -17,28 +17,30 @@
// verbs += /client/proc/Cell //More air things
/client/proc/update_admins(var/rank)
if(!holder)
holder = new /obj/admins(src)
holder.rank = rank
/* Unused
if(!holder.state)
var/state = alert("Which state do you want the admin to begin in?", "Admin-state", "Play", "Observe", "Neither")
if(state == "Play")
var/need_update = 0
//check if our rank has changed
if(holder.rank != rank)
holder.rank = rank
need_update = 1
//check if our state has changed
if(istype(mob,/mob/living))
if(holder.state != 1)
holder.state = 1
admin_play()
return
else if(state == "Observe")
need_update = 1
else
if(holder.state != 2)
holder.state = 2
admin_observe()
return
else
del(holder)
return */
need_update = 1
switch (rank)
if ("Game Master")
if(!need_update) return
clear_admin_verbs()
switch(rank)
if("Game Master")
holder.level = 6
if ("Game Admin")
@@ -88,10 +90,10 @@
if ("Admin Observer")
holder.level = -1
if ("Banned")
holder.level = -2
del(src)
return
// if ("Banned")
// holder.level = -2
// del(src)
// return
else
del(holder)
@@ -286,127 +288,132 @@
/client/proc/clear_admin_verbs()
deadchat = 0
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/delay //game start delay
verbs -= /obj/admins/proc/immreboot //immediate reboot
verbs -= /obj/admins/proc/restart //restart
verbs -= /obj/admins/proc/show_traitor_panel
verbs -= /obj/admins/proc/show_player_panel
verbs -= /obj/admins/proc/toggle_aliens //toggle aliens
verbs -= /obj/admins/proc/toggle_space_ninja //toggle ninjas
verbs -= /obj/admins/proc/adjump
verbs -= /obj/admins/proc/view_txt_log
verbs -= /obj/admins/proc/view_atk_log
verbs -= /obj/admins/proc/spawn_atom
verbs -= /obj/admins/proc/adrev //toggle admin revives
verbs -= /obj/admins/proc/adspawn //toggle admin item spawning
verbs -= /obj/admins/proc/toggleaban //abandon mob
verbs -= /client/proc/hide_verbs
verbs -= /client/proc/hide_most_verbs
verbs -= /client/proc/show_verbs
verbs -= /client/proc/colorooc
verbs -= /client/proc/triple_ai
verbs -= /client/proc/get_admin_state
verbs -= /client/proc/reload_admins
verbs -= /client/proc/kill_air
verbs -= /client/proc/cmd_debug_make_powernets
verbs -= /client/proc/object_talk
verbs -= /client/proc/strike_team
verbs -= /client/proc/cmd_admin_list_open_jobs
verbs -= /client/proc/cmd_admin_direct_narrate
verbs -= /client/proc/cmd_admin_world_narrate
verbs -= /client/proc/callproc
verbs -= /client/proc/Cell
verbs -= /client/proc/cmd_debug_del_all
verbs -= /client/proc/cmd_debug_tog_aliens
// verbs -= /client/proc/mapload
verbs -= /client/proc/check_words
verbs -= /client/proc/drop_bomb
verbs.Remove(
/obj/admins/proc/announce,
/obj/admins/proc/startnow,
/obj/admins/proc/toggleAI, /*Toggle the AI*/
/obj/admins/proc/toggleenter, /*Toggle enterting*/
/obj/admins/proc/toggleguests, /*Toggle guests entering*/
/obj/admins/proc/toggleooc, /*toggle ooc*/
/obj/admins/proc/toggleoocdead, /*toggle ooc for dead/unc*/
/obj/admins/proc/delay, /*game start delay*/
/obj/admins/proc/immreboot, /*immediate reboot*/
/obj/admins/proc/restart, /*restart*/
/obj/admins/proc/show_traitor_panel,
/obj/admins/proc/show_player_panel,
/obj/admins/proc/toggle_aliens, /*toggle aliens*/
/obj/admins/proc/toggle_space_ninja,/*toggle ninjas*/
/obj/admins/proc/adjump,
/obj/admins/proc/view_txt_log,
/obj/admins/proc/view_atk_log,
/obj/admins/proc/spawn_atom,
/obj/admins/proc/adrev, /*toggle admin revives*/
/obj/admins/proc/adspawn, /*toggle admin item spawning*/
/obj/admins/proc/toggleaban, /*abandon mob*/
/client/proc/hide_verbs,
/client/proc/hide_most_verbs,
/client/proc/show_verbs,
/client/proc/colorooc,
/client/proc/triple_ai,
/client/proc/get_admin_state,
/client/proc/reload_admins,
/client/proc/kill_air,
/client/proc/cmd_debug_make_powernets,
/client/proc/object_talk,
/client/proc/strike_team,
/client/proc/cmd_admin_list_open_jobs,
/client/proc/cmd_admin_direct_narrate,
/client/proc/cmd_admin_world_narrate,
/client/proc/callproc,
/client/proc/Cell,
/client/proc/cmd_debug_del_all,
/client/proc/cmd_debug_tog_aliens,
/client/proc/check_words,
/client/proc/drop_bomb,
/client/proc/make_sound,
/client/proc/only_one,
/client/proc/send_space_ninja,
/client/proc/debug_variables,
/client/proc/cmd_modify_ticker_variables,
/client/proc/Debug2, /*debug toggle switch*/
/client/proc/toggle_view_range,
/client/proc/Getmob,
/client/proc/Getkey,
/client/proc/sendmob,
/client/proc/Jump,
/client/proc/jumptokey,
/client/proc/jumptomob,
/client/proc/jumptoturf,
/client/proc/cmd_admin_add_freeform_ai_law,
/client/proc/cmd_admin_add_random_ai_law,
/client/proc/cmd_admin_rejuvenate,
/client/proc/cmd_admin_delete,
/client/proc/toggleadminhelpsound,
/client/proc/admin_call_shuttle,
/client/proc/admin_cancel_shuttle,
/client/proc/cmd_admin_dress,
/client/proc/respawn_character,
/client/proc/spawn_xeno,
/client/proc/cmd_admin_add_random_ai_law,
/client/proc/secrets,
/client/proc/check_antagonists,
/client/proc/play_sound,
/client/proc/stealth,
/client/proc/cmd_admin_check_contents,
/client/proc/cmd_admin_create_centcom_report,
/client/proc/deadchat, /*toggles deadchat*/
/client/proc/cmd_admin_pm_context,
/client/proc/cmd_admin_pm_panel,
/client/proc/cmd_admin_say,
/client/proc/cmd_admin_subtle_message,
/client/proc/dsay,
/client/proc/admin_ghost,
/client/proc/game_panel,
/client/proc/player_panel,
/client/proc/unban_panel,
/client/proc/jobbans,
/client/proc/unjobban_panel,
/client/proc/hide_verbs,
/client/proc/general_report,
/client/proc/air_report,
/client/proc/cmd_admin_say,
/client/proc/cmd_admin_gib_self,
/client/proc/restart_controller,
/client/proc/play_local_sound,
/client/proc/enable_debug_verbs,
/client/proc/toggleprayers,
/client/proc/toggle_clickproc, /*TODO ERRORAGE (Temporary proc while the enw clickproc is being tested)*/
/client/proc/toggle_hear_deadcast,
/client/proc/toggle_hear_radio,
/client/proc/player_panel_new,
/client/proc/toggle_gravity_on,
/client/proc/toggle_gravity_off,
/client/proc/toggle_random_events,
/client/proc/deadmin_self,
/client/proc/jumptocoord,
/client/proc/everyone_random,
/client/proc/Set_Holiday,
/client/proc/giveruntimelog, /*used by coders to retrieve runtime logs*/
/client/proc/getserverlog,
/client/proc/cinematic, /*show a cinematic sequence*/
/client/proc/admin_memo,
/client/proc/investigate_show, /*investigate in-game mishaps using various logs.*/
/client/proc/toggle_log_hrefs,
/client/proc/ToRban,
/proc/possess,
/proc/release,
/client/proc/togglebuildmodeself,
/client/proc/kill_airgroup,
/client/proc/debug_controller,
/client/proc/startSinglo,
/client/proc/check_ai_laws,
/client/proc/cmd_debug_mob_lists,
/obj/admins/proc/access_news_network,
/client/proc/one_click_antag,
/client/proc/invisimin
)
//verbs -= /client/proc/mapload
//verbs -= /client/proc/cmd_admin_drop_everything --merged with view variables
verbs -= /client/proc/make_sound
verbs -= /client/proc/only_one
verbs -= /client/proc/send_space_ninja
verbs -= /client/proc/debug_variables
verbs -= /client/proc/cmd_modify_ticker_variables
verbs -= /client/proc/Debug2 //debug toggle switch
verbs -= /client/proc/toggle_view_range
verbs -= /client/proc/Getmob
verbs -= /client/proc/Getkey
verbs -= /client/proc/sendmob
verbs -= /client/proc/Jump
verbs -= /client/proc/jumptokey
verbs -= /client/proc/jumptomob
verbs -= /client/proc/jumptoturf
verbs -= /client/proc/cmd_admin_add_freeform_ai_law
verbs -= /client/proc/cmd_admin_add_random_ai_law
verbs -= /client/proc/cmd_admin_rejuvenate
verbs -= /client/proc/cmd_admin_delete
verbs -= /client/proc/toggleadminhelpsound
//verbs -= /client/proc/cmd_admin_remove_plasma --This proc is outdated, does not do anything
verbs -= /client/proc/admin_call_shuttle
verbs -= /client/proc/admin_cancel_shuttle
verbs -= /client/proc/cmd_admin_dress
verbs -= /client/proc/respawn_character
verbs -= /client/proc/spawn_xeno
verbs -= /client/proc/cmd_admin_add_random_ai_law
verbs -= /client/proc/secrets
verbs -= /client/proc/check_antagonists
verbs -= /client/proc/play_sound
verbs -= /client/proc/stealth
verbs -= /client/proc/cmd_admin_check_contents
verbs -= /client/proc/cmd_admin_create_centcom_report
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_pm_context
verbs -= /client/proc/cmd_admin_pm_panel
verbs -= /client/proc/cmd_admin_say
verbs -= /client/proc/cmd_admin_subtle_message
//verbs -= /client/proc/warn
verbs -= /client/proc/dsay
verbs -= /client/proc/admin_ghost
verbs -= /client/proc/game_panel
verbs -= /client/proc/player_panel
verbs -= /client/proc/unban_panel
verbs -= /client/proc/jobbans
verbs -= /client/proc/unjobban_panel
verbs -= /client/proc/hide_verbs
verbs -= /client/proc/general_report
verbs -= /client/proc/air_report
verbs -= /client/proc/cmd_admin_say
verbs -= /client/proc/cmd_admin_gib_self
verbs -= /client/proc/restart_controller
verbs -= /client/proc/play_local_sound
verbs -= /client/proc/enable_debug_verbs
verbs -= /client/proc/toggleprayers
// verbs -= /client/proc/Blobize
// verbs -= /client/proc/Blobcount
verbs -= /client/proc/toggle_clickproc //TODO ERRORAGE (Temporary proc while the enw clickproc is being tested)
verbs -= /client/proc/toggle_hear_deadcast
verbs -= /client/proc/toggle_hear_radio
verbs -= /client/proc/player_panel_new
verbs -= /client/proc/toggle_gravity_on
verbs -= /client/proc/toggle_gravity_off
verbs -= /client/proc/toggle_random_events
verbs -= /client/proc/deadmin_self
verbs -= /client/proc/jumptocoord
verbs -= /client/proc/everyone_random
verbs -= /client/proc/Set_Holiday
verbs -= /client/proc/giveruntimelog //used by coders to retrieve runtime logs
verbs -= /client/proc/getserverlog
verbs -= /client/proc/cinematic //show a cinematic sequence
verbs -= /client/proc/admin_memo
verbs -= /client/proc/investigate_show //investigate in-game mishaps using various logs.
verbs -= /client/proc/toggle_log_hrefs
verbs -= /client/proc/ToRban
verbs -= /proc/possess
verbs -= /proc/release
//verbs -= /client/proc/give_spell --Merged with view variables
//verbs -= /client/proc/cmd_admin_ninjafy --Merged with view variables
//verbs -= /client/proc/cmd_modify_object_variables --Merged with view variables
@@ -420,15 +427,11 @@
//verbs -= /client/proc/cmd_admin_prison --Merged with player panel
//verbs -= /obj/admins/proc/unprison --Merged with player panel
//verbs -= /client/proc/cmd_switch_radio --removed because tcommsat is staying
verbs -= /client/proc/togglebuildmodeself
verbs -= /client/proc/kill_airgroup
verbs -= /client/proc/debug_controller
verbs -= /client/proc/startSinglo
verbs -= /client/proc/check_ai_laws
verbs -= /client/proc/cmd_debug_mob_lists
verbs -= /obj/admins/proc/access_news_network
verbs -= /client/proc/one_click_antag
verbs -= /client/proc/invisimin
// verbs -= /client/proc/Blobize
// verbs -= /client/proc/Blobcount
//verbs -= /client/proc/warn
//verbs -= /client/proc/cmd_admin_mute --was never used (according to stats trackind) - use show player panel --erro
//verbs -= /client/proc/cmd_admin_remove_plasma --This proc is outdated, does not do anything
return
/client/proc/admin_ghost()
@@ -441,11 +444,12 @@
ghost.can_reenter_corpse = 1 //just in-case.
ghost.reenter_corpse()
feedback_add_details("admin_verb","P") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
else
else if(!istype(mob,/mob/new_player))
//ghostize
var/mob/body = mob
body.ghostize(1)
if(body) body.key = "@[key]" //Haaaaaaaack. But the people have spoken. If it breaks; blame adminbus
if(body && !body.key)
body.key = "@[key]" //Haaaaaaaack. But the people have spoken. If it breaks; blame adminbus
feedback_add_details("admin_verb","O") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -689,7 +693,7 @@
src << "Restoring admin verbs back"
var/temp = deadchat
clear_admin_verbs()
holder.state = null //forces a full verbs update
update_admins(holder.rank)
deadchat = temp
feedback_add_details("admin_verb","TAVVS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -731,7 +735,6 @@
log_admin("[src] deadmined themself.")
message_admins("[src] deadmined themself.", 1)
src.clear_admin_verbs()
src.update_admins(null)
admins.Remove(src.ckey)
admin_list -= src
usr << "You are now a normal player."

2566
code/modules/admin/holder.dm Normal file

File diff suppressed because it is too large Load Diff