Antag loadout refactor, also deathsquads I guess (#7308)

all antags that previously had massive equip chains now use the outfit datum system
    commandos + deathsquad (aka Syndicate Commandos and NT Asset Protection) have been moved out of nested alert menu hell to the new ERT system as admin-spawned ERTs, they do not appear normally
    all outfit datums will now take into account backpack preferences
    made the ERT job announcement / details more obvious
This commit is contained in:
JohnWildkins
2019-11-03 12:49:42 -05:00
committed by Erki
parent b15f676ebd
commit aa5482ca8e
22 changed files with 596 additions and 518 deletions
@@ -1,12 +0,0 @@
/datum/admin_secret_item/fun_secret/send_strike_team
name = "Send Strike Team"
/datum/admin_secret_item/fun_secret/send_strike_team/can_execute(var/mob/user)
if(!ROUND_IS_STARTED)
return 0
return ..()
/datum/admin_secret_item/fun_secret/send_strike_team/execute(var/mob/user)
. = ..()
if(.)
return user.client.strike_team()
-55
View File
@@ -1,55 +0,0 @@
//STRIKE TEAMS
var/const/commandos_possible = 6 //if more Commandos are needed in the future
/client/proc/strike_team()
set category = "Fun"
set name = "Spawn Strike Team"
set desc = "Spawns a strike team if you want to run an admin event."
if(!src.holder)
to_chat(src, "Only administrators may use this command.")
return
if(!ROUND_IS_STARTED)
to_chat(usr, "<font color='red'>The game hasn't started yet!</font>")
return
if(world.time < 6000)
to_chat(usr, "<font color='red'>There are [(6000-world.time)/10] seconds remaining before it may be called.</font>")
return
var/datum/antagonist/deathsquad/team
var/choice = input(usr, "Select type of strike team:") as null|anything in list("Heavy Asset Protection", "Mercenaries")
if(!choice)
return
switch(choice)
if("Heavy Asset Protection")
team = deathsquad
if("Mercenaries")
team = commandos
else
return
if(team.deployed)
to_chat(usr, "<font color='red'>Someone is already sending a team.</font>")
return
if(alert("Do you want to send in a strike team? Once enabled, this is irreversible.",,"Yes","No")!="Yes")
return
alert("This 'mode' will go on until everyone is dead or the station is destroyed. You may also admin-call the evac shuttle when appropriate. Spawned commandos have internals cameras which are viewable through a monitor inside the Spec. Ops. Office. Assigning the team's detailed task is recommended from there. While you will be able to manually pick the candidates from active ghosts, their assignment in the squad will be random.")
choice = null
while(!choice)
choice = sanitize(input(src, "Please specify which mission the strike team shall undertake.", "Specify Mission", ""))
if(!choice)
if(alert("Error, no mission set. Do you want to exit the setup process?",,"Yes","No")=="Yes")
return
if(team.deployed)
to_chat(usr, "Looks like someone beat you to it.")
return
team.attempt_random_spawn()
+1 -1
View File
@@ -115,7 +115,7 @@
//Proc executed after someone is spawned in
/datum/ghostspawner/proc/post_spawn(mob/user)
if(welcome_message)
to_chat(user, welcome_message)
to_chat(user, span("notice", welcome_message))
return TRUE
//Proc to check if a specific user can edit this spawner (open/close/...)
+56 -1
View File
@@ -1,5 +1,5 @@
/datum/ghostspawner/human/ert
tags = list("External")
tags = list("Response Teams")
enabled = FALSE
req_perms = null
@@ -20,6 +20,11 @@
mob_name = null
/datum/ghostspawner/human/ert/post_spawn(mob/user)
if(name)
to_chat(user, "<span class='danger'><font size=3>You are [max_count > 1 ? "a" : "the"] [name]!</font></span>")
return ..()
//Nanotrasen ERT
/datum/ghostspawner/human/ert/nanotrasen
name = "Nanotrasen Responder"
@@ -100,3 +105,53 @@
max_count = 1
desc = "The leader of the freelancer mercenary team."
outfit = /datum/outfit/admin/ert/mercenary/leader
// Deathsquads, spawn via admin intervention only.
/datum/ghostspawner/human/ert/deathsquad
name = "NT Asset Protection Specialist"
short_name = "ntaps"
max_count = 3
desc = "Protectors of NanoTrasen's bottom line. The last thing you never see."
welcome_message = "The NSS Aurora has been compromised. Recover NanoTrasen assets by any means necessary. Crew expendable."
outfit = /datum/outfit/admin/deathsquad
spawnpoints = list("DeathERTSpawn")
mob_name_prefix = "Spec. "
var/deployed = TRUE
/datum/ghostspawner/human/ert/deathsquad/leader
name = "NT Asset Protection Leader"
short_name = "ntapl"
max_count = 1
desc = "Leader of NT's Asset Protection team."
outfit = /datum/outfit/admin/deathsquad/leader
mob_name_prefix = "Ldr. "
/datum/ghostspawner/human/ert/deathsquad/post_spawn(mob/user)
var/datum/martial_art/sol_combat/F = new/datum/martial_art/sol_combat(null)
F.teach(user)
return ..()
/datum/ghostspawner/human/ert/commando
name = "Syndicate Commando"
short_name = "syndc"
max_count = 3
desc = "Well-equipped commandos of the criminal Syndicate."
welcome_message = "The order has been given - the Aurora and its crew are to be wiped off the star-charts, by any means necessary."
outfit = /datum/outfit/admin/deathsquad/syndicate
spawnpoints = list("SyndERTSpawn")
/datum/ghostspawner/human/ert/commando/leader
name = "Syndicate Commando Leader"
short_name = "syndl"
max_count = 1
desc = "The leader of the Syndicate's elite commandos."
outfit = /datum/outfit/admin/deathsquad/syndicate/leader
/datum/ghostspawner/human/ert/commando/post_spawn(mob/user)
var/datum/martial_art/sol_combat/F = new/datum/martial_art/sol_combat(null)
F.teach(user)
return ..()