subsystem antag (#19338)

* antag subsystem

* antag subsystem
This commit is contained in:
Kashargul
2026-03-27 02:06:54 +01:00
committed by GitHub
parent 6be4771fef
commit a64992c509
47 changed files with 233 additions and 241 deletions
+2 -2
View File
@@ -34,8 +34,8 @@
/datum/tgui_ban_panel/tgui_static_data(mob/user)
var/list/bantypes = list("traitor","changeling","operative","revolutionary","cultist","wizard") //For legacy bans.
for(var/antag_type in GLOB.all_antag_types) // Grab other bans.
var/datum/antagonist/antag = GLOB.all_antag_types[antag_type]
for(var/antag_type in SSantag_job.all_antag_types) // Grab other bans.
var/datum/antagonist/antag = SSantag_job.all_antag_types[antag_type]
bantypes |= antag.bantype
var/list/data = list(
+3 -3
View File
@@ -1262,12 +1262,12 @@ ADMIN_VERB(force_antag_latespawn, R_ADMIN|R_EVENT|R_FUN, "Force Template Spawn",
to_chat(user, span_warning("Mode has not started."))
return
var/antag_type = tgui_input_list(user, "Choose a template.","Force Latespawn", GLOB.all_antag_types)
if(!antag_type || !GLOB.all_antag_types[antag_type])
var/antag_type = tgui_input_list(user, "Choose a template.","Force Latespawn", SSantag_job.all_antag_types)
if(!antag_type || !SSantag_job.all_antag_types[antag_type])
to_chat(user, span_warning("Aborting."))
return
var/datum/antagonist/antag = GLOB.all_antag_types[antag_type]
var/datum/antagonist/antag = SSantag_job.all_antag_types[antag_type]
message_admins("[key_name(user)] attempting to force latespawn with template [antag.id].")
antag.attempt_late_spawn()
+2 -2
View File
@@ -412,8 +412,8 @@
dat += "<a href='byond://?src=\ref[src];[HrefToken()];delay_round_end=1'>[SSticker.delay_end ? "End Round Normally" : "Delay Round End"]</a><br>"
dat += "<hr>"
for(var/antag_type in GLOB.all_antag_types)
var/datum/antagonist/A = GLOB.all_antag_types[antag_type]
for(var/antag_type in SSantag_job.all_antag_types)
var/datum/antagonist/A = SSantag_job.all_antag_types[antag_type]
dat += A.get_check_antag_output(src)
dat += "</body></html>"
user << browse(dat, "window=roundstatus;size=400x500")
+3 -3
View File
@@ -485,11 +485,11 @@
counter = 0
var/isbanned_dept = jobban_isbanned(M, JOB_SYNDICATE)
jobs += "<table cellpadding='1' cellspacing='0' width='100%'>"
jobs += "<tr bgcolor='ffeeaa'><th colspan='[length(GLOB.all_antag_types)]'><a href='byond://?src=\ref[src];[HrefToken()];jobban3=Syndicate;jobban4=\ref[M]'>Antagonist Positions</a></th></tr><tr align='center'>"
jobs += "<tr bgcolor='ffeeaa'><th colspan='[length(SSantag_job.all_antag_types)]'><a href='byond://?src=\ref[src];[HrefToken()];jobban3=Syndicate;jobban4=\ref[M]'>Antagonist Positions</a></th></tr><tr align='center'>"
// Antagonists.
for(var/antag_type in GLOB.all_antag_types)
var/datum/antagonist/antag = GLOB.all_antag_types[antag_type]
for(var/antag_type in SSantag_job.all_antag_types)
var/datum/antagonist/antag = SSantag_job.all_antag_types[antag_type]
if(!antag || !antag.bantype)
continue
+2 -2
View File
@@ -11,7 +11,7 @@
return
else if(is_antag && !is_admin) // Is an antag, and not an admin, meaning we need to check if their antag type allows AOOC.
var/datum/antagonist/A = get_antag_data(src.mob.mind.special_role)
var/datum/antagonist/A = SSantag_job.get_antag_data(src.mob.mind.special_role)
if(!A || !A.can_speak_aooc || !A.can_hear_aooc)
to_chat(src, span_warning("Sorry, but your antagonist type is not allowed to speak in AOOC."))
return
@@ -35,7 +35,7 @@
else if(M.client) // Players can only see AOOC if observing, or if they are an antag type allowed to use AOOC.
var/datum/antagonist/A = null
if(M.mind) // Observers don't have minds, but they should still see AOOC.
A = get_antag_data(M.mind.special_role)
A = SSantag_job.get_antag_data(M.mind.special_role)
if((M.mind && M.mind.special_role && A && A.can_hear_aooc) || isobserver(M)) // Antags must have their type be allowed to AOOC to see AOOC. This prevents, say, ERT from seeing AOOC.
to_chat(M, span_ooc(span_aooc("[create_text_tag("aooc", "Antag-OOC:", M.client)] <EM>[player_display]:</EM> " + span_message("[msg]"))))
+1 -1
View File
@@ -499,7 +499,7 @@ ADMIN_VERB(respawn_character, (R_ADMIN|R_REJUVINATE), "Spawn Character", "(Re)Sp
new_character.key = player_key
//Were they any particular special role? If so, copy.
if(new_character.mind)
var/datum/antagonist/antag_data = get_antag_data(new_character.mind.special_role)
var/datum/antagonist/antag_data = SSantag_job.get_antag_data(new_character.mind.special_role)
if(antag_data)
antag_data.add_antagonist(new_character.mind)
antag_data.place_mob(new_character)