HomeUser Control Panel (unavailable in archive)ForumsTutorialsArt GalleryResourcesMaps

Attack commands problems in my script

05-19-2004, 03:28 PM#1
anctan
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
endfunction

The 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?