# 舰\_2018冬E1

```lua
--2018 Q1 E1
--线路D E H I O

---------------------------------------------------------------------------------
--配置
--[[

不要上西村栗田等等后面要用的舰队船！
不要上西村栗田等等后面要用的舰队船！
不要上西村栗田等等后面要用的舰队船！
不要上西村栗田等等后面要用的舰队船！

开图自己看攻略：http://bbs.ngacn.cc/read.php?tid=13475418

1CL 1BB 4DD 
线路D E H I O

]]

Base.MinVer(190, true)
---------------------------------------------------------------------------------
--这里是设置区域 请务必仔细阅读！！！
Kan.AddBattleInfo(1, 阵型.单横, false, false) --H
Kan.AddBattleInfo(2, 阵型.警戒, false, false) --I 
Kan.AddBattleInfo(3, 阵型.单横, false, false) --O

--每个点的战斗设置 如果要修改为别的活动图的时候需要改

--路基东海反潜 记得改成出击状态
Kan.AddLandAir(1, 356,119) --O
Kan.AddLandAir(1, 356,119) --O

--能动点
Kan.AddWay(267,170)  --E
Kan.AddWay(328,212)  --H 

count = 8
--出击次数

--kan_support_boss_id = 4
--Boss支援舰队ID 不需要的话请在前面加--注释掉 

--kan_support_id = 3
--道中支援舰队ID 不需要的话请在前面加--注释掉 

---------------------------------------------------------------------------------
--下面的设置修改为别的活动图的时候才需要改

team_id = 1
--出击的队伍ID,联合舰队的话，请写12

use_way = true
--是否使用能动点 地图如果不需要使用能动点 就写false

map_id = 1
--出击地图E1

map_battle_count = Kan.GetBattleInfoCount();
--在地图中进行几个点的战斗 超过也可以 但是不能少 少了到Boss前就撤退了 
--(不包括资源点和能动点还有漩涡等不战斗的点的数量)

---------------------------------------------------------------------------------
--k2_conquest = C.東京急行_ID37 --二队战斗了 所以不需要
k3_conquest = C.北方鼠輸送作戦_ID21
k4_conquest = C.防空射撃演習_ID6
--设置2、3、4队伍远征，可输入C.然后下拉选择

--Kan.EasyConquestInit(60*5, 60*10)
--设置简易远征，每5-10分钟进行一次检测，1.5.3版本KCA才可以使用
--需要远征的话，请取消注释

Base.SetConfig("Sleep+?",100) --所有延时随机增加1-100
---------------------------------------------------------------------------------
Base.SetValue("FunReWriteSallyAll","LandAirCheck")

function LandAirCheck() --自主设定选择地图及重置航空队
	Base.WaitColor("[[289,392,16446951],[280,383,15853506],[609,465,14477039,5],[711,446]]","活动界面")
	Base.Click(270,394) --点击航空队补充
	Base.WaitColor("[[579,153,11056312],[579,246,11122105]]","航空队补充")
	Base.Click(775,220) --点击全补充
	Base.Sleep(800)
	Base.WaitColor("[[579,153,11056312],[579,246,11122105]]","航空队补充")
	Win.Print("第2队伍")
	Base.Click(682,120) --点击第二队伍
	Base.Sleep(800)
	Base.WaitColor("[[579,153,11056312],[579,246,11122105]]","航空队补充")
	Base.Click(775,220) --点击全补充
	Base.Sleep(800)
	Base.WaitColor("[[579,153,11056312],[579,246,11122105]]","航空队补充")
	Win.Print("第3队伍")
	Base.Click(752,121) --点击第三队伍
	Base.Sleep(800)
	Base.WaitColor("[[579,153,11056312],[579,246,11122105]]","航空队补充")
	Base.Click(775,220) --点击全补充
	Base.Sleep(800)
	Base.WaitColor("[[579,153,11056312],[579,246,11122105]]","航空队补充")
	Base.Click(249,118) --补充完毕退出航空队选择
	Base.Sleep(800)
	Base.WaitColor("[[289,392,16446951],[280,383,15853506],[609,465,14477039,5],[711,446]]","活动界面")
	Base.Click(456,183) --点击E1
	Base.Sleep(1000)
	Base.WaitColor("[[590,80,12631325],[601,83,12631325],[615,84,7696929],[210, 117]]","出击")
	Base.Click(686,443) --点击决定
	Win.Print("点击决定")
	Base.Sleep(1000)
	--剩下的都是战斗函数的处理范围了
end

function NeedRepair(t) --判断联合舰队是否有达到小破及以上的船
	for n = 1, 6 do
		if t["kan1"..n] > 0 then
			return true
		end		
	end
	for n = 1, 6 do
		if t["kan2"..n] > 0 then
			return true
		end		
	end
    return false
end

Kan.EasyConquestRun(false) --首次启动的时候执行一次远征

for n = 1, count do --循环次数
    a = "开始第:%d次"
    Win.Print(a:format(n))
    
	ret = Kan.SupplyAllT()

    if kan_support_boss_id ~= nil and ret["team"..kan_support_boss_id] ~= -3 then
        Kan.Conquest(kan_support_boss_id,10, 2) --出击Boss支援
    end
    
    if kan_support_id ~= nil and ret["team"..kan_support_id] ~= -3 then
        Kan.Conquest(kan_support_id,10, 1) --出击道中支援
    end
    
    if NeedRepair(ret) == true then
        Win.Print('联合舰队中存在受伤船，即将进入修理...')
        
        --修理大中小破的船 6次 除潜艇外的船都使用桶！！
        --普通擦伤不修理 如果要修 就在参数3加上 +1
		
        Kan.RepairEx(12, 2 + 4 + 8, 2 + 4 + 8 )
    elseif ret["team1"] == -1 then
        Win.Pop('补给不足，脚本停止！',true)
        break
    end
    
    Kan.Sally(101, map_id) --出击E3
    
	Base.SetConfig("LastBattleCount", 0)
    --第一舰队\战斗4次\使用能动点
    if Kan.BattleEx(team_id, map_battle_count , use_way) == false then
        LastBattleCount = Base.GetValue("LastBattleCount")
        if LastBattleCount ~= nil and LastBattleCount ~= "" then
            if tonumber(LastBattleCount) < map_battle_count then
                Win.Print('未满足战斗次数，可能被劝退。')
            end
            min = (7 - tonumber(LastBattleCount)) * 3 
            Win.Print('战斗正常结束..等待'..min ..'分钟恢复疲劳再打...')
            Base.Sleep(1000 * 60 *  min) --等待时间
        else
			if LastBattleCount == "" or LastBattleCount == "0" then
				Win.Print('出击失败，存在大破船或船位装备已满')
				break
			else
				Win.Print('战斗正常结束..等待24分钟恢复疲劳再打...')
            	Base.Sleep(1000 * 60 *  24) --等待时间
			end
        end 
    else
        LastBattleCount = Base.GetValue("LastBattleCount")
        if LastBattleCount ~= nil and tonumber(LastBattleCount) < map_battle_count then
            Win.Print('第一舰队旗舰大破劝退')
        end

        Win.Print('战斗正常结束..等待3分钟恢复疲劳再打...')
        Base.Sleep(1000 * 60 * 3) --等待时间
    end
	
	
    Kan.WaitHome(2000)
	
	if n % 2 == 0 then

	end
	
    Base.Sleep(2000)
end



Kan.EasyConquestEnterLoop()

Win.Pop('脚本执行完毕！')
```
