From e99c70722f4ef41f4a90e8a861ed102a16080ef4 Mon Sep 17 00:00:00 2001 From: "johnsonmt88@gmail.com" Date: Sat, 20 Oct 2012 23:18:05 +0000 Subject: [PATCH] Bears, syndicate, carp and clowns no longer search every atom in a 7x7 area twice every life.dm() while idling. Removed SA_search() as it was pointless. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4924 316c924e-a436-60f5-8080-3fe189b3f50e --- code/modules/mob/living/simple_animal/bear.dm | 38 ++++++++++--------- code/modules/mob/living/simple_animal/carp.dm | 34 +++++++++-------- .../modules/mob/living/simple_animal/clown.dm | 34 +++++++++-------- code/modules/mob/living/simple_animal/life.dm | 7 ---- .../mob/living/simple_animal/syndicate.dm | 36 ++++++++++-------- 5 files changed, 80 insertions(+), 69 deletions(-) diff --git a/code/modules/mob/living/simple_animal/bear.dm b/code/modules/mob/living/simple_animal/bear.dm index fb69bef9ef9..bcf34041387 100644 --- a/code/modules/mob/living/simple_animal/bear.dm +++ b/code/modules/mob/living/simple_animal/bear.dm @@ -68,30 +68,34 @@ switch(stance) if(BEAR_STANCE_IDLE) - var/obj/mecha/M = null - var/mob/living/L = null stop_automated_movement = 0 stance_step++ if(stance_step > 5) stance_step = 0 - for(L in viewers(7,src)) - if(isbear(L)) continue - if(!L.stat) - stance = BEAR_STANCE_ALERT - target_mob = L - break - for(M in view(7,src)) - if (M.occupant) - stance = BEAR_STANCE_ALERT - target_mob = M - break + for(var/atom/A in view(7,src)) + if(isbear(A)) + continue + + if(isliving(A)) + var/mob/living/L = A + if(!L.stat) + stance = BEAR_STANCE_ATTACK + target_mob = L + break + + if(istype(A, /obj/mecha)) + var/obj/mecha/M = A + if (M.occupant) + stance = BEAR_STANCE_ATTACK + target_mob = M + break if (target_mob) emote("stares alertly at [target_mob]") if(BEAR_STANCE_ALERT) stop_automated_movement = 1 var/found_mob = 0 - if(target_mob in SA_search(target_mob)) + if(target_mob in view(7,src)) if(target_mob && !(SA_attackable(target_mob))) stance_step = max(0, stance_step) //If we have not seen a mob in a while, the stance_step will be negative, we need to reset it to 0 as soon as we see a mob again. stance_step++ @@ -114,7 +118,7 @@ if(!target_mob || SA_attackable(target_mob)) stance = BEAR_STANCE_ALERT stance_step = 5 //Make it very alert, so it quickly attacks again if a mob returns - if(target_mob in SA_search(target_mob)) + if(target_mob in view(7,src)) walk_to(src, target_mob, 1, 3) stance = BEAR_STANCE_ATTACKING stance_step = 0 @@ -126,7 +130,7 @@ stance = BEAR_STANCE_ALERT stance_step = 5 //Make it very alert, so it quickly attacks again if a mob returns return - if(!(target_mob in SA_search(target_mob))) + if(!(target_mob in view(7,src))) stance = BEAR_STANCE_ALERT stance_step = 5 //Make it very alert, so it quickly attacks again if a mob returns target_mob = null @@ -158,7 +162,7 @@ stop_automated_movement = 1 stance_step++ if(stance_step >= 10) //rests for 10 ticks - if(target_mob && target_mob in SA_search(target_mob)) + if(target_mob && target_mob in view(7,src)) stance = BEAR_STANCE_ATTACK //If the mob he was chasing is still nearby, resume the attack, otherwise go idle. else stance = BEAR_STANCE_IDLE diff --git a/code/modules/mob/living/simple_animal/carp.dm b/code/modules/mob/living/simple_animal/carp.dm index 3b1ac48fd5a..1848eff5ad5 100644 --- a/code/modules/mob/living/simple_animal/carp.dm +++ b/code/modules/mob/living/simple_animal/carp.dm @@ -70,23 +70,27 @@ if(!stat) switch(stance) if(CARP_STANCE_IDLE) - var/obj/mecha/M = null - var/mob/living/L = null stop_automated_movement = 0 stance_step++ if(stance_step > 5) stance_step = 0 - for(L in viewers(7,src)) - if(iscarp(L)) continue - if(!L.stat) - stance = CARP_STANCE_ATTACK - target_mob = L - break - for(M in view(7,src)) - if (M.occupant) - stance = CARP_STANCE_ATTACK - target_mob = M - break + for(var/atom/A in view(7,src)) + if(iscarp(A)) + continue + + if(isliving(A)) + var/mob/living/L = A + if(!L.stat) + stance = CARP_STANCE_ATTACK + target_mob = L + break + + if(istype(A, /obj/mecha)) + var/obj/mecha/M = A + if (M.occupant) + stance = CARP_STANCE_ATTACK + target_mob = M + break if (target_mob) emote("nashes at [target_mob]") @@ -95,7 +99,7 @@ if(!target_mob || SA_attackable(target_mob)) stance = CARP_STANCE_IDLE stance_step = 5 //Make it very alert, so it quickly attacks again if a mob returns - if(target_mob in SA_search(target_mob)) + if(target_mob in view(7,src)) walk_to(src, target_mob, 1, 3) stance = CARP_STANCE_ATTACKING stance_step = 0 @@ -108,7 +112,7 @@ stance_step = 3 //Make it very alert, so it quickly attacks again if a mob returns target_mob = null return - if(!(target_mob in SA_search(target_mob))) + if(!(target_mob in view(7,src))) stance = CARP_STANCE_IDLE stance_step = 1 target_mob = null diff --git a/code/modules/mob/living/simple_animal/clown.dm b/code/modules/mob/living/simple_animal/clown.dm index b1d54efc125..0b01a1cf542 100644 --- a/code/modules/mob/living/simple_animal/clown.dm +++ b/code/modules/mob/living/simple_animal/clown.dm @@ -69,19 +69,23 @@ switch(stance) if(CLOWN_STANCE_IDLE) if (src.hostile == 0) return - var/obj/mecha/M = null - var/mob/living/L = null - for(L in viewers(7,src)) - if(isclown(L)) continue - if(!L.stat) - stance = CLOWN_STANCE_ATTACK - target_mob = L - break - for(M in view(7,src)) - if (M.occupant) - stance = CLOWN_STANCE_ATTACK - target_mob = M - break + for(var/atom/A in view(7,src)) + if(isclown(A)) + continue + + if(isliving(A)) + var/mob/living/L = A + if(!L.stat) + stance = CLOWN_STANCE_ATTACK + target_mob = L + break + + if(istype(A, /obj/mecha)) + var/obj/mecha/M = A + if (M.occupant) + stance = CLOWN_STANCE_ATTACK + target_mob = M + break if (target_mob) emote("honks menacingly at [target_mob]") @@ -89,7 +93,7 @@ stop_automated_movement = 1 if(!target_mob || SA_attackable(target_mob)) stance = CLOWN_STANCE_IDLE - if(target_mob in SA_search(target_mob)) + if(target_mob in view(7,src)) walk_to(src, target_mob, 1, 3) stance = CLOWN_STANCE_ATTACKING @@ -99,7 +103,7 @@ stance = CLOWN_STANCE_IDLE target_mob = null return - if(!(target_mob in SA_search(target_mob))) + if(!(target_mob in view(7,src))) stance = CLOWN_STANCE_IDLE target_mob = null return diff --git a/code/modules/mob/living/simple_animal/life.dm b/code/modules/mob/living/simple_animal/life.dm index 7c3aab86119..87e4601d718 100644 --- a/code/modules/mob/living/simple_animal/life.dm +++ b/code/modules/mob/living/simple_animal/life.dm @@ -419,13 +419,6 @@ /mob/living/simple_animal/adjustBruteLoss(damage) health -= damage - -/mob/living/simple_animal/proc/SA_search(target_mob) - if(isliving(target_mob)) - return (viewers(7,src)) - if(istype(target_mob,/obj)) - return (view(7,src)) - /mob/living/simple_animal/proc/SA_attackable(target_mob) if (isliving(target_mob)) var/mob/living/L = target_mob diff --git a/code/modules/mob/living/simple_animal/syndicate.dm b/code/modules/mob/living/simple_animal/syndicate.dm index e7a62a4586e..58c7817e36c 100644 --- a/code/modules/mob/living/simple_animal/syndicate.dm +++ b/code/modules/mob/living/simple_animal/syndicate.dm @@ -71,26 +71,32 @@ if(!stat) switch(stance) if(SYNDICATE_STANCE_IDLE) - var/obj/mecha/M = null - var/mob/living/L = null + stop_automated_movement = 0 - for(L in viewers(7,src)) - if(isSyndicate(L)) continue - if(!L.stat) - stance = SYNDICATE_STANCE_ATTACK - target_mob = L - break - for(M in view(7,src)) - if (M.occupant) - stance = SYNDICATE_STANCE_ATTACK - target_mob = M - break + + for(var/atom/A in view(7,src)) + if(isSyndicate(A)) + continue + + if(isliving(A)) + var/mob/living/L = A + if(!L.stat) + stance = SYNDICATE_STANCE_ATTACK + target_mob = L + break + + if(istype(A, /obj/mecha)) + var/obj/mecha/M = A + if (M.occupant) + stance = SYNDICATE_STANCE_ATTACK + target_mob = M + break if(SYNDICATE_STANCE_ATTACK) //This one should only be active for one tick stop_automated_movement = 1 if(!target_mob || SA_attackable(target_mob)) stance = SYNDICATE_STANCE_IDLE - if(target_mob in SA_search(target_mob)) + if(target_mob in view(7, src)) if(ranged) if(get_dist(src, target_mob) <= 6) OpenFire(target_mob) @@ -106,7 +112,7 @@ stance = SYNDICATE_STANCE_IDLE target_mob = null return - if(!(target_mob in SA_search(target_mob))) + if(!(target_mob in view(7, src))) stance = SYNDICATE_STANCE_IDLE target_mob = null return