//=================================================================================================
// GLOBAL VARIABLES
//=================================================================================================
globals
integer GoldWorkers = 5
integer WoodWorkers = 2
player Dbg_plr = Player(0)
endglobals
//=================================================================================================
// BUILDINGS PRIORITIES & AI SETTINGS
//=================================================================================================
function InitOptions takes nothing returns nothing
call SetMeleeAI( )
call SetDefendPlayer( true )
call SetRandomPaths( false )
call SetTargetHeroes( false )
call SetPeonsRepair( true )
call SetHeroesFlee( false )
call SetHeroesBuyItems( true )
call SetUnitsFlee( true )
call SetGroupsFlee( false )
call SetWatchMegaTargets( true )
call SetIgnoreInjured( true )
call SetHeroesTakeItems( true )
call SetSlowChopping( true )
call SetCaptainChanges( false )
call SetSmartArtillery( true )
endfunction
function BuildPriorities takes nothing returns nothing
call SetBuildAll( BUILD_UNIT, 1, 'ogre', -1 )
call SetBuildAll( BUILD_UNIT, 1, 'opeo', -1 )
call SetBuildAll( BUILD_UNIT, 2, 'opeo', -1 )
call SetBuildAll( BUILD_UNIT, 3, 'opeo', -1 )
call SetBuildAll( BUILD_UNIT, 4, 'opeo', -1 )
call SetBuildAll( BUILD_UNIT, 5, 'opeo', -1 )
call SetBuildAll( BUILD_UNIT, 6, 'opeo', -1 )
call SetBuildAll( BUILD_UNIT, 7, 'opeo', -1 )
call SetBuildAll( BUILD_UNIT, 1, 'obar', -1 )
call SetBuildAll( BUILD_UNIT, 1, 'npgf', -1 )
call SetBuildAll( BUILD_UNIT, 1, 'ogru', -1 )
call SetBuildAll( BUILD_UNIT, 1, 'otrb', -1 )
call SetBuildAll( BUILD_UNIT, 1, 'oalt', -1 )
call SetBuildAll( BUILD_UNIT, 1, 'ofor', -1 )
call SetBuildAll( BUILD_UNIT, 1, 'owtw', -1 )
call SetBuildAll( BUILD_UNIT, 2, 'otrb', -1 )
call SetBuildAll( BUILD_UNIT, 2, 'ogru', -1 )
call SetBuildAll( BUILD_UNIT, 1, 'ovln', -1 )
call SetBuildAll( BUILD_UNIT, 2, 'owtw', -1 )
call SetBuildAll( BUILD_UNIT, 2, 'npgf', -1 )
call SetBuildAll( BUILD_UNIT, 3, 'owtw', -1 )
call SetBuildAll( BUILD_UNIT, 1, 'ostr', -1 )
call SetBuildAll( BUILD_UNIT, 3, 'otrb', -1 )
call SetBuildAll( BUILD_UNIT, 3, 'ogru', -1 )
call SetBuildAll( BUILD_UNIT, 1, 'osld', -1 )
call SetBuildAll( BUILD_UNIT, 1, 'nw2w', -1 )
call SetBuildAll( BUILD_UNIT, 4, 'owtw', -1 )
call SetBuildAll( BUILD_UNIT, 1, 'obea', -1 )
call SetBuildAll( BUILD_UNIT, 1, 'ohun', -1 )
call SetBuildAll( BUILD_UNIT, 4, 'ogru', -1 )
call SetBuildAll( BUILD_UNIT, 4, 'otrb', -1 )
call SetBuildAll( BUILD_UNIT, 5, 'owtw', -1 )
call SetBuildAll( BUILD_UNIT, 6, 'owtw', -1 )
call SetBuildAll( BUILD_UNIT, 2, 'nw2w', -1 )
call SetBuildAll( BUILD_UNIT, 1, 'ofrt', -1 )
call SetBuildAll( BUILD_UNIT, 1, 'ocat', -1 )
call SetBuildAll( BUILD_UNIT, 1, 'orai', -1 )
call SetBuildAll( BUILD_UNIT, 5, 'otrb', -1 )
call SetBuildAll( BUILD_UNIT, 7, 'owtw', -1 )
call SetBuildAll( BUILD_UNIT, 1, 'odoc', -1 )
call SetBuildAll( BUILD_UNIT, 5, 'ogru', -1 )
call SetBuildAll( BUILD_UNIT, 3, 'npgf', -1 )
call SetBuildAll( BUILD_UNIT, 1, 'owyv', -1 )
call SetBuildAll( BUILD_UNIT, 3, 'nw2w', -1 )
call SetBuildAll( BUILD_UNIT, 2, 'orai', -1 )
call SetBuildAll( BUILD_UNIT, 2, 'ohun', -1 )
call SetBuildAll( BUILD_UNIT, 6, 'ogru', -1 )
call SetBuildAll( BUILD_UNIT, 1, 'otto', -1 )
call SetBuildAll( BUILD_UNIT, 1, 'otau', -1 )
call SetBuildAll( BUILD_UNIT, 6, 'otrb', -1 )
call SetBuildAll( BUILD_UNIT, 2, 'odoc', -1 )
call SetBuildAll( BUILD_UNIT, 8, 'owtw', -1 )
call SetBuildAll( BUILD_UNIT, 2, 'owyv', -1 )
call SetBuildAll( BUILD_UNIT, 3, 'ohun', -1 )
call SetBuildAll( BUILD_UNIT, 3, 'orai', -1 )
call SetBuildAll( BUILD_UNIT, 2, 'ocat', -1 )
call SetBuildAll( BUILD_UNIT, 7, 'ogru', -1 )
call SetBuildAll( BUILD_UNIT, 2, 'otau', -1 )
call SetBuildAll( BUILD_UNIT, 3, 'owyv', -1 )
endfunction
//=================================================================================================
// UTILITY FUNCTIONS
//=================================================================================================
function OneHarvestLoop takes nothing returns nothing
call ClearHarvestAI()
call HarvestGold(0,GoldWorkers)
call HarvestWood(0,WoodWorkers)
endfunction
function GuardUpdate takes nothing returns nothing
call FillGuardPosts()
call ReturnGuardPosts()
endfunction
function StartHarvestLoop takes nothing returns nothing
call OneHarvestLoop()
call GuardUpdate()
call StaggerSleep(1,2)
loop
call OneHarvestLoop()
call GuardUpdate()
call Sleep(2)
endloop
endfunction
//=================================================================================================
// MAIN FUNCTION
//=================================================================================================
function main takes nothing returns nothing
// call DisplayTextToPlayer(Dbg_plr,0,0,"Script received")
call InitAI()
call InitOptions()
call BuildPriorities()
//call DisplayTextToPlayer(Dbg_plr,0,0,"AI priorities set")
call StartThread(function StartHarvestLoop)
call PlayGame()
endfunction