Merge remote-tracking branch 'upstream/master'
This commit is contained in:
@@ -1186,6 +1186,8 @@ GLOBAL_DATUM_INIT(dummySave, /savefile, new("tmp/dummySave.sav")) //Cache of ico
|
||||
SSassets.transport.register_asset(key, I)
|
||||
for (var/thing2 in targets)
|
||||
SSassets.transport.send_assets(thing2, key)
|
||||
if(sourceonly)
|
||||
return SSassets.transport.get_asset_url(key)
|
||||
|
||||
return "<img class='icon icon-[icon_state]' src='[SSassets.transport.get_asset_url(key)]'>"
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -27,28 +27,6 @@ SUBSYSTEM_DEF(statpanels)
|
||||
var/ETA = SSshuttle.emergency.getModeStr()
|
||||
if(ETA)
|
||||
global_data += "[ETA] [SSshuttle.emergency.getTimerStr()]"
|
||||
/* Please fix
|
||||
if(SSvote.mode)
|
||||
var/static/list/supported = list(PLURALITY_VOTING, APPROVAL_VOTING)
|
||||
global_data += "Vote active!, There is currently a vote running. Question: [SSvote.question]"
|
||||
if(!(SSvote.vote_system in supported))
|
||||
global_data += "<STATPANEL VOTING DISABLED>, The current vote system is not supported by statpanel rendering. Please vote manually by opening the vote popup using the action button or chat link."
|
||||
return
|
||||
global_data += "Time Left:, [round(SSvote.end_time - world.time)] seconds"
|
||||
|
||||
global_data += "Choices:"
|
||||
for(var/i in 1 to SSvote.choice_statclicks.len)
|
||||
var/choice = SSvote.choice_statclicks[i]
|
||||
var/ivotedforthis = FALSE
|
||||
if(usr.ckey)
|
||||
switch(SSvote.vote_system)
|
||||
if(APPROVAL_VOTING)
|
||||
ivotedforthis = SSvote.voted[usr.ckey] && (i in SSvote.voted[usr.ckey])
|
||||
if(PLURALITY_VOTING)
|
||||
ivotedforthis = SSvote.voted[usr.ckey] == i
|
||||
|
||||
global_data += (ivotedforthis? "\[X\]" : "\[ \]", SSvote.choice_statclicks[choice])
|
||||
*/
|
||||
|
||||
encoded_global_data = url_encode(json_encode(global_data))
|
||||
src.currentrun = GLOB.clients.Copy()
|
||||
@@ -63,6 +41,31 @@ SUBSYSTEM_DEF(statpanels)
|
||||
var/ping_str = url_encode("Ping: [round(target.lastping, 1)]ms (Average: [round(target.avgping, 1)]ms)")
|
||||
var/other_str = url_encode(json_encode(target.mob.get_status_tab_items()))
|
||||
target << output("[encoded_global_data];[ping_str];[other_str]", "statbrowser:update")
|
||||
if(SSvote.mode)
|
||||
var/list/vote_arry = list(
|
||||
list("Vote active!", "There is currently a vote running. Question: [SSvote.question]")
|
||||
) //see the MC on how this works.
|
||||
if(!(SSvote.vote_system in list(PLURALITY_VOTING, APPROVAL_VOTING)))
|
||||
vote_arry[++vote_arry.len] += list("STATPANEL VOTING DISABLED!", "The current vote system is not supported by statpanel rendering. Please vote manually by opening the vote popup using the action button or chat link.", "disabled")
|
||||
//does not return.
|
||||
else
|
||||
vote_arry[++vote_arry.len] += list("Time Left:", " [round(SSvote.end_time - world.time)] seconds")
|
||||
vote_arry[++vote_arry.len] += list("Choices:", "")
|
||||
for(var/choice in SSvote.choice_statclicks)
|
||||
var/choice_id = SSvote.choice_statclicks[choice]
|
||||
var/ivotedforthis = FALSE
|
||||
if(target.ckey)
|
||||
switch(SSvote.vote_system)
|
||||
if(APPROVAL_VOTING)
|
||||
ivotedforthis = SSvote.voted[target.ckey] && (text2num(choice_id) in SSvote.voted[usr.ckey])
|
||||
if(PLURALITY_VOTING)
|
||||
ivotedforthis = (SSvote.voted[target.ckey] == text2num(choice_id))
|
||||
vote_arry[++vote_arry.len] += list(ivotedforthis ? "\[X\]" : "\[ \]", choice, "[REF(SSvote)];vote=[choice_id];statpannel=1")
|
||||
var/vote_str = url_encode(json_encode(vote_arry))
|
||||
target << output("[vote_str]", "statbrowser:update_voting")
|
||||
else
|
||||
var/null_bullet = url_encode(json_encode(list(list(null))))
|
||||
target << output("[null_bullet]", "statbrowser:update_voting")
|
||||
if(!target.holder)
|
||||
target << output("", "statbrowser:remove_admin_tabs")
|
||||
else
|
||||
|
||||
@@ -16,6 +16,7 @@ SUBSYSTEM_DEF(vote)
|
||||
var/question = null
|
||||
var/list/choices = list()
|
||||
/// List of choice = object for statclick objects for statpanel voting
|
||||
/// statclick rework? 2: list("name"="id")
|
||||
var/list/choice_statclicks = list()
|
||||
var/list/scores = list()
|
||||
var/list/choice_descs = list() // optional descriptions
|
||||
@@ -49,34 +50,6 @@ SUBSYSTEM_DEF(vote)
|
||||
client_popup.open(0)
|
||||
next_pop = world.time+VOTE_COOLDOWN
|
||||
|
||||
/**
|
||||
* Renders a statpanel. Directly uses statpanel/stat calls since this is called from base of mob/Stat().
|
||||
*/
|
||||
/datum/controller/subsystem/vote/proc/render_statpanel(mob/M)
|
||||
if(!mode) // check if vote is running
|
||||
return
|
||||
if(!statpanel("Status")) // don't bother if they're not focused on this panel
|
||||
return
|
||||
var/static/list/supported = list(PLURALITY_VOTING, APPROVAL_VOTING)
|
||||
stat("Vote active!", "There is currently a vote running. Question: [question]")
|
||||
if(!(vote_system in supported))
|
||||
stat("<STATPANEL VOTING DISABLED>", "The current vote system is not supported by statpanel rendering. Please vote manually by opening the vote popup using the action button or chat link.")
|
||||
return
|
||||
stat("Time Left:", "[round(end_time - world.time)] seconds")
|
||||
stat(null, null)
|
||||
stat("Choices:", null)
|
||||
stat(null, null)
|
||||
for(var/i in 1 to choice_statclicks.len)
|
||||
var/choice = choice_statclicks[i]
|
||||
var/ivotedforthis = FALSE
|
||||
switch(vote_system)
|
||||
if(APPROVAL_VOTING)
|
||||
ivotedforthis = voted[usr.ckey] && (i in voted[usr.ckey])
|
||||
if(PLURALITY_VOTING)
|
||||
ivotedforthis = voted[usr.ckey] == i
|
||||
stat(ivotedforthis? "\[X\]" : "\[ \]", choice_statclicks[choice])
|
||||
stat(null, null)
|
||||
|
||||
/datum/controller/subsystem/vote/proc/reset()
|
||||
initiator = null
|
||||
end_time = 0
|
||||
@@ -87,26 +60,10 @@ SUBSYSTEM_DEF(vote)
|
||||
voted.Cut()
|
||||
voting.Cut()
|
||||
scores.Cut()
|
||||
cleanup_statclicks()
|
||||
choice_statclicks = list()
|
||||
display_votes = initial(display_votes) //CIT CHANGE - obfuscated votes
|
||||
remove_action_buttons()
|
||||
|
||||
/datum/controller/subsystem/vote/proc/cleanup_statclicks()
|
||||
for(var/choice in choice_statclicks)
|
||||
qdel(choice_statclicks[choice])
|
||||
choice_statclicks = list()
|
||||
|
||||
/obj/effect/statclick/vote
|
||||
name = "ERROR"
|
||||
var/choice
|
||||
|
||||
/obj/effect/statclick/vote/Click()
|
||||
SSvote.submit_vote(choice)
|
||||
|
||||
/obj/effect/statclick/vote/New(loc, choice, name)
|
||||
src.choice = choice
|
||||
src.name = name
|
||||
|
||||
/datum/controller/subsystem/vote/proc/get_result()
|
||||
//get the highest number of votes
|
||||
var/greatest_votes = 0
|
||||
@@ -582,10 +539,10 @@ SUBSYSTEM_DEF(vote)
|
||||
to_chat(world, "\n<font color='purple'><b>[text]</b>\nType <b>vote</b> or click <a href='?src=[REF(src)]'>here</a> to place your votes.\nYou have [DisplayTimeText(vp)] to vote.</font>")
|
||||
end_time = started_time+vp
|
||||
// generate statclick list
|
||||
cleanup_statclicks()
|
||||
choice_statclicks = list()
|
||||
for(var/i in 1 to choices.len)
|
||||
var/choice = choices[i]
|
||||
choice_statclicks[choice] = new /obj/effect/statclick/vote(null, i, choice)
|
||||
choice_statclicks[choice] = "[i]"
|
||||
//
|
||||
for(var/c in GLOB.clients)
|
||||
SEND_SOUND(c, sound('sound/misc/server-ready.ogg'))
|
||||
@@ -785,7 +742,8 @@ SUBSYSTEM_DEF(vote)
|
||||
submit_vote(round(text2num(href_list["vote"])),round(text2num(href_list["score"])))
|
||||
else
|
||||
submit_vote(round(text2num(href_list["vote"])))
|
||||
usr.vote()
|
||||
if(!href_list["statpannel"])
|
||||
usr.vote()
|
||||
|
||||
/datum/controller/subsystem/vote/proc/remove_action_buttons()
|
||||
for(var/v in generated_actions)
|
||||
|
||||
@@ -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."
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
/client/proc/investigate_show()
|
||||
set name = "Investigate"
|
||||
set category = "Admin"
|
||||
set category = "Admin.Game"
|
||||
if(!holder)
|
||||
return
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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!
|
||||
|
||||
@@ -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,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,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,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)
|
||||
|
||||
@@ -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,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,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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,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,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)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
plantname = "Fairygrass"
|
||||
product = /obj/item/reagent_containers/food/snacks/grown/grass/fairy
|
||||
icon_grow = "fairygrass-grow"
|
||||
icon_dead = "fairygrass-dead"
|
||||
icon_dead = "grass-dead"
|
||||
genes = list(/datum/plant_gene/trait/repeated_harvest, /datum/plant_gene/trait/glow/blue)
|
||||
mutatelist = list (/obj/item/seeds/grass/carpet)
|
||||
reagents_add = list(/datum/reagent/consumable/nutriment = 0.02, /datum/reagent/hydrogen = 0.05, /datum/reagent/drug/space_drugs = 0.15)
|
||||
|
||||
@@ -193,6 +193,8 @@
|
||||
growthstages = 3
|
||||
genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism)
|
||||
growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi'
|
||||
icon_grow = "chanter-grow"
|
||||
icon_dead = "chanter-dead"
|
||||
reagents_add = list(/datum/reagent/consumable/nutriment = 0.1)
|
||||
mutatelist = list(/obj/item/seeds/chanterelle/jupitercup)
|
||||
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "TheObserver-sys"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "Drake? Where's the dead fairygrass sprite?"
|
||||
+265
-177
@@ -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,10 @@ 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 vote_parts = [[null]];
|
||||
var href_token = null;
|
||||
var spells = [];
|
||||
var spell_tabs = [];
|
||||
@@ -288,6 +312,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 +328,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 +349,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 +400,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 +422,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 +446,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 +470,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 +493,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);
|
||||
}
|
||||
@@ -491,6 +529,12 @@ function update(global_data, ping_entry, other_entries) {
|
||||
else if(current_tab == "Debug Stat Panel")
|
||||
draw_debug();
|
||||
}
|
||||
/// citadel statvoting
|
||||
function update_voting(vote_data) {
|
||||
vote_parts = JSON.parse(vote_data);
|
||||
if(current_tab == "Status")
|
||||
draw_status();
|
||||
}
|
||||
|
||||
function update_mc(global_mc_data, coords_entry) {
|
||||
mc_tab_parts = JSON.parse(global_mc_data);
|
||||
@@ -586,7 +630,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";
|
||||
}
|
||||
@@ -667,6 +711,33 @@ function draw_status() {
|
||||
document.getElementById("statcontent").appendChild(div);
|
||||
}
|
||||
}
|
||||
//voting shitcode. See mc for more info.
|
||||
if(vote_parts && vote_parts[0][0]) { //null verification.
|
||||
var table = document.createElement("table");
|
||||
for(var i = 0; i < vote_parts.length; i++) {
|
||||
var part = vote_parts[i];
|
||||
var tr = document.createElement("tr");
|
||||
var td1 = document.createElement("td");
|
||||
td1[textContentKey] = part[0];
|
||||
var td2 = document.createElement("td");
|
||||
if(part[2]) {
|
||||
var a = document.createElement("a");
|
||||
if(part[2] === "disabled") {
|
||||
a.href = "byond://winset?command=Vote";
|
||||
} else {
|
||||
a.href = "?src=" + part[2];
|
||||
}
|
||||
a[textContentKey] = part[1];
|
||||
td2.appendChild(a);
|
||||
} else {
|
||||
td2[textContentKey] = part[1];
|
||||
}
|
||||
tr.appendChild(td1);
|
||||
tr.appendChild(td2);
|
||||
table.appendChild(tr);
|
||||
}
|
||||
document.getElementById("statcontent").appendChild(table);
|
||||
}
|
||||
if(verb_tabs.length == 0 || !verbs)
|
||||
{
|
||||
window.location.href = "byond://winset?command=Fix-Stat-Panel";
|
||||
@@ -912,29 +983,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) {
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 31 KiB |
Reference in New Issue
Block a user