mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-19 01:57:54 +01:00
* Life Refactor WIP * part 2 * part 3 * runtime fix * newlines * tweaks * perspective checks * fixes * remote view tweaks * more fixes * robot fixes * better updating * cleaned up icon procs * less proc call overhead * performance gains * more optimization * shorter lists, removal of unecesary code * gene OOP and dna styling cleanup * oops * axe disabilities * typeless loop * various tweaks and fixes * brain checks * runtime fixes * cryo vision fixes
70 lines
2.5 KiB
Plaintext
70 lines
2.5 KiB
Plaintext
// No args for restraints because robots don't have those
|
|
/mob/living/silicon/robot/incapacitated(ignore_restraints = FALSE, ignore_grab = FALSE, ignore_lying = FALSE)
|
|
if(stat || lockcharge || IsWeakened() || stunned || paralysis || !is_component_functioning("actuator"))
|
|
return TRUE
|
|
|
|
/mob/living/silicon/robot/has_vision(information_only = FALSE)
|
|
return ..(information_only) && ((stat == DEAD && information_only) || is_component_functioning("camera"))
|
|
|
|
/mob/living/silicon/robot/update_stat(reason = "none given")
|
|
if(status_flags & GODMODE)
|
|
return
|
|
if(stat != DEAD)
|
|
if(health <= -maxHealth) //die only once
|
|
death()
|
|
create_debug_log("died of damage, trigger reason: [reason]")
|
|
return
|
|
if(!is_component_functioning("actuator") || !is_component_functioning("power cell") || paralysis || sleeping || resting || stunned || IsWeakened() || getOxyLoss() > maxHealth * 0.5)
|
|
if(stat == CONSCIOUS)
|
|
KnockOut()
|
|
update_headlamp()
|
|
create_debug_log("fell unconscious, trigger reason: [reason]")
|
|
else
|
|
if(stat == UNCONSCIOUS)
|
|
WakeUp()
|
|
update_headlamp()
|
|
create_debug_log("woke up, trigger reason: [reason]")
|
|
else
|
|
if(health > 0)
|
|
update_revive()
|
|
var/mob/dead/observer/ghost = get_ghost()
|
|
if(ghost)
|
|
to_chat(ghost, "<span class='ghostalert'>Your cyborg shell has been repaired, re-enter if you want to continue!</span> (Verbs -> Ghost -> Re-enter corpse)")
|
|
ghost << sound('sound/effects/genetics.ogg')
|
|
create_attack_log("revived, trigger reason: [reason]")
|
|
create_log(MISC_LOG, "revived, trigger reason: [reason]")
|
|
|
|
diag_hud_set_status()
|
|
diag_hud_set_health()
|
|
update_health_hud()
|
|
|
|
/mob/living/silicon/robot/SetStunned(amount, updating = 1, force = 0) //if you REALLY need to set stun to a set amount without the whole "can't go below current stunned"
|
|
. = STATUS_UPDATE_CANMOVE
|
|
if((!!amount) == (!!stunned)) // We're not changing from + to 0 or vice versa
|
|
updating = FALSE
|
|
. = STATUS_UPDATE_NONE
|
|
|
|
if(status_flags & CANSTUN || force)
|
|
stunned = max(amount, 0)
|
|
if(updating)
|
|
update_stat()
|
|
else
|
|
return STATUS_UPDATE_NONE
|
|
|
|
/mob/living/silicon/robot/SetWeakened(amount, updating = 1, force = 0)
|
|
. = STATUS_UPDATE_CANMOVE
|
|
if((!!amount) == (!!weakened)) // We're not changing from + to 0 or vice versa
|
|
updating = FALSE
|
|
. = STATUS_UPDATE_NONE
|
|
if(status_flags & CANWEAKEN || force)
|
|
weakened = max(amount, 0)
|
|
if(updating)
|
|
update_stat()
|
|
else
|
|
return STATUS_UPDATE_NONE
|
|
|
|
/mob/living/silicon/robot/update_revive(updating = TRUE)
|
|
. = ..(updating)
|
|
if(.)
|
|
update_icons()
|