1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
|
shard_include( "attackers" )
function IsAttacker(unit)
for i,name in ipairs(attackerlist) do
if name == unit:Internal():Name() then
return true
end
end
return false
end
AttackerBehaviour = class(Behaviour)
function AttackerBehaviour:Init()
--game:SendToConsole("attacker!")
end
function AttackerBehaviour:UnitBuilt(unit)
if unit.engineID == self.unit.engineID then
self.attacking = false
ai.attackhandler:AddRecruit(self)
end
end
function AttackerBehaviour:UnitDead(unit)
if unit.engineID == self.unit.engineID then
ai.attackhandler:RemoveRecruit(self)
end
end
function AttackerBehaviour:UnitIdle(unit)
if unit.engineID == self.unit.engineID then
self.attacking = false
ai.attackhandler:AddRecruit(self)
end
end
function AttackerBehaviour:AttackCell(cell)
p = api.Position()
p.x = cell.posx
p.z = cell.posz
p.y = 0
self.target = p
self.attacking = true
if self.active then
self.unit:Internal():MoveAndFire(self.target)
else
self.unit:ElectBehaviour()
end
end
function AttackerBehaviour:Priority()
if not self.attacking then
return 0
else
return 100
end
end
function AttackerBehaviour:Activate()
self.active = true
if self.target then
self.unit:Internal():MoveAndFire(self.target)
self.target = nil
else
ai.attackhandler:AddRecruit(self)
end
end
function AttackerBehaviour:OwnerDead()
ai.attackhandler:RemoveRecruit(self)
self.attacking = nil
self.active = nil
self.unit = nil
end
|