diff options
author | TenPlus1 <kinsellaja@yahoo.com> | 2018-05-05 15:40:32 +0100 |
---|---|---|
committer | TenPlus1 <kinsellaja@yahoo.com> | 2018-05-05 15:40:32 +0100 |
commit | a089d27db8ac3455943fd324e716da55155b98c8 (patch) | |
tree | d14b2829c1e0eb22e6583c5a4fbba034a81f445a | |
parent | bdfce20c28195a17d9cc1502348cb53576ccc8f1 (diff) |
tweak attack functions to use line of sight better
-rw-r--r-- | api.lua | 42 |
1 files changed, 20 insertions, 22 deletions
@@ -3,7 +3,7 @@ mobs = {} mobs.mod = "redo" -mobs.version = "20180504" +mobs.version = "20180505" -- Intllib @@ -1384,25 +1384,21 @@ local monster_attack = function(self) and (type == "player" or type == "npc" or (type == "animal" and self.attack_animals == true)) then - s = self.object:get_pos() p = player:get_pos() sp = s + dist = get_distance(p, s) + -- aim higher to make looking up hills more realistic p.y = p.y + 1 sp.y = sp.y + 1 - dist = get_distance(p, s) - - if dist < self.view_range then - -- field of view check goes here - -- choose closest player to attack - if line_of_sight(self, sp, p, 2) == true - and dist < min_dist then - min_dist = dist - min_player = player - end + -- choose closest player to attack + if dist < min_dist + and line_of_sight(self, sp, p, 2) == true then + min_dist = dist + min_player = player end end end @@ -1435,10 +1431,16 @@ local npc_attack = function(self) if obj and obj.type == "monster" then p = obj.object:get_pos() + sp = s dist = get_distance(p, s) - if dist < min_dist then + -- aim higher to make looking up hills more realistic + p.y = p.y + 1 + sp.y = sp.y + 1 + + if dist < min_dist + and line_of_sight(self, sp, p, 2) == true then min_dist = dist min_player = obj.object end @@ -1512,7 +1514,6 @@ local runaway_from = function(self) if name ~= "" and name ~= self.name and specific_runaway(self.runaway_from, name) then - s = self.object:get_pos() p = player:get_pos() sp = s @@ -1522,15 +1523,12 @@ local runaway_from = function(self) dist = get_distance(p, s) - if dist < self.view_range then - -- field of view check goes here - -- choose closest player/mpb to runaway from - if line_of_sight(self, sp, p, 2) == true - and dist < min_dist then - min_dist = dist - min_player = player - end + -- choose closest player/mpb to runaway from + if dist < min_dist + and line_of_sight(self, sp, p, 2) == true then + min_dist = dist + min_player = player end end end |