home *** CD-ROM | disk | FTP | other *** search
-
- // these macros get expanded on the host if the @1 army is AI controlled
-
-
- // @1 = color of army to do AI for, @2 = enemy color,
- // @3 = this colors owner number, @4 = enemy colors owner numbers
- // @5 = action number for attcking this enemy
- macro koth_enemy_ai 5
- {
- if @1TakeHill testvar hillowner = @4 then
- setvar @1Action @5,
- order @1sarge1 follow @2sarge1 inmode attack,
- order @1 group 1 follow @1sarge1 inmode defend,
- order @1 group 2 follow @2sarge1 inmode attack,
- order @1 group 3 follow @2sarge1 inmode attack,
- order @1 group 4 follow @2sarge1 inmode attack,
- order @1 group 5 follow @2sarge1 inmode attack,
- trigger @1StartTimeOut
- }
-
- // @1 = color of army to do AI for, @2-@4 = other colors,
- // @5 = this colors owner number, @6-8 = other colors owner numbers
- macro koth_ai_macro 8
- {
- // This variable holds the current action for @1
- // 0 means no action, 1 means goto hill, 2 means get powerups, 3 means defend hill,
- // 4 means attack @2 sarge, 5 means attack @3 sarge, 6 means attack @4 sarge
- variable @1Action 0
-
- expand koth_enemy_ai ( @1 @2 @5 @6 4 )
- expand koth_enemy_ai ( @1 @3 @5 @7 5 )
- expand koth_enemy_ai ( @1 @4 @5 @8 6 )
-
- if startup1 then
- triggerdelay 1000 @1ChooseNewAction,
- triggerdelay 2000 @1RegularOrders
-
- if @1ChooseNewAction then
- setvar @1Action 0,
- trigger @1CheckIfOnHill,
- trigger @1CheckIfHillEmpty,
- trigger @1ChoseAction
-
- // if it's time to choose a new action but we are currently owning the hill then
- // we should always stay on the hill
-
- if @1CheckIfOnHill testvar @1Action = 0 and hillowner = @5 then
- trigger @1DefendHill
-
- // if it's time to choose a new action and the hill is not owned then head straight for it
-
- if @1CheckIfHillEmpty testvar @1Action = 0 and hillowner = 0 then
- trigger @1GotoHill
-
- // if @1 has no current action then pick an action
- // ideally we would base this on how well armed we are
- if @1ChooseAction testvar @1Action = 0 then random
- trigger @1TakeHill,
- trigger @1GetPowerUps
-
- // these events setup the @1Action variable and do the actions
-
- if @1GotoHill then
- setvar @1Action 1,
- order @1sarge1 goto @1hill inmode attack,
- order @1 group 1 follow @1sarge1 inmode defend,
- order @1 group 2 goto @1hill inmode attack,
- order @1 group 3 goto @1hill inmode attack,
- order @1 group 4 goto @1hill inmode attack,
- order @1 group 5 goto @1hill inmode attack,
- trigger @1StartTimeOut
-
- if @1GetPowerUps then
- setvar @1Action 2,
- order @1sarge1 goto @1hill inmode attack,
- order @1 group 1 follow @1sarge1 inmode defend,
- order @1 group 2 goto @1hill inmode attack,
- order @1 group 3 goto @1hill inmode attack,
- order @1 group 4 goto @1hill inmode attack,
- order @1 group 5 goto @1hill inmode attack,
- trigger @1StartTimeOut
-
- if @1DefendHill then
- setvar @1Action 3,
- order @1sarge1 goto @1hill inmode attack,
- order @1 group 1 follow @1sarge1 inmode defend,
- order @1 group 2 goto @1hill inmode defend,
- order @1 group 3 goto @1hill inmode defend,
- order @1 group 4 goto @1hill inmode defend,
- order @1 group 5 goto @1hill inmode defend,
- trigger @1StartTimeOut
-
- // these events chose a new action if we get on the hill
-
- if hillOwnerChanged then
- trigger @1ChooseNewAction
-
- // these events choose new actions if a sarge is killed
-
- if killed @1sarge1 then
- triggerdelay 5000 @1GetPowerups
-
- // these are the standing order regardless of what mode sarge is in
-
- if @1RegularOrders then
- order @1 group 7 goto @1base inmode defend,
- triggerdelay 5000 @1RegularOrders
-
- // timeout code - if mode has not changed for a while then change it
-
- variable @1TimeOutVar 0
- variable @1LastTimeOutVar 1
-
- if @1StartTimeOut then
- addvar @1TimeOutVar 1,
- triggerdelay 120000 @1CheckTimeOut
-
- if @1CheckTimeOut testvar @1TimeOutVar = @1LastTimeOutVar then
- trigger @1ChooseNewAction
-
- if @1CheckTimeOut testvar @1TimeOutVar <> @1LastTimeOutVar then
- addvar @1LastTimeOutVar 1
- }