Ashwalker Tribe roundend reporting revamp (#75506)

## About The Pull Request

This PR changes how ashwalkers are listed in the roundend report.
Originally, they would be listed as individual "other" antagonists,
which isn't a particularly great way of handling it and leads to
weirdness like this:


![image](https://github.com/tgstation/tgstation/assets/28870487/c00a2cfc-3f08-46f6-a290-ef632cac0371)

_(That's an authentic ninja greentext from a live server, by the by)_

Now, the roundend report gives each ashwalker team their own section
within the report, whether or not they succeeded, and some bonus stats.


![image](https://github.com/tgstation/tgstation/assets/28870487/c2dc3c00-62a7-4784-90be-5a8bb5cc5a50)

This new roundend report handling also supports having multiple
Necropolises (Necropoli?) in the same round. Each tribe has their stats
and success reported individually.

This also slightly modifies the protect_object objective, preventing
hard deletes when linked to objects that don't clear their own
references.

## Why It's Good For The Game

Gives Ashwalkers a much better roundend report, and handles how the
reporting is done in a much more sensible manner.

Reduces how much space that large nests take up with their individual
listings.
## Changelog
🆑 Rhials
qol: Ashwalker roundend reporting has been revamped. Glory to the
Necropolis!
/🆑
This commit is contained in:
Rhials
2023-05-21 20:37:57 -07:00
committed by GitHub
parent 8f38b131f0
commit 05316726ec
4 changed files with 51 additions and 10 deletions
@@ -24,14 +24,14 @@
ashies = new /datum/team/ashwalkers()
var/datum/objective/protect_object/objective = new
objective.set_target(src)
objective.team = ashies
linked_objective = objective
ashies.objectives += objective
START_PROCESSING(SSprocessing, src)
/obj/structure/lavaland/ash_walker/Destroy()
ashies.objectives -= linked_objective
ashies = null
QDEL_NULL(linked_objective)
linked_objective = null
STOP_PROCESSING(SSprocessing, src)
return ..()
@@ -90,6 +90,7 @@
L.add_mood_event("oogabooga", /datum/mood_event/sacrifice_good)
else
L.add_mood_event("oogabooga", /datum/mood_event/sacrifice_bad)
ashies.sacrifices_made++
/obj/structure/lavaland/ash_walker/proc/remake_walker(datum/mind/oldmind, oldname)
var/mob/living/carbon/human/M = new /mob/living/carbon/human(get_step(loc, pick(GLOB.alldirs)))
@@ -108,5 +109,6 @@
new /obj/effect/mob_spawn/ghost_role/human/ash_walker(get_step(loc, pick(GLOB.alldirs)), ashies)
visible_message(span_danger("One of the eggs swells to an unnatural size and tumbles free. It's ready to hatch!"))
meat_counter -= ASH_WALKER_SPAWN_THRESHOLD
ashies.eggs_created++
#undef ASH_WALKER_SPAWN_THRESHOLD