diff --git a/COCBot/functions/CreateArmy/DoubleTrain.au3 b/COCBot/functions/CreateArmy/DoubleTrain.au3 index ecd3b7d5..e1610cbe 100644 --- a/COCBot/functions/CreateArmy/DoubleTrain.au3 +++ b/COCBot/functions/CreateArmy/DoubleTrain.au3 @@ -491,32 +491,38 @@ Func FixInDoubleTrain(ByRef $aTroops, $iTotal, $aTroopSpace, $iIndexRemain = 0) $aTroops[$iIndexRemain] = $iTotal Return EndIf - - For $i = 0 To $iCo -1 - $aTroops[$i] = Floor(((((($aTroops[$i] * $aTroopSpace[$i]) / $iRealCAP) * 100) * $iTotal) / 100) / $aTroopSpace[$i]) - $iTotalFixed += $aTroops[$i] * $aTroopSpace[$i] + + Local $iDiv = 0, $iFinal = 0 + For $i = $iCo -1 To 0 Step -1 + $iDiv = Floor(((((($aTroops[$i] * $aTroopSpace[$i]) / $iRealCAP) * 100) * $iTotal) / 100) / $aTroopSpace[$i]) + If Int($iTotalFixed + Int($iDiv * $aTroopSpace[$i])) > $iTotal Then ContinueLoop + $aTroops[$i] = $iDiv + $iTotalFixed += $aTroops[$i] * $aTroopSpace[$i] Next - - Local $iFinal = $iTotalFixed + + $iFinal = $iTotalFixed If $iTotalFixed <> $iTotal Then For $i = 0 To $iCo -1 If $aTroops[$i] = 0 Then ContinueLoop - Local $iDiff = Abs($iTotalFixed - $iTotal) - Local $iDiv = Round($iDiff / $aTroopSpace[$i]) + If $iFinal >= $iTotal Then ExitLoop + $iDiv = Floor(($iTotal - $iTotalFixed) / $aTroopSpace[$i]) If $iDiv > 0 Then $iFinal -= $aTroops[$i] * $aTroopSpace[$i] - $aTroops[$i] += $iDiff / $aTroopSpace[$i] + + If Int($iFinal + ($iDiv * $aTroopSpace[$i])) <= $iTotal Then + $aTroops[$i] += $iDiv + EndIf + $iFinal += $aTroops[$i] * $aTroopSpace[$i] - ExitLoop EndIf Next EndIf - $iFinal = $iTotalFixed + $iTotalFixed = $iFinal If $iTotalFixed <> $iTotal Then For $i = 0 To $iCo -1 If $aTroops[$i] = 0 Then ContinueLoop - Local $iDiff = Abs($iTotalFixed - $iTotal) + Local $iDiff = ($iTotal - $iTotalFixed) If Mod($iDiff, $aTroopSpace[$i]) = 0 Then $iFinal -= $aTroops[$i] * $aTroopSpace[$i] $aTroops[$i] += $iDiff / $aTroopSpace[$i] @@ -525,6 +531,6 @@ Func FixInDoubleTrain(ByRef $aTroops, $iTotal, $aTroopSpace, $iIndexRemain = 0) EndIf Next EndIf - $aTroops[$iIndexRemain] += Abs($iFinal - $iTotal) + If $iFinal < $iTotal Then $aTroops[$iIndexRemain] += $iTotal - $iFinal EndFunc ;==>FixInDoubleTrain #EndRegion - Custom Train - Team AIO Mod++ \ No newline at end of file diff --git a/COCBot/functions/CreateArmy/TrainSystem.au3 b/COCBot/functions/CreateArmy/TrainSystem.au3 index 68ecf5a3..595dbc80 100644 --- a/COCBot/functions/CreateArmy/TrainSystem.au3 +++ b/COCBot/functions/CreateArmy/TrainSystem.au3 @@ -510,17 +510,30 @@ Func RemoveExtraTroops($toRemove) SetLog("Troops To Remove: ", $COLOR_INFO) $CounterToRemove = 0 + + Local $iIfWrongIndex = -1 + ; Loop through Troops needed to get removed Just to write some Logs For $i = 0 To (UBound($toRemove) - 1) If IsSpellToBrew($toRemove[$i][0]) Then ExitLoop $CounterToRemove += 1 - SetLog(" - " & $g_asTroopNames[TroopIndexLookup($toRemove[$i][0])] & ": " & $toRemove[$i][1] & "x", $COLOR_SUCCESS) + $iIfWrongIndex = TroopIndexLookup($toRemove[$i][0]) + If $iIfWrongIndex <> -1 Then + SetLog(" - " & $g_asTroopNames[$iIfWrongIndex] & ": " & $toRemove[$i][1] & "x", $COLOR_SUCCESS) + Else + SetLog(" - Wrong " & $toRemove[$i][0], $COLOR_ERROR) + EndIf Next If $CounterToRemove <= UBound($toRemove) Then SetLog("Spells To Remove: ", $COLOR_INFO) For $i = $CounterToRemove To (UBound($toRemove) - 1) - SetLog(" - " & $g_asSpellNames[TroopIndexLookup($toRemove[$i][0]) - $eLSpell] & ": " & $toRemove[$i][1] & "x", $COLOR_SUCCESS) + $iIfWrongIndex = TroopIndexLookup($toRemove[$i][0]) - $eLSpell + If $iIfWrongIndex <> -1 Then + SetLog(" - " & $g_asSpellNames[$iIfWrongIndex] & ": " & $toRemove[$i][1] & "x", $COLOR_SUCCESS) + Else + SetLog(" - Wrong " & $toRemove[$i][0] & " - " & $eLSpell, $COLOR_ERROR) + EndIf Next EndIf