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
This commit is contained in:
johnsonmt88@gmail.com
2012-10-20 23:18:05 +00:00
parent e478bb6c25
commit e99c70722f
5 changed files with 80 additions and 69 deletions
+21 -17
View File
@@ -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
+19 -15
View File
@@ -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
+19 -15
View File
@@ -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
@@ -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
@@ -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