{ Designed for Italy. Standard Scenerio. Does not blitz France at beginning. } const LAND = 0; const AIR = 1; const SEA = 2; const TRANSPORT = 9; NbrZones := GetZoneCount(); NbrUnits := GetUnitCount(); NbrNations := GetNationCount(); CurrentPlayer := GetCurrentPlayer(); Version( 4.0 ); OurCap := findzonename('Southern Italy'); NorthernFrance := findzonename('Northern France'); InnerRussia := findzonename('Inner Russia'); US := -1; France := -1; USSR := -1; Poland := -1; Hungary := -1; Norway := -1; Spain := -1; Yugoslavia := -1; Switzerland := -1; For i := 0 to getnationcount() - 1 do begin name := getnationname(i); If name = 'United States' then US := i; If name = 'France' then France := i; If name = 'USSR' then USSR := i; If name = 'Poland' then Poland := i; If name = 'Hungary' then Hungary := i; If name = 'Norway' then Norway := i; if name = 'Spain' then Spain := i; if name = 'Yugoslavia' then Yugoslavia := i; if name = 'Switzerland' then Switzerland := i; end; {Diplomatics} like := - 100; friend := -1; points := 0; For i := 0 to NbrNations - 1 do begin stance := getnationstance(CurrentPlayer, i); npoints := 0; If isnationmajorpower(i) then npoints := 1; If ( (stance > like) OR (npoints > points) ) AND (stance < 100) AND (stance > -100) AND (npoints >= points) AND ( isnationactive(i) ) AND (i <> CurrentPlayer) then begin friend := i; points := npoints; like := getnationstance(CurrentPlayer, i); end; end; if (getnationstance(CurrentPlayer, Yugoslavia) < 100) AND (getnationstance(currentplayer, Yugoslavia) > -100) then friend := Yugoslavia; for i := 1 to 10 do If friend <> -1 then orderdiplomatic(friend, 7); {Setup basics} OrderChangeResearchSpending(20); OrderChangeResearchLevel(0, 100); OrderChangeFormations( 10, 20, 100, 100, 100, 10, 10, 10, 10, 80, 70, 100, 100, 50, 100 ); {Prepare Resource Routing} SetArray( Routing, NbrZones); SetArray( RoutScore, NbrZones); for i := 0 to NbrZones - 1 do begin Routing[i] := -1; RoutScore[i] := 0; end; {Rout Resources, build armies} for i := 0 to NbrZones - 1 do if ( GetZoneOwner( i ) = CurrentPlayer ) then begin {Build Factories } nFact := GetZoneFactories( i ); if ( (nFact < 100) and ( (GetZoneResources( i ) > 50) OR ( (Getzoneresources(i) > 24) AND (nFact = 0) ) ) and ( nFact < GetZoneValue( i ) ) ) then OrderBuildFactory( i ) {Build forces in zones with factories } else if ( nFact > 0 ) then begin f := 5 * getzonefactories(i); {IMPORTANT- Troops per factory} Artillery := getzoneresources(i) div 2; If Artillery > f then Artillery := f; orderBuildArmy(i, Artillery / 2, 0, Artillery / 2, 0 ); end; rscore := nFact * 3 + getzonevalue(i); targ := i; for n := 0 to GetZoneNeighborCount( i ) - 1 do begin neighbor := GetZoneNeighbor( i, n ); owner := getzoneowner(neighbor); okay := true; if (owner = -1) then begin owner := getcurrentplayer(); okay := false; end; nrscore := getzonefactories(neighbor) * 3 + getzonevalue(neighbor); if RoutScore[neighbor] > 0 then nrscore := RoutScore[neighbor]; if (nrscore >= rscore) and (Routing[neighbor] <> i) AND ( (getcurrentplayer() = owner) OR (getnationstance(getcurrentplayer(), owner) = 100) ) AND (okay) then begin rscore := nrscore; targ := neighbor; end; end; OrderAutoRouteResources( i, targ ); Routing[i] := targ; RoutScore[i] := rscore; end; Albania := findzonename('Albania'); Corsica := findzonename('Corsica'); {Make Sure Italy gets plenty of resources} OrderGlobalRouteResources(OurCap, 3); if isnationactive(Yugoslavia) then orderautorouteresources(Albania, OurCap); orderautorouteresources(Corsica, OurCap); {How many bad guys surround Italy?} etroops := 0; for i := 0 to getzoneneighborcount(OurCap) - 1 do begin n := getzoneneighbor(OurCap, i); etroops := etroops + getzoneforcecount(n, false, true, false, true, true, false); end; if (etroops < 20) then etroops := 40; {Does Germany need help?} zGermany := findzonename('Germany'); itroops := 0; for i := 0 to getzoneneighborcount(zGermany) - 1 do begin n := getzoneneighbor(zGermany, i); itroops := itroops + getzoneforcecount(n, false, true, false, true, true, false); end; Turkey := findzonename('Turkey'); Syria := findzonename('Syria'); Byelorussia := findzonename('Byelorussia'); Normandy := findzonename('Normandy'); NorthernFrance := findzonename('Northern France'); SouthernFrance := findzonename('Southern France'); Yugo := findzonename('Yugoslavia'); zSpain := findzonename('Spain'); WPoland := findzonename('W. Poland'); H := findzonename('Hungary'); England := findzonename('England'); Ireland := findzonename('Ireland'); Scotland := findzonename('Scotland'); Lower := findzonename('Lower Urals'); zSwitzerland := findzonename('Switzerland'); Libya := findzonename('Libya'); IEA := findzonename('Italian E. Africa'); o := getzoneowner(Corsica); p := getzoneowner(Yugo); q := getzoneowner(Turkey); if getbraindata('Airforce') = '1' then setbraindata('Airforce', '2'); if getbraindata('Airforce') = '' then setbraindata('Airforce', '1'); for i := 0 to NbrUnits - 1 do if ( GetUnitOwner( i ) = CurrentPlayer ) then begin uc := GetUnitClass( i ); nCode := GetUnitID( i ); sCode := IntToStr( nCode ); uZone := getunitzone(i); if ( uc = LAND ) then begin if getbraindata(sCode) = '' then begin dtroops := 0; if uZone = OurCap then dtroops := etroops + 20; for j := 0 to getzoneunitcount(uZone) - 1 do if getbraindata( IntToStr(getunitid(getzoneunit(uZone, j))) ) = 'd' then dtroops := dtroops - getunitforcecount(getzoneunit(uZone, j)); if dtroops > 0 then begin if getbraindata(getzonename(uZone)) = '1' then begin setbraindata(getzonename(uZone), '0'); setbraindata(sCode, 'e'); end else begin setbraindata(getzonename(uZone), '1'); setbraindata(sCode, 'd'); end; end else begin setbraindata(sCode, 'e'); end; end; if getbraindata(sCode) = 'd' then begin {for j := 0 to getzoneunitcount(uZone) - 1 do if getbraindata(IntToStr(getunitid(getzoneunit(uZone, j)))) = 'd' then orderunitmerge(i, getzoneunit(uZone, j));} end else if getbraindata(sCode) = 'e' then begin if (o <> CurrentPlayer) AND (getnationstance(o, CurrentPlayer) <> 100) then targ := SouthernFrance else if (p <> CurrentPlayer) AND (getnationstance(p, CurrentPlayer) <> 100) then targ := Yugo else if (q <> CurrentPlayer) AND (getnationstance(q, CurrentPlayer) <> 100) then targ := Turkey else begin targ := findclosestenemyzone(uZone, 15); n := targ; If NOT ( (n <> Normandy) AND (n <> NorthernFrance) AND ( (n <> WPoland) OR (NOT isnationactive(Poland)) ) AND ( (n <> H) OR (NOT isnationactive(Hungary)) ) AND ( (n <> zSpain) OR (NOT isnationactive(Spain)) ) AND ( (n <> InnerRussia) OR (NOT isnationactive(USSR)) ) AND ( (n <> zSwitzerland) OR (NOT isnationactive(Switzerland)) ) ) then begin dist := 999999; targ := -1; for n := 0 to NbrZones - 1 do begin ndist := distance(n, uZone); okay :=getzoneowner(n) <> -1; if okay then okay := getnationstance(getzoneowner(n), currentplayer) <> 100; If (okay) AND (getzoneowner(i) <> CurrentPlayer) AND (ndist < dist) AND (n <> Normandy) AND (n <> NorthernFrance) AND ( (n <> WPoland) OR (NOT isnationactive(Poland)) ) AND ( (n <> H) OR (NOT isnationactive(Hungary)) ) AND ( (n <> zSpain) OR (NOT isnationactive(Spain)) ) AND ( (n <> InnerRussia) OR (NOT isnationactive(USSR)) ) AND (n <> England) AND (n <> Ireland) AND (n <> Scotland) AND ( (n <> zSwitzerland) OR (NOT isnationactive(Switzerland)) ) then begin targ := n; dist := ndist; end; end; end; end; if targ <> -1 then begin dist := 9999999; for j := 0 to getzoneneighborcount(uZone) - 1 do begin n := getzoneneighbor(uZone, j); ndist := distance(n, targ); If (iszoneland(n)) AND (ndist < dist) AND (n <> Normandy) AND (n <> NorthernFrance) AND ( (n <> WPoland) OR (NOT isnationactive(Poland)) ) AND ( (n <> H) OR (NOT isnationactive(Hungary)) ) AND ( (n <> InnerRussia) OR (NOT isnationactive(USSR)) ) AND ( (n <> zSwitzerland) OR (NOT isnationactive(Switzerland)) ) then begin neighbor := n; dist := ndist; end; end; if (uZone = Turkey) AND (getbraindata('DefTurk') <> '2') then begin setbraindata(sCode, 'd'); setbraindata('DefTurk', '1'); end else if (targ <> -1 ) AND (neighbor <> -1) then begin if (getzoneowner(neighbor) = CurrentPlayer) OR (getnationstance(CurrentPlayer, getzoneowner(neighbor)) = 100) then OrderUnitMove( i, targ ) else OrderUnitInvade( i, neighbor ); end; end; end; end else if ( uc = AIR ) then begin okay := getzoneowner(uZone) <> -1; if okay then okay := getnationstance(getzoneowner(uZone), CurrentPlayer) <> 100; if getunitbaseunit( i ) <> -1 then begin orderunitrebase(i, OurCap); end else if (GetZoneOwner( uZone ) <> CurrentPlayer) AND (okay) then begin if (GetZoneForceCount( uZone, false, true, true, true, true, true ) = 0) OR (getzoneforcecount( uZone, true, false, false, true, false, true) = 0) then OrderUnitReturnToBase( i ); end else begin if GetUnitOrder( i ) <> 0 then begin OrderUnitReturnToBase( i ); end else begin nTarget := -1; dist := 200000; for j := 0 to NbrZones - 1 do if ((iszoneembattled(j)) OR (getzoneforcecount( j, false, true, true, true, true, true) < 8)) AND (getzoneforcecount( j, false, true, true, true, true, true) > 0) AND (j <> H) AND (j <> zSwitzerland) then if distance(uZone, j) < dist then if truedistance(uzone, j ) < 5 then begin nTarget := j; dist := distance(uZone, j); end; if (o <> CurrentPlayer) AND (getnationstance(o, CurrentPlayer) <> 100) then nTarget := Corsica else if (p <> CurrentPlayer) AND (getnationstance(p, CurrentPlayer) <> 100) then nTarget := Yugo; if (nTarget >= 0) AND ( (getbraindata('Airforce') = '2') OR ( (uZone <> Libya) AND (uZone <> IEA) ) ) then begin OrderUnitAirStrike( i, nTarget ); end else begin if itroops >= getzoneforcecount(zGermany, true, false, false, true, true, false) then orderunitrebase(i, zGermany) else orderunitrebase(i, OurCap) end; end; end; end else if ( uc = SEA ) then begin e := findzonename('England'); If e <> -1 then orderunitbombard(i, e); end; end; if getbraindata('first') = '' then setbraindata('first', '1');