From d93f58af310854af2adab06bae4a64170a721cad Mon Sep 17 00:00:00 2001 From: "FunnyMan3595 (Charlie Nolan)" Date: Mon, 6 Jan 2025 15:41:20 +0000 Subject: [PATCH 1/6] Add one-click for event roles. --- code/modules/admin/topic.dm | 6 +- code/modules/admin/verbs/one_click_antag.dm | 63 +++++++++++++++++++++ 2 files changed, 68 insertions(+), 1 deletion(-) diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 9c8f042264c2..e603f3013041 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -40,7 +40,7 @@ if(href_list["makeAntag"]) switch(href_list["makeAntag"]) if("1") - log_admin("[key_name(usr)] has spawned a traitor.") + log_admin("[key_name(usr)] has spawned traitors.") if(!makeTraitors()) to_chat(usr, "Unfortunately there weren't enough candidates available.") if("2") @@ -71,6 +71,10 @@ log_admin("[key_name(usr)] has spawned mindflayers.") if(!makeMindflayers()) to_chat(usr, "Unfortunately there weren't enough candidates available.") + if("9") + log_admin("[key_name(usr)] has spawned event characters.") + if(!makeEventCharacters()) + to_chat(usr, "Unfortunately there weren't enough candidates available.") else if(href_list["dbsearchckey"] || href_list["dbsearchadmin"] || href_list["dbsearchip"] || href_list["dbsearchcid"] || href_list["dbsearchbantype"]) var/adminckey = href_list["dbsearchadmin"] diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm index 665c1bac2b9f..a20da7bb3f2e 100644 --- a/code/modules/admin/verbs/one_click_antag.dm +++ b/code/modules/admin/verbs/one_click_antag.dm @@ -21,6 +21,7 @@ Make Vampires
Make Abductor Team (Requires Ghosts)
Make Mindflayers
+ Make Event Characters
"} usr << browse(dat, "window=oneclickantag;size=400x400") return @@ -311,6 +312,68 @@ qdel(temp) return TRUE +/datum/admins/proc/makeEventCharacters() + var/datum/game_mode/traitor/temp = new() + + var/list/mob/living/carbon/human/candidates = list() + var/mob/living/carbon/human/H = null + + var/antnum = input(owner, "How many event characters you want to create? Enter 0 to cancel","Amount:", 0) as num + if(!antnum || antnum <= 0) + qdel(temp) + return FALSE + + var/no_mindshields = input(owner, "Avoid mindshielded characters?") in list("Yes", "No", "Cancel") + if(no_mindshields == "Cancel") + qdel(temp) + return FALSE + else if(no_mindshields == "Yes") + temp.restricted_jobs += temp.protected_jobs + + var/respect_traitor = input(owner, "Reqire traitor willingness?") in list("Yes", "No", "Cancel") + var/role = null + if(respect_traitor == "Cancel") + qdel(temp) + return FALSE + else if(respect_traitor == "Yes") + role = ROLE_TRAITOR + + var/give_objective = input(owner, "Give them a shared custom objective?") in list("Yes", "No", "Cancel") + var/objective = null + if(give_objective == "Cancel") + qdel(temp) + return FALSE + else if(give_objective == "Yes") + objective = sanitize(copytext_char(input("Custom objective:", "Objective", "") as text|null, 1, MAX_MESSAGE_LEN)) + if(isnull(objective) || objective == "") + qdel(temp) + return FALSE + + log_admin("[key_name(owner)] tried making [antnum] event characters with One-Click-Antag") + message_admins("[key_name_admin(owner)] tried making [antnum] event characters with One-Click-Antag") + + for(var/mob/living/carbon/human/applicant in GLOB.player_list) + if(CandCheck(role, applicant, temp)) + candidates += applicant + + if(length(candidates)) + var/numEventChars = min(length(candidates), antnum) + + for(var/i = 0, i Date: Mon, 6 Jan 2025 16:11:57 -0800 Subject: [PATCH 2/6] Apply suggestions from code review Co-authored-by: Contrabang <91113370+Contrabang@users.noreply.github.com> Signed-off-by: Charlie Nolan --- code/modules/admin/verbs/one_click_antag.dm | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm index a20da7bb3f2e..24c8b9c47c02 100644 --- a/code/modules/admin/verbs/one_click_antag.dm +++ b/code/modules/admin/verbs/one_click_antag.dm @@ -313,16 +313,14 @@ return TRUE /datum/admins/proc/makeEventCharacters() - var/datum/game_mode/traitor/temp = new() - var/list/mob/living/carbon/human/candidates = list() var/mob/living/carbon/human/H = null var/antnum = input(owner, "How many event characters you want to create? Enter 0 to cancel","Amount:", 0) as num if(!antnum || antnum <= 0) - qdel(temp) return FALSE + var/datum/game_mode/traitor/temp = new() var/no_mindshields = input(owner, "Avoid mindshielded characters?") in list("Yes", "No", "Cancel") if(no_mindshields == "Cancel") qdel(temp) @@ -330,7 +328,7 @@ else if(no_mindshields == "Yes") temp.restricted_jobs += temp.protected_jobs - var/respect_traitor = input(owner, "Reqire traitor willingness?") in list("Yes", "No", "Cancel") + var/respect_traitor = input(owner, "Require traitor willingness?") in list("Yes", "No", "Cancel") var/role = null if(respect_traitor == "Cancel") qdel(temp) @@ -359,7 +357,7 @@ if(length(candidates)) var/numEventChars = min(length(candidates), antnum) - for(var/i = 0, i Date: Tue, 7 Jan 2025 00:12:49 +0000 Subject: [PATCH 3/6] Review fix. --- code/modules/admin/verbs/one_click_antag.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm index 24c8b9c47c02..0dfabbffd00f 100644 --- a/code/modules/admin/verbs/one_click_antag.dm +++ b/code/modules/admin/verbs/one_click_antag.dm @@ -355,9 +355,9 @@ candidates += applicant if(length(candidates)) - var/numEventChars = min(length(candidates), antnum) + var/num_event_chars = min(length(candidates), antnum) - for(var/i in 1 to numEventChars) + for(var/i in 1 to num_event_chars) H = pick(candidates) if(!isnull(objective)) var/datum/objective/O = new() From a4cbd0e9f60682f326c5574abd17fe9aabdece8c Mon Sep 17 00:00:00 2001 From: Charlie Nolan Date: Wed, 8 Jan 2025 13:22:17 -0800 Subject: [PATCH 4/6] Update code/modules/admin/verbs/one_click_antag.dm Signed-off-by: Charlie Nolan --- code/modules/admin/verbs/one_click_antag.dm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm index 0dfabbffd00f..701f510eee9c 100644 --- a/code/modules/admin/verbs/one_click_antag.dm +++ b/code/modules/admin/verbs/one_click_antag.dm @@ -353,6 +353,7 @@ for(var/mob/living/carbon/human/applicant in GLOB.player_list) if(CandCheck(role, applicant, temp)) candidates += applicant + qdel(temp) if(length(candidates)) var/num_event_chars = min(length(candidates), antnum) @@ -367,9 +368,7 @@ H.mind.add_antag_datum(/datum/antagonist/eventmisc) candidates.Remove(H) - qdel(temp) return TRUE - qdel(temp) return FALSE /datum/admins/proc/makeThunderdomeTeams() // Not strictly an antag, but this seemed to be the best place to put it. From 47e69b84cf70fa26505743dae69838c7d9366dee Mon Sep 17 00:00:00 2001 From: Charlie Nolan Date: Wed, 8 Jan 2025 13:22:49 -0800 Subject: [PATCH 5/6] Update code/modules/admin/verbs/one_click_antag.dm Signed-off-by: Charlie Nolan --- code/modules/admin/verbs/one_click_antag.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm index 701f510eee9c..d0fd578ec761 100644 --- a/code/modules/admin/verbs/one_click_antag.dm +++ b/code/modules/admin/verbs/one_click_antag.dm @@ -367,7 +367,6 @@ H.mind.add_mind_objective(O) H.mind.add_antag_datum(/datum/antagonist/eventmisc) candidates.Remove(H) - return TRUE return FALSE From 1e4af0b5c934bbb7d75bba820b7b34fd3df68374 Mon Sep 17 00:00:00 2001 From: Charlie Nolan Date: Wed, 8 Jan 2025 13:58:20 -0800 Subject: [PATCH 6/6] Update code/modules/admin/verbs/one_click_antag.dm Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> Signed-off-by: Charlie Nolan --- code/modules/admin/verbs/one_click_antag.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm index d0fd578ec761..6a8a54778fc5 100644 --- a/code/modules/admin/verbs/one_click_antag.dm +++ b/code/modules/admin/verbs/one_click_antag.dm @@ -343,7 +343,7 @@ return FALSE else if(give_objective == "Yes") objective = sanitize(copytext_char(input("Custom objective:", "Objective", "") as text|null, 1, MAX_MESSAGE_LEN)) - if(isnull(objective) || objective == "") + if(!length(objective)) qdel(temp) return FALSE