mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-13 00:55:20 +01:00
Admins will no longer accidentally undelay round end or reboot the server when multiple admins attempt to delay it at the same time. (#59551)
Delaying/undelaying round end is no longer a toggle under the same href. Delaying and undelaying the round end are now explicit operations. If two admins attempt to delay round end at the same time, the first admin to input a reason wins and the second admin instead gets an alert that the round end is already delayed along with the reason instead of accidentally untoggling it. FINALLY, undelaying round end will no longer trigger an immediate auto server reboot when SSticker.ready_for_reboot is TRUE. The admins are messaged that they must Reboot World manually. This is the final guard against admins accidentally undelaying when they're not actually ready to do so.
This commit is contained in:
@@ -138,7 +138,10 @@
|
||||
else
|
||||
dat += "ETA: <a href='?_src_=holder;[HrefToken()];edit_shuttle_time=1'>[(timeleft / 60) % 60]:[add_leading(num2text(timeleft % 60), 2, "0")]</a><BR>"
|
||||
dat += "<a href='?_src_=holder;[HrefToken()];end_round=[REF(usr)]'>End Round Now</a><br>"
|
||||
dat += "<a href='?_src_=holder;[HrefToken()];delay_round_end=1'>[SSticker.delay_end ? "End Round Normally" : "Delay Round End"]</a><br>"
|
||||
if(SSticker.delay_end)
|
||||
dat += "<a href='?_src_=holder;[HrefToken()];undelay_round_end=1'>End Round Normally</a><br>"
|
||||
else
|
||||
dat += "<a href='?_src_=holder;[HrefToken()];delay_round_end=1'>Delay Round End</a><br>"
|
||||
dat += "<a href='?_src_=holder;[HrefToken()];ctf_toggle=1'>Enable/Disable CTF</a><br>"
|
||||
dat += "<a href='?_src_=holder;[HrefToken()];rebootworld=1'>Reboot World</a><br>"
|
||||
dat += "<a href='?_src_=holder;[HrefToken()];check_teams=1'>Check Teams</a>"
|
||||
|
||||
+33
-15
@@ -159,22 +159,40 @@
|
||||
else if(href_list["delay_round_end"])
|
||||
if(!check_rights(R_SERVER))
|
||||
return
|
||||
if(!SSticker.delay_end)
|
||||
SSticker.admin_delay_notice = input(usr, "Enter a reason for delaying the round end", "Round Delay Reason") as null|text
|
||||
if(isnull(SSticker.admin_delay_notice))
|
||||
return
|
||||
else
|
||||
if(tgui_alert(usr, "Really cancel current round end delay? The reason for the current delay is: \"[SSticker.admin_delay_notice]\"", "Undelay round end", list("Yes", "No")) != "Yes")
|
||||
return
|
||||
SSticker.admin_delay_notice = null
|
||||
SSticker.delay_end = !SSticker.delay_end
|
||||
var/reason = SSticker.delay_end ? "for reason: [SSticker.admin_delay_notice]" : "."//laziness
|
||||
var/msg = "[SSticker.delay_end ? "delayed" : "undelayed"] the round end [reason]"
|
||||
log_admin("[key_name(usr)] [msg]")
|
||||
message_admins("[key_name_admin(usr)] [msg]")
|
||||
if(SSticker.ready_for_reboot && !SSticker.delay_end) //we undelayed after standard reboot would occur
|
||||
SSticker.standard_reboot()
|
||||
|
||||
if(SSticker.delay_end)
|
||||
tgui_alert(usr, "The round end is already delayed. The reason for the current delay is: \"[SSticker.admin_delay_notice]\"", "Alert", list("Ok"))
|
||||
return
|
||||
|
||||
var/delay_reason = input(usr, "Enter a reason for delaying the round end", "Round Delay Reason") as null|text
|
||||
|
||||
if(isnull(delay_reason))
|
||||
return
|
||||
|
||||
if(SSticker.delay_end)
|
||||
tgui_alert(usr, "The round end is already delayed. The reason for the current delay is: \"[SSticker.admin_delay_notice]\"", "Alert", list("Ok"))
|
||||
return
|
||||
|
||||
SSticker.delay_end = TRUE
|
||||
SSticker.admin_delay_notice = delay_reason
|
||||
|
||||
log_admin("[key_name(usr)] delayed the round end for reason: [SSticker.admin_delay_notice]")
|
||||
message_admins("[key_name_admin(usr)] delayed the round end for reason: [SSticker.admin_delay_notice]")
|
||||
else if(href_list["undelay_round_end"])
|
||||
if(!check_rights(R_SERVER))
|
||||
return
|
||||
|
||||
if(tgui_alert(usr, "Really cancel current round end delay? The reason for the current delay is: \"[SSticker.admin_delay_notice]\"", "Undelay round end", list("Yes", "No")) == "No")
|
||||
return
|
||||
|
||||
SSticker.admin_delay_notice = null
|
||||
SSticker.delay_end = FALSE
|
||||
|
||||
log_admin("[key_name(usr)] undelayed the round end.")
|
||||
if(SSticker.ready_for_reboot)
|
||||
message_admins("[key_name_admin(usr)] undelayed the round end. You must now manually Reboot World to start the next shift.")
|
||||
else
|
||||
message_admins("[key_name_admin(usr)] undelayed the round end.")
|
||||
else if(href_list["end_round"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user