Files
John Willard 774c07cd9b Basic mob stat panel gutting (#95543)
## About The Pull Request

Changes Guardian HUD to use action buttons instead of HUD elements,
which means their buttons
1. Can now be moved
2. Can be binded

Other Holoparasite HUD changes:

1- Moves some special buttons like explosive's explosion ability to be
where the "Toggle Mode" button typically is, to be consistent with some
other modes (assassin, gas) that also works like their unique ability.
2- Gives non-dextrous holoparasites the ability to move floors, since
they float.
3- Fixes dextrous holoparasites having 2 health HUDs
4- Moves "Check Guardian Type" verb to a new action button meant to
mimick the Antag UI Info button.

Gives Soulscythes a Combat mode indicator

Locks Revenant's combat mode indicator (cause it does nothing)

Adds another hoverable HUD element, basic mobs can now hover over their
healthdoll to see their Health %

<img width="85" height="123" alt="image"
src="https://github.com/user-attachments/assets/ad660ba4-296c-4699-9ec4-03a6e7b97880"
/>
<img width="95" height="101" alt="image"
src="https://github.com/user-attachments/assets/12d4d9d3-cf2c-4c52-81aa-17ce538b9d48"
/>


Adds a Unit Test to ensure all basic mobs have a HUD that shows some
form of health & combat mode (unless unnecessary like Revenants), to not
lose any information from basic mob conversion now that they lose the
stat panel.

## Why It's Good For The Game

This is yet another supplement of
https://github.com/tgstation/tgstation/pull/95383 - Removing stat panel
entries for all basic mobs is a great move towards lessening the
reliance of mobs on the stat panel.

This is also just good QoL for Holoparasites, especially since their
stat panel had 2 entries for "Master HP" and your "Own" HP, despite
Holoparasites not even having their own HP at all.

## Changelog

🆑
qol: Holoparasites' abilities are now action buttons, so you can rebind
or move them.
qol: Holoparasites now have floor change buttons.
fix: Holoparasites and Soulscythes now have a combat mode indicator.
fix: Dextrous holoparasites now have their inventory slot again while
non-dextrous had it taken away (not that they could use it).
/🆑
2026-04-13 17:05:57 -06:00

78 lines
2.5 KiB
Plaintext

/datum/action/cooldown/guardian
button_icon = 'icons/hud/guardian.dmi'
/datum/action/cooldown/guardian/IsAvailable(feedback)
. = ..()
if(!.)
return .
return !!isguardian(owner)
/datum/action/cooldown/guardian/check_type
name = "Check Type"
desc = "A reminder on what your abilities are."
//this is based off of the antag ui icon, if that changes then change this too please.
button_icon_state = /datum/action/antag_info::button_icon_state
default_button_position = SCRN_OBJ_INSERT_FIRST
/datum/action/cooldown/guardian/check_type/Activate(atom/target)
. = ..()
to_chat(owner, astype(owner, /mob/living/basic/guardian)?.playstyle_string)
/datum/action/cooldown/guardian/communicate
name = "Communicate"
desc = "Communicate telepathically with your user."
button_icon_state = "communicate"
default_button_position = ui_guardian_communication
/datum/action/cooldown/guardian/communicate/Activate()
astype(owner, /mob/living/basic/guardian)?.communicate()
/datum/action/cooldown/guardian/manifest
name = "Manifest"
desc = "Spring forth into battle!"
button_icon_state = "manifest"
default_button_position = ui_guardian_manifest
/datum/action/cooldown/guardian/manifest/Activate()
astype(owner, /mob/living/basic/guardian)?.manifest()
/datum/action/cooldown/guardian/recall
name = "Recall"
desc = "Return to your user."
button_icon_state = "recall"
default_button_position = ui_guardian_recall
/datum/action/cooldown/guardian/recall/Activate()
astype(owner, /mob/living/basic/guardian)?.recall()
/datum/action/cooldown/guardian/toggle_light
name = "Toggle Light"
desc = "Glow like star dust."
button_icon_state = "light"
/datum/action/cooldown/guardian/toggle_light/Activate()
astype(owner, /mob/living/basic/guardian)?.toggle_light()
/datum/action/cooldown/guardian/toggle_mode
name = "Toggle Mode"
desc = "Switch between ability modes."
button_icon_state = "toggle"
default_button_position = ui_guardian_special
/datum/action/cooldown/guardian/toggle_mode/Activate()
astype(owner, /mob/living/basic/guardian)?.toggle_modes()
/datum/action/cooldown/guardian/toggle_mode/assassin
name = "Toggle Stealth"
desc = "Enter or exit stealth."
button_icon_state = "stealth"
transparent_when_unavailable = TRUE
/datum/action/cooldown/guardian/toggle_mode/assassin/is_action_active(atom/movable/screen/movable/action_button/current_button)
return owner.has_status_effect(/datum/status_effect/guardian_stealth)
/datum/action/cooldown/guardian/toggle_mode/gases
name = "Toggle Gas"
desc = "Switch between possible gases."
button_icon_state = "gases"