From fa3c701eb26b96a05bf9a37e197985ed6dae5949 Mon Sep 17 00:00:00 2001 From: "joe.heinemeyer@gmail.com" Date: Tue, 20 Mar 2012 03:12:51 +0000 Subject: [PATCH] Some hallucination updates. Should make fake attackers work better, and allowed more than one to occur at once. Also: Health properly updates with halloss, which was an oversight on my part. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3330 316c924e-a436-60f5-8080-3fe189b3f50e --- code/modules/flufftext/Hallucination.dm | 60 ++++++++++---------- code/modules/mob/living/carbon/human/life.dm | 4 +- code/modules/mob/living/living.dm | 2 +- 3 files changed, 34 insertions(+), 32 deletions(-) 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