| 05-19-2004, 03:28 PM | #1 |
Hi. I'm currently working on one of my maps.AI is intended. Here's the script which the map uses: Code:
//==================================================
// Campaign1/map2 -- harpies -- AI Script
//========================================================
globals
player user = Player(0)
player blue = Player(9)
constant integer HARPY_SCOUT = 'nhar'
constant integer HARPY_ROGUE = 'nhrr'
constant integer HARPY_WITCH = 'nhrw'
constant integer HARPY_HAG = 'nhrh'
constant integer HARPY_QUEEN = 'nhrq'
integer ks = 0
integer kr = 0
integer kw = 0
integer kh = 0
integer khb = 0
integer khc = 0
integer kq = 0
integer kqb = 0
integer wave1 = 0
integer wave2 = 0
integer wave3 = 0
endglobals
//========================================================
// downto_zero
//========================================================
function downto_zero takes nothing returns nothing
set ks = 0
set kr = 0
set kw = 0
set kh = 0
set khb = 0
set khc = 0
set kq = 0
set kqb = 0
set wave1 = 0
set wave2 = 0
set wave3 = 0
endfunction
//========================================================
// main
//========================================================
function main takes nothing returns nothing
local integer c = 0
call CampaignAI(PIG_FARM,null)
call SetReplacements(0,0,0)
call CampaignDefenderEx( 0,2,0, HARPY_QUEEN )
call CampaignDefenderEx( 0,2,0, HARPY_HAG )
call CampaignDefenderEx( 0,2,0, HARPY_WITCH )
call CampaignDefenderEx( 0,2,0, HARPY_ROGUE )
call CampaignDefenderEx( 0,2,0, HARPY_SCOUT )
loop
set c = c + 1
//*** WAVE 1 ***
call InitAssaultGroup()
call CampaignAttackerEx( 0,3,0, HARPY_SCOUT )
call CampaignAttackerEx( 0,1,0, HARPY_ROGUE )
call SuicideOnPlayer(M2,user)
//*** WAVE 2 ***
call InitAssaultGroup()
call CampaignAttackerEx( 0,6,0, HARPY_SCOUT )
call CampaignAttackerEx( 0,3,0, HARPY_ROGUE )
call SuicideOnPlayer(M3,user)
//*** WAVE 3 ***
call InitAssaultGroup()
call CampaignAttackerEx( 0,4,0, HARPY_WITCH )
call CampaignAttackerEx( 0,1,0, HARPY_QUEEN )
call SuicideOnPlayer(M4,user)
if c == 2 then
set ks = ks + 2
set kh = kh + 2
set kq = kq + 1
set wave1 = 220 //+20 secs
elseif c == 3 then
set ks = ks + 2
set kh = kh + 2
set kq = kq + 1
set wave1 = wave1 + 220 //+20 secs
elseif c == 4 then
set ks = ks + 2
set kh = kh + 1
set wave1 = wave1 + 110 //+20 secs
endif
//*** WAVE 4 ***
call InitAssaultGroup()
call CampaignAttackerEx( 0,2+ks,0, HARPY_SCOUT )
call CampaignAttackerEx( 0,1+kh,0, HARPY_HAG )
call CampaignAttackerEx( 0,1+kq,0, HARPY_QUEEN )
call SuicideOnPlayer(180+wave1,user)
if c == 2 then
set kr = kr - 2
set kw = kw + 2
set khb = khb - 1
set wave2 = -50
elseif c == 3 then
set kr = kr + 3
set kw = kw + 2
set khb = khb + 3
set wave2 = wave2 + 300
elseif c == 4 then
set kr = kr - 1
set kw = kw + 3
set wave2 = wave2 + 60
endif
//*** WAVE 5 ***
call InitAssaultGroup()
call CampaignAttackerEx( 0,5+kr,0, HARPY_ROGUE )
call CampaignAttackerEx( 0,2+kw,0, HARPY_WITCH )
call CampaignAttackerEx( 0,2+khb,0, HARPY_HAG )
call SuicideOnPlayer(360+wave2,user)
if c == 2 then
set khc = khc + 2
set kqb = kqb + 2
set wave3 = 280
elseif c == 3 then
set khc = khc + 2
set kqb = kqb + 1
set wave3 = wave3 + 200
elseif c == 4 then
set khc = khc + 2
set kqb = kqb + 1
set wave3 = wave3 + 200
endif
//*** WAVE 6 ***
call InitAssaultGroup()
call CampaignAttackerEx( 0,2+khc,0, HARPY_HAG )
call CampaignAttackerEx( 0,2+kqb,0, HARPY_QUEEN )
call SuicideOnPlayer(240+wave3,user)
//*** WAVE 7 ***
call InitAssaultGroup()
call CampaignAttackerEx( 0,8,0, HARPY_SCOUT )
call CampaignAttackerEx( 0,5,0, HARPY_HAG )
call CampaignAttackerEx( 0,2,0, HARPY_QUEEN )
call SuicideOnPlayer(M9,user)
if c == 4 then
set c = 0
call downto_zero()
endif
endloop
endfunctionThe script works but there are some problems. The computer ocassionally breaks off the attack and returns the assault group back to base to remain there dormant forever. I'm not enough experienced in AI-ing and have no idea where the problem could be. Any help? |
