diff --git a/code/game/machinery/computer/aifixer.dm b/code/game/machinery/computer/aifixer.dm index 607f4ea040d..e05c4b5fe5a 100644 --- a/code/game/machinery/computer/aifixer.dm +++ b/code/game/machinery/computer/aifixer.dm @@ -85,13 +85,14 @@ if (href_list["fix"]) src.active = 1 while (src.occupier.health < 100) - src.occupier.adjustOxyLoss(-1) - src.occupier.adjustFireLoss(-1) - src.occupier.adjustToxLoss(-1) - src.occupier.adjustBruteLoss(-1) + src.occupier.adjustOxyLoss(-1, 0) + src.occupier.adjustFireLoss(-1, 0) + src.occupier.adjustToxLoss(-1, 0) + src.occupier.adjustBruteLoss(-1, 0) src.occupier.updatehealth() if (src.occupier.health >= 0 && src.occupier.stat == 2) - src.occupier.stat = 0 + src.occupier.stat = CONSCIOUS + src.occupier.adjust_blindness(-1) src.occupier.lying = 0 dead_mob_list -= src.occupier living_mob_list += src.occupier diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index f0e8a69813f..ed7c1c99d0d 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -367,7 +367,7 @@ update_icon() /obj/structure/closet/get_remote_view_fullscreens(mob/user) - if(!(user.sight & (SEEOBJS|SEEMOBS))) + if(user.stat == DEAD || !(user.sight & (SEEOBJS|SEEMOBS))) user.overlay_fullscreen("remote_view", /obj/screen/fullscreen/impaired, 1) /obj/structure/closet/emp_act(severity) diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm index 45c311f7098..48a2b4be107 100644 --- a/code/game/objects/structures/morgue.dm +++ b/code/game/objects/structures/morgue.dm @@ -93,7 +93,7 @@ update_icon() /obj/structure/bodycontainer/get_remote_view_fullscreens(mob/user) - if(!(user.sight & (SEEOBJS|SEEMOBS))) + if(user.stat == DEAD || !(user.sight & (SEEOBJS|SEEMOBS))) user.overlay_fullscreen("remote_view", /obj/screen/fullscreen/impaired, 2) /* * Morgue diff --git a/code/modules/mob/living/carbon/brain/life.dm b/code/modules/mob/living/carbon/brain/life.dm index fea3ed691e1..f07c18fa13b 100644 --- a/code/modules/mob/living/carbon/brain/life.dm +++ b/code/modules/mob/living/carbon/brain/life.dm @@ -1,4 +1,15 @@ +/mob/living/carbon/brain/Life() + set invisibility = 0 + set background = BACKGROUND_ENABLED + + if (notransform) + return + if(!loc) + return + . = ..() + handle_emp_damage() + /mob/living/carbon/brain/handle_breathing() return @@ -30,9 +41,15 @@ death() */ -/mob/living/carbon/brain/handle_status_effects() +/mob/living/carbon/brain/proc/handle_emp_damage() if(emp_damage) - emp_damage = max(emp_damage-1, 0) + if(stat == DEAD) + emp_damage = 0 + else + emp_damage = max(emp_damage-1, 0) + +/mob/living/carbon/brain/handle_status_effects() + return /mob/living/carbon/brain/handle_disabilities() return diff --git a/code/modules/mob/living/carbon/brain/posibrain.dm b/code/modules/mob/living/carbon/brain/posibrain.dm index 73b041187be..3dbb25fd26f 100644 --- a/code/modules/mob/living/carbon/brain/posibrain.dm +++ b/code/modules/mob/living/carbon/brain/posibrain.dm @@ -39,7 +39,7 @@ var/global/posibrain_notif_cooldown = 0 spawn(askDelay) //Seperate from the global cooldown. notified = 0 update_icon() - if(brainmob.stat == CONSCIOUS && brainmob.client) + if(brainmob.client) visible_message("The positronic brain pings, and its lights start flashing. Success!") else visible_message("The positronic brain buzzes quietly, and the golden lights fade away. Perhaps you could try again?") @@ -99,6 +99,9 @@ var/global/posibrain_notif_cooldown = 0 brainmob << "As a synthetic intelligence, you answer to all crewmembers, as well as the AI." brainmob << "Remember, the purpose of your existence is to serve the crew and the station. Above all else, do no harm." brainmob.mind.assigned_role = "Positronic Brain" + brainmob.stat = CONSCIOUS + dead_mob_list -= brainmob + living_mob_list += brainmob visible_message("The positronic brain chimes quietly.") update_icon() @@ -123,8 +126,6 @@ var/global/posibrain_notif_cooldown = 0 if(CONSCIOUS) if(!src.brainmob.client) msg += "It appears to be in stand-by mode.\n" //afk - if(UNCONSCIOUS) - msg += "It doesn't seem to be responsive.\n" if(DEAD) msg += "It appears to be completely inactive.\n" else @@ -139,7 +140,6 @@ var/global/posibrain_notif_cooldown = 0 brainmob.real_name = brainmob.name brainmob.loc = src brainmob.container = src - dead_mob_list -= brainmob ping_ghosts("created") ..() diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index f4a47adc483..1e6601d4c85 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -690,10 +690,7 @@ var/const/GALOSHES_DONT_HELP = 4 radiation = 0 nutrition = NUTRITION_LEVEL_FED + 50 bodytemperature = 310 - eye_damage = 0 disabilities = 0 - eye_blind = 0 - eye_blurry = 0 ear_deaf = 0 ear_damage = 0 hallucination = 0 @@ -714,7 +711,13 @@ var/const/GALOSHES_DONT_HELP = 4 if(stat == DEAD) dead_mob_list -= src living_mob_list += src - stat = CONSCIOUS + var/obj/item/organ/internal/brain/BR = getorgan(/obj/item/organ/internal/brain) + if(BR) //can't revive if the mob has no brain + stat = CONSCIOUS + BR.damaged_brain = 0 //if the brain itself is damaged we heal it + set_blindness(0) + set_blurriness(0) + set_eye_damage(0) if(ishuman(src)) var/mob/living/carbon/human/human_mob = src human_mob.restore_blood() diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 8235f9b02a7..f06d5f7fe8c 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -469,10 +469,7 @@ Sorry Giacom. Please don't be mad :( radiation = 0 nutrition = NUTRITION_LEVEL_FED + 50 bodytemperature = 310 - eye_damage = 0 disabilities = 0 - eye_blind = 0 - eye_blurry = 0 ear_deaf = 0 ear_damage = 0 hallucination = 0 @@ -484,6 +481,9 @@ Sorry Giacom. Please don't be mad :( dead_mob_list -= src living_mob_list += src stat = CONSCIOUS + set_blindness(0) + set_blurriness(0) + set_eye_damage(0) updatehealth() update_fire() regenerate_icons() @@ -962,7 +962,7 @@ Sorry Giacom. Please don't be mad :( src << "You're too exhausted to keep going..." Weaken(5) setStaminaLoss(health - 2) - update_health_hud() + update_health_hud() /mob/proc/update_sight() return @@ -1102,10 +1102,6 @@ Sorry Giacom. Please don't be mad :( clear_fullscreen("high") clear_alert("high") - -/mob/proc/update_vision_overlays() - return - /mob/proc/cure_blind() //when we want to cure the BLIND disability only. return diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 7674171a8ae..fe19ba24ed9 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -890,17 +890,3 @@ var/list/ai_list = list() AT.get_remote_view_fullscreens(src) else clear_fullscreen("remote_view", 0) - - -/mob/living/silicon/ai/update_vision_overlays() - if(!client) - return - - if(stat == DEAD) //if dead we just remove all vision impairments - clear_fullscreens() - return - - if(eye_blind) - overlay_fullscreen("blind", /obj/screen/fullscreen/blind) - else - clear_fullscreen("blind") \ No newline at end of file diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index a81da477f77..e8047312618 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -1248,25 +1248,6 @@ update_canmove() update_headlamp() -/mob/living/silicon/robot/update_vision_overlays() - if(!client) - return - - if(stat == DEAD) //if dead we just remove all vision impairments - clear_fullscreens() - return - - if(eye_blind) - overlay_fullscreen("blind", /obj/screen/fullscreen/blind) - else - clear_fullscreen("blind") - - if(client.eye != src) - var/atom/A = client.eye - A.get_remote_view_fullscreens(src) - else - clear_fullscreen("remote_view", 0) - /mob/living/silicon/robot/fully_replace_character_name(oldname, newname) ..() if(oldname != real_name) diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index 03859abea55..875cb94586d 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -25,10 +25,16 @@ nodamage = 0 /obj/item/projectile/magic/fireball/Range() - var/mob/living/L = locate(/mob/living) in (range(src, 1) - firer) + var/turf/T1 = get_step(src,turn(dir, -45)) + var/turf/T2 = get_step(src,turn(dir, 45)) + var/mob/living/L = locate(/mob/living) in T1 //if there's a mob alive in our front right diagonal, we hit it. if(L && L.stat != DEAD) Bump(L) //Magic Bullet #teachthecontroversy return + L = locate(/mob/living) in T2 + if(L && L.stat != DEAD) + Bump(L) + return ..() /obj/item/projectile/magic/fireball/on_hit(target) diff --git a/code/modules/recycling/disposal-unit.dm b/code/modules/recycling/disposal-unit.dm index a57c0dd2167..ff9539c7e94 100644 --- a/code/modules/recycling/disposal-unit.dm +++ b/code/modules/recycling/disposal-unit.dm @@ -476,7 +476,7 @@ return /obj/machinery/disposal/bin/get_remote_view_fullscreens(mob/user) - if(!(user.sight & (SEEOBJS|SEEMOBS))) + if(user.stat == DEAD || !(user.sight & (SEEOBJS|SEEMOBS))) user.overlay_fullscreen("remote_view", /obj/screen/fullscreen/impaired, 2)