--[[
--  Generic attack functions.
--]]

function attack_think()

end

--[[
--  Generic "brute force" attack. Doesn't really do anything interesting.
--]]
function attack()
  target = ai.targetid()
  ai.hostile(target) -- Mark as hostile.

  -- Make sure pilot exists.
  if not ai.exists(target) then
    ai.poptask()
    return
  end
  ai.settarget(target)

  -- Get stats about enemy.
  dist = ai.dist(ai.pos(target)) -- Get distance.
  range = ai.getweaprange()

  if dist > range then
    dir = ai.face(target) -- Normal face the target.

    secondary, special, ammo = ai.secondary("Launcher")

    -- Shoot missiles if in range.
    if secondary == "Launcher" and
        dist < ai.getweaprange(1) then
      -- More lenient with aiming.
      if special == "Smart" and dir < 30 then
        ai.shoot(2)

      -- Non-smart miss more.
      elseif dir < 10 then
        ai.shoot(2)
      end
    end

    -- Approach for melee.
    if dir < 10 then
      ai.accel()
    end

  -- Close enough to melee.
  else
    secondary, special = ai.secondary("Beam Weapon")
    dir = ai.aim(target) -- We aim instead of face.

    -- Fire non-smart secondary weapons.
    if(secondary == "Launcher" and special ~= "Smart") or
        secondary == "Beam Weapon" then
      if dir < 10 or special == "Turret" then -- Need good accuracy.
        ai.shoot(2)
      end
    end

    if dir < 10 or ai.hasturrets() then
      ai.shoot()
    end
  end
end