diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm
index 67d82b1cc64..ca64ddaa8bc 100644
--- a/code/modules/flufftext/Hallucination.dm
+++ b/code/modules/flufftext/Hallucination.dm
@@ -166,7 +166,7 @@ mob/living/carbon/proc/handle_hallucinations()
if(71 to 72)
//Fake death
// src.sleeping_willingly = 1
- src.sleeping = 1
+ src.sleeping = 20
hal_crit = 1
hal_screwyhud = 1
spawn(rand(50,100))
@@ -264,7 +264,7 @@ proc/check_panel(mob/M)
my_target.hallucinations -= src
del(src)
step_away(src,my_target,2)
- processing_objects.Add(src)
+ spawn attack_loop()
proc/updateimage()
@@ -286,34 +286,36 @@ proc/check_panel(mob/M)
my_target << currentimage
- process()
- if(src.health < 0)
- collapse()
- return
- if(get_dist(src,my_target) > 1)
- src.dir = get_dir(src,my_target)
- step_towards(src,my_target)
- updateimage()
- else
- if(prob(15))
- if(weapon_name)
- my_target << sound(pick('genhit1.ogg', 'genhit2.ogg', 'genhit3.ogg'))
- my_target.show_message("\red [my_target] has been attacked with [weapon_name] by [src.name] ", 1)
- my_target.halloss += 8
- if(prob(20)) my_target.eye_blurry += 3
- if(prob(33))
- if(!locate(/obj/effect/overlay) in my_target.loc)
- fake_blood(my_target)
- else
- my_target << sound(pick('punch1.ogg','punch2.ogg','punch3.ogg','punch4.ogg'))
- my_target.show_message("\red [src.name] has punched [my_target]!", 1)
- my_target.halloss += 4
- if(prob(33))
- if(!locate(/obj/effect/overlay) in my_target.loc)
- fake_blood(my_target)
+ proc/attack_loop()
+ while(1)
+ sleep(rand(5,10))
+ if(src.health < 0)
+ collapse()
+ continue
+ if(get_dist(src,my_target) > 1)
+ src.dir = get_dir(src,my_target)
+ step_towards(src,my_target)
+ updateimage()
+ else
+ if(prob(15))
+ if(weapon_name)
+ my_target << sound(pick('genhit1.ogg', 'genhit2.ogg', 'genhit3.ogg'))
+ my_target.show_message("\red [my_target] has been attacked with [weapon_name] by [src.name] ", 1)
+ my_target.halloss += 8
+ if(prob(20)) my_target.eye_blurry += 3
+ if(prob(33))
+ if(!locate(/obj/effect/overlay) in my_target.loc)
+ fake_blood(my_target)
+ else
+ my_target << sound(pick('punch1.ogg','punch2.ogg','punch3.ogg','punch4.ogg'))
+ my_target.show_message("\red [src.name] has punched [my_target]!", 1)
+ my_target.halloss += 4
+ if(prob(33))
+ if(!locate(/obj/effect/overlay) in my_target.loc)
+ fake_blood(my_target)
- if(prob(15))
- step_away(src,my_target,2)
+ if(prob(15))
+ step_away(src,my_target,2)
proc/collapse()
collapse = 1
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index 1d0a13c45e7..e9d7ebdc7e3 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -122,8 +122,8 @@
handle_disabilities()
if(hallucination > 0)
- if(hallucinations.len == 0 && hallucination >= 20 && health > 0)
- if(prob(5))
+ if(hallucination >= 20 && health > 0)
+ if(prob(3))
fake_attack(src)
//for(var/atom/a in hallucinations)
// a.hallucinate(src)
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index 11c97825a1a..6ff0f13b519 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -8,7 +8,7 @@
/mob/living/proc/updatehealth()
if(!src.nodamage)
- src.health = 100 - src.getOxyLoss() - src.getToxLoss() - src.getFireLoss() - src.getBruteLoss() - src.getCloneLoss()
+ src.health = 100 - src.getOxyLoss() - src.getToxLoss() - src.getFireLoss() - src.getBruteLoss() - src.getCloneLoss() -src.halloss
else
src.health = 100
src.stat = 0