mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-18 02:24:11 +01:00
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:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user