Some Antag Madness tweaks based on feedback and observations from that first round (#34434)

* antag madness plus

* derp

* faction delta

* that too

* antag madness defines

* less redundancy

* moving things around so they compile
This commit is contained in:
DeityLink
2023-06-27 23:54:36 +02:00
committed by GitHub
parent 277465ca9f
commit ec91ea2fc7
16 changed files with 157 additions and 63 deletions

View File

@@ -400,5 +400,3 @@ var/list/machinery_rating_cache = list() // list of type path -> number
var/runescape_pvp = FALSE
var/runescape_skull_display = FALSE
var/antag_madness = FALSE

View File

@@ -97,6 +97,8 @@
#define GREET_CUSTOM "custom"
#define GREET_MIDROUND "midround"
#define GREET_MASTER "master"
#define GREET_RIGHTANDWRONG "rightandwrong"
#define GREET_MADNESSSURVIVOR "madnesssurvivor"
#define GREET_AUTOTATOR "autotator"
#define GREET_SYNDBEACON "syndbeacon"
@@ -287,3 +289,7 @@
#define BASE_RULESET_WEIGHT 10
#define ADDITIONAL_RULESET_WEIGHT 1.4
#define ANTAG_MADNESS_OFF 0
#define ANTAG_MADNESS_EARLY 1
#define ANTAG_MADNESS_LATE 2

View File

@@ -767,6 +767,8 @@ Assign your candidates in choose_candidates() instead.
// //
//////////////////////////////////////////////
var/antag_madness = ANTAG_MADNESS_OFF
/datum/dynamic_ruleset/roundstart/antag_madness
name = "Antag Madness"
role_category = /datum/role/nanotrasen_official
@@ -776,8 +778,9 @@ Assign your candidates in choose_candidates() instead.
cost = 0
requirements = list(101,101,101,101,101,101,101,101,101,101) // Adminbus only
high_population_requirement = 101
var/list/nanotrasen_staff = list("Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Internal Affairs Agent")
persistent = TRUE//latejoiners will either be heads of staff or traitors (unless traitor is deactivated/antagbanned)
var/list/nanotrasen_staff = list("Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Internal Affairs Agent")
var/escalation_delay = 18 MINUTES
/datum/dynamic_ruleset/roundstart/antag_madness/trim_candidates()//All the heads of staff get the role, the rest of the players will get trimmed by the other rulesets
for(var/mob/P in candidates)
@@ -794,7 +797,7 @@ Assign your candidates in choose_candidates() instead.
return TRUE
/datum/dynamic_ruleset/roundstart/antag_madness/execute()
antag_madness = TRUE
antag_madness = ANTAG_MADNESS_EARLY
//first we initialize the nanotrasen faction, even if there are no heads currently there
var/datum/faction/nanotrasen/nanotrasen = find_active_faction_by_type(/datum/faction/nanotrasen)
if (!nanotrasen)
@@ -866,14 +869,28 @@ Assign your candidates in choose_candidates() instead.
log_admin("ANTAG MADNESS: <font size='3'>[rule.name]</font> FAILED!")
spawn(10)
message_admins("<span class='danger'>Antag Madness is now underway. In this very chaotic mode, admins are encouraged to proactively interfere with the round to keep things interesting, and help it reach a conclusion if necessary. Blobs and Rev may no longer cause the round to suddenly end, Malf and Nuke Ops still can if they destroy the station. If things get stale after 30 minutes and there are lots of dead players, consider bringing the round to a conclusion by either forcing a shuttle call, sending either the deathsquad or elite syndies to destroy the station, or trigger a supermatter cascade (or combination of those).</span>")
log_admin("<span class='danger'>Antag Madness is now underway. In this very chaotic mode, admins are encouraged to proactively interfere with the round to keep things interesting, and help it reach a conclusion if necessary. Blobs and Rev may no longer cause the round to suddenly end, Malf and Nuke Ops still can if they destroy the station. If things get stale after 30 minutes and there are lots of dead players, consider bringing the round to a conclusion by either forcing a shuttle call, sending either the deathsquad or elite syndies to destroy the station, or trigger a supermatter cascade (or combination of those).</span>")
message_admins("<span class='danger'>Antag Madness is now underway. In this very chaotic mode, admins are encouraged to proactively interfere with the round to keep things interesting, and help it reach a conclusion if necessary. Rev may no longer cause the round to suddenly end if all heads are dead, Malf, Blob and Nuke Ops still can if they destroy the station. If things get stale after 30 minutes and there are lots of dead players, consider bringing the round to a conclusion by either forcing a shuttle call, sending either the deathsquad or elite syndies to destroy the station, or trigger a supermatter cascade (or combination of those).</span>")
log_admin("<span class='danger'>Antag Madness is now underway. In this very chaotic mode, admins are encouraged to proactively interfere with the round to keep things interesting, and help it reach a conclusion if necessary. Rev may no longer cause the round to suddenly end if all heads are dead, Malf, Blob and Nuke Ops still can if they destroy the station. If things get stale after 30 minutes and there are lots of dead players, consider bringing the round to a conclusion by either forcing a shuttle call, sending either the deathsquad or elite syndies to destroy the station, or trigger a supermatter cascade (or combination of those).</span>")
spawn(20 MINUTES)//ERT calling is automated after 20 minutes. Any further developments will have to be manually enacted by the badmin who forced this terrible ruleset in the first place. have fun!
nanotrasen.delta = TRUE
spawn(escalation_delay)//ERT calling is automated after 18 minutes. Any further developments will have to be manually enacted by the badmin who forced this terrible ruleset in the first place. have fun!
antag_madness = ANTAG_MADNESS_LATE
var/datum/striketeam/ert/response_team = new()
response_team.trigger_strike(null,"Nanotrasen officials have been misled to a dummy Space Station filled with antagonistic forces. You must find, protect, and retrieve the various Heads of Staff and Internal Affair Agents aboard the station. Anyone else is a potential threat that must be dealt with extreme prejudice.")
for(var/mob/living/player in player_list)
if (!player.client)
continue
if (player.stat == DEAD)
continue
if (isMoMMI(player))
continue
if (!isanyantag(player))
var/datum/role/survivor/R = new
R.AssignToRole(player.mind,1)
R.Greet(GREET_MADNESSSURVIVOR)
R.OnPostSetup()
R.ForgeObjectives()
R.AnnounceObjectives()
return 1
/datum/dynamic_ruleset/roundstart/antag_madness/latespawn_interaction(var/mob/living/newPlayer)
@@ -908,4 +925,14 @@ Assign your candidates in choose_candidates() instead.
else
newTraitor.Greet(GREET_LATEJOIN)
return TRUE
//tator disabled? tator banned? whatever you'll be a survivor if the round has gone on long enough
if (antag_madness == ANTAG_MADNESS_LATE)
var/datum/role/survivor/R = new
R.AssignToRole(newPlayer.mind,1)
R.Greet(GREET_MADNESSSURVIVOR)
R.OnPostSetup()
R.ForgeObjectives()
R.AnnounceObjectives()
return TRUE
return FALSE

View File

@@ -87,8 +87,12 @@
AnnounceObjectives()
start = new()
start.count()
prelude_announcement = world.time + rand(WAIT_TIME_PHASE1,2*WAIT_TIME_PHASE1)
outbreak_announcement = world.time + rand(WAIT_TIME_PHASE2,2*WAIT_TIME_PHASE2)
if (antag_madness == ANTAG_MADNESS_EARLY)
prelude_announcement = world.time + 10 MINUTES
outbreak_announcement = world.time + 15 MINUTES
else
prelude_announcement = world.time + rand(WAIT_TIME_PHASE1,2*WAIT_TIME_PHASE1)
outbreak_announcement = world.time + rand(WAIT_TIME_PHASE2,2*WAIT_TIME_PHASE2)
/datum/faction/blob_conglomerate/proc/CountFloors()
var/floor_count = 0
@@ -141,13 +145,19 @@
to_chat(aiPlayer, "Laws Updated: [law]")
research_shuttle.lockdown = "Under directive 7-10, [station_name()] is quarantined until further notice." //LOCKDOWN THESE SHUTTLES
mining_shuttle.lockdown = "Under directive 7-10, [station_name()] is quarantined until further notice."
emergency_shuttle.shutdown = TRUE //Quarantine
emergency_shuttle_lockdown = "Under directive 7-10, [station_name()] is quarantined until further notice."
stage = FACTION_ACTIVE
// Different levels of defcons to help the crew.
if (BLOB_DEFCON_3) // 20% blob count: code red
set_security_level("red")
last_security_level_change = SEC_LEVEL_RED
var/sec_change = TRUE
for(var/datum/faction/F in ticker.mode.factions)
if (F.last_security_level_change == SEC_LEVEL_DELTA)
sec_change = FALSE
if (sec_change)
set_security_level("red")//We raise the sec level to red, unless some malf AI has it set to delta already
command_alert(/datum/command_alert/blob_defcon_3)
stage = BLOB_DEFCON_3
@@ -190,7 +200,7 @@
if (FACTION_DEFEATED) //Cleanup time
command_alert(/datum/command_alert/biohazard_station_unlock)
send_intercept(FACTION_DEFEATED)
emergency_shuttle.shutdown = FALSE
emergency_shuttle_lockdown = null
research_shuttle.lockdown = null
mining_shuttle.lockdown = null
declared = FALSE

View File

@@ -49,6 +49,9 @@ var/list/factions_with_hud_icons = list()
var/list/voice_per_admin = list()
var/admin_voice_say = "says"
var/emergency_shuttle_lockdown = null //if a string is set, commms console won't be able to call the shuttle, with that string given as explaination.
var/last_security_level_change = SEC_LEVEL_GREEN //the last sec level set by that faction. If the security level should change, it will only do so if no other faction has a higher one
var/minor_victory = FALSE
// This datum represents all data that is exported to the statistics file at the end of the round.
@@ -289,18 +292,30 @@ var/list/factions_with_hud_icons = list()
switch(value)
if(FACTION_DEFEATED) //Faction was close to victory, but then lost. Send shuttle and end theme.
sleep(5 SECONDS)
emergency_shuttle.shutdown = 0
emergency_shuttle.online = 1
emergency_shuttle_lockdown = null
call_shuttle_proc(null, "The [name] has been defeated. An emergency shuttle has been dispatched")//will only actually occur if nothing else prevents the shuttle call
OnPostDefeat()
set_security_level("blue")
ticker.StopThematic()
last_security_level_change = SEC_LEVEL_BLUE
var/sec_change = TRUE
for(var/datum/faction/F in ticker.mode.factions)
if (F.last_security_level_change > SEC_LEVEL_BLUE)
sec_change = FALSE
if (sec_change)
set_security_level("blue")//We drop the sec level to blue, but only if no other faction wants it any higher
ticker.StopThematic()
if(FACTION_ENDGAME) //Faction is nearing victory. Set red alert and play endgame music.
if(playlist)
ticker.StartThematic(playlist)
else
ticker.StartThematic("endgame")
sleep(2 SECONDS)
set_security_level("red")
last_security_level_change = SEC_LEVEL_RED
var/sec_change = TRUE
for(var/datum/faction/F in ticker.mode.factions)
if (F.last_security_level_change == SEC_LEVEL_DELTA)
sec_change = FALSE
if (sec_change)
if(playlist)
ticker.StartThematic(playlist)
else
ticker.StartThematic("endgame")
sleep(2 SECONDS)
set_security_level("red")//We raise the sec level to red, unless some malf AI has it set to delta already
/datum/faction/proc/OnPostDefeat()
if(emergency_shuttle.location || emergency_shuttle.direction) //If traveling or docked somewhere other than idle at command, don't call.

View File

@@ -32,3 +32,8 @@
default_admin_voice = "Nanotrasen Central Command"
admin_voice_style = "resteamradio"
var/delta = FALSE//goes true once the ERT call has been made
/datum/faction/nanotrasen/forgeObjectives()
for(var/datum/role/R in members)
R.ForgeObjectives()
R.AnnounceObjectives()

View File

@@ -99,7 +99,7 @@
#define ALL_REVS_DEAD 2
/datum/faction/revolution/check_win()
if (antag_madness)
if(antag_madness != ANTAG_MADNESS_OFF)
return FALSE
var/gameactivetime = world.time - ticker.gamestart_time*10 //gamestart_time is expressed in seconds, not deciseconds
if(gameactivetime < 5 MINUTES)

View File

@@ -32,10 +32,10 @@
var/icon/logo = icon('icons/logos.dmi', logo_state)
switch(greeting)
if (GREET_ROUNDSTART)
to_chat(antag.current, "<img src='data:image/png;base64,[icon2base64(logo)]' style='position: relative; top: 10;'/> <span class='danger'>You are the [name]. You've uncovered a terrible truth: this space station is a dummy created by the Syndicate to lure Nanotrasen officials, and nearly everyone aboard is likely a Syndicate Agent . . . or worse. Trust only fellow heads of staff and the IAA, and survive until Nanotrasen manages to scramble an ERT to your rescue in about 20 minutes.</span>")
to_chat(antag.current, "<span class='danger'>You may expect one in about 20 minutes.</span>")
to_chat(antag.current, "<img src='data:image/png;base64,[icon2base64(logo)]' style='position: relative; top: 10;'/> <span class='danger'>You are the [name]. You've uncovered a terrible truth: this space station is a dummy created by the Syndicate to lure Nanotrasen officials, and nearly everyone aboard is likely a Syndicate Agent . . . or worse. Trust only fellow heads of staff and the IAA, and survive until Nanotrasen manages to scramble an ERT to your rescue.</span>")
to_chat(antag.current, "<span class='danger'>Centcom managed to reach you and has informed you that an ERT should hopefully arrive by 12:20. Attempting to call one earlier is bound to fail, and may lead to unwanted attention.</span>")
if (GREET_LATEJOIN)
to_chat(antag.current, "<img src='data:image/png;base64,[icon2base64(logo)]' style='position: relative; top: 10;'/> <span class='danger'>You are the [name]. A voice in your earpiece suddenly informs you that this station is a trap laid out by the Syndicate to trap Nanotrasen officials, and anyone other than fellow heads of staff or IAA are most likely compromised. An ERT will be dispatched within the next 20 minutes.</span>")
to_chat(antag.current, "<img src='data:image/png;base64,[icon2base64(logo)]' style='position: relative; top: 10;'/> <span class='danger'>You are the [name]. A voice in your earpiece suddenly informs you that this station is a trap laid out by the Syndicate to trap Nanotrasen officials, and anyone other than fellow heads of staff or IAA are most likely compromised. An ERT should try to reach you for extraction around 12:20.</span>")
if (GREET_LATEJOIN_ERT_COMING)
to_chat(antag.current, "<img src='data:image/png;base64,[icon2base64(logo)]' style='position: relative; top: 10;'/> <span class='danger'>You are the [name]. You might want to run away from arrivals and hide right now. This station is a trap laid out by the Syndicate to trap Nanotrasen officials, and anyone other than fellow heads of staff or IAA are most likely compromised. An ERT was dispatched and is tasked to protect you, try and meet up with them.</span>")
if (GREET_LATEJOIN_ERT_NOT_COMING)

View File

@@ -5,7 +5,7 @@
/datum/role/survivor
id = SURVIVOR
name = SURVIVOR
logo_state = "gun-logo"
logo_state = "survivor-logo"
default_admin_voice = "Common Sense"
admin_voice_style = "warning"
var/survivor_type = "survivor"
@@ -17,8 +17,18 @@
survivor_type = "crusader"
logo_state = "sword-logo"
/datum/role/survivor/Greet()
to_chat(antag.current, "<B>You are a [survivor_type]!</B><BR>Your own safety matters above all else, trust no one and kill anyone who gets in your way. However, armed as you are, now would be the perfect time to settle that score or grab that pair of yellow gloves you've been eyeing...")
/datum/role/survivor/Greet(var/greeting,var/custom)
if (greeting == GREET_RIGHTANDWRONG)
logo_state = "gun-logo"
var/icon/logo = icon('icons/logos.dmi', logo_state)
switch(greeting)
if (GREET_RIGHTANDWRONG)
to_chat(antag.current, "<img src='data:image/png;base64,[icon2base64(logo)]' style='position: relative; top: 10;'/> <B>You are a [survivor_type]!</B><BR>Your own safety matters above all else, trust no one and kill anyone who gets in your way. However, armed as you are, now would be the perfect time to settle that score or grab that pair of yellow gloves you've been eyeing...")
if (GREET_MADNESSSURVIVOR)
to_chat(antag.current, "<img src='data:image/png;base64,[icon2base64(logo)]' style='position: relative; top: 10;'/> <B>You are a [survivor_type]!</B><BR>This place is bad news, and you are determined to make it out of here alive by any means necessary.")
else
to_chat(antag.current, "<img src='data:image/png;base64,[icon2base64(logo)]' style='position: relative; top: 10;'/> <B>You are a [survivor_type]!</B>")
/datum/role/survivor/ForgeObjectives()
var/datum/objective/survive/S = new
@@ -42,7 +52,8 @@
AppendObjective(S)
/datum/role/wizard/summon_magic/Greet()
to_chat(antag.current, "<B>You are a Magician!</B><BR>Your own safety matters above all else, trust no one and kill anyone who gets in your way. However, armed as you are, now would be the perfect time to settle that score or grab that pair of yellow gloves you've been eyeing...")
var/icon/logo = icon('icons/logos.dmi', logo_state)
to_chat(antag.current, "<img src='data:image/png;base64,[icon2base64(logo)]' style='position: relative; top: 10;'/> <B>You are a Magician!</B><BR>Your own safety matters above all else, trust no one and kill anyone who gets in your way. However, armed as you are, now would be the perfect time to settle that score or grab that pair of yellow gloves you've been eyeing...")
/datum/role/wizard/summon_magic/OnPostSetup(var/laterole = FALSE)
return TRUE
@@ -56,7 +67,8 @@
id = MAGICIAN_ARTIFACT
/datum/role/wizard/summon_magic/artifact/Greet()
to_chat(antag.current, "<B>You are a Magical Artificer!</B><BR>Your own safety matters above all else, trust no one and kill anyone who gets in your way. However, armed as you are, now would be the perfect time to settle that score or grab that pair of yellow gloves you've been eyeing...")
var/icon/logo = icon('icons/logos.dmi', logo_state)
to_chat(antag.current, "<img src='data:image/png;base64,[icon2base64(logo)]' style='position: relative; top: 10;'/> <B>You are a Magical Artificer!</B><BR>Your own safety matters above all else, trust no one and kill anyone who gets in your way. However, armed as you are, now would be the perfect time to settle that score or grab that pair of yellow gloves you've been eyeing...")
/datum/role/wizard/summon_potions
disallow_job = FALSE
@@ -70,7 +82,8 @@
AppendObjective(S)
/datum/role/wizard/summon_potions/Greet()
to_chat(antag.current, "<B>You are a Potion Seller!</B><BR>Your own safety matters abov- Fuck that, GO SELL SOME POTIONS!")
var/icon/logo = icon('icons/logos.dmi', logo_state)
to_chat(antag.current, "<img src='data:image/png;base64,[icon2base64(logo)]' style='position: relative; top: 10;'/> <B>You are a Potion Seller!</B><BR>Your own safety matters abov- Fuck that, GO SELL SOME POTIONS!")
/datum/role/wizard/summon_potions/OnPostSetup(var/laterole = FALSE)
return TRUE

View File

@@ -117,7 +117,10 @@
if (GREET_LATEJOIN)
to_chat(antag.current, "<img src='data:image/png;base64,[icon2base64(logo)]' style='position: relative; top: 10;'/> <span class='danger'>You are a Traitor.<br>As a Syndicate agent, you are to infiltrate the crew and accomplish your objectives at all cost.</span>")
if (GREET_LATEJOINMADNESS)
to_chat(antag.current, "<img src='data:image/png;base64,[icon2base64(logo)]' style='position: relative; top: 10;'/> <span class='danger'>You are a Traitor.<br>The Syndicate has baited Nanotrasen officials aboard this dummy space station along with the system's worst cases of scum and villainy, Find the heads of staff and make their life and un-life a living hell.</span>")
to_chat(antag.current, "<img src='data:image/png;base64,[icon2base64(logo)]' style='position: relative; top: 10;'/> <span class='danger'>You are a Traitor, BUT...</span>")
to_chat(antag.current, "<span class='danger'>The Syndicate has baited Nanotrasen officials aboard this dummy space station along with the system's worst examples of scum and villainy.</span>")
to_chat(antag.current, "<span class='danger'>Find the heads of staff and make their life and un-life a living hell.</span>")
to_chat(antag.current, "<span class='danger'>Beware of the station's other unruly occupants.</span>")
if (GREET_SYNDBEACON)
to_chat(antag.current, "<img src='data:image/png;base64,[icon2base64(logo)]' style='position: relative; top: 10;'/> <span class='danger'>You have joined the ranks of the Syndicate and become a traitor to Nanotrasen!</span>")
else

View File

@@ -142,6 +142,9 @@
to_chat(src, "Current cost of a blob core is [cost]!")
return
if(antag_madness != ANTAG_MADNESS_OFF)
to_chat(src, "<span class='danger'>Something is amiss, maybe some genetic defect, but regardless you find yourself unable to create a new blob core. You'll have to endure on your own.</span>")
return
B.change_to(/obj/effect/blob/core, src, TRUE)

View File

@@ -31,7 +31,7 @@
if (!(isrole(R.id, H)))
R.AssignToRole(H.mind)
R.Greet()
R.Greet(GREET_RIGHTANDWRONG)
R.OnPostSetup()
R.ForgeObjectives()
R.AnnounceObjectives()

View File

@@ -557,40 +557,47 @@ var/list/shuttle_log = list()
if(!universe.OnShuttleCall(user))
return
if(!map.linked_to_centcomm)
to_chat(usr, "<span class='danger'>Error: No connection can be made to central command .</span>")
if (user)
to_chat(user, "<span class='danger'>Error: No connection can be made to central command .</span>")
return
//if(sent_strike_team == 1)
// to_chat(user, "Centcom will not allow the shuttle to be called. Consider all contracts terminated.")
// return
if(emergency_shuttle.shutdown)
to_chat(user, "The emergency shuttle has been disabled.")
if (user)
to_chat(user, "The emergency shuttle has been disabled.")
return
if(ticker && (world.time / 10 < ticker.gamestart_time + SHUTTLEGRACEPERIOD)) // Five minute grace period to let the game get going without lolmetagaming. -- TLE
to_chat(user, "The emergency shuttle is refueling. Please wait another [round((ticker.gamestart_time + SHUTTLEGRACEPERIOD - world.time / 10) / 60, 1)] minute\s before trying again.")
if (user)
to_chat(user, "The emergency shuttle is refueling. Please wait another [round((ticker.gamestart_time + SHUTTLEGRACEPERIOD - world.time / 10) / 60, 1)] minute\s before trying again.")
return
if(emergency_shuttle.direction == -1)
to_chat(user, "The emergency shuttle may not be called while returning to CentCom.")
if (user)
to_chat(user, "The emergency shuttle may not be called while returning to CentCom.")
return
if(emergency_shuttle.online)
to_chat(user, "The emergency shuttle is already on its way.")
if (user)
to_chat(user, "The emergency shuttle is already on its way.")
return
if(ticker.mode.name == "blob")
to_chat(user, "Under directive 7-10, [station_name()] is quarantined until further notice.")
return
for(var/datum/faction/F in ticker.mode.factions)
if (F.emergency_shuttle_lockdown)
if (user)
to_chat(user,F.emergency_shuttle_lockdown)
return
emergency_shuttle.incall()
if(!justification)
justification = "#??!7E/_1$*/ARR-CON<4F>FAIL!!*$^?" //Can happen for reasons, let's deal with it IC
if(!isobserver(user))
shuttle_log += "\[[worldtime2text()]] Called from [get_area(user)] ([user.x-WORLD_X_OFFSET[user.z]], [user.y-WORLD_Y_OFFSET[user.z]], [user.z])."
log_game("[key_name(user)] has called the shuttle. Justification given : '[justification]'")
message_admins("[key_name_admin(user)] has called the shuttle. Justification given : '[justification]'.", 1)
if (user)
log_game("[key_name(user)] has called the shuttle. Justification given : '[justification]'")
message_admins("[key_name_admin(user)] has called the shuttle. Justification given : '[justification]'.", 1)
else
log_game("The shuttle has been called. Justification given : '[justification]'")
message_admins("The shuttle has been called. Justification given : '[justification]'.", 1)
var/datum/command_alert/emergency_shuttle_called/CA = new /datum/command_alert/emergency_shuttle_called
CA.justification = justification
command_alert(CA)

View File

@@ -15,7 +15,7 @@ var/list/response_team_members = list()
/datum/striketeam/ert/failure()
command_alert(/datum/command_alert/ert_fail)
if (antag_madness)
if(antag_madness != ANTAG_MADNESS_OFF)
var/datum/faction/nanotrasen/nanotrasen = find_active_faction_by_type(/datum/faction/nanotrasen)
if (!nanotrasen)
nanotrasen = ticker.mode.CreateFaction(/datum/faction/nanotrasen, null, 1)
@@ -25,7 +25,7 @@ var/list/response_team_members = list()
/datum/striketeam/ert/extras()
command_alert(/datum/command_alert/ert_success)
if (antag_madness)
if(antag_madness != ANTAG_MADNESS_OFF)
var/datum/faction/nanotrasen/nanotrasen = find_active_faction_by_type(/datum/faction/nanotrasen)
if (!nanotrasen)
nanotrasen = ticker.mode.CreateFaction(/datum/faction/nanotrasen, null, 1)

View File

@@ -77,25 +77,32 @@ var/list/sent_strike_teams = list()
searching = TRUE
var/icon/team_logo = icon('icons/logos.dmi', logo)
for(var/mob/dead/observer/O in dead_mob_list)
if(!O.client || jobban_isbanned(O, ROLE_STRIKE) || O.client.is_afk())
continue
var/fake = FALSE//Antag Madness
to_chat(O, "[bicon(team_logo)]<span class='recruit'>[faction_name] needs YOU to become part of its upcoming [striketeam_name]. (<a href='?src=\ref[src];signup=\ref[O]'>Apply now!</a>)</span>[bicon(team_logo)]")
to_chat(O, "[bicon(team_logo)]<span class='recruit'>Their mission: [mission]</span>[bicon(team_logo)]")
window_flash(O)
if ((antag_madness != ANTAG_MADNESS_EARLY) || (striketeam_name != TEAM_ERT))//if we're early during Antag Madness, ERT attempts will "fake" their search for players
for(var/mob/dead/observer/O in dead_mob_list)
if(!O.client || jobban_isbanned(O, ROLE_STRIKE) || O.client.is_afk())
continue
to_chat(O, "[bicon(team_logo)]<span class='recruit'>[faction_name] needs YOU to become part of its upcoming [striketeam_name]. (<a href='?src=\ref[src];signup=\ref[O]'>Apply now!</a>)</span>[bicon(team_logo)]")
to_chat(O, "[bicon(team_logo)]<span class='recruit'>Their mission: [mission]</span>[bicon(team_logo)]")
window_flash(O)
else
fake = TRUE
sent_strike_teams -= striketeam_name//so we don't prevent the automated ERT call from firing
spawn(1 MINUTES)
searching = FALSE
for(var/mob/dead/observer/O in dead_mob_list)
if(!O.client || jobban_isbanned(O, ROLE_STRIKE) || O.client.is_afk())
continue
to_chat(O, "[bicon(team_logo)]<span class='recruit'>Applications for [faction_name]'s [striketeam_name] are now closed.</span>[bicon(team_logo)]")
if (!fake)
for(var/mob/dead/observer/O in dead_mob_list)
if(!O.client || jobban_isbanned(O, ROLE_STRIKE) || O.client.is_afk())
continue
to_chat(O, "[bicon(team_logo)]<span class='recruit'>Applications for [faction_name]'s [striketeam_name] are now closed.</span>[bicon(team_logo)]")
if(!applicants || applicants.len <= 0)
log_admin("[striketeam_name] received no applications.")
message_admins("[striketeam_name] received no applications.")
log_admin("[striketeam_name] received no applications[fake ? " because it was sent too early during Antag Madness." : "."]")
message_admins("[striketeam_name] received no applications[fake ? " because it was sent too early during Antag Madness." : "."]")
failure()
if (custom)
sent_strike_teams -= TEAM_CUSTOM

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 30 KiB