Better groups for antagonists (#72576)

## About The Pull Request
Better categorizes antagonists into groups for the orbit UI, admin
traitor panel.
Permanently hostile antags were intermixed in the "Alive" section, and
it was sometimes tough to see what's going on.
To do this, many minor antags needed new antag datums which were added
with fluff objectives as a bonus.

Group Name | Antags
--- | ---
Syndicate | Nukies, battlecruiser crew, lone op
Extradimensional Abominations | Nightmare, morph, pyro
slime
Spaceborne Leviathans | Space dragon, (spawned) carps
Invasive Overgrowth | Venus human traps
Arachnid Infestation | Spiders
Eldritch Horrors | Cult constructs, revenant 

( = New antag datum, proper orbit category, new objective text)

<details>
<summary>Screenshots (outdated)</summary>

Antags get more tooltip info
![Screenshot 2023-01-08
173344](https://user-images.githubusercontent.com/42397676/211233179-d0e9229c-0f2e-4cd3-838b-fc0c5255ec9c.png)

Populating space dragon + carps (now leviathans)
![Screenshot 2023-01-08
235526](https://user-images.githubusercontent.com/42397676/211267252-2a86f8bc-4b4a-4ad6-81ed-f6b2e72d8fc0.png)

Detail to distinguish job & rank
![Screenshot 2023-01-08
233608](https://user-images.githubusercontent.com/42397676/211267334-60cabefc-b768-4a8e-8d4b-74b3d4fd45b1.png)

New categories in action
![Screenshot 2023-01-09
131003](https://user-images.githubusercontent.com/42397676/211408962-2e3c3cb9-f08e-4e27-a765-6485fe5064b0.png)

Organized Traitor Panel 

![Screenshot_20230109_113453](https://user-images.githubusercontent.com/42397676/211392793-a9e6c170-60de-46bc-b0b6-02d74d45e42d.png)

</details>

## Why It's Good For The Game
Better UI, observer experience, admin panel. 
It's now very obvious when something is hostile from the orbit panel.

## Changelog
🆑
qol: The orbit menu now sorts antagonists into groups more effectively.
Some get new named groups.
admin: Traitor panel should have slightly more sane categories.
add: Many minor antagonists now have "objectives".
refactor: Refactors code in several antag datums.
/🆑

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
This commit is contained in:
Jeremiah
2023-01-19 14:18:30 -08:00
committed by GitHub
parent 88050016c0
commit 85a0d42b7d
68 changed files with 1127 additions and 916 deletions
@@ -132,66 +132,6 @@
mob_mind.add_antag_datum(antag_datum_to_give, antag_team)
antag_team.players_spawned += (spawned_mob.ckey)
/datum/team/battlecruiser
name = "\improper Battlecruiser Crew"
member_name = "crewmember"
/// The central objective of this battlecruiser
var/core_objective = /datum/objective/nuclear
/// The assigned nuke of this team
var/obj/machinery/nuclearbomb/nuke
/datum/team/battlecruiser/proc/update_objectives()
if(core_objective)
var/datum/objective/objective = new core_objective()
objective.team = src
objectives += objective
/datum/antagonist/battlecruiser
name = "Battlecruiser Crewmember"
show_to_ghosts = TRUE
roundend_category = "battlecruiser syndicate operatives"
suicide_cry = "FOR THE SYNDICATE!!!"
antag_hud_name = "battlecruiser_crew"
job_rank = ROLE_BATTLECRUISER_CREW
var/datum/team/battlecruiser/battlecruiser_team
/datum/antagonist/battlecruiser/get_team()
return battlecruiser_team
/datum/antagonist/battlecruiser/greet()
owner.current.playsound_local(get_turf(owner.current), 'sound/ambience/antag/ops.ogg',100,0, use_reverb = FALSE)
to_chat(owner, span_big("You are a [name]!"))
owner.announce_objectives()
/datum/antagonist/battlecruiser/ally
name = "Battlecruiser Ally"
show_to_ghosts = FALSE
/datum/antagonist/battlecruiser/captain
name = "Battlecruiser Captain"
antag_hud_name = "battlecruiser_lead"
job_rank = ROLE_BATTLECRUISER_CAPTAIN
/datum/antagonist/battlecruiser/create_team(datum/team/battlecruiser/team)
if(!team)
return
if(!istype(team))
stack_trace("Wrong team type passed to [type] initialization.")
battlecruiser_team = team
/datum/antagonist/battlecruiser/apply_innate_effects(mob/living/mob_override)
add_team_hud(mob_override || owner.current, /datum/antagonist/battlecruiser)
/datum/antagonist/battlecruiser/on_gain()
if(battlecruiser_team)
objectives |= battlecruiser_team.objectives
if(battlecruiser_team.nuke)
var/obj/machinery/nuclearbomb/nuke = battlecruiser_team.nuke
antag_memory += "<B>[nuke] Code</B>: [nuke.r_code]<br>"
owner.add_memory(/datum/memory/key/nuke_code, nuclear_code = nuke.r_code)
to_chat(owner, "The nuclear authorization code is: <B>[nuke.r_code]</B>")
return ..()
/datum/outfit/syndicate_empty/battlecruiser
name = "Syndicate Battlecruiser Ship Operative"
belt = /obj/item/storage/belt/military/assault