Files
Paradise/code/modules/mob/living/stat_states.dm
Luc 23ad8a48fa Adds true observing -- letting you see what your target sees (#24855)
* bring it back now y'all

* adds a bunch of other changes

* pretty much works at this point

* grep

* Fixes some bugs, still chasing some down

* Add observers to recursive mob check, ensuring they can see messages from their orbitted atom

* tidy some things up

* resolve

* remove unnecessary checks

* Address todos, minor cleanups

* oh dear

* initial testing

* Fix some vulnerabilities (oops)

* Fix some other bugs from testing

* ci fixes

* Add some contingencies against clicking things you shouldn't

* fix some noted bugs

* Add observe to admin jump, improve messaging

* add a few more fixes that should mostly address some runtimes

* oh this wasn't really great

* one last thing

* Fix suit inventory problem

* Remove merge artifact

* Add some missing parens

* Prevents you from observing other ghosts, and should fix the getting stuck outside of your body issue.

* we love testing

* adds to player panel

* Fix more bugs with observers getting stuck outside of their body

* cleans up player panel, verb offerings

* shit

* Update code/_onclick/hud/alert.dm

welp

Co-authored-by: GDN <96800819+GDNgit@users.noreply.github.com>
Signed-off-by: Luc <89928798+lewcc@users.noreply.github.com>

* Fixes some targeting issues

* Fixes targeting on aobserve

* Fix some weird storage bugs

* clean up some doulbed up follow links

* Update code/modules/admin/player_panel.dm

Signed-off-by: Luc <89928798+lewcc@users.noreply.github.com>

* Adds some checks for ghost observe

* Remove mentor debug log

* ahhhhhhhhh that'll do it

* Cleans up some additional checks that were not quite what they should have been

* better logging, too

* mochi review

* one more thing

* Gets robot huds mostly working

* hopefully fix folks not getting observe

* Fix order of operations causing a runtime on qdeleting

* Remove some unnecessary stack traces

* Apply suggestions from code review

Co-authored-by: 1080pCat <96908085+1080pCat@users.noreply.github.com>
Signed-off-by: Luc <89928798+lewcc@users.noreply.github.com>

* Fix bug with items in your inventory disappearing on changing HUD modes

* Fix some bugs with the observe verbs

* possibly fix nullspace issues

* funny review

* missed one

---------

Signed-off-by: Luc <89928798+lewcc@users.noreply.github.com>
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: GDN <96800819+GDNgit@users.noreply.github.com>
Co-authored-by: S34N <12197162+S34NW@users.noreply.github.com>
Co-authored-by: 1080pCat <96908085+1080pCat@users.noreply.github.com>
2024-05-23 15:46:43 +00:00

91 lines
2.5 KiB
Plaintext

// There, now `stat` is a proper state-machine
/mob/living/proc/KnockOut(updating = TRUE)
if(stat == DEAD)
stack_trace("KnockOut called on a dead mob.")
return FALSE
else if(stat == UNCONSCIOUS)
return FALSE
create_attack_log("<font color='red'>Fallen unconscious at [atom_loc_line(get_turf(src))]</font>")
add_attack_logs(src, null, "Fallen unconscious", ATKLOG_ALL)
log_game("[key_name(src)] fell unconscious at [atom_loc_line(get_turf(src))]")
set_stat(UNCONSCIOUS)
ADD_TRAIT(src, TRAIT_DEAF, STAT_TRAIT)
ADD_TRAIT(src, TRAIT_FLOORED, STAT_TRAIT)
ADD_TRAIT(src, TRAIT_IMMOBILIZED, STAT_TRAIT)
ADD_TRAIT(src, TRAIT_HANDS_BLOCKED, STAT_TRAIT)
if(updating)
update_sight()
update_blind_effects(TRUE)
set_typing_indicator(FALSE)
if(hud_used && client)
hud_used.show_hud(HUD_STYLE_ACTIONHUD)
return TRUE
/mob/living/proc/WakeUp(updating = TRUE)
if(stat == DEAD)
stack_trace("WakeUp called on a dead mob.")
return FALSE
else if(stat == CONSCIOUS)
return FALSE
create_attack_log("<font color='red'>Woken up at [atom_loc_line(get_turf(src))]</font>")
add_attack_logs(src, null, "Woken up", ATKLOG_ALL)
log_game("[key_name(src)] woke up at [atom_loc_line(get_turf(src))]")
set_stat(CONSCIOUS)
REMOVE_TRAITS_IN(src, STAT_TRAIT)
if(updating)
update_sight()
update_blind_effects(force_clear_sleeping = TRUE)
if(hud_used && client)
hud_used.show_hud(HUD_STYLE_STANDARD)
return TRUE
// death() is used to make a mob die
// handles revival through other means than cloning or adminbus (defib, IPC repair)
/mob/living/proc/update_revive(updating = TRUE)
if(stat != DEAD)
return FALSE
create_attack_log("<font color='red'>Came back to life at [atom_loc_line(get_turf(src))]</font>")
add_attack_logs(src, null, "Came back to life", ATKLOG_ALL)
log_game("[key_name(src)] came back to life at [atom_loc_line(get_turf(src))]")
set_stat(UNCONSCIOUS) // this is done as `WakeUp` early returns if they are `stat = DEAD`
WakeUp()
if(suiciding)
message_admins("[key_name(src)] was revived after having committed suicide. This is likely a bug.")
GLOB.dead_mob_list -= src
GLOB.alive_mob_list |= src
REMOVE_TRAIT(src, TRAIT_RESPAWNABLE, GHOSTED)
last_words = null
timeofdeath = null
if(updating)
update_blind_effects()
update_sight()
updatehealth("update revive")
reload_fullscreen()
SEND_SIGNAL(src, COMSIG_LIVING_REVIVE, updating)
if(mind)
for(var/S in mind.spell_list)
var/datum/spell/spell = S
spell.UpdateButtons()
return TRUE
/mob/living/proc/check_death_method()
return TRUE