[MIRROR] Toggle the ability for the dead to vote in-game + understandability for the dead whether voting is disabled. (#28819)

* Toggle the ability for the dead to vote in-game + understandability for the dead whether voting is disabled. (#84352)

## About The Pull Request

Adds a convenient switch to change the ability to vote dead (previously
only in the config), and also turns off the button and adds a tooltip to
let players know why they can't vote (previously, you could just click,
since the button wasn't turned off, but the vote didn't count).

https://github.com/tgstation/tgstation/assets/78199449/404aac9c-0b41-4c16-8ffd-2a435cf25e2c

## Why It's Good For The Game

At the right moments, you can just stop considering the opinions of dead
players.
The dead players will be able to understand why they can't vote.

## Changelog

🆑 Vishenka0704
qol: With voting turned off for the dead, you can now understand why you
can't vote (being dead).
admin: Voting switch for the dead players
/🆑

* Toggle the ability for the dead to vote in-game + understandability for the dead whether voting is disabled.

---------

Co-authored-by: Yaroslav Nurkov <78199449+AnywayFarus@users.noreply.github.com>
This commit is contained in:
SkyratBot
2024-07-13 14:59:47 +05:30
committed by GitHub
co-authored by Yaroslav Nurkov
parent 8e0046d996
commit 5741e1893d
3 changed files with 51 additions and 7 deletions
+19
View File
@@ -274,6 +274,15 @@ SUBSYSTEM_DEF(vote)
return FALSE
return TRUE
/datum/controller/subsystem/vote/proc/toggle_dead_voting(mob/toggle_initiator)
var/switch_deadvote_config = !CONFIG_GET(flag/no_dead_vote)
CONFIG_SET(flag/no_dead_vote, switch_deadvote_config)
var/text_verb = !switch_deadvote_config ? "enabled" : "disabled"
log_admin("[key_name(toggle_initiator)] [text_verb] Dead Vote.")
message_admins("[key_name_admin(toggle_initiator)] [text_verb] Dead Vote.")
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Dead Vote", text_verb))
/datum/controller/subsystem/vote/ui_state()
return GLOB.always_state
@@ -293,6 +302,7 @@ SUBSYSTEM_DEF(vote)
data["user"] = list(
"ckey" = user.client?.ckey,
"isGhost" = CONFIG_GET(flag/no_dead_vote) && user.stat == DEAD && !user.client?.holder,
"isLowerAdmin" = is_lower_admin,
"isUpperAdmin" = is_upper_admin,
// What the current user has selected in any ongoing votes.
@@ -377,6 +387,15 @@ SUBSYSTEM_DEF(vote)
end_vote()
return TRUE
if("toggleDeadVote")
if(!check_rights_for(voter.client, R_ADMIN))
message_admins("[key_name(voter)] tried to toggle vote abillity for ghosts while having improper rights, \
this is potentially a malicious exploit and worth noting.")
return
toggle_dead_voting(voter)
return TRUE
if("toggleVote")
var/datum/vote/selected = possible_votes[params["voteName"]]
if(!istype(selected))