{ Tries to fight both Germany and Japan } const LAND = 0; const AIR = 1; const SEA = 2; const ZGERMANY = 525; const ZKOREA = 575; const TRANSPORT = 9; NbrZones := GetZoneCount(); NbrUnits := GetUnitCount(); CurrentPlayer := GetCurrentPlayer(); Version( 4.0 ); MyCap := findzonename('Inner Russia'); UK := -1; Germany := -1; Japan := -1; France := -1; For i := 0 to getnationcount() - 1 do begin name := getnationname(i); If name = 'United Kingdom' then UK := i; If name = 'Germany' then Germany := i; If name = 'Japan' then Japan := i; If name = 'France' then France := i; end; If getnationdiplomaticactions(CurrentPlayer) > 0 then If (getnationstance(UK, CurrentPlayer) < 100) AND (getnationstance(UK, CurrentPlayer) > -100) then orderdiplomatic(UK, 3) else if (isnationactive(France)) AND (getnationstance(France, CurrentPlayer) < 100) AND (getnationstance(France, CurrentPlayer) > -100) then orderdiplomatic(France, 3) else orderdiplomatic(Germany, 0); OrderChangeResearchSpending(15); OrderChangeResearchLevel(0, 100); NumInfantry := 0; For i := 0 to NbrUnits - 1 do If (getunitzone(i) = MyCap) AND (getunitowner(i) = CurrentPlayer) then NumInfantry := NumInfantry + getunitforcecounttype(i, 3); Troops := getzoneresources(MyCap) div 2; OrderGlobalRouteResources( MyCap, 20 ); If NumInfantry < 50 then orderbuildarmy(MyCap, 0, 0, troops, 0) else orderBuildArmy( MyCap, troops, 0, 0, 0 ); setarray( AttackTroops, NbrZones ); setarray( DefenseTroops, NbrZones ); For i := 0 to NbrZones - 1 do begin AttackTroops[i] := -1; DefenseTroops[i] := -1; end; for i := 0 to NbrUnits - 1 do begin if ( GetUnitOwner( i ) = CurrentPlayer ) then begin uc := GetUnitClass( i ); nCode := GetUnitID( i ); sCode := IntToStr( nCode ); uZone := getunitzone(i); if ( uc = LAND ) then begin If getunitforcecounttype(i, 3) = 0 then begin If AttackTroops[uZone] = -1 then AttackTroops[uZone] := i else orderunitmerge(i, AttackTroops[uZone]); If (getzoneowner(ZKOREA) <> CurrentPlayer) AND (distance(uZone, ZGERMANY) >= distance(MyCap, ZGERMANY)) then nTarget :=ZKOREA else if isnationactive(Germany) then nTarget := ZGERMANY else nTarget := FindClosestEnemyZone( GetUnitZone( i ), 30 ); neighbor := -1; dist := 9999999; For j := 0 to getzoneneighborcount(uZone) - 1 do begin tZone := getzoneneighbor(uZone, j); ndist := distance(tZone, nTarget); If (iszoneland(tZone)) AND (ndist < dist) then begin neighbor := tZone; dist := ndist; end; end; if ( nTarget >= 0 ) AND (neighbor >= 0) then begin if IsZoneNeighbor( GetUnitZone( i ), nTarget ) then OrderUnitInvade( i, nTarget ) else if ((getzoneowner(neighbor) = CurrentPlayer) OR (isnationalliedwith(CurrentPlayer, getzoneowner(neighbor)))) then OrderUnitMove( i, nTarget ) else OrderUnitInvade( i, neighbor ); end; end else begin If DefenseTroops[uZone] = -1 then DefenseTroops[uZone] := i else orderunitmerge(i, DefenseTroops[uZone]); If (distance(uZone, MyCap) <= distance(ZKOREA, uZone)) then begin orderunitmove(i, MyCap) end else begin nTarget := ZKOREA; neighbor := -1; dist := 9999999; For j := 0 to getzoneneighborcount(uZone) - 1 do begin tZone := getzoneneighbor(uZone, j); ndist := distance(tZone, nTarget); If (iszoneland(tZone)) AND (ndist < dist) then begin neighbor := tZone; dist := ndist; end; end; if ( nTarget >= 0 ) AND (neighbor >= 0) then begin if IsZoneNeighbor( GetUnitZone( i ), nTarget ) then OrderUnitInvade( i, nTarget ) else if ((getzoneowner(neighbor) = CurrentPlayer) OR (isnationalliedwith(CurrentPlayer, getzoneowner(neighbor)))) then OrderUnitMove( i, nTarget ) else OrderUnitInvade( i, neighbor ); end; end; end; end else if ( uc = AIR ) then begin if GetZoneOwner( GetUnitZone( i ) ) <> CurrentPlayer then begin if GetZoneForceCount( GetUnitZone( i ), false, true, true, true, true, true ) = 0 then OrderUnitReturnToBase( i ); end else begin If getunitorder(i) <> 0 then begin orderunitreturntobase(i); end else begin orderunitrebase(i, MyCap); end; end end else if ( uc = SEA ) then begin e := ZGERMANY; If e <> -1 then orderunitbombard(i, e); end; end; end;