suposed to be SSupdates but noo

This commit is contained in:
Letter N
2020-10-03 19:54:23 +08:00
parent 824cb8c118
commit 47845f2c30
23 changed files with 391 additions and 274 deletions
+3 -8
View File
@@ -1,6 +1,7 @@
PROCESSING_SUBSYSTEM_DEF(dcs)
name = "Datum Component System"
flags = SS_NO_INIT
wait = 1 SECONDS
var/list/elements_by_type = list()
@@ -38,17 +39,11 @@ PROCESSING_SUBSYSTEM_DEF(dcs)
if(istext(key))
value = arguments[key]
if(!(istext(key) || isnum(key)))
if(islist(key)) // CITADEL EDIT
key = deep_list2params(key)
else
key = REF(key)
key = REF(key)
key = "[key]" // Key is stringified so numbers dont break things
if(!isnull(value))
if(!(istext(value) || isnum(value)))
if(islist(value)) // CITADEL EDIT
value = deep_list2params(value)
else
value = REF(value)
value = REF(value)
named_arguments["[key]"] = value
else
fullid += "[key]"
+3 -3
View File
@@ -60,9 +60,9 @@ SUBSYSTEM_DEF(economy)
secmedsrv_payout() // Payout based on crew safety, health, and mood.
civ_payout() // Payout based on ??? Profit
car_payout() // Cargo's natural gain in the cash moneys.
for(var/A in bank_accounts)
var/datum/bank_account/B = A
B.payday(1)
for(var/account in bank_accounts)
var/datum/bank_account/bank_account = account
bank_account.payday(1)
/datum/controller/subsystem/economy/proc/get_dep_account(dep_id)
+1 -1
View File
@@ -100,7 +100,7 @@ SUBSYSTEM_DEF(events)
// REEEEEEEEE
/client/proc/forceEvent()
set name = "Trigger Event"
set category = "Fun"
set category = "Admin.Events"
if(!holder ||!check_rights(R_FUN))
return
+1 -1
View File
@@ -447,7 +447,7 @@ GLOBAL_LIST_EMPTY(the_station_areas)
//Manual loading of away missions.
/client/proc/admin_away()
set name = "Load Away Mission / Virtual Reality"
set category = "Fun"
set category = "Admin.Events"
if(!holder ||!check_rights(R_FUN))
return
+2 -2
View File
@@ -12,7 +12,7 @@
///////////////////////////////////////////////////////////////////////////////////////////////Panels
/datum/admins/proc/show_player_panel(mob/M in GLOB.mob_list)
set category = "Admin"
set category = "Admin.Game"
set name = "Show Player Panel"
set desc="Edit player (respawn, ban, heal, etc)"
@@ -211,7 +211,7 @@
/datum/admins/proc/access_news_network() //MARKER
set category = "Fun"
set category = "Admin.Events"
set name = "Access Newscaster Network"
set desc = "Allows you to view, add and edit news feeds."
+1 -1
View File
@@ -6,7 +6,7 @@
/client/proc/investigate_show()
set name = "Investigate"
set category = "Admin"
set category = "Admin.Game"
if(!holder)
return
+14 -14
View File
@@ -348,7 +348,7 @@ GLOBAL_PROTECT(admin_verbs_hideable)
/client/proc/admin_ghost()
set category = "Admin"
set category = "Admin.Game"
set name = "Aghost"
if(!holder)
return FALSE
@@ -379,7 +379,7 @@ GLOBAL_PROTECT(admin_verbs_hideable)
/client/proc/invisimin()
set name = "Invisimin"
set category = "Admin"
set category = "Admin.Game"
set desc = "Toggles ghost-like invisibility (Don't abuse this)"
if(holder && mob)
if(mob.invisibility == INVISIBILITY_OBSERVER)
@@ -391,7 +391,7 @@ GLOBAL_PROTECT(admin_verbs_hideable)
/client/proc/check_antagonists()
set name = "Check Antagonists"
set category = "Admin"
set category = "Admin.Game"
if(holder)
holder.check_antagonists()
log_admin("[key_name(usr)] checked antagonists.") //for tsar~
@@ -411,14 +411,14 @@ GLOBAL_PROTECT(admin_verbs_hideable)
/client/proc/game_panel()
set name = "Game Panel"
set category = "Admin"
set category = "Admin.Game"
if(holder)
holder.Game()
SSblackbox.record_feedback("tally", "admin_verb", 1, "Game Panel") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/secrets()
set name = "Secrets"
set category = "Admin"
set category = "Admin.Game"
if (holder)
holder.Secrets()
SSblackbox.record_feedback("tally", "admin_verb", 1, "Secrets Panel") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -472,7 +472,7 @@ GLOBAL_PROTECT(admin_verbs_hideable)
SSblackbox.record_feedback("tally", "admin_verb", 1, "Stealth Mode") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/drop_bomb()
set category = "Special Verbs"
set category = "Admin.Fun"
set name = "Drop Bomb"
set desc = "Cause an explosion of varying strength at your location."
@@ -514,7 +514,7 @@ GLOBAL_PROTECT(admin_verbs_hideable)
SSblackbox.record_feedback("tally", "admin_verb", 1, "Drop Bomb") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/drop_dynex_bomb()
set category = "Special Verbs"
set category = "Admin.Fun"
set name = "Drop DynEx Bomb"
set desc = "Cause an explosion of varying strength at your location."
@@ -561,7 +561,7 @@ GLOBAL_PROTECT(admin_verbs_hideable)
message_admins("[key_name_admin(usr)] has modified Dynamic Explosion Scale: [ex_scale]")
/client/proc/give_spell(mob/T in GLOB.mob_list)
set category = "Fun"
set category = "Admin.Fun"
set name = "Give Spell"
set desc = "Gives a spell to a mob."
@@ -585,7 +585,7 @@ GLOBAL_PROTECT(admin_verbs_hideable)
message_admins("<span class='danger'>Spells given to mindless mobs will not be transferred in mindswap or cloning!</span>")
/client/proc/remove_spell(mob/T in GLOB.mob_list)
set category = "Fun"
set category = "Admin.Fun"
set name = "Remove Spell"
set desc = "Remove a spell from the selected mob."
@@ -598,7 +598,7 @@ GLOBAL_PROTECT(admin_verbs_hideable)
SSblackbox.record_feedback("tally", "admin_verb", 1, "Remove Spell") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/give_disease(mob/living/T in GLOB.mob_living_list)
set category = "Fun"
set category = "Admin.Fun"
set name = "Give Disease"
set desc = "Gives a Disease to a mob."
if(!istype(T))
@@ -613,7 +613,7 @@ GLOBAL_PROTECT(admin_verbs_hideable)
message_admins("<span class='adminnotice'>[key_name_admin(usr)] gave [key_name(T)] the disease [D].</span>")
/client/proc/object_say(obj/O in world)
set category = "Special Verbs"
set category = "Admin.Events"
set name = "OSay"
set desc = "Makes an object say something."
var/message = input(usr, "What do you want the message to be?", "Make Sound") as text | null
@@ -625,7 +625,7 @@ GLOBAL_PROTECT(admin_verbs_hideable)
SSblackbox.record_feedback("tally", "admin_verb", 1, "Object Say") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/togglebuildmodeself()
set name = "Toggle Build Mode Self"
set category = "Special Verbs"
set category = "Admin.Events"
if (!(holder.rank.rights & R_BUILDMODE))
return
if(src.mob)
@@ -634,7 +634,7 @@ GLOBAL_PROTECT(admin_verbs_hideable)
/client/proc/check_ai_laws()
set name = "Check AI Laws"
set category = "Admin"
set category = "Admin.Game"
if(holder)
src.holder.output_ai_laws()
@@ -717,7 +717,7 @@ GLOBAL_PROTECT(admin_verbs_hideable)
/client/proc/toggle_AI_interact()
set name = "Toggle Admin AI Interact"
set category = "Admin"
set category = "Admin.Game"
set desc = "Allows you to interact with most machines as an AI would as a ghost"
AI_Interact = !AI_Interact
+1 -1
View File
@@ -5,7 +5,7 @@
/datum/verbs/menu/Admin/verb/playerpanel()
set name = "Player Panel"
set desc = "Player Panel"
set category = "Admin"
set category = "Admin.Game"
if(usr.client.holder)
usr.client.holder.player_panel_new()
SSblackbox.record_feedback("tally", "admin_verb", 1, "Player Panel New") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
+8 -8
View File
@@ -1,7 +1,7 @@
/client/proc/jumptoarea(area/A in GLOB.sortedAreas)
set name = "Jump to Area"
set desc = "Area to jump to"
set category = "Admin"
set category = "Admin.Game"
if(!src.holder)
to_chat(src, "Only administrators may use this command.", confidential = TRUE)
return
@@ -28,7 +28,7 @@
/client/proc/jumptoturf(turf/T in world)
set name = "Jump to Turf"
set category = "Admin"
set category = "Admin.Game"
if(!src.holder)
to_chat(src, "Only administrators may use this command.", confidential = TRUE)
return
@@ -40,7 +40,7 @@
return
/client/proc/jumptomob(mob/M in GLOB.mob_list)
set category = "Admin"
set category = "Admin.Game"
set name = "Jump to Mob"
if(!src.holder)
@@ -59,7 +59,7 @@
to_chat(A, "This mob is not located in the game world.", confidential = TRUE)
/client/proc/jumptocoord(tx as num, ty as num, tz as num)
set category = "Admin"
set category = "Admin.Game"
set name = "Jump to Coordinate"
if (!holder)
@@ -74,7 +74,7 @@
message_admins("[key_name_admin(usr)] jumped to coordinates [tx], [ty], [tz]")
/client/proc/jumptokey()
set category = "Admin"
set category = "Admin.Game"
set name = "Jump to Key"
if(!src.holder)
@@ -97,7 +97,7 @@
SSblackbox.record_feedback("tally", "admin_verb", 1, "Jump To Key") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/Getmob(mob/M in GLOB.mob_list - GLOB.dummy_mob_list)
set category = "Admin"
set category = "Admin.Game"
set name = "Get Mob"
set desc = "Mob to teleport"
if(!src.holder)
@@ -113,7 +113,7 @@
SSblackbox.record_feedback("tally", "admin_verb", 1, "Get Mob") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/Getkey()
set category = "Admin"
set category = "Admin.Game"
set name = "Get Key"
set desc = "Key to teleport"
@@ -141,7 +141,7 @@
SSblackbox.record_feedback("tally", "admin_verb", 1, "Get Key") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/sendmob(mob/M in sortmobs())
set category = "Admin"
set category = "Admin.Game"
set name = "Send Mob"
if(!src.holder)
to_chat(src, "Only administrators may use this command.", confidential = TRUE)
+1 -1
View File
@@ -1,5 +1,5 @@
/datum/admins/proc/open_borgopanel(borgo in GLOB.silicon_mobs)
set category = "Admin"
set category = "Admin.Game"
set name = "Show Borg Panel"
set desc = "Show borg panel"
+1 -1
View File
@@ -1,6 +1,6 @@
/client/proc/cinematic()
set name = "cinematic"
set category = "Fun"
set category = "Admin.Fun"
set desc = "Shows a cinematic." // Intended for testing but I thought it might be nice for events on the rare occasion Feel free to comment it out if it's not wanted.
set hidden = 1
if(!SSticker)
+1 -1
View File
@@ -1,5 +1,5 @@
/client/proc/dsay(msg as text)
set category = "Special Verbs"
set category = "Admin.Game"
set name = "Dsay"
set hidden = 1
if(!holder)
+35 -8
View File
@@ -27,7 +27,7 @@
SSblackbox.record_feedback("tally", "admin_verb", 1, "Air Status In Location") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/cmd_admin_robotize(mob/M in GLOB.mob_list)
set category = "Fun"
set category = "Admin.Fun"
set name = "Make Robot"
if(!SSticker.HasRoundStarted())
@@ -43,7 +43,7 @@
alert("Invalid mob")
/client/proc/cmd_admin_blobize(mob/M in GLOB.mob_list)
set category = "Fun"
set category = "Admin.Fun"
set name = "Make Blob"
if(!SSticker.HasRoundStarted())
@@ -58,7 +58,7 @@
/client/proc/cmd_admin_animalize(mob/M in GLOB.mob_list)
set category = "Fun"
set category = "Admin.Fun"
set name = "Make Simple Animal"
if(!SSticker.HasRoundStarted())
@@ -79,7 +79,7 @@
/client/proc/makepAI(turf/T in GLOB.mob_list)
set category = "Fun"
set category = "Admin.Fun"
set name = "Make pAI"
set desc = "Specify a location to spawn a pAI device, then specify a key to play that pAI"
@@ -106,7 +106,7 @@
SSblackbox.record_feedback("tally", "admin_verb", 1, "Make pAI") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/cmd_admin_alienize(mob/M in GLOB.mob_list)
set category = "Fun"
set category = "Admin.Fun"
set name = "Make Alien"
if(!SSticker.HasRoundStarted())
@@ -121,7 +121,7 @@
alert("Invalid mob")
/client/proc/cmd_admin_slimeize(mob/M in GLOB.mob_list)
set category = "Fun"
set category = "Admin.Fun"
set name = "Make slime"
if(!SSticker.HasRoundStarted())
@@ -211,7 +211,7 @@
message_admins("<span class='adminnotice'>[key_name_admin(usr)] has granted [M.key] full access.</span>")
/client/proc/cmd_assume_direct_control(mob/M in GLOB.mob_list)
set category = "Admin"
set category = "Admin.Game"
set name = "Assume direct control"
set desc = "Direct intervention"
@@ -229,6 +229,33 @@
qdel(adminmob)
SSblackbox.record_feedback("tally", "admin_verb", 1, "Assume Direct Control") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/cmd_give_direct_control(mob/M in GLOB.mob_list)
set category = "Admin.Game"
set name = "Give direct control"
if(!M)
return
if(M.ckey)
if(alert("This mob is being controlled by [M.key]. Are you sure you wish to give someone else control of it? [M.key] will be made a ghost.",,"Yes","No") != "Yes")
return
var/client/newkey = input(src, "Pick the player to put in control.", "New player") as null|anything in sortList(GLOB.clients)
var/mob/oldmob = newkey.mob
var/delmob = FALSE
if((isobserver(oldmob) || alert("Do you want to delete [newkey]'s old mob?","Delete?","Yes","No") != "No"))
delmob = TRUE
if(!M || QDELETED(M))
to_chat(usr, "<span class='warning'>The target mob no longer exists, aborting.</span>")
return
if(M.ckey)
M.ghostize(FALSE)
M.ckey = newkey.key
M.client?.init_verbs()
if(delmob)
qdel(oldmob)
message_admins("<span class='adminnotice'>[key_name_admin(usr)] gave away direct control of [M] to [newkey].</span>")
log_admin("[key_name(usr)] gave away direct control of [M] to [newkey].")
SSblackbox.record_feedback("tally", "admin_verb", 1, "Give Direct Control") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/cmd_admin_test_atmos_controllers()
set category = "Mapping"
set name = "Test Atmos Monitoring Consoles"
@@ -455,7 +482,7 @@
cmd_admin_areatest(FALSE)
/client/proc/cmd_admin_dress(mob/M in GLOB.mob_list)
set category = "Fun"
set category = "Admin.Events"
set name = "Select equipment"
if(!(ishuman(M) || isobserver(M)))
alert("Invalid mob")
+1 -1
View File
@@ -1,5 +1,5 @@
/client/proc/roll_dices()
set category = "Fun"
set category = "Admin.Fun"
set name = "Roll Dice"
if(!check_rights(R_FUN))
return
+1 -1
View File
@@ -1,7 +1,7 @@
/client/proc/one_click_antag()
set name = "Create Antagonist"
set desc = "Auto-create an antagonist of your choice"
set category = "Admin"
set category = "Admin.Events"
if(holder)
holder.one_click_antag()
+5 -5
View File
@@ -1,5 +1,5 @@
/client/proc/play_sound(S as sound)
set category = "Fun"
set category = "Admin.Fun"
set name = "Play Global Sound"
if(!check_rights(R_SOUNDS))
return
@@ -42,7 +42,7 @@
/client/proc/play_local_sound(S as sound)
set category = "Fun"
set category = "Admin.Fun"
set name = "Play Local Sound"
if(!check_rights(R_SOUNDS))
return
@@ -53,7 +53,7 @@
SSblackbox.record_feedback("tally", "admin_verb", 1, "Play Local Sound") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/play_web_sound()
set category = "Fun"
set category = "Admin.Fun"
set name = "Play Internet Sound"
if(!check_rights(R_SOUNDS))
return
@@ -136,7 +136,7 @@
SSblackbox.record_feedback("tally", "admin_verb", 1, "Play Internet Sound")
/client/proc/manual_play_web_sound()
set category = "Fun"
set category = "Admin.Fun"
set name = "Manual Play Internet Sound"
if(!check_rights(R_SOUNDS))
return
@@ -182,7 +182,7 @@
SSblackbox.record_feedback("tally", "admin_verb", 1, "Manual Play Internet Sound")
/client/proc/set_round_end_sound(S as sound)
set category = "Fun"
set category = "Admin.Fun"
set name = "Set Round End Sound"
if(!check_rights(R_SOUNDS))
return
+70 -29
View File
@@ -20,7 +20,7 @@
SSblackbox.record_feedback("tally", "admin_verb", 1, "Drop Everything") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/cmd_admin_subtle_message(mob/M in GLOB.mob_list)
set category = "Special Verbs"
set category = "Admin.Events"
set name = "Subtle Message"
if(!ismob(M))
@@ -46,7 +46,7 @@
SSblackbox.record_feedback("tally", "admin_verb", 1, "Subtle Message") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/cmd_admin_headset_message(mob/M in GLOB.mob_list)
set category = "Special Verbs"
set category = "Admin.Events"
set name = "Headset Message"
admin_headset_message(M)
@@ -128,7 +128,7 @@
SSblackbox.record_feedback("tally", "admin_verb", 1, "Modify Antagonist Reputation") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/cmd_admin_world_narrate()
set category = "Special Verbs"
set category = "Admin.Events"
set name = "Global Narrate"
if(!check_rights(R_ADMIN))
@@ -144,7 +144,7 @@
SSblackbox.record_feedback("tally", "admin_verb", 1, "Global Narrate") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/cmd_admin_direct_narrate(mob/M)
set category = "Special Verbs"
set category = "Admin.Events"
set name = "Direct Narrate"
if(!check_rights(R_ADMIN))
@@ -169,7 +169,7 @@
SSblackbox.record_feedback("tally", "admin_verb", 1, "Direct Narrate") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/cmd_admin_local_narrate(atom/A)
set category = "Special Verbs"
set category = "Admin.Events"
set name = "Local Narrate"
if(!check_rights(R_ADMIN))
@@ -190,7 +190,7 @@
SSblackbox.record_feedback("tally", "admin_verb", 1, "Local Narrate") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/cmd_admin_godmode(mob/M in GLOB.mob_list)
set category = "Special Verbs"
set category = "Admin.Game"
set name = "Godmode"
if(!check_rights(R_ADMIN))
return
@@ -335,7 +335,7 @@ Works kind of like entering the game with a new character. Character receives a
Traitors and the like can also be revived with the previous role mostly intact.
/N */
/client/proc/respawn_character()
set category = "Special Verbs"
set category = "Admin.Game"
set name = "Respawn Character"
set desc = "Respawn a person that has been gibbed/dusted/killed. They must be a ghost for this to work and preferably should not have a body to go back into."
if(!check_rights(R_ADMIN))
@@ -503,7 +503,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
return new_character
/client/proc/cmd_admin_add_freeform_ai_law()
set category = "Fun"
set category = "Admin.Events"
set name = "Add Custom AI law"
if(!check_rights(R_ADMIN))
@@ -546,7 +546,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
SSblackbox.record_feedback("tally", "admin_verb", 1, "Rejuvinate") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/cmd_admin_create_centcom_report()
set category = "Special Verbs"
set category = "Admin.Events"
set name = "Create Command Report"
if(!check_rights(R_ADMIN))
@@ -572,7 +572,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
SSblackbox.record_feedback("tally", "admin_verb", 1, "Create Command Report") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/cmd_change_command_name()
set category = "Special Verbs"
set category = "Admin.Events"
set name = "Change Command Name"
if(!check_rights(R_ADMIN))
@@ -595,7 +595,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
admin_delete(A)
/client/proc/cmd_admin_list_open_jobs()
set category = "Admin"
set category = "Admin.Game"
set name = "Manage Job Slots"
if(!check_rights(R_ADMIN))
@@ -604,7 +604,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
SSblackbox.record_feedback("tally", "admin_verb", 1, "Manage Job Slots") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/cmd_admin_explosion(atom/O as obj|mob|turf in world)
set category = "Special Verbs"
set category = "Admin.Fun"
set name = "Explosion"
if(!check_rights(R_ADMIN))
@@ -640,7 +640,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
return
/client/proc/cmd_admin_emp(atom/O as obj|mob|turf in world)
set category = "Special Verbs"
set category = "Admin.Fun"
set name = "EM Pulse"
if(!check_rights(R_ADMIN))
@@ -656,7 +656,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
SSblackbox.record_feedback("tally", "admin_verb", 1, "EM Pulse") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/cmd_admin_gib(mob/M in GLOB.mob_list)
set category = "Special Verbs"
set category = "Admin.Fun"
set name = "Gib"
if(!check_rights(R_ADMIN))
@@ -683,7 +683,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
/client/proc/cmd_admin_gib_self()
set name = "Gibself"
set category = "Fun"
set category = "Admin.Fun"
var/confirm = alert(src, "You sure?", "Confirm", "Yes", "No")
if(confirm == "Yes")
@@ -702,7 +702,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
SSblackbox.record_feedback("tally", "admin_verb", 1, "Check Contents") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/toggle_view_range()
set category = "Special Verbs"
set category = "Admin.Game"
set name = "Change View Range"
set desc = "switches between 1x and custom views"
@@ -717,8 +717,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Change View Range", "[view]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/admin_call_shuttle()
set category = "Admin"
set category = "Admin.Events"
set name = "Call Shuttle"
if(EMERGENCY_AT_LEAST_DOCKED)
@@ -738,7 +737,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
return
/client/proc/admin_cancel_shuttle()
set category = "Admin"
set category = "Admin.Events"
set name = "Cancel Shuttle"
if(!check_rights(0))
return
@@ -754,9 +753,51 @@ Traitors and the like can also be revived with the previous role mostly intact.
message_admins("<span class='adminnotice'>[key_name_admin(usr)] admin-recalled the emergency shuttle.</span>")
return
/*
/client/proc/admin_disable_shuttle()
set category = "Admin.Events"
set name = "Disable Shuttle"
if(!check_rights(R_ADMIN))
return
if(SSshuttle.emergency.mode == SHUTTLE_DISABLED)
to_chat(usr, "<span class='warning'>Error, shuttle is already disabled.</span>")
return
if(alert(src, "You sure?", "Confirm", "Yes", "No") != "Yes")
return
message_admins("<span class='adminnotice'>[key_name_admin(usr)] disabled the shuttle.</span>")
SSshuttle.lastMode = SSshuttle.emergency.mode
SSshuttle.lastCallTime = SSshuttle.emergency.timeLeft(1)
SSshuttle.adminEmergencyNoRecall = TRUE
SSshuttle.emergency.setTimer(0)
SSshuttle.emergency.mode = SHUTTLE_DISABLED
priority_announce("Warning: Emergency Shuttle uplink failure, shuttle disabled until further notice.", "Emergency Shuttle Uplink Alert", 'sound/misc/announce_dig.ogg')
/client/proc/admin_enable_shuttle()
set category = "Admin - Events"
set category = "Admin.Events"
set name = "Enable Shuttle"
if(!check_rights(R_ADMIN))
return
if(SSshuttle.emergency.mode != SHUTTLE_DISABLED)
to_chat(usr, "<span class='warning'>Error, shuttle not disabled.</span>")
return
if(alert(src, "You sure?", "Confirm", "Yes", "No") != "Yes")
return
message_admins("<span class='adminnotice'>[key_name_admin(usr)] enabled the emergency shuttle.</span>")
SSshuttle.adminEmergencyNoRecall = FALSE
SSshuttle.emergencyNoRecall = FALSE
if(SSshuttle.lastMode == SHUTTLE_DISABLED) //If everything goes to shit, fix it.
SSshuttle.lastMode = SHUTTLE_IDLE
SSshuttle.emergency.mode = SSshuttle.lastMode
if(SSshuttle.lastCallTime < 10 SECONDS && SSshuttle.lastMode != SHUTTLE_IDLE)
SSshuttle.lastCallTime = 10 SECONDS //Make sure no insta departures.
SSshuttle.emergency.setTimer(SSshuttle.lastCallTime)
priority_announce("Warning: Emergency Shuttle uplink reestablished, shuttle enabled.", "Emergency Shuttle Uplink Alert", 'sound/misc/announce_dig.ogg')
*/
/client/proc/everyone_random()
set category = "Fun"
set category = "Admin.Fun"
set name = "Make Everyone Random"
set desc = "Make everyone have a random appearance. You can only use this before rounds!"
@@ -804,7 +845,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
/client/proc/admin_change_sec_level()
set category = "Special Verbs"
set category = "Admin.Events"
set name = "Set Security Level"
set desc = "Changes the security level. Announcement only, i.e. setting to Delta won't activate nuke"
@@ -821,7 +862,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
/client/proc/toggle_nuke(obj/machinery/nuclearbomb/N in GLOB.nuke_list)
set name = "Toggle Nuke"
set category = "Fun"
set category = "Admin.Events"
set popup_menu = 0
if(!check_rights(R_DEBUG))
return
@@ -1016,7 +1057,7 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits
usr << browse(dat, "window=dressup;size=550x600")
/client/proc/toggle_combo_hud()
set category = "Admin"
set category = "Admin.Game"
set name = "Toggle Combo HUD"
set desc = "Toggles the Admin Combo HUD (antag, sci, med, eng)"
@@ -1051,7 +1092,7 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits
/client/proc/run_weather()
set category = "Fun"
set category = "Admin.Events"
set name = "Run Weather"
set desc = "Triggers a weather on the z-level you choose."
@@ -1075,7 +1116,7 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits
SSblackbox.record_feedback("tally", "admin_verb", 1, "Run Weather")
/client/proc/mass_zombie_infection()
set category = "Fun"
set category = "Admin.Fun"
set name = "Mass Zombie Infection"
set desc = "Infects all humans with a latent organ that will zombify \
them on death."
@@ -1095,7 +1136,7 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits
SSblackbox.record_feedback("tally", "admin_verb", 1, "Mass Zombie Infection")
/client/proc/mass_zombie_cure()
set category = "Fun"
set category = "Admin.Fun"
set name = "Mass Zombie Cure"
set desc = "Removes the zombie infection from all humans, returning them to normal."
if(!check_rights(R_ADMIN))
@@ -1113,7 +1154,7 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits
SSblackbox.record_feedback("tally", "admin_verb", 1, "Mass Zombie Cure")
/client/proc/polymorph_all()
set category = "Fun"
set category = "Admin.Fun"
set name = "Polymorph All"
set desc = "Applies the effects of the bolt of change to every single mob."
@@ -1203,7 +1244,7 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggled Hub Visibility", "[GLOB.hub_visibility ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/cmd_admin_toggle_fov()
set category = "Fun"
set category = "Admin.Fun"
set name = "Enable/Disable Field of Vision"
var/static/busy_toggling_fov = FALSE
@@ -1256,7 +1297,7 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits
/client/proc/smite(mob/living/carbon/human/target as mob)
set name = "Smite"
set category = "Fun"
set category = "Admin.Fun"
if(!check_rights(R_ADMIN) || !check_rights(R_FUN))
return
+1 -1
View File
@@ -1,5 +1,5 @@
/datum/admins/proc/open_shuttlepanel()
set category = "Admin"
set category = "Admin.Events"
set name = "Shuttle Manipulator"
set desc = "Opens the shuttle manipulator UI."
+1 -1
View File
@@ -1,5 +1,5 @@
/client/proc/triple_ai()
set category = "Fun"
set category = "Admin.Events"
set name = "Create AI Triumvirate"
if(SSticker.current_state > GAME_STATE_PREGAME)
+1 -1
View File
@@ -12,7 +12,7 @@
/client/proc/centcom_podlauncher() //Creates a verb for admins to open up the ui
set name = "Config/Launch Supplypod"
set desc = "Configure and launch a CentCom supplypod full of whatever your heart desires!"
set category = "Admin"
set category = "Admin.Events"
var/datum/centcom_podlauncher/plaunch = new(usr)//create the datum
plaunch.ui_interact(usr)//datum has a tgui component, here we open the window
+5 -5
View File
@@ -386,7 +386,7 @@ GLOBAL_LIST_INIT(ghost_orbits, list(GHOST_ORBIT_CIRCLE,GHOST_ORBIT_TRIANGLE,GHOS
//Admin Preferences
/client/proc/toggleadminhelpsound()
set name = "Hear/Silence Adminhelps"
set category = "Preferences"
set category = "Preferences.Admin"
set desc = "Toggle hearing a notification when admin PMs are received"
if(!holder)
return
@@ -397,7 +397,7 @@ GLOBAL_LIST_INIT(ghost_orbits, list(GHOST_ORBIT_CIRCLE,GHOST_ORBIT_TRIANGLE,GHOS
/client/proc/toggleannouncelogin()
set name = "Do/Don't Announce Login"
set category = "Preferences"
set category = "Preferences.Admin"
set desc = "Toggle if you want an announcement to admins when you login during a round"
if(!holder)
return
@@ -408,7 +408,7 @@ GLOBAL_LIST_INIT(ghost_orbits, list(GHOST_ORBIT_CIRCLE,GHOST_ORBIT_TRIANGLE,GHOS
/client/proc/toggle_hear_radio()
set name = "Show/Hide Radio Chatter"
set category = "Preferences"
set category = "Preferences.Admin"
set desc = "Toggle seeing radiochatter from nearby radios and speakers"
if(!holder)
return
@@ -419,7 +419,7 @@ GLOBAL_LIST_INIT(ghost_orbits, list(GHOST_ORBIT_CIRCLE,GHOST_ORBIT_TRIANGLE,GHOS
/client/proc/deadchat()
set name = "Show/Hide Deadchat"
set category = "Preferences"
set category = "Preferences.Admin"
set desc ="Toggles seeing deadchat"
prefs.chat_toggles ^= CHAT_DEAD
prefs.save_preferences()
@@ -428,7 +428,7 @@ GLOBAL_LIST_INIT(ghost_orbits, list(GHOST_ORBIT_CIRCLE,GHOST_ORBIT_TRIANGLE,GHOS
/client/proc/toggleprayers()
set name = "Show/Hide Prayers"
set category = "Preferences"
set category = "Preferences.Admin"
set desc = "Toggles seeing prayers"
prefs.chat_toggles ^= CHAT_PRAYER
prefs.save_preferences()
+3 -3
View File
@@ -111,16 +111,16 @@ GLOBAL_VAR_INIT(normal_ooc_colour, "#002eb8")
/client/proc/set_ooc(newColor as color)
set name = "Set Player OOC Color"
set desc = "Modifies player OOC Color"
set category = "Fun"
set category = "Admin.Fun"
GLOB.OOC_COLOR = sanitize_ooccolor(newColor)
/client/proc/reset_ooc()
set name = "Reset Player OOC Color"
set desc = "Returns player OOC Color to default"
set category = "Fun"
set category = "Admin.Fun"
GLOB.OOC_COLOR = null
/client/verb/colorooc()
/client/verb/colorooc() //this is admin and people who bought byond.
set name = "Set Your OOC Color"
set category = "Preferences"
+231 -177
View File
@@ -7,149 +7,172 @@
<meta http-equiv="Cache-Control" content="max-age=15; must-revalidate" />
<link id="goonStyle" rel="stylesheet" type="text/css" href="browserOutput_white.css" media="all" />
<style>
body {
font-family: Verdana, Geneva, Tahoma, sans-serif;
font-size: 12px !important;
margin: 0 !important;
padding: 0 !important;
}
body.dark {
background-color: #131313;
color: #abc6ec;
}
body {
font-family: Verdana, Geneva, Tahoma, sans-serif;
font-size: 12px !important;
margin: 0 !important;
padding: 0 !important;
}
body.dark {
background-color: #131313;
color: #abc6ec;
}
#menu {
background-color: white;
position: fixed;
padding: 7px;
width: 100%;
}
.dark #menu {
background-color: #131313;
}
#menu {
background-color: #F0F0F0;
position: fixed;
width: 100%;
}
#statcontent {
padding: 0 7px 7px 7px;
}
.dark #menu {
background-color: #202020;
}
a {
color: black;
text-decoration: none
}
.dark a {
color: #abc6ec;
}
a:hover, .dark a:hover {
text-decoration: underline;
}
#statcontent {
padding: 7px 7px 7px 7px;
}
ul {
list-style-type: none;
margin: 0;
padding: 0;
background-color: #333;
}
a {
color: black;
text-decoration: none
}
li {
float: left;
}
.dark a {
color: #abc6ec;
}
li a {
display: block;
color: white;
text-align: center;
padding: 14px 16px;
text-decoration: none;
}
a:hover, .dark a:hover {
text-decoration: underline;
}
li a:hover:not(.active) {
background-color: #111;
}
ul {
list-style-type: none;
margin: 0;
padding: 0;
background-color: #333;
}
.button-container {
display: inline-flex;
flex-wrap: wrap;
flex-direction: row;
justify-content: flex-start;
align-items: flex-start;
min-width: 0;
min-height: 0;
white-space: pre-wrap;
}
.button {
background-color: #FFFFFE;
border-color: rgba(255, 255, 254, 0.5);
border-width: 1px;
color: black;
padding: 7px 14px;
text-align: center;
text-decoration: none;
font-size: 12px;
margin: 2px 2px;
cursor: pointer;
border-radius: 10%;
transition-duration: 0.25s;
order: 3;
}
.dark button {
background-color: #252525;
border-color: rgba(37, 37, 36, 0.5);
color: white;
}
.button:hover {
border-color: rgba(255, 255, 254, 0.5);
background-color: #252525;
color: white;
}
.dark button:hover {
border-color: rgba(37, 37, 36, 0.5);
background-color: #FFFFFE;
color: #252525;
}
.button:active, .button.active {
text-decoration: underline;
}
.grid-container {
display: inline-flex;
flex-wrap: wrap;
justify-content: flex-start;
align-items: flex-start;
min-width: 0;
min-height: 0;
white-space: pre-wrap;
}
.grid-item {
color: black;
width: 150px;
font-size: 11px;
line-height: 24px;
text-align: left;
min-width: 0;
min-height: 0;
white-space: pre-wrap;
padding-right: 12px; /* A little more than two spaces, to look good in IE8 where flex-justify does nothing */
}
.link {
display: inline;
background: none;
border: none;
padding: 7px 14px;
color: black;
text-decoration: none;
cursor: pointer;
font-size: 13px;
margin: 2px 2px;
}
.dark .link {
color: #abc6ec;
}
.link:hover {
text-decoration: underline;
}
img {
-ms-interpolation-mode: nearest-neighbor;
image-rendering: pixelated;
}
li {
float: left;
}
li a {
display: block;
color: white;
text-align: center;
padding: 14px 16px;
text-decoration: none;
}
li a:hover:not(.active) {
background-color: #111;
}
.button-container {
display: inline-flex;
flex-wrap: wrap-reverse;
flex-direction: row;
align-items: flex-start;
overflow-x: hidden;
white-space: pre-wrap;
padding: 0 4px;
}
.button {
background-color: #dfdfdf;
border-color: #cecece;
border-width: 1px;
border-style: solid;
color: rgba(0, 0, 0, 0.7);
padding: 6px 4px;
text-align: center;
text-decoration: none;
font-size: 12px;
margin: 0;
cursor: pointer;
transition-duration: 0.25s;
order: 3;
min-width: 40px;
}
.dark button {
background-color: #444444;
border-color: #343434;
color: rgba(255, 255, 255, 0.7);
}
.button:hover {
background-color: #ececec;
}
.dark button:hover {
background-color: #4d4d4d;
}
.button:active, .button.active {
background-color: #ffffff;
color: black;
border-top: 1px solid #cecece;
border-left: 1px solid #cecece;
border-right: 1px solid #cecece;
border-bottom: 1px solid #ffffff;
}
.dark .button:active, .dark .button.active {
background-color: #131313;
color: white;
border-top: 1px solid #343434;
border-left: 1px solid #343434;
border-right: 1px solid #343434;
border-bottom: 1px solid #131313;
}
.grid-container {
display: inline-flex;
flex-wrap: wrap;
justify-content: flex-start;
align-items: flex-start;
min-width: 0;
min-height: 0;
white-space: pre-wrap;
}
.grid-item {
color: black;
width: 150px;
font-size: 11px;
line-height: 24px;
text-align: left;
min-width: 0;
min-height: 0;
white-space: pre-wrap;
padding-right: 12px; /* A little more than two spaces, to look good in IE8 where flex-justify does nothing */
}
.link {
display: inline;
background: none;
border: none;
padding: 7px 14px;
color: black;
text-decoration: none;
cursor: pointer;
font-size: 13px;
margin: 2px 2px;
}
.dark .link {
color: #abc6ec;
}
.link:hover {
text-decoration: underline;
}
img {
-ms-interpolation-mode: nearest-neighbor;
image-rendering: pixelated;
}
</style>
</head>
<body>
@@ -267,9 +290,9 @@ if (window.location) {
}); */
// Status panel implementation ------------------------------------------------
var status_tab_parts = ["loading..."];
var status_tab_parts = ["Loading..."];
var current_tab = null;
var mc_tab_parts = [["loading...", ""]];
var mc_tab_parts = [["Loading...", ""]];
var href_token = null;
var spells = [];
var spell_tabs = [];
@@ -288,6 +311,8 @@ var statcontentdiv = document.querySelector('#statcontent');
var storedimages = [];
function createStatusTab(name) {
if (name.indexOf(".") != -1)
name = name.split(".")[0];
if(document.getElementById(name) || name.trim() == "")
return;
if(!verb_tabs.includes(name) && !permanent_tabs.includes(name))
@@ -302,12 +327,8 @@ function createStatusTab(name) {
B.className = "button";
//ORDERING ALPHABETICALLY
B.style.order = name.charCodeAt(0);
if(name == "Status" || name == "MC") {
if(name == "Status")
B.style.order = 1;
else
B.style.order = 2;
}
if(name == "Status" || name == "MC")
B.style.order = name == "Status" ? 1 : 2;
//END ORDERING
menu.appendChild(B);
SendTabToByond(name);
@@ -327,6 +348,19 @@ function removeStatusTab(name) {
under_menu.style.height = menu.clientHeight + 'px';
}
function sortVerbs() {
verbs.sort(function (a, b) {
var selector = a[0] == b[0] ? 1 : 0;
if (a[selector].toUpperCase() < b[selector].toUpperCase()) {
return 1;
}
else if (a[selector].toUpperCase() > b[selector].toUpperCase()) {
return -1;
}
return 0;
})
}
window.onresize = function () {
under_menu.style.height = menu.clientHeight + 'px';
}
@@ -365,19 +399,19 @@ function check_verbs() {
for(var v = verb_tabs.length - 1; v >= 0; v--){
verbs_cat_check(verb_tabs[v]);
}
//checkStatusTab(); // removes any empty status tabs
}
function verbs_cat_check(cat) {
var tabCat = cat.indexOf(".") != -1 ? cat.split(".")[0] : cat;
var verbs_in_cat = 0;
var verbcat = "";
if(!verb_tabs.includes(cat)){
removeStatusTab(cat);
if(!verb_tabs.includes(tabCat)){
removeStatusTab(tabCat);
return;
}
for(var v = 0; v < verbs.length; v++){
var part = verbs[v];
verbcat = part[0];
verbcat = part[0].indexOf(".") != -1 ? part[0].split(".") : part[0];
if(verbcat != cat || verbcat.trim() == ""){
continue;
}
@@ -387,8 +421,8 @@ function verbs_cat_check(cat) {
}
}
if(verbs_in_cat != 1) {
removeStatusTab(cat);
if(current_tab == cat)
removeStatusTab(tabCat);
if(current_tab == tabCat)
tab_change("Status");
}
}
@@ -411,17 +445,20 @@ function add_verb_list(v) {
to_add.sort(); // sort what we're adding
for(var i = 0; i < to_add.length; i++) {
var part = to_add[i];
if (!part[0])
continue;
var category = part[0].indexOf(".") == -1 ? part[0] : part[0].split(".")[0]
if(findVerbindex(part[1], verbs))
continue;
if(verb_tabs.includes(part[0])){
if(verb_tabs.includes(category)){
verbs.push(part);
if(current_tab == part[0]) {
draw_verbs(part[0]); // redraw if we added a verb to the tab we're currently in
if(current_tab == category) {
draw_verbs(category); // redraw if we added a verb to the tab we're currently in
}
} else if(part[0]) {
verb_tabs.push(part[0]);
} else if(category) {
verb_tabs.push(category);
verbs.push(part);
createStatusTab(part[0]);
createStatusTab(category);
}
}
}
@@ -432,7 +469,7 @@ function remove_verb_list(v) {
remove_verb(to_remove[i]);
}
check_verbs();
verbs.sort();
sortVerbs();
if(verb_tabs.includes(current_tab))
draw_verbs(current_tab);
}
@@ -455,7 +492,7 @@ function init_verbs(c, v) {
}
if(v) {
add_verb_list(v);
verbs.sort(); // sort them
sortVerbs(); // sort them
if(do_update) {
draw_verbs(current_tab);
}
@@ -586,7 +623,7 @@ function tab_change(tab) {
}else if(tab == turfname) {
draw_listedturf();
} else {
statcontentdiv[textContentKey] = "loading...";
statcontentdiv[textContentKey] = "Loading...";
}
window.location.href = "byond://winset?statbrowser.is-visible=true";
}
@@ -912,29 +949,46 @@ function draw_spells(cat) {
function draw_verbs(cat){
statcontentdiv[textContentKey] = "";
var table = document.createElement("newdiv");
var table = document.createElement("div");
var additions = {}; // additional sub-categories to be rendered
table.className = "grid-container";
var command = ""; // typecast name to string
verbs.sort();
sortVerbs();
verbs.reverse(); // sort verbs backwards before we draw
for(var i = verbs.length - 1; i >= 0; i--) {
var part = verbs[i]; // should be a list containing category and command
if(!part[1]) continue;
if(part[0] != cat){
continue;
for (var i = 0; i < verbs.length; ++i) {
var part = verbs[i];
var name = part[0];
var command = part[1];
if (command && name.lastIndexOf(cat, 0) != -1 && (name.length == cat.length || name.charAt(cat.length) == ".")) {
var subCat = name.lastIndexOf(".") != -1 ? name.split(".")[1] : null;
if (subCat && !additions[subCat]) {
var newTable = document.createElement("div");
newTable.className = "grid-container";
additions[subCat] = newTable;
}
var a = document.createElement("a");
a.href = "byond://winset?command=" + command.replace(/\s/g, "-");
a[textContentKey] = command;
a.className = "grid-item";
(subCat ? additions[subCat] : table).appendChild(a);
}
}
// Append base table to view
var content = document.getElementById("statcontent");
content.appendChild(table);
// Append additional sub-categories if relevant
for (var cat in additions) {
if (additions.hasOwnProperty(cat)) {
// do addition here
var header = document.createElement("h3");
header[textContentKey] = cat;
content.appendChild(header);
content.appendChild(additions[cat]);
}
if(part[0].trim() == ""){
verbs.splice(i, 1);
continue;
}
command = part[1];
var a = document.createElement("a");
a.href = "byond://winset?command=" + command.replace(/\s/g, "-");
a[textContentKey] = command;
a.className = "grid-item";
table.appendChild(a);
}
document.getElementById("statcontent").appendChild(table);
}
function set_theme(which) {