Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- if bp.MinAoA then
- --2013 find angle
- --LOG('Got the target')
- --DefaultProjectileWeapon.IdleState.OnGotTarget(self)
- local selfpos = self.unit:GetPosition()
- selfpos[2] = GetSurfaceHeight(selfpos[1], selfpos[3])
- --LOG('Unit at ', repr(selfpos))
- local targetpos = self:GetCurrentTargetPos()
- --LOG('Target at ', repr(targetpos))
- local gtadistance = Utilities.GetDistanceBetweenTwoPoints(selfpos[1], selfpos[2], selfpos[3], targetpos[1], targetpos[2], targetpos[3])
- local gtgdistance = Utilities.GetDistanceBetweenTwoPoints(selfpos[1], selfpos[2], selfpos[3], targetpos[1], selfpos[2], targetpos[3])
- local firingangle = (math.acos(gtgdistance / gtadistance))*(360/(math.pi*2))
- --LOG('Fireangle at ', firingangle, ' minfiringangle from BP is ', bp.MinAoA)
- --LOG('Got the target at angle ', firingangle, ' from unit at ', selfpos, ' targeting ', targetpos)
- if firingangle < bp.MinAoA then
- --LOG('FIRE ANGLE TOO LOW, Resetting target')
- self:ResetTarget()
- self.AimControl:SetResetPoseTimer(0.1)
- --LOG('Target and Pose Reset!')
- --self:SetTargetEntity()
- --LOG('Target entity nulled!')
- self.NeedNewTarget = true
- --LOG('Set self to need new target success')
- local aiBrain = self.unit:GetAIBrain()
- --LOG('AIBrain Assigned to parent unit')
- local enemies = aiBrain:GetUnitsAroundPoint( categories.AIR, self.unit:GetPosition(), bp.MaxRadius * bp.TrackingRadius, 'Enemy' )
- --LOG('Enemies found')
- for k,v in enemies do
- --if v != self:GetCurrentTarget() then
- if self.NeedNewTarget then
- local vselfpos = self.unit:GetPosition()
- vselfpos[2] = GetSurfaceHeight(vselfpos[1], vselfpos[3])
- --LOG('retarget Unit at ', repr(vselfpos))
- local vtargetpos = v:GetPosition()
- --LOG('retarget Target at ', repr(vtargetpos))
- local vgtadistance = Utilities.GetDistanceBetweenTwoPoints(vselfpos[1], vselfpos[2], vselfpos[3], vtargetpos[1], vtargetpos[2], vtargetpos[3])
- local vgtgdistance = Utilities.GetDistanceBetweenTwoPoints(vselfpos[1], vselfpos[2], vselfpos[3], vtargetpos[1], vselfpos[2], vtargetpos[3])
- local vfiringangle = (math.acos(vgtgdistance / vgtadistance))*(360/(math.pi*2))
- --LOG('retarget Fireangle at ', vfiringangle, ' minfiringangle from BP is ', bp.MinAoA)
- --LOG('retarget Got the target at angle ', vfiringangle, ' from unit at ', vselfpos, ' targeting ', vtargetpos)
- if vfiringangle > bp.MinAoA then
- --LOG('retarget Found viable Target', v)
- self:SetTargetEntity(v)
- --LOG('retarget NEW TARGET SET!')
- self.NeedNewTarget = false
- self:SetEnabled(true)
- else
- --LOG('retarget failure on pass', v)
- self:ResetTarget()
- self:SetEnabled(false)
- self.AimControl:SetResetPoseTimer(0.1)
- --WaitSeconds(bp.TargetCheckInterval or 1)
- --self:SetEnabled(true)
- --LOG('retarget RESET on fail pass', v)
- end
- end
- --end
- end
- if self.NeedNewTarget then
- --LOG('OOOOH NOOOOOESSS, NO NEW TARGET FOUND!!!')
- self:ResetTarget()
- self:SetEnabled(false)
- self.AimControl:SetResetPoseTimer(0.1)
- --WaitSeconds(bp.TargetCheckInterval or 1)
- self:SetEnabled(true)
- --LOG('OOOOH NOOOOOESSS, TARGET RESET SUCCESS!!!')
- --self:SetTargetEntity()
- --LOG('OOOOH NOOOOOESSS, TARGET ENTITY BLANKED!!!')
- else
- self:SetEnabled(true)
- end
- end
- end
- end,
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement