mirror of
https://github.com/Yawn-Wider/YWPolarisVore.git
synced 2026-08-30 16:38:49 +01:00
Release Update
Merge branch 'release' of https://github.com/VOREStation/VOREStation into voreupdate # Conflicts: # code/__defines/machinery.dm # code/controllers/configuration.dm # code/game/jobs/jobs.dm # code/game/machinery/doors/blast_door.dm # code/game/machinery/pipe/pipe_recipes.dm # code/game/objects/items/devices/radio/radio_vr.dm # code/modules/client/preferences_vr.dm # code/modules/clothing/glasses/hud_vr.dm # code/modules/clothing/under/accessories/accessory_vr.dm # code/modules/events/event_container_vr.dm # code/modules/gamemaster/actions/planet_weather_change.dm # code/modules/projectiles/guns/energy/netgun_vr.dm # code/modules/projectiles/guns/energy/protector_vr.dm # code/modules/vore/appearance/sprite_accessories_taur_vr.dm # code/modules/vore/appearance/sprite_accessories_vr.dm # code/modules/vore/fluffstuff/custom_guns_vr.dm # icons/obj/power.dmi # vorestation.dme
This commit is contained in:
+21
-16
@@ -871,21 +871,26 @@ var/datum/announcement/minor/admin_min_announcer = new
|
||||
|
||||
/datum/admins/proc/startnow()
|
||||
set category = "Server"
|
||||
set desc="Start the round RIGHT NOW"
|
||||
set desc="Start the round ASAP"
|
||||
set name="Start Now"
|
||||
if(!ticker)
|
||||
alert("Unable to start the game as it is not set up.")
|
||||
|
||||
if(!check_rights(R_SERVER|R_EVENT))
|
||||
return
|
||||
if(ticker.current_state == GAME_STATE_PREGAME)
|
||||
ticker.current_state = GAME_STATE_SETTING_UP
|
||||
Master.SetRunLevel(RUNLEVEL_SETUP)
|
||||
log_admin("[usr.key] has started the game.")
|
||||
message_admins("<font color='blue'>[usr.key] has started the game.</font>")
|
||||
feedback_add_details("admin_verb","SN") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
return 1
|
||||
else
|
||||
if(SSticker.current_state > GAME_STATE_PREGAME)
|
||||
to_chat(usr, "<font color='red'>Error: Start Now: Game has already started.</font>")
|
||||
return 0
|
||||
return
|
||||
if(!SSticker.start_immediately)
|
||||
SSticker.start_immediately = TRUE
|
||||
var/msg = ""
|
||||
if(SSticker.current_state == GAME_STATE_INIT)
|
||||
msg = " (The server is still setting up, but the round will be started as soon as possible.)"
|
||||
log_admin("[key_name(usr)] has started the game.[msg]")
|
||||
message_admins("<font color='blue'>[key_name_admin(usr)] has started the game.[msg]</font>")
|
||||
feedback_add_details("admin_verb","SN") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
else
|
||||
SSticker.start_immediately = FALSE
|
||||
to_chat(world, "<b>Immediate game start canceled. Normal startup resumed.</b>")
|
||||
log_and_message_admins("cancelled immediate game start.")
|
||||
|
||||
/datum/admins/proc/toggleenter()
|
||||
set category = "Server"
|
||||
@@ -952,10 +957,10 @@ var/datum/announcement/minor/admin_min_announcer = new
|
||||
set name="Delay"
|
||||
|
||||
if(!check_rights(R_SERVER|R_EVENT)) return
|
||||
if (!ticker || ticker.current_state != GAME_STATE_PREGAME)
|
||||
ticker.delay_end = !ticker.delay_end
|
||||
log_admin("[key_name(usr)] [ticker.delay_end ? "delayed the round end" : "has made the round end normally"].")
|
||||
message_admins("<font color='blue'>[key_name(usr)] [ticker.delay_end ? "delayed the round end" : "has made the round end normally"].</font>", 1)
|
||||
if (SSticker.current_state >= GAME_STATE_PLAYING)
|
||||
SSticker.delay_end = !SSticker.delay_end
|
||||
log_admin("[key_name(usr)] [SSticker.delay_end ? "delayed the round end" : "has made the round end normally"].")
|
||||
message_admins("<font color='blue'>[key_name(usr)] [SSticker.delay_end ? "delayed the round end" : "has made the round end normally"].</font>", 1)
|
||||
return //alert("Round end delayed", null, null, null, null, null)
|
||||
round_progressing = !round_progressing
|
||||
if (!round_progressing)
|
||||
|
||||
@@ -221,7 +221,6 @@ var/list/admin_verbs_debug = list(
|
||||
/client/proc/enable_debug_verbs,
|
||||
/client/proc/callproc,
|
||||
/client/proc/callproc_datum,
|
||||
/client/proc/debug_process, //VOREStation Add,
|
||||
/client/proc/SDQL2_query,
|
||||
/client/proc/Jump,
|
||||
/client/proc/debug_rogueminer,
|
||||
@@ -231,7 +230,7 @@ var/list/admin_verbs_debug = list(
|
||||
/client/proc/toggle_debug_logs,
|
||||
/client/proc/admin_ghost, //allows us to ghost/reenter body at will,
|
||||
/datum/admins/proc/view_runtimes,
|
||||
/client/proc/show_gm_status,
|
||||
// /client/proc/show_gm_status, // VOREStation Edit - We don't use SSgame_master yet.
|
||||
/datum/admins/proc/change_weather,
|
||||
/datum/admins/proc/change_time,
|
||||
/client/proc/admin_give_modifier,
|
||||
@@ -242,7 +241,6 @@ var/list/admin_verbs_debug = list(
|
||||
var/list/admin_verbs_paranoid_debug = list(
|
||||
/client/proc/callproc,
|
||||
/client/proc/callproc_datum,
|
||||
/client/proc/debug_process, //VOREStation Add,
|
||||
/client/proc/debug_controller
|
||||
)
|
||||
|
||||
@@ -313,7 +311,6 @@ var/list/admin_verbs_hideable = list(
|
||||
/client/proc/cmd_admin_list_open_jobs,
|
||||
/client/proc/callproc,
|
||||
/client/proc/callproc_datum,
|
||||
/client/proc/debug_process, //VOREStation Add,
|
||||
/client/proc/Debug2,
|
||||
/client/proc/reload_admins,
|
||||
/client/proc/kill_air,
|
||||
@@ -407,7 +404,7 @@ var/list/admin_verbs_event_manager = list(
|
||||
/client/proc/callproc,
|
||||
/client/proc/callproc_datum,
|
||||
/client/proc/debug_controller,
|
||||
/client/proc/show_gm_status,
|
||||
// /client/proc/show_gm_status, // VOREStation Edit - We don't use SSgame_master yet.
|
||||
/datum/admins/proc/change_weather,
|
||||
/datum/admins/proc/change_time,
|
||||
/client/proc/admin_give_modifier,
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
return
|
||||
|
||||
gravity_is_on = !gravity_is_on
|
||||
for(var/area/A in all_areas)
|
||||
for(var/area/A in world)
|
||||
A.gravitychange(gravity_is_on)
|
||||
|
||||
feedback_inc("admin_secrets_fun_used",1)
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
to_chat(usr, "<span class='danger'>Error: You cannot request spice (muted from adminhelps).</span>")
|
||||
return
|
||||
|
||||
if(alert(usr, "Are you sure you want to request the admins spice things up for you? You accept the consequences if you do.",,"No","Yes") != "No")
|
||||
if(alert(usr, "Are you sure you want to request the admins spice things up for you? You accept the consequences if you do.",,"Yes","No") != "No")
|
||||
message_admins("[ADMIN_FULLMONTY(usr)] has requested the round be spiced up a little.")
|
||||
to_chat(usr, "<span class='notice'>You have requested some more spice in your round.</span>")
|
||||
else
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
if(config.allow_admin_jump)
|
||||
usr.on_mob_jump()
|
||||
usr.loc = pick(get_area_turfs(A))
|
||||
usr.forceMove(pick(get_area_turfs(A)))
|
||||
|
||||
log_admin("[key_name(usr)] jumped to [A]")
|
||||
message_admins("[key_name_admin(usr)] jumped to [A]", 1)
|
||||
@@ -30,7 +30,7 @@
|
||||
log_admin("[key_name(usr)] jumped to [T.x],[T.y],[T.z] in [T.loc]")
|
||||
message_admins("[key_name_admin(usr)] jumped to [T.x],[T.y],[T.z] in [T.loc]", 1)
|
||||
usr.on_mob_jump()
|
||||
usr.loc = T
|
||||
usr.forceMove(T)
|
||||
feedback_add_details("admin_verb","JT") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
else
|
||||
alert("Admin jumping disabled")
|
||||
@@ -53,7 +53,7 @@
|
||||
if(T && isturf(T))
|
||||
feedback_add_details("admin_verb","JM") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
A.on_mob_jump()
|
||||
A.loc = T
|
||||
A.forceMove(T)
|
||||
else
|
||||
to_chat(A, "This mob is not located in the game world.")
|
||||
else
|
||||
@@ -70,9 +70,11 @@
|
||||
if(src.mob)
|
||||
var/mob/A = src.mob
|
||||
A.on_mob_jump()
|
||||
A.x = tx
|
||||
A.y = ty
|
||||
A.z = tz
|
||||
var/turf/T = locate(tx, ty, tz)
|
||||
if(!T)
|
||||
to_chat(usr, "<span class='warning'>Those coordinates are outside the boundaries of the map.</span>")
|
||||
return
|
||||
A.forceMove(T)
|
||||
feedback_add_details("admin_verb","JC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
message_admins("[key_name_admin(usr)] jumped to coordinates [tx], [ty], [tz]")
|
||||
|
||||
@@ -98,7 +100,7 @@
|
||||
log_admin("[key_name(usr)] jumped to [key_name(M)]")
|
||||
message_admins("[key_name_admin(usr)] jumped to [key_name_admin(M)]", 1)
|
||||
usr.on_mob_jump()
|
||||
usr.loc = M.loc
|
||||
usr.forceMove(get_turf(M))
|
||||
feedback_add_details("admin_verb","JK") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
else
|
||||
alert("Admin jumping disabled")
|
||||
@@ -115,7 +117,7 @@
|
||||
message_admins(msg)
|
||||
admin_ticket_log(M, msg)
|
||||
M.on_mob_jump()
|
||||
M.loc = get_turf(usr)
|
||||
M.forceMove(get_turf(usr))
|
||||
feedback_add_details("admin_verb","GM") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
else
|
||||
alert("Admin jumping disabled")
|
||||
@@ -145,7 +147,7 @@
|
||||
admin_ticket_log(M, msg)
|
||||
if(M)
|
||||
M.on_mob_jump()
|
||||
M.loc = get_turf(usr)
|
||||
M.forceMove(get_turf(usr))
|
||||
feedback_add_details("admin_verb","GK") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
else
|
||||
alert("Admin jumping disabled")
|
||||
@@ -159,7 +161,7 @@
|
||||
if(A)
|
||||
if(config.allow_admin_jump)
|
||||
M.on_mob_jump()
|
||||
M.loc = pick(get_area_turfs(A))
|
||||
M.forceMove(pick(get_area_turfs(A)))
|
||||
feedback_add_details("admin_verb","SMOB") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
log_admin("[key_name(usr)] teleported [key_name(M)]")
|
||||
|
||||
@@ -341,7 +341,7 @@
|
||||
var/list/areas_with_intercom = list()
|
||||
var/list/areas_with_camera = list()
|
||||
|
||||
for(var/area/A in all_areas)
|
||||
for(var/area/A in world)
|
||||
if(!(A.type in areas_all))
|
||||
areas_all.Add(A.type)
|
||||
|
||||
|
||||
@@ -164,7 +164,6 @@ var/list/debug_verbs = list (
|
||||
,/datum/admins/proc/setup_supermatter
|
||||
,/client/proc/atmos_toggle_debug
|
||||
,/client/proc/spawn_tanktransferbomb
|
||||
,/client/proc/debug_process_scheduler // VOREStation Edit - Nice
|
||||
,/client/proc/take_picture
|
||||
)
|
||||
|
||||
|
||||
@@ -525,7 +525,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
|
||||
//If we're announcing their arrival
|
||||
if(announce)
|
||||
AnnounceArrival(new_character, new_character.mind.assigned_role)
|
||||
AnnounceArrival(new_character, new_character.mind.assigned_role, "Common", new_character.z)
|
||||
|
||||
log_admin("[admin] has spawned [player_key]'s character [new_character.real_name].")
|
||||
message_admins("[admin] has spawned [player_key]'s character [new_character.real_name].", 1)
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
if(!istype(target))
|
||||
return
|
||||
|
||||
var/list/smite_types = list(SMITE_SHADEKIN_ATTACK,SMITE_SHADEKIN_NOMF,SMITE_REDSPACE_ABDUCT)
|
||||
var/list/smite_types = list(SMITE_SHADEKIN_ATTACK,SMITE_SHADEKIN_NOMF,SMITE_REDSPACE_ABDUCT,SMITE_AUTOSAVE,SMITE_AUTOSAVE_WIDE)
|
||||
|
||||
var/smite_choice = input("Select the type of SMITE for [target]","SMITE Type Choice") as null|anything in smite_types
|
||||
if(!smite_choice)
|
||||
@@ -50,7 +50,7 @@
|
||||
shadekin.death()
|
||||
|
||||
if(SMITE_SHADEKIN_NOMF)
|
||||
var/list/kin_types = list(
|
||||
var/static/list/kin_types = list(
|
||||
"Red Eyes (Dark)" = /mob/living/simple_mob/shadekin/red/dark,
|
||||
"Red Eyes (Light)" = /mob/living/simple_mob/shadekin/red/white,
|
||||
"Red Eyes (Brown)" = /mob/living/simple_mob/shadekin/red/brown,
|
||||
@@ -122,6 +122,12 @@
|
||||
if(SMITE_REDSPACE_ABDUCT)
|
||||
redspace_abduction(target, src)
|
||||
|
||||
if(SMITE_AUTOSAVE)
|
||||
fake_autosave(target, src)
|
||||
|
||||
if(SMITE_AUTOSAVE_WIDE)
|
||||
fake_autosave(target, src, TRUE)
|
||||
|
||||
else
|
||||
return //Injection? Don't print any messages.
|
||||
|
||||
@@ -211,3 +217,47 @@ var/redspace_abduction_z
|
||||
to_chat(user,"<span class='notice'>The mob has been moved. ([admin_jump_link(target,usr.client.holder)])</span>")
|
||||
|
||||
target.transforming = FALSE
|
||||
|
||||
/proc/fake_autosave(var/mob/living/target, var/client/user, var/wide)
|
||||
if(!istype(target) || !target.client)
|
||||
to_chat(user, "<span class='warning'>Skipping [target] because they are not a /mob/living or have no client.</span>")
|
||||
return
|
||||
|
||||
if(wide)
|
||||
for(var/mob/living/L in orange(user.view, user.mob))
|
||||
fake_autosave(L, user)
|
||||
return
|
||||
|
||||
target.move_delay = 99999999
|
||||
|
||||
to_chat(target, "<span class='notice' style='font: small-caps bold large monospace!important'>Autosaving your progress, please wait...</span>")
|
||||
target << 'sound/effects/ding.ogg'
|
||||
|
||||
var/static/list/bad_tips = list(
|
||||
"Did you know that black shoes protect you from electrocution while hacking?",
|
||||
"Did you know that airlocks always have a wire that disables ID checks?",
|
||||
"You can always find at least 3 pairs of glowing purple gloves in maint!",
|
||||
"Phoron is not toxic if you've had a soda within 30 seconds of exposure!",
|
||||
"Space Mountain Wind makes you immune to damage from space for 30 seconds!",
|
||||
"A mask and air tank are all you need to be safe in space!",
|
||||
"When exploring maintenance, wearing no shoes makes you move faster!",
|
||||
"Did you know that the bartender's shotgun is loaded with harmless ammo?",
|
||||
"Did you know that the tesla and singulo only need containment for 5 minutes?")
|
||||
|
||||
var/tip = pick(bad_tips)
|
||||
to_chat(target, "<span class='notice' style='font: small-caps bold large monospace!important'>Tip of the day:</span><br><span class='notice'>[tip]</span>")
|
||||
|
||||
var/obj/screen/loader = new(target)
|
||||
loader.name = "Autosaving..."
|
||||
loader.desc = "A disc icon that represents your game autosaving. Please wait."
|
||||
loader.icon = 'icons/obj/discs_vr.dmi'
|
||||
loader.icon_state = "quicksave"
|
||||
loader.screen_loc = "NORTH-1, EAST-1"
|
||||
target.client.screen += loader
|
||||
|
||||
spawn(10 SECONDS)
|
||||
if(target)
|
||||
target.move_delay = 0
|
||||
to_chat(target, "<span class='notice' style='font: small-caps bold large monospace!important'>Autosave complete!</span>")
|
||||
if(target.client)
|
||||
target.client.screen -= loader
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
name = DA[name] //name is really the index until this line
|
||||
else
|
||||
value = DA[name]
|
||||
header = "<li style='backgroundColor:white'>(<a href='?_src_=vars;listedit=\ref[DA];index=[index]'>E</a>) (<a href='?_src_=vars;listchange=\ref[DA];index=[index]'>C</a>) (<a href='?_src_=vars;listremove=\ref[DA];index=[index]'>-</a>) "
|
||||
header = "<li style='backgroundColor:white'>(<a href='?_src_=vars;[VV_HK_LIST_EDIT]=1;target=\ref[DA];index=[index]'>E</a>) (<a href='?_src_=vars;[VV_HK_LIST_CHANGE]=1;target=\ref[DA];index=[index]'>C</a>) (<a href='?_src_=vars;[VV_HK_LIST_REMOVE]=1;target=\ref[DA];index=[index]'>-</a>) "
|
||||
else
|
||||
header = "<li style='backgroundColor:white'>(<a href='?_src_=vars;datumedit=\ref[DA];varnameedit=[name]'>E</a>) (<a href='?_src_=vars;datumchange=\ref[DA];varnamechange=[name]'>C</a>) (<a href='?_src_=vars;datummass=\ref[DA];varnamemass=[name]'>M</a>) "
|
||||
else
|
||||
|
||||
@@ -97,9 +97,10 @@ GLOBAL_PROTECT(VVpixelmovement)
|
||||
|
||||
L += var_value
|
||||
|
||||
switch(alert("Would you like to associate a value with the list entry?",,"Yes","No"))
|
||||
if("Yes")
|
||||
L[var_value] = mod_list_add_ass(O) //hehe
|
||||
if(IS_VALID_ASSOC_KEY(var_value))
|
||||
switch(alert("Would you like to associate a value with the list entry?",,"Yes","No"))
|
||||
if("Yes")
|
||||
L[var_value] = mod_list_add_ass(O) //hehe
|
||||
if (O)
|
||||
if (O.vv_edit_var(objectvar, L) == FALSE)
|
||||
to_chat(src, "Your edit was rejected by the object.")
|
||||
@@ -179,12 +180,13 @@ GLOBAL_PROTECT(VVpixelmovement)
|
||||
if (index == null)
|
||||
return
|
||||
var/assoc = 0
|
||||
var/prompt = alert(src, "Do you want to edit the key or its assigned value?", "Associated List", "Key", "Assigned Value", "Cancel")
|
||||
if (prompt == "Cancel")
|
||||
return
|
||||
if (prompt == "Assigned Value")
|
||||
assoc = 1
|
||||
assoc_key = L[index]
|
||||
if(IS_VALID_ASSOC_KEY(L[index]))
|
||||
var/prompt = alert(src, "Do you want to edit the key or its assigned value?", "Associated List", "Key", "Assigned Value", "Cancel")
|
||||
if (prompt == "Cancel")
|
||||
return
|
||||
if (prompt == "Assigned Value")
|
||||
assoc = 1
|
||||
assoc_key = L[index]
|
||||
var/default
|
||||
var/variable
|
||||
var/old_assoc_value //EXPERIMENTAL - Keep old associated value while modifying key, if any
|
||||
@@ -193,9 +195,10 @@ GLOBAL_PROTECT(VVpixelmovement)
|
||||
else
|
||||
variable = L[index]
|
||||
//EXPERIMENTAL - Keep old associated value while modifying key, if any
|
||||
var/found = L[variable]
|
||||
if(!isnull(found))
|
||||
old_assoc_value = found
|
||||
if(IS_VALID_ASSOC_KEY(variable))
|
||||
var/found = L[variable]
|
||||
if(!isnull(found))
|
||||
old_assoc_value = found
|
||||
//
|
||||
|
||||
default = vv_get_class(objectvar, variable)
|
||||
|
||||
@@ -4,8 +4,10 @@
|
||||
if((usr.client != src) || !src.holder)
|
||||
return
|
||||
var/datum/target = locate(href_list["target"])
|
||||
if(target)
|
||||
if(istype(target))
|
||||
target.vv_do_topic(href_list)
|
||||
else if(islist(target))
|
||||
vv_do_list(target, href_list)
|
||||
|
||||
if(href_list["Vars"])
|
||||
debug_variables(locate(href_list["Vars"]))
|
||||
@@ -519,6 +521,6 @@
|
||||
|
||||
if(href_list["datumrefresh"])
|
||||
var/datum/DAT = locate(href_list["datumrefresh"])
|
||||
if(istype(DAT, /datum) || istype(DAT, /client))
|
||||
if(istype(DAT, /datum) || istype(DAT, /client) || islist(DAT))
|
||||
debug_variables(DAT)
|
||||
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
//LISTS - CAN NOT DO VV_DO_TOPIC BECAUSE LISTS AREN'T DATUMS :(
|
||||
/client/proc/vv_do_list(list/target, href_list)
|
||||
if(!check_rights(R_VAREDIT))
|
||||
return
|
||||
var/target_index = text2num(href_list["index"])
|
||||
if(target_index)
|
||||
if(href_list[VV_HK_LIST_EDIT])
|
||||
mod_list(target, null, "list", "contents", target_index, autodetect_class = TRUE)
|
||||
if(href_list[VV_HK_LIST_CHANGE])
|
||||
mod_list(target, null, "list", "contents", target_index, autodetect_class = FALSE)
|
||||
if(href_list[VV_HK_LIST_REMOVE])
|
||||
var/variable = target[target_index]
|
||||
var/prompt = alert("Do you want to remove item number [target_index] from list?", "Confirm", "Yes", "No")
|
||||
if (prompt != "Yes")
|
||||
return
|
||||
target.Cut(target_index, target_index+1)
|
||||
log_world("### ListVarEdit by [src]: /list's contents: REMOVED=[html_encode("[variable]")]")
|
||||
log_admin("[key_name(src)] modified list's contents: REMOVED=[variable]")
|
||||
message_admins("[key_name_admin(src)] modified list's contents: REMOVED=[variable]")
|
||||
if(href_list[VV_HK_LIST_ADD])
|
||||
mod_list_add(target, null, "list", "contents")
|
||||
if(href_list[VV_HK_LIST_ERASE_DUPES])
|
||||
uniqueList_inplace(target)
|
||||
log_world("### ListVarEdit by [src]: /list contents: CLEAR DUPES")
|
||||
log_admin("[key_name(src)] modified list's contents: CLEAR DUPES")
|
||||
message_admins("[key_name_admin(src)] modified list's contents: CLEAR DUPES")
|
||||
if(href_list[VV_HK_LIST_ERASE_NULLS])
|
||||
listclearnulls(target)
|
||||
log_world("### ListVarEdit by [src]: /list contents: CLEAR NULLS")
|
||||
log_admin("[key_name(src)] modified list's contents: CLEAR NULLS")
|
||||
message_admins("[key_name_admin(src)] modified list's contents: CLEAR NULLS")
|
||||
if(href_list[VV_HK_LIST_SET_LENGTH])
|
||||
var/value = vv_get_value(VV_NUM)
|
||||
if (value["class"] != VV_NUM || value["value"] > max(5000, target.len)) //safety - would rather someone not put an extra 0 and erase the server's memory lmao.
|
||||
return
|
||||
target.len = value["value"]
|
||||
log_world("### ListVarEdit by [src]: /list len: [target.len]")
|
||||
log_admin("[key_name(src)] modified list's len: [target.len]")
|
||||
message_admins("[key_name_admin(src)] modified list's len: [target.len]")
|
||||
if(href_list[VV_HK_LIST_SHUFFLE])
|
||||
shuffle_inplace(target)
|
||||
log_world("### ListVarEdit by [src]: /list contents: SHUFFLE")
|
||||
log_admin("[key_name(src)] modified list's contents: SHUFFLE")
|
||||
message_admins("[key_name_admin(src)] modified list's contents: SHUFFLE")
|
||||
@@ -55,12 +55,12 @@
|
||||
if (islist)
|
||||
dropdownoptions = list(
|
||||
"---",
|
||||
"Add Item" = "?_src_=vars;listadd=[refid]",
|
||||
"Remove Nulls" = "?_src_=vars;listnulls=[refid]",
|
||||
"Remove Dupes" = "?_src_=vars;listdupes=[refid]",
|
||||
"Set len" = "?_src_=vars;listlen=[refid]",
|
||||
"Shuffle" = "?_src_=vars;listshuffle=[refid]",
|
||||
"Show VV To Player" = "?_src_=vars;expose=[refid]"
|
||||
"Add Item" = "?_src_=vars;[VV_HK_LIST_ADD]=TRUE;target=[refid]",
|
||||
"Remove Nulls" = "?_src_=vars;[VV_HK_LIST_ERASE_NULLS]=TRUE;target=[refid]",
|
||||
"Remove Dupes" = "?_src_=vars;[VV_HK_LIST_ERASE_DUPES]=TRUE;target=[refid]",
|
||||
"Set len" = "?_src_=vars;[VV_HK_LIST_SET_LENGTH]=TRUE;target=[refid]",
|
||||
"Shuffle" = "?_src_=vars;[VV_HK_LIST_SHUFFLE]=TRUE;target=[refid]",
|
||||
// "Show VV To Player" = "?_src_=vars;[VV_HK_EXPOSE]=TRUE;target=[refid]" // TODO - Not yet implemented for lists
|
||||
)
|
||||
autoconvert_dropdown = TRUE
|
||||
else
|
||||
@@ -88,7 +88,7 @@
|
||||
for (var/i in 1 to L.len)
|
||||
var/key = L[i]
|
||||
var/value
|
||||
if (IS_NORMAL_LIST(L) && !isnum(key))
|
||||
if (IS_NORMAL_LIST(L) && IS_VALID_ASSOC_KEY(key))
|
||||
value = L[key]
|
||||
variable_html += debug_variable(i, value, 0, D)
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user