diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 566af1d805..42a410e3d2 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -113,6 +113,8 @@ var/projectiletype // The projectiles I shoot var/projectilesound // The sound I make when I do it var/casingtype // What to make the hugely laggy casings pile out of + var/ranged_cooldown = 0 //What the starting cooldown is on ranged attacks + var/ranged_cooldown_time = 30 //How long, in deciseconds, the cooldown of ranged attacks is //Mob melee settings var/melee_damage_lower = 2 // Lower bound of randomized melee damage @@ -1264,10 +1266,18 @@ PunchTarget() return 1 //Open fire! - else if(ranged && (distance <= shoot_range)) + if(ranged && (distance <= shoot_range) && ranged_cooldown <= world.time) + stop_automated_movement = 0 ai_log("AttackTarget() ranged",3) ShootTarget(target_mob) return 1 + + else if(ranged && !target_mob.canmove) + LostTarget() + ai_log("AttackTarget() resting, closing distance",3) + handle_stance(STANCE_ATTACK) + return 0 + //They ran away! else ai_log("AttackTarget() out of range!",3) @@ -1347,7 +1357,7 @@ Shoot(target, src.loc, src) if(casingtype) new casingtype - + ranged_cooldown = world.time + ranged_cooldown_time return 1 //Check firing lines for faction_friends (if we're not cooperative, we don't care) @@ -1754,3 +1764,6 @@ /mob/living/simple_animal/get_nametag_desc(mob/user) return "[tt_desc]" + + +