-
Content Count
641 -
Joined
-
Last visited
Content Type
Profiles
Forums
Blogs
Calendar
Posts posted by X69RZX
-
-
I think the text does add some bulk, but I don't know exactly how much. One could assume each character is equal to approximately 2bytes, IIRC. I think the strings themselves, like each block, has a more direct bearing on the size. Perhaps you will need to cut the fat, and try to condense any blocks which you can, to preserve that precious file space. At least untill we can get some love on upping the memory allocation of IGOR.(not holding my breath)
-
In case anyone is interested in the raw script, here is the text.
Group: <Default>
Comment:
Trigger Event:
The simulation is starting.
Responses:
Set Enemy Base to (Base (A random integer between 0 and 3)).
Do not end the game automatically when there are no players left.
Change the maximum spotting distance to 140.
Group: <Default>
Comment:
teleport
Trigger Event:
1 second(s) elapsed.
Responses:
Teleport all members of Platoon E to Enemy Base.
Call <set player base> after this block.
Set Player Company to (The player-friendly company).
Set Player Platoon to (The player-controlled platoon).
Display "AI initialized." to all players.
Set init bounce timer to expire in 5 second(s).
Set E company initial size to (The number of active actors on Company E).
Set Player company initial size to (The number of active actors on Player Company).
Call <team 1 assert> after this block.
Enable the <E1 combat logic> script blocks.
Call <team 2 assert> after this block.
Enable the <E2 combat logic> script blocks.
Call <team 3 assert> after this block.
Enable the <E3 combat logic> script blocks.
Set E1 down flag to false.
Set E2 down flag to false.
Set E3 down flag to false.
Group: <Default>
Comment:
E1 asserting
Trigger Event:
E1 asserting timer has expired.
Responses:
Allow this block to be reactivated.
Set E1 asserting flag to false.
Group: <Default>
Comment:
E2 asserting
Trigger Event:
E2 asserting timer has expired.
Responses:
Allow this block to be reactivated.
Set E2 asserting flag to false.
Group: <Default>
Comment:
bounce enable
Trigger Event:
init bounce timer has expired.
Responses:
Enable the <bounce> script blocks.
Group: <Default>
Comment:
E1 hold
Trigger Event:
E1 moving timer has expired.
Responses:
Allow this block to be reactivated.
Call <plan c.1> after this block.
Group: <Default>
Comment:
E1 reset
Trigger Event:
E1 hold timer has expired.
Responses:
Allow this block to be reactivated.
Skip the remaining responses if (The state of E1 Combat Flag).
Call <team 1 assert> after this block.
Group: <Default>
Comment:
E2 hold
Trigger Event:
E2 moving timer has expired.
Responses:
Allow this block to be reactivated.
Call <plan c.2> after this block.
Group: <Default>
Comment:
E2 reset
Trigger Event:
E2 hold timer has expired.
Responses:
Allow this block to be reactivated.
Skip the remaining responses if (The state of E2 Combat Flag).
Call <team 2 assert> after this block.
Group: <Default>
Comment:
E3 asserting
Trigger Event:
E3 asserting timer has expired.
Responses:
Allow this block to be reactivated.
Set E3 asserting flag to false.
Group: <Default>
Comment:
E3 hold
Trigger Event:
E3 moving timer has expired.
Responses:
Allow this block to be reactivated.
Call <plan c.3> after this block.
Group: <Default>
Comment:
E3 reset
Trigger Event:
E3 hold timer has expired.
Responses:
Allow this block to be reactivated.
Skip the remaining responses if (The state of E3 Combat Flag).
Call <team 3 assert> after this block.
Group: <Default>
Comment:
set player actor
Trigger Event:
2 second(s) elapsed.
Responses:
Allow this block to be reactivated.
Use <loop for player actor> to loop over all actors in Player Company after this block.
Group: <Default>
Comment:
score display
Trigger Event:
30 second(s) elapsed.
Responses:
Allow this block to be reactivated.
Display "SCORE........................................................" to all players.
Display ("Enemy Team has " + ((((The number of active actors on Company E) as text) + " players, ") + (((The result of (The value of E company initial size) minus (The number of active actors on Company E)) as text) + (" dead, " + ("with " + (((The score for Company E) as text) + " kills.")))))) to all players.
Display ("Player team has " + ((((The number of active actors on Player Company) as text) + " players, ") + ((((The result of (The value of Player company initial size) minus (The number of active actors on Player Company)) as text) + " dead, ") + ("with " + (((The score for Player Company) as text) + " kills."))))) to all players.
Group: <Default>
Comment:
E1 down
Trigger Event:
All members of Team E1 have fled or been killed.
Responses:
Disable the <E1 combat logic> script blocks.
Cancel E1 asserting timer.
Cancel E1 combat timer.
Cancel E1 hold timer.
Cancel E1 moving timer.
Set E1 down flag to true.
Set plan a.0.1 flag to false.
Set plan a.1.1 flag to false.
Set plan a.2.1 flag to false.
Set plan a.3.1 flag to false.
Group: <Default>
Comment:
E2 down
Trigger Event:
All members of Team E2 have fled or been killed.
Responses:
Disable the <E2 combat logic> script blocks.
Cancel E2 asserting timer.
Cancel E2 combat timer.
Cancel E2 hold timer.
Cancel E2 moving timer.
Set E2 down flag to true.
Set plan a.0.2 flag to false.
Set plan a.1.2 flag to false.
Set plan a.2.2 flag to false.
Set plan a.3.2 flag to false.
Group: <Default>
Comment:
E3 down
Trigger Event:
All members of Team E3 have fled or been killed.
Responses:
Disable the <E3 combat logic> script blocks.
Cancel E3 asserting timer.
Cancel E3 combat timer.
Cancel E3 hold timer.
Cancel E3 moving timer.
Set E3 down flag to true.
Set plan a.0.3 flag to false.
Set plan a.1.3 flag to false.
Set plan a.2.3 flag to false.
Set plan a.3.3 flag to false.
Group: <Default>
Comment:
win?
Trigger Event:
All actors in Company E have fled or been killed.
Responses:
If ((The score for Player Company) is less than (The score for Company E)), stop and queue a call to <lose by score>.
If ((The score for Player Company) is equal to (The score for Company E)), stop and queue a call to <tie>.
End the game and display "You win." to members of Player Company and "<Uninitialized>" to all others.
Group: <Default>
Comment:
win?
Trigger Event:
All actors in Player Company have fled or been killed.
Responses:
If ((The score for Player Company) is equal to 0), stop and queue a call to <lose by score>.
If ((The score for Player Company) is less than (The score for Company E)), stop and queue a call to <lose by score>.
If ((The score for Player Company) is equal to (The score for Company E)), stop and queue a call to <tie>.
End the game and display "You loose."
Group: <Default>
Comment:
set score
Trigger Event:
2 second(s) elapsed.
Responses:
Allow this block to be reactivated.
Set the score for Company E to (The number of kills for Company E).
Set the score for Player Company to (The number of kills for Player Company).
Group: <Default>
Comment:
check for campers
Trigger Event:
40 second(s) elapsed.
Responses:
Continue executing responses if ((The number (The number of members of Player Company within 50 meter(s) of Player Base)) is greater than (The result of (The number (The number of active actors on Player Company)) divided by 2)).
Set Campers flag to true.
Use <campers> to loop over all actors in Company E after this block.
Change the maximum spotting distance to 160.
Group: <Default>
Comment:
check for adrenaline rush
Trigger Event:
3 second(s) elapsed.
Responses:
Allow this block to be reactivated.
Continue executing responses if ((The number of active actors on Company E) is equal to 1).
Use <adrenaline rush> to loop over all actors in Company E after this block.
Prevent this block from being reactivated.
Group: <E1 combat logic>
Comment:
query E1 combat over
Trigger Event:
E1 combat timer has expired.
Responses:
Allow this block to be reactivated.
Cancel E1 combat timer.
Set E1 combat timer to expire in (A random number between 5 and 15) second(s).
Continue executing responses if (The inverse of ((Player Actor is being heard by E1 actors) or (Player Actor is being seen by E1 actors))).
Cancel E1 combat timer.
Set E1 Combat Flag to false.
Set E1 flanking flag to false.
Disable the <E1 flank> script blocks.
Call <team 1 assert> after this block.
Group: <E1 combat logic>
Comment:
loop trigger
Trigger Event:
2 second(s) elapsed.
Responses:
Allow this block to be reactivated.
Use <E1 combat query> to loop over all actors in Team E1 after this block.
Group: <E1 combat logic>
Comment:
E1 check for back-up
Trigger Event:
3 second(s) elapsed.
Responses:
Allow this block to be reactivated.
Skip the remaining responses if (The state of E1 Combat Flag).
Skip the remaining responses if ((The state of E1 flanking flag) and (1 is equal to (A random integer between 1 and 5))).
Continue executing responses if (((The state of E2 Combat Flag) or (The state of E3 Combat Flag)) and (1 is equal to (A random integer between 1 and 5))).
If (1 is equal to (A random integer between 1 and 10)), stop and queue a call to <team 1 assert>.
Set E1 Combat Flag to true.
Cancel execution of any plan assigned to Team E1.
Assign Plan B to Team E1 and execute.
Cancel E1 hold timer.
Cancel E1 moving timer.
Cancel E1 asserting timer.
Set E1 combat timer to expire in (A random number between 15 and 35) second(s).
Set E1 @ B0 flag to false.
Set E1 @ B1 flag to false.
Set E1 @ B2 flag to false.
Set E1 @ B3 flag to false.
Set E1 asserting flag to false.
Set E1 moving flag to false.
Set E1 flanking flag to false.
Group: <E1 combat query>
Comment:
query E1 combat
Trigger Event:
An actor loop is ready to process E1 actors.
Responses:
Allow this block to be reactivated.
Skip the remaining responses if (The state of E1 Combat Flag).
Skip the remaining responses if ((The state of E1 flanking flag) and (1 is equal to (A random integer between 1 and 3))).
Continue executing responses if ((Player Actor is being heard by E1 actors) or (Player Actor is being seen by E1 actors)).
Set E1 Combat Flag to true.
Cancel execution of any plan assigned to Team E1.
Assign Plan B to Team E1 and execute.
Cancel E1 asserting timer.
Cancel E1 hold timer.
Cancel E1 moving timer.
Set E1 combat timer to expire in (A random number between 10 and 25) second(s).
Set E1 @ B0 flag to false.
Set E1 @ B1 flag to false.
Set E1 @ B2 flag to false.
Set E1 @ B3 flag to false.
Set E1 asserting flag to false.
Set E1 moving flag to false.
Set E1 flanking flag to false.
Enable the <E1 flank> script blocks.
Set plan a.0.1 flag to false.
Set plan a.1.1 flag to false.
Set plan a.2.1 flag to false.
Set plan a.3.1 flag to false.
Group: <E1 flank>
Comment:
E1 flank
Trigger Event:
3 second(s) elapsed.
Responses:
Allow this block to be reactivated.
Skip the remaining responses if (The state of E1 flanking flag).
Skip the remaining responses if ((The state of E2 flanking flag) and (The state of E3 flanking flag)).
Continue executing responses if (((The number of members of Team E1 within 30 meter(s) of E2 actors) is greater than or equal to 1) and (((The number of members of Team E1 within 30 meter(s) of E3 actors) is greater than or equal to 1) and (The inverse of (Player Actor is being seen by E1 actors)))).
Set E1 flanking flag to true.
Set E1 Combat Flag to false.
Set E1 asserting flag to false.
Set E1 moving flag to false.
Set E1 @ B0 flag to false.
Set E1 @ B1 flag to false.
Set E1 @ B2 flag to false.
Set E1 @ B3 flag to false.
Cancel E1 asserting timer.
Cancel E1 combat timer.
Cancel E1 hold timer.
Cancel E1 moving timer.
Call <team 1 assert> after this block.
Group: <E2 combat logic>
Comment:
loop trigger
Trigger Event:
1 second(s) elapsed.
Responses:
Allow this block to be reactivated.
Use <E2 combat query> to loop over all actors in Team E2 after this block.
Group: <E2 combat logic>
Comment:
query E2 combat over
Trigger Event:
E2 combat timer has expired.
Responses:
Allow this block to be reactivated.
Cancel E2 combat timer.
Set E2 combat timer to expire in (A random number between 5 and 15) second(s).
Continue executing responses if (The inverse of ((Player Actor is being heard by E2 actors) or (Player Actor is being seen by E2 actors))).
Cancel E2 combat timer.
Set E2 Combat Flag to false.
Set E2 flanking flag to false.
Disable the <E2 flank> script blocks.
Call <team 2 assert> after this block.
Group: <E2 combat logic>
Comment:
E2 check for back-up
Trigger Event:
3 second(s) elapsed.
Responses:
Allow this block to be reactivated.
Skip the remaining responses if (The state of E2 Combat Flag).
Skip the remaining responses if ((The state of E2 flanking flag) and (1 is equal to (A random integer between 1 and 5))).
Continue executing responses if (((The state of E1 Combat Flag) or (The state of E3 Combat Flag)) and (1 is equal to (A random integer between 1 and 5))).
If (1 is equal to (A random integer between 1 and 10)), stop and queue a call to <team 2 assert>.
Set E2 Combat Flag to true.
Cancel execution of any plan assigned to Team E2.
Assign Plan B to Team E2 and execute.
Cancel E2 hold timer.
Cancel E2 moving timer.
Cancel E2 asserting timer.
Set E2 combat timer to expire in (A random number between 15 and 35) second(s).
Set E2 @ B0 flag to false.
Set E2 @ B1 flag to false.
Set E2 @ B2 flag to false.
Set E2 @ B3 flag to false.
Set E2 asserting flag to false.
Set E2 moving flag to false.
Set E2 flanking flag to false.
Group: <E2 combat query>
Comment:
query E2 combat
Trigger Event:
An actor loop is ready to process E2 actors.
Responses:
Allow this block to be reactivated.
Skip the remaining responses if (The state of E2 Combat Flag).
Skip the remaining responses if ((The state of E2 flanking flag) and (1 is equal to (A random integer between 1 and 3))).
Continue executing responses if ((Player Actor is being heard by E2 actors) or (Player Actor is being seen by E2 actors)).
Set E2 Combat Flag to true.
Cancel execution of any plan assigned to Team E2.
Assign Plan B to Team E2 and execute.
Cancel E2 hold timer.
Cancel E2 moving timer.
Cancel E2 asserting timer.
Set E2 combat timer to expire in (A random number between 10 and 25) second(s).
Set E2 @ B0 flag to false.
Set E2 @ B1 flag to false.
Set E2 @ B2 flag to false.
Set E2 @ B3 flag to false.
Set E2 asserting flag to false.
Set E2 moving flag to false.
Set E2 flanking flag to false.
Enable the <E2 flank> script blocks.
Set plan a.0.2 flag to false.
Set plan a.1.2 flag to false.
Set plan a.2.2 flag to false.
Set plan a.3.2 flag to false.
Group: <E2 flank>
Comment:
E2 flank
Trigger Event:
3 second(s) elapsed.
Responses:
Allow this block to be reactivated.
Skip the remaining responses if (The state of E2 flanking flag).
Skip the remaining responses if ((The state of E1 flanking flag) and (The state of E3 flanking flag)).
Continue executing responses if ((((The number of members of Team E2 within 30 meter(s) of E1 actors) is greater than or equal to 1) and ((The number of members of Team E2 within 30 meter(s) of E3 actors) is greater than or equal to 1)) and (The inverse of (Player Actor is being seen by E2 actors))).
Set E2 flanking flag to true.
Set E2 asserting flag to false.
Set E2 Combat Flag to false.
Set E2 moving flag to false.
Set E2 @ B0 flag to false.
Set E2 @ B1 flag to false.
Set E2 @ B2 flag to false.
Set E2 @ B3 flag to false.
Cancel E2 asserting timer.
Cancel E2 combat timer.
Cancel E2 hold timer.
Cancel E2 moving timer.
Call <team 2 assert> after this block.
Group: <E3 combat logic>
Comment:
loop trigger
Trigger Event:
1 second(s) elapsed.
Responses:
Allow this block to be reactivated.
Use <E3 combat query> to loop over all actors in Team E3 after this block.
Group: <E3 combat logic>
Comment:
query E3 combat over
Trigger Event:
E3 combat timer has expired.
Responses:
Allow this block to be reactivated.
Cancel E3 combat timer.
Set E3 combat timer to expire in (A random number between 5 and 15) second(s).
Continue executing responses if (The inverse of ((Player Actor is being heard by E3 actors) or (Player Actor is being seen by E3 actors))).
Cancel E3 combat timer.
Set E3 Combat Flag to false.
Set E3 flanking flag to false.
Disable the <E3 flank> script blocks.
Call <team 3 assert> after this block.
Group: <E3 combat logic>
Comment:
E3 check for back-up
Trigger Event:
3 second(s) elapsed.
Responses:
Allow this block to be reactivated.
Skip the remaining responses if (The state of E3 Combat Flag).
Skip the remaining responses if ((The state of E3 flanking flag) and (1 is equal to (A random integer between 1 and 5))).
Continue executing responses if (((The state of E1 Combat Flag) or (The state of E2 Combat Flag)) and (1 is equal to (A random integer between 1 and 5))).
If (1 is equal to (A random integer between 1 and 10)), stop and queue a call to <team 3 assert>.
Set E3 Combat Flag to true.
Cancel execution of any plan assigned to Team E3.
Assign Plan B to Team E3 and execute.
Cancel E3 hold timer.
Cancel E3 moving timer.
Cancel E3 asserting timer.
Set E3 combat timer to expire in (A random number between 15 and 35) second(s).
Set E3 @ B0 flag to false.
Set E3 @ B1 flag to false.
Set E3 @ B2 flag to false.
Set E3 @ B3 flag to false.
Set E3 asserting flag to false.
Set E3 moving flag to false.
Set E3 flanking flag to false.
Group: <E3 combat query>
Comment:
query E3 combat
Trigger Event:
An actor loop is ready to process E3 actors.
Responses:
Allow this block to be reactivated.
Skip the remaining responses if (The state of E3 Combat Flag).
Skip the remaining responses if ((The state of E3 flanking flag) and (1 is equal to (A random integer between 1 and 3))).
Continue executing responses if ((Player Actor is being heard by E3 actors) or (Player Actor is being seen by E3 actors)).
Set E3 Combat Flag to true.
Cancel execution of any plan assigned to Team E3.
Assign Plan B to Team E3 and execute.
Cancel E3 hold timer.
Cancel E3 moving timer.
Cancel E3 asserting timer.
Set E3 combat timer to expire in (A random number between 10 and 25) second(s).
Set E3 @ B0 flag to false.
Set E3 @ B1 flag to false.
Set E3 @ B2 flag to false.
Set E3 @ B3 flag to false.
Set E3 asserting flag to false.
Set E3 moving flag to false.
Set E3 flanking flag to false.
Enable the <E3 flank> script blocks.
Set plan a.0.3 flag to false.
Set plan a.1.3 flag to false.
Set plan a.2.3 flag to false.
Set plan a.3.3 flag to false.
Group: <E3 flank>
Comment:
E3 flank
Trigger Event:
3 second(s) elapsed.
Responses:
Allow this block to be reactivated.
Skip the remaining responses if (The state of E3 flanking flag).
Skip the remaining responses if ((The state of E1 flanking flag) and (The state of E2 flanking flag)).
Continue executing responses if ((((The number of members of Team E3 within 30 meter(s) of E1 actors) is greater than or equal to 1) and ((The number of members of Team E3 within 30 meter(s) of E2 actors) is greater than or equal to 1)) and (The inverse of (Player Actor is being seen by E3 actors))).
Set E3 flanking flag to true.
Set E3 asserting flag to false.
Set E3 Combat Flag to false.
Set E3 moving flag to false.
Set E3 @ B0 flag to false.
Set E3 @ B1 flag to false.
Set E3 @ B2 flag to false.
Set E3 @ B3 flag to false.
Cancel E3 asserting timer.
Cancel E3 combat timer.
Cancel E3 hold timer.
Cancel E3 moving timer.
Call <team 3 assert> after this block.
Group: <adrenaline rush>
Comment:
Trigger Event:
An actor loop is ready to process Last Man Standing.
Responses:
Boost the stats for Last Man Standing.
Change the maximum spotting distance to 150.
Replenish the inventory of Last Man Standing.
Group: <bounce>
Comment:
E1 @ B0
Trigger Event:
A member of Team E1 is within 15 meter(s) of Base 0.
Responses:
Allow this block to be reactivated.
Skip the remaining responses if (((The state of E1 @ B0 flag) or (The state of E1 Combat Flag)) or (The state of E1 asserting flag)).
Continue executing responses if (The state of E1 moving flag).
Set E1 moving flag to false.
Cancel E1 hold timer.
Cancel E1 moving timer.
Cancel E1 asserting timer.
Set E1 asserting timer to expire in 8 second(s).
Set E1 @ B0 flag to true.
Set E1 @ B1 flag to false.
Set E1 @ B2 flag to false.
Set E1 @ B3 flag to false.
Set E1 asserting flag to true.
If (1 is equal to (A random integer between 1 and 3)), stop and queue a call to <plan a.1.1>.
If (1 is equal to (A random integer between 1 and 2)), stop and queue a call to <plan a.2.1>.
Call <plan a.3.1> after this block.
Group: <bounce>
Comment:
E1 @ B1
Trigger Event:
A member of Team E1 is within 15 meter(s) of Base 1.
Responses:
Allow this block to be reactivated.
Skip the remaining responses if ((The state of E1 Combat Flag) or ((The state of E1 @ B1 flag) or (The state of E1 asserting flag))).
Continue executing responses if (The state of E1 moving flag).
Set E1 moving flag to false.
Cancel E1 hold timer.
Cancel E1 moving timer.
Cancel E1 asserting timer.
Set E1 asserting timer to expire in 8 second(s).
Set E1 @ B1 flag to true.
Set E1 @ B0 flag to false.
Set E1 @ B2 flag to false.
Set E1 @ B3 flag to false.
Set E1 asserting flag to true.
If (1 is equal to (A random integer between 1 and 3)), stop and queue a call to <plan a.0.1>.
If (1 is equal to (A random integer between 1 and 2)), stop and queue a call to <plan a.2.1>.
Call <plan a.3.1> after this block.
Group: <bounce>
Comment:
E1 @ B2
Trigger Event:
A member of Team E1 is within 15 meter(s) of Base 2.
Responses:
Allow this block to be reactivated.
Skip the remaining responses if ((The state of E1 Combat Flag) or ((The state of E1 @ B2 flag) or (The state of E1 asserting flag))).
Continue executing responses if (The state of E1 moving flag).
Set E1 moving flag to false.
Cancel E1 hold timer.
Cancel E1 moving timer.
Cancel E1 asserting timer.
Set E1 asserting timer to expire in 8 second(s).
Set E1 @ B2 flag to true.
Set E1 @ B0 flag to false.
Set E1 @ B1 flag to false.
Set E1 @ B3 flag to false.
Set E1 asserting flag to true.
If (1 is equal to (A random integer between 1 and 3)), stop and queue a call to <plan a.0.1>.
If (1 is equal to (A random integer between 1 and 2)), stop and queue a call to <plan a.1.1>.
Call <plan a.3.1> after this block.
Group: <bounce>
Comment:
E1 @ B3
Trigger Event:
A member of Team E1 is within 15 meter(s) of Base 3.
Responses:
Allow this block to be reactivated.
Skip the remaining responses if ((The state of E1 Combat Flag) or ((The state of E1 @ B3 flag) or (The state of E1 asserting flag))).
Continue executing responses if (The state of E1 moving flag).
Set E1 moving flag to false.
Cancel E1 hold timer.
Cancel E1 moving timer.
Cancel E1 asserting timer.
Set E1 asserting timer to expire in 8 second(s).
Set E1 @ B3 flag to true.
Set E1 @ B0 flag to false.
Set E1 @ B1 flag to false.
Set E1 @ B2 flag to false.
Set E1 asserting flag to true.
If (1 is equal to (A random integer between 1 and 3)), stop and queue a call to <plan a.0.1>.
If (1 is equal to (A random integer between 1 and 2)), stop and queue a call to <plan a.1.1>.
Call <plan a.2.1> after this block.
Group: <bounce>
Comment:
E2 @ B0
Trigger Event:
A member of Team E2 is within 15 meter(s) of Base 0.
Responses:
Allow this block to be reactivated.
Skip the remaining responses if ((The state of E2 Combat Flag) or ((The state of E2 @ B0 flag) or (The state of E2 asserting flag))).
Continue executing responses if (The state of E2 moving flag).
Set E2 moving flag to false.
Cancel E2 hold timer.
Cancel E2 moving timer.
Cancel E2 asserting timer.
Set E2 asserting timer to expire in 8 second(s).
Set E2 @ B0 flag to true.
Set E2 @ B1 flag to false.
Set E2 @ B2 flag to false.
Set E2 @ B3 flag to false.
Set E2 asserting flag to true.
If (1 is equal to (A random integer between 1 and 3)), stop and queue a call to <plan a.1.2>.
If (1 is equal to (A random integer between 1 and 2)), stop and queue a call to <plan a.2.2>.
Call <plan a.3.2> after this block.
Group: <bounce>
Comment:
E2 @ B1
Trigger Event:
A member of Team E2 is within 15 meter(s) of Base 1.
Responses:
Allow this block to be reactivated.
Skip the remaining responses if ((The state of E2 Combat Flag) or ((The state of E2 @ B1 flag) or (The state of E2 asserting flag))).
Continue executing responses if (The state of E2 moving flag).
Set E2 moving flag to false.
Cancel E2 hold timer.
Cancel E2 moving timer.
Cancel E2 asserting timer.
Set E2 asserting timer to expire in 8 second(s).
Set E2 @ B1 flag to true.
Set E2 @ B0 flag to false.
Set E2 @ B2 flag to false.
Set E2 @ B3 flag to false.
Set E2 asserting flag to true.
If (1 is equal to (A random integer between 1 and 3)), stop and queue a call to <plan a.0.2>.
If (1 is equal to (A random integer between 1 and 2)), stop and queue a call to <plan a.2.2>.
Call <plan a.3.2> after this block.
Group: <bounce>
Comment:
E2 @ B2
Trigger Event:
A member of Team E2 is within 15 meter(s) of Base 2.
Responses:
Allow this block to be reactivated.
Skip the remaining responses if ((The state of E2 Combat Flag) or ((The state of E2 @ B2 flag) or (The state of E2 asserting flag))).
Continue executing responses if (The state of E2 moving flag).
Set E2 moving flag to false.
Cancel E2 hold timer.
Cancel E2 moving timer.
Cancel E2 asserting timer.
Set E2 asserting timer to expire in 8 second(s).
Set E2 @ B2 flag to true.
Set E2 @ B0 flag to false.
Set E2 @ B1 flag to false.
Set E2 @ B3 flag to false.
Set E2 asserting flag to true.
If (1 is equal to (A random integer between 1 and 3)), stop and queue a call to <plan a.0.2>.
If (1 is equal to (A random integer between 1 and 2)), stop and queue a call to <plan a.1.2>.
Call <plan a.3.2> after this block.
Group: <bounce>
Comment:
E2 @ B3
Trigger Event:
A member of Team E2 is within 15 meter(s) of Base 3.
Responses:
Allow this block to be reactivated.
Skip the remaining responses if ((The state of E2 Combat Flag) or ((The state of E2 @ B3 flag) or (The state of E2 asserting flag))).
Continue executing responses if (The state of E2 moving flag).
Set E2 moving flag to false.
Cancel E2 hold timer.
Cancel E2 moving timer.
Cancel E2 asserting timer.
Set E2 asserting timer to expire in 8 second(s).
Set E2 @ B3 flag to true.
Set E2 @ B0 flag to false.
Set E2 @ B1 flag to false.
Set E2 @ B2 flag to false.
Set E2 asserting flag to true.
If (1 is equal to (A random integer between 1 and 3)), stop and queue a call to <plan a.0.2>.
If (1 is equal to (A random integer between 1 and 2)), stop and queue a call to <plan a.1.2>.
Call <plan a.2.2> after this block.
Group: <bounce>
Comment:
E3 @ B0
Trigger Event:
A member of Team E3 is within 15 meter(s) of Base 0.
Responses:
Allow this block to be reactivated.
Skip the remaining responses if ((The state of E3 Combat Flag) or ((The state of E3 @ B0 flag) or (The state of E3 asserting flag))).
Continue executing responses if (The state of E3 moving flag).
Set E3 moving flag to false.
Cancel E3 hold timer.
Cancel E3 moving timer.
Cancel E3 asserting timer.
Set E3 asserting timer to expire in 8 second(s).
Set E3 @ B0 flag to true.
Set E3 @ B1 flag to false.
Set E3 @ B2 flag to false.
Set E3 @ B3 flag to false.
Set E3 asserting flag to true.
If true, stop and queue a call to <plan a.1.3>.
If true, stop and queue a call to <plan a.2.3>.
Call <plan a.3.3> after this block.
Group: <bounce>
Comment:
E3 @ B1
Trigger Event:
A member of Team E3 is within 15 meter(s) of Base 1.
Responses:
Allow this block to be reactivated.
Skip the remaining responses if ((The state of E3 Combat Flag) or ((The state of E3 @ B1 flag) or (The state of E3 asserting flag))).
Continue executing responses if (The state of E3 moving flag).
Set E3 moving flag to false.
Cancel E3 hold timer.
Cancel E3 moving timer.
Cancel E3 asserting timer.
Set E3 asserting timer to expire in 8 second(s).
Set E3 @ B1 flag to true.
Set E3 @ B0 flag to false.
Set E3 @ B2 flag to false.
Set E3 @ B3 flag to false.
Set E3 asserting flag to true.
If (1 is equal to (A random integer between 1 and 3)), stop and queue a call to <plan a.0.3>.
If (1 is equal to (A random integer between 1 and 2)), stop and queue a call to <plan a.2.3>.
Call <plan a.3.3> after this block.
Group: <bounce>
Comment:
E3 @ B2
Trigger Event:
A member of Team E3 is within 15 meter(s) of Base 2.
Responses:
Allow this block to be reactivated.
Skip the remaining responses if ((The state of E3 Combat Flag) or ((The state of E3 @ B2 flag) or (The state of E3 asserting flag))).
Continue executing responses if (The state of E3 moving flag).
Set E3 moving flag to false.
Cancel E3 hold timer.
Cancel E3 moving timer.
Cancel E3 asserting timer.
Set E3 asserting timer to expire in 8 second(s).
Set E3 @ B2 flag to true.
Set E3 @ B0 flag to false.
Set E3 @ B1 flag to false.
Set E3 @ B3 flag to false.
Set E3 asserting flag to true.
If (1 is equal to (A random integer between 1 and 3)), stop and queue a call to <plan a.0.3>.
If (1 is equal to (A random integer between 1 and 2)), stop and queue a call to <plan a.1.3>.
Call <plan a.3.3> after this block.
Group: <bounce>
Comment:
E3 @ B3
Trigger Event:
A member of Team E3 is within 15 meter(s) of Base 3.
Responses:
Allow this block to be reactivated.
Skip the remaining responses if ((The state of E3 Combat Flag) or ((The state of E3 @ B3 flag) or (The state of E3 asserting flag))).
Continue executing responses if (The state of E3 moving flag).
Set E3 moving flag to false.
Cancel E3 hold timer.
Cancel E3 moving timer.
Cancel E3 asserting timer.
Set E3 asserting timer to expire in 8 second(s).
Set E3 @ B3 flag to true.
Set E3 @ B0 flag to false.
Set E3 @ B1 flag to false.
Set E3 @ B2 flag to false.
Set E3 asserting flag to true.
If (1 is equal to (A random integer between 1 and 3)), stop and queue a call to <plan a.0.3>.
If (1 is equal to (A random integer between 1 and 2)), stop and queue a call to <plan a.1.3>.
Call <plan a.2.3> after this block.
Group: <campers>
Comment:
Trigger Event:
An actor loop is ready to process Enemy actors.
Responses:
Skip the remaining responses if (Enemy actors is equal to anti-camper actor).
Allow this block to be reactivated.
Set anti-camper actor to Enemy actors.
Boost the stats for Enemy actors.
Replenish the inventory of Enemy actors.
Group: <loop for player actor>
Comment:
Trigger Event:
An actor loop is ready to process Player Actor.
Responses:
Allow this block to be reactivated.
Continue executing responses if (Player Actor is active).
Group: <lose by score>
Comment:
Trigger Event:
This block has been called directly from the script.
Responses:
End the game and display "You loose."
Group: <plan a.0.1>
Comment:
Trigger Event:
This block has been called directly from the script.
Responses:
Allow this block to be reactivated.
If (The state of E1 @ B0 flag), stop and queue a call to <team 1 assert>.
If (((The state of plan a.0.2 flag) or (The state of plan a.0.3 flag)) and (1 is equal to (A random integer between 1 and 2))), stop and queue a call to <team 1 assert>.
Cancel execution of any plan assigned to Team E1.
Set plan a.0.1 flag to true.
Set plan a.1.1 flag to false.
Set plan a.2.1 flag to false.
Set plan a.3.1 flag to false.
Assign Plan A.0 to Team E1 and execute.
Set E1 moving flag to true.
Set E1 moving timer to expire in (A random number between 20 and 35) second(s).
Set E1 @ B0 flag to false.
Set E1 @ B1 flag to false.
Set E1 @ B2 flag to false.
Set E1 @ B3 flag to false.
Set E1 last plan to 0.
Group: <plan a.0.2>
Comment:
Trigger Event:
This block has been called directly from the script.
Responses:
Allow this block to be reactivated.
If (The state of E2 @ B0 flag), stop and queue a call to <team 2 assert>.
If (((The state of plan a.0.1 flag) or (The state of plan a.0.3 flag)) and (1 is equal to (A random integer between 1 and 2))), stop and queue a call to <team 2 assert>.
Cancel execution of any plan assigned to Team E2.
Set plan a.0.2 flag to true.
Set plan a.1.2 flag to false.
Set plan a.2.2 flag to false.
Set plan a.3.2 flag to false.
Assign Plan A.0 to Team E2 and execute.
Set E2 moving flag to true.
Set E2 moving timer to expire in (A random number between 20 and 35) second(s).
Set E2 @ B0 flag to false.
Set E2 @ B1 flag to false.
Set E2 @ B2 flag to false.
Set E2 @ B3 flag to false.
Set E2 last plan to 0.
Group: <plan a.0.3>
Comment:
Trigger Event:
This block has been called directly from the script.
Responses:
Allow this block to be reactivated.
If (The state of E3 @ B0 flag), stop and queue a call to <team 3 assert>.
If (((The state of plan a.0.1 flag) or (The state of plan a.0.2 flag)) and (1 is equal to (A random integer between 1 and 2))), stop and queue a call to <team 3 assert>.
Cancel execution of any plan assigned to Team E3.
Set plan a.0.3 flag to true.
Set plan a.1.3 flag to false.
Set plan a.2.3 flag to false.
Set plan a.3.3 flag to false.
Assign Plan A.0 to Team E3 and execute.
Set E3 moving flag to true.
Set E3 moving timer to expire in (A random number between 20 and 35) second(s).
Set E3 @ B0 flag to false.
Set E3 @ B1 flag to false.
Set E3 @ B2 flag to false.
Set E3 @ B3 flag to false.
Set E3 last plan to 0.
Group: <plan a.1.1>
Comment:
Trigger Event:
This block has been called directly from the script.
Responses:
Allow this block to be reactivated.
If (The state of E1 @ B1 flag), stop and queue a call to <team 1 assert>.
If (((The state of plan a.1.2 flag) or (The state of plan a.1.3 flag)) and (1 is equal to (A random integer between 1 and 2))), stop and queue a call to <team 1 assert>.
Cancel execution of any plan assigned to Team E1.
Set plan a.1.1 flag to true.
Set plan a.0.1 flag to false.
Set plan a.2.1 flag to false.
Set plan a.3.1 flag to false.
Assign Plan A.1 to Team E1 and execute.
Set E1 moving flag to true.
Set E1 moving timer to expire in (A random number between 20 and 35) second(s).
Set E1 @ B0 flag to false.
Set E1 @ B1 flag to false.
Set E1 @ B2 flag to false.
Set E1 @ B3 flag to false.
Set E1 last plan to 1.
Group: <plan a.1.2>
Comment:
Trigger Event:
This block has been called directly from the script.
Responses:
Allow this block to be reactivated.
If (The state of E2 @ B1 flag), stop and queue a call to <team 2 assert>.
If (((The state of plan a.1.1 flag) or (The state of plan a.1.3 flag)) and (1 is equal to (A random integer between 1 and 2))), stop and queue a call to <team 2 assert>.
Cancel execution of any plan assigned to Team E2.
Set plan a.1.2 flag to true.
Set plan a.0.2 flag to false.
Set plan a.2.2 flag to false.
Set plan a.3.2 flag to false.
Assign Plan A.1 to Team E2 and execute.
Set E2 moving flag to true.
Set E2 moving timer to expire in (A random number between 20 and 35) second(s).
Set E2 @ B0 flag to false.
Set E2 @ B1 flag to false.
Set E2 @ B2 flag to false.
Set E2 @ B3 flag to false.
Set E2 last plan to 1.
Group: <plan a.1.3>
Comment:
Trigger Event:
This block has been called directly from the script.
Responses:
Allow this block to be reactivated.
If (The state of E3 @ B1 flag), stop and queue a call to <team 3 assert>.
If (((The state of plan a.1.1 flag) or (The state of plan a.1.2 flag)) and (1 is equal to (A random integer between 1 and 2))), stop and queue a call to <team 3 assert>.
Cancel execution of any plan assigned to Team E3.
Set plan a.1.3 flag to true.
Set plan a.0.3 flag to false.
Set plan a.2.3 flag to false.
Set plan a.3.3 flag to false.
Assign Plan A.1 to Team E3 and execute.
Set E3 moving flag to true.
Set E3 moving timer to expire in (A random number between 20 and 35) second(s).
Set E3 @ B0 flag to false.
Set E3 @ B1 flag to false.
Set E3 @ B2 flag to false.
Set E3 @ B3 flag to false.
Set E3 last plan to 1.
Group: <plan a.2.1>
Comment:
Trigger Event:
This block has been called directly from the script.
Responses:
Allow this block to be reactivated.
If (The state of E1 @ B2 flag), stop and queue a call to <team 1 assert>.
If (((The state of plan a.2.2 flag) or (The state of plan a.2.3 flag)) and (1 is equal to (A random integer between 1 and 2))), stop and queue a call to <team 1 assert>.
Cancel execution of any plan assigned to Team E1.
Set plan a.2.1 flag to true.
Set plan a.0.1 flag to false.
Set plan a.1.1 flag to false.
Set plan a.3.1 flag to false.
Assign Plan A.2 to Team E1 and execute.
Set E1 moving flag to true.
Set E1 moving timer to expire in (A random number between 20 and 35) second(s).
Set E1 @ B0 flag to false.
Set E1 @ B1 flag to false.
Set E1 @ B2 flag to false.
Set E1 @ B3 flag to false.
Set E1 last plan to 2.
Group: <plan a.2.2>
Comment:
Trigger Event:
This block has been called directly from the script.
Responses:
Allow this block to be reactivated.
If (The state of E2 @ B2 flag), stop and queue a call to <team 2 assert>.
If (((The state of plan a.2.1 flag) or (The state of plan a.2.3 flag)) and (1 is equal to (A random integer between 1 and 2))), stop and queue a call to <team 2 assert>.
Cancel execution of any plan assigned to Team E2.
Set plan a.2.2 flag to true.
Set plan a.0.2 flag to false.
Set plan a.1.2 flag to false.
Set plan a.3.2 flag to false.
Assign Plan A.2 to Team E2 and execute.
Set E2 moving flag to true.
Set E2 moving timer to expire in (A random number between 20 and 35) second(s).
Set E2 @ B0 flag to false.
Set E2 @ B1 flag to false.
Set E2 @ B2 flag to false.
Set E2 @ B3 flag to false.
Set E2 last plan to 2.
Group: <plan a.2.3>
Comment:
Trigger Event:
This block has been called directly from the script.
Responses:
Allow this block to be reactivated.
If (The state of E3 @ B2 flag), stop and queue a call to <team 3 assert>.
If (((The state of plan a.2.1 flag) or (The state of plan a.2.2 flag)) and (1 is equal to (A random integer between 1 and 2))), stop and queue a call to <team 3 assert>.
Cancel execution of any plan assigned to Team E3.
Set plan a.2.3 flag to true.
Set plan a.0.3 flag to false.
Set plan a.1.3 flag to false.
Set plan a.3.3 flag to false.
Assign Plan A.2 to Team E3 and execute.
Set E3 moving flag to true.
Set E3 moving timer to expire in (A random number between 20 and 35) second(s).
Set E3 @ B0 flag to false.
Set E3 @ B1 flag to false.
Set E3 @ B2 flag to false.
Set E3 @ B3 flag to false.
Set E3 last plan to 2.
Group: <plan a.3.1>
Comment:
Trigger Event:
This block has been called directly from the script.
Responses:
Allow this block to be reactivated.
If (The state of E1 @ B3 flag), stop and queue a call to <team 1 assert>.
If (((The state of plan a.3.2 flag) or (The state of plan a.3.3 flag)) and (1 is equal to (A random integer between 1 and 2))), stop and queue a call to <team 1 assert>.
Cancel execution of any plan assigned to Team E1.
Set plan a.3.1 flag to true.
Set plan a.0.1 flag to false.
Set plan a.1.1 flag to false.
Set plan a.2.1 flag to false.
Assign Plan A.3 to Team E1 and execute.
Set E1 moving flag to true.
Set E1 moving timer to expire in (A random number between 20 and 35) second(s).
Set E1 @ B0 flag to false.
Set E1 @ B1 flag to false.
Set E1 @ B2 flag to false.
Set E1 @ B3 flag to false.
Set E1 last plan to 3.
Group: <plan a.3.2>
Comment:
Trigger Event:
This block has been called directly from the script.
Responses:
Allow this block to be reactivated.
If (The state of E2 @ B3 flag), stop and queue a call to <team 2 assert>.
If (((The state of plan a.3.1 flag) or (The state of plan a.3.3 flag)) and (1 is equal to (A random integer between 1 and 2))), stop and queue a call to <team 2 assert>.
Cancel execution of any plan assigned to Team E2.
Set plan a.3.2 flag to true.
Set plan a.0.2 flag to false.
Set plan a.1.2 flag to false.
Set plan a.2.2 flag to false.
Assign Plan A.3 to Team E2 and execute.
Set E2 moving flag to true.
Set E2 moving timer to expire in (A random number between 20 and 35) second(s).
Set E2 @ B0 flag to false.
Set E2 @ B1 flag to false.
Set E2 @ B2 flag to false.
Set E2 @ B3 flag to false.
Set E2 last plan to 3.
Group: <plan a.3.3>
Comment:
Trigger Event:
This block has been called directly from the script.
Responses:
Allow this block to be reactivated.
If (The state of E3 @ B3 flag), stop and queue a call to <team 3 assert>.
If (((The state of plan a.3.1 flag) or (The state of plan a.3.2 flag)) and (1 is equal to (A random integer between 1 and 2))), stop and queue a call to <team 3 assert>.
Cancel execution of any plan assigned to Team E3.
Set plan a.3.3 flag to true.
Set plan a.0.3 flag to false.
Set plan a.1.3 flag to false.
Set plan a.2.3 flag to false.
Assign Plan A.3 to Team E3 and execute.
Set E3 moving flag to true.
Set E3 moving timer to expire in (A random number between 20 and 35) second(s).
Set E3 @ B0 flag to false.
Set E3 @ B1 flag to false.
Set E3 @ B2 flag to false.
Set E3 @ B3 flag to false.
Set E3 last plan to 3.
Group: <plan c.1>
Comment:
Trigger Event:
This block has been called directly from the script.
Responses:
Allow this block to be reactivated.
Skip the remaining responses if (The state of E1 Combat Flag).
Cancel E1 hold timer.
Cancel E1 moving timer.
Cancel E1 asserting timer.
Cancel execution of any plan assigned to Team E1.
Assign Plan C to Team E1 and execute.
Set E1 hold timer to expire in (A random number between 1 and 5) second(s).
Set plan a.0.1 flag to false.
Set plan a.1.1 flag to false.
Set plan a.2.1 flag to false.
Set plan a.3.1 flag to false.
Group: <plan c.2>
Comment:
Trigger Event:
This block has been called directly from the script.
Responses:
Allow this block to be reactivated.
Skip the remaining responses if (The state of E2 Combat Flag).
Cancel E2 hold timer.
Cancel E2 moving timer.
Cancel E2 asserting timer.
Cancel execution of any plan assigned to Team E2.
Assign Plan C to Team E2 and execute.
Set E2 hold timer to expire in (A random number between 1 and 5) second(s).
Set plan a.0.2 flag to false.
Set plan a.1.2 flag to false.
Set plan a.2.2 flag to false.
Set plan a.3.2 flag to false.
Group: <plan c.3>
Comment:
Trigger Event:
This block has been called directly from the script.
Responses:
Allow this block to be reactivated.
Skip the remaining responses if (The state of E3 Combat Flag).
Cancel E3 hold timer.
Cancel E3 moving timer.
Cancel E3 asserting timer.
Cancel execution of any plan assigned to Team E3.
Assign Plan C to Team E3 and execute.
Set E3 hold timer to expire in (A random number between 1 and 5) second(s).
Set plan a.0.3 flag to false.
Set plan a.1.3 flag to false.
Set plan a.2.3 flag to false.
Set plan a.3.3 flag to false.
Group: <set player base>
Comment:
Trigger Event:
This block has been called directly from the script.
Responses:
Allow this block to be reactivated.
Set Player Base to (Base (A random integer between 0 and 3)).
If (Enemy Base is equal to Player Base), stop and queue a call to <set player base>.
Teleport all members of Player Platoon to Player Base.
Display "Player initialized." to all players.
Group: <team 1 assert>
Comment:
Trigger Event:
This block has been called directly from the script.
Responses:
Allow this block to be reactivated.
Skip the remaining responses if (The state of E1 Combat Flag).
Cancel E1 hold timer.
Cancel E1 moving timer.
Cancel E1 asserting timer.
Set E1 asserting flag to true.
Set E1 asserting timer to expire in 8 second(s).
If (1 is equal to (A random integer between 1 and 4)), stop and queue a call to <plan a.0.1>.
If (1 is equal to (A random integer between 1 and 3)), stop and queue a call to <plan a.1.1>.
If (1 is equal to (A random integer between 1 and 2)), stop and queue a call to <plan a.2.1>.
Call <plan a.3.1> after this block.
Group: <team 2 assert>
Comment:
Trigger Event:
This block has been called directly from the script.
Responses:
Allow this block to be reactivated.
Skip the remaining responses if (The state of E2 Combat Flag).
Cancel E2 hold timer.
Cancel E2 moving timer.
Cancel E2 asserting timer.
Set E2 asserting flag to true.
Set E2 asserting timer to expire in 8 second(s).
If (1 is equal to (A random integer between 1 and 4)), stop and queue a call to <plan a.0.2>.
If (1 is equal to (A random integer between 1 and 3)), stop and queue a call to <plan a.1.2>.
If (1 is equal to (A random integer between 1 and 2)), stop and queue a call to <plan a.2.2>.
Call <plan a.3.2> after this block.
Group: <team 3 assert>
Comment:
Trigger Event:
This block has been called directly from the script.
Responses:
Allow this block to be reactivated.
Skip the remaining responses if (The state of E3 Combat Flag).
Cancel E3 hold timer.
Cancel E3 moving timer.
Cancel E3 asserting timer.
Set E3 asserting flag to true.
Set E3 asserting timer to expire in 8 second(s).
If (1 is equal to (A random integer between 1 and 4)), stop and queue a call to <plan a.0.3>.
If (1 is equal to (A random integer between 1 and 3)), stop and queue a call to <plan a.1.3>.
If (1 is equal to (A random integer between 1 and 2)), stop and queue a call to <plan a.2.3>.
Call <plan a.3.3> after this block.
Group: <tie>
Comment:
Trigger Event:
This block has been called directly from the script.
Responses:
End the game and display "Tie."

-
Let me take this opportunity to explain, once again, why this is a mission and not a GTF, also, why it must be a mission, and not a GTF. The main reason this is set up as mission files, and cannot be made into a GTF, is because it uses plans to dictate how the bots act, and move. You cannot use plans in GTFs, instead, you have to use patrol teams, or assault teams, both of which are very simple, and IMO, well played out. This mod is almost a pure script. Which means, I have taken the time, and care, to write the script in such a way, that it is as pure as possible; however, it still refernces certain tags that need to be tied to objects, and therefore cannot be a GTF, or pure script. What does that mean?
There are several elements which are standard in this mod, which the script refers to, and which must be present for the mod to function. The list is simple, and it is very standard, so that it is the same for every map. The following is a list of the elements needed.
6 plans;
Plan A.0 (North)
Plan A.1 (South)
Plan A.2 (East)
Plan A.3 (West)
Plan B (Combat)
Plan C (Hold)
1 company, 1 platoon, 3 teams;
Company E
Platoon E
Team E1
Team E2
Team E3
4 bases;
Base 0
Base 1
Base 2
Base 3
These are the elements which must be present for the script to work, these are also(with the exception of the bases) the reasons this cannot be a GTF, and must be a mission file. The basic ideas of the logic used here in, can indeed be used by any scripter in thier own missions, it is simply an idea for making them move around the map randomly, and to behave certain ways while doing it. I will go a step further an begin to explain how the different plans work;
Plan A.x (where x is the corresponding base)(Attack)
This is the main plan, this plan represents the first plan of action, look for the enemy, check the other bases. The steps of this plan are;
Alertness - locked to combat
Stance - set to crouch (or locked for smaller maps, or night or foggy maps, basically anywhere you want them to cover less area, and to be a little more carefull)
Pace - locked to run
Combat ROE - Assault
Movement ROE - Advance
Grenades - Available
Formation - locked to scattered
Path - this is a single path point, placed at the corresponding base. There will be four plans, one for each base(plan A.x) This allows the bots to plot a course from any point they are, to either of the four bases from which they might choose at random.
These four plans basically tell the bots to run north, south, east or west, for a random amount of time(which can be changed) using the behaviour outlined by the plan. Once the time has expired for their movement, they will be assigned Plan C. Plan C's steps are as follows;
Plan C (Hold)
Alertness - locked to combat
Stance - locked to crouch
Combat ROE - recon
Movement ROE - hold
Grenades - disabled
Formation - locked to scattered
There is also a timer that can be adjusted that will determine exactly how long each team will hold before they re-assert which of the four A plans they want to persue.
The only other plan is Plan B, or the combat plan. The main idea is to basically remove the path from the teams. The AI in GR sometimes is more worried about moving to the waypoint that has been set for them, rather than fighting enemies, and so, I have it set to switch the teams to Plan B(combat) if they see or hear any member of the player's platoon. There is also a timer that can be adjusted to determine how long the teams will stay "engaged" before they deside to re-assert and take of in a different direction. Plan B is as follows;
Plan B (combat)
Alertness - locked to combat
Stance - set to crouch
Combat ROE - supress
Movement ROE - advance
Grenades - available
Formation - set to scattered
These three basic plans(with the four variations of plan A) make up the basic behaviour of the bots. They can be adjusted to make the bots behave differently, as well as the timers to adjust the amount of time between the changes. Keep in mind however, if you make changes to your version of Bot Hunt, it will no longer be playable with others', unless they have the updated version you have created.
The script is written for 3 teams, and I have added 5 tangos to each team. They are set to have 1 tango per team in recruit, 3 tangos per team in veteran, and 5 tangos per team in elite. This adds up to;
3 Tangos - Recruit
9 Tangos - Veteran
15 Tangos - Elite
Now we all know there are lots of game types which spawn rediculous amounts of tangos, which just stand there and teleport to locations behind the player, and all sorts of not so cool type of stuff. I will promise you that there are no strings in this mod that tell the bots where you are, or what you are doing. They function completely on thier own, and the scripts and plans are created to be non-invasive, as the AI in GR works best when it is left to do it's thing. I have simply tried to create a mod that will put them in the right place, at hopefully the right time. It's not perfect, and is still a work in progress.

-

Well, after a few days of agony from the tooth removal fiasco, I got back to work and am trying to get this zipped up. Thanks to all who have shown interest, helped test, and have been patient. I have had to remove some of the latest blocks that I added, the file was just too large. I could import the script to new maps, but once it was saved, IGOR would CTD when & if I tried to open the mis file to edit. So, I removed a few strings that were actually just extra, and now it's all good. I went ahead and imported the script to a bunch of stock maps. I can do more stock, and fan created maps as they are requested. I just did these for now. I will release the mission files seperately for fan created maps, so the mission files can just be added to the mods they go with, to prevent crashing, any stock maps that are added to these can just be put into the mod's mission folder. The current map list is as follows;
Embassy
Polling Center
Valley
Swamp
Vilnius
Hunting Lodge
Night Battle
RR Bridge
Ghost Town
Beach Resort
High Sierra
Creekbed
This mod reqires GR/DS/IT
Also, in this version, I included the raw script so that you can import it to your own maps; however, I haven't finished the instructions, and I doubt you will be very successfull without them. I will finish the instructions very soon. Tomorrow I will post the instructions, as well as instructions for you to adjust and fine tune the way you would like your bots to behave.

-
At the very least can we get an update to IGOR so we can at least make files that are the max size for GR without IGOR crashing, please.
-
It makes sense, but man, we need to raise the bar some here. We need to be able to do some more low level adjusting to reach new levels with this game. I don't seriously think they will release anything but hot air, and noctious gas, but I still signed it, 'cause I would love to see it. I won't hold my breath, and I can't exactly expect them to do anything special, when they won't even hardly issue a press release saying the game is cancelled, ya know.
-
I will try to get the use of that map. Sorry for the delays in the new version, I had an impacted tooth removed yesterday, and haven't been feeling very chipper. Bear with me, I haven't abandoned ship.
-
it's crap!!!!!!!!!!!
-
Dev mode is toggled on by opening the command map(default left shift), and turned of by placing a command point on that same command map. You can still use the quick map for viewing the map without taggling on the dev mode. As far as the after action report, I figure it is a bit redundant, considering there is one built in, and it has been removed to preserve precious file space. New version underway, to be added to several other maps as well.
-
Can't hurt to try, period.

-
-
Exactly. I would set the game timer to be over ridden by the MP timer, so that it would only effect SP play, and the server set time would be in effect for MP play.
I have run into a bit of a brick wall though. I was here working away, adding strings to help create a bit better results, adjusting some of the coefficients for some of the logic, and I ended up adding one string too many, and now the file won't open in IGOR.
I still have the preious version, and I can go back and make some slight revisions, and get some of the improvements I added, back in there, however, I believe I have reached about the limitations of the script, considering anything I could do would be in the script, and the script is at GR's max. Unfortunate, but I will try to refine, and cut any fat, to try to get as much good stuff as I can in the script, while keeping it under the file size limitations of IGOR. Once I have this version revised, and completed, since I won't be able to add anymore script, it will be done no matter what, I may start over with what I have learned here, to try and make a script with many more independant bots, with a little less logic, and just have lots of them moving independantly instead, we'll see. 
-
I don't think I've ever been able to find that either, and Jack's suggestion sounds most stable to me. However, keep in mind the time is shown in MP mode, when using the score/status menu(default b key), so you way want to disable your timer message if you plan to use this in that mode.
-
-
The only thing I can think of is that you may have engaged the DEV block?
I can't seem to last five mins w/o them capping my sorry tail. There is a "dev mode" which is turnd on when you engage your static command map, the quick map is fine, and then it is toggled off when you place a waypoint on the command map. I will be taking this out for the next release, I only left it in so that people could easily watch the AI do their thing, w/o disturbance. I will also be adding a game timer, for single player mode, and would like to take a concensus on how long that should be, 5, 10, or 15 mins. Thanks again to all who are testing this, a new version with several different maps should be out very soon. 
-
I think he meant to delay everything that you might have in the startup block. Instead, put it in a new string, and have it triggered by a timer expiring, which you would set in the start-up block. Timer expires, string is run, plenty of time for spawns to be in place, or w/e other funny things might be happening. At least it's a place to start.
-
Suli is modding for FC now, if I'm not mistaken, check out obsidian edge.
-
I could throw down on some mission scripting, just give me your concepts, kinda set up a script or something, I mean, if you have ideas that need to be adheared to. w/e, just offering.

-
Hello 1madcow,
Just unzip the file to a folder, then go into that folder, which should be named by default to bothuntv2, and copy or cut the bothuntv2 folder there in, into your mods folder in the GR directory. Once that is done, you can start up GR and you should see it in the list. At this point I am still in developement so it is only on one map(not for long
), but it will show up as a mission. This can be played in co-op, and has been tested by myself to work. Some of the end messages are still uninitialized, hehe, but I'll fix all that. You can turn on respawns that way, and since the game is scored by kills, that way, the bots have a better chance of wining by score, even if they all die. And we all know how much that hurts.Thanks a lot for your encouragement Jack57, you deserve thanks too, yourself and Chavez were always very helpfull to me in my early days of learning the IGOR scripting, and still provide insight if I ask, for that I am gratefull. I'm starting to think VBS1 sounds pretty good. At first the price scared me, but the I thought of the rides at the fair, like you must be this tall to ride, and like, how much is worth to be able to play a good game for a change? I think I'll be in there pretty soon, hehe, I wanna get my nugget wrapped around some of that scripting.

-
Just curious why you aren't just referring to the stock map file?
Loading map d:\program files\red storm entertainment\ghost recon\mods\etf-ukranian unrest-part 1\map\m05_embassy1\m05_embassy.map -
Thank you all for your support and encouragement. I own almost every other FPS that is supposed to be "the new thing", and I still prefer the gameplay of GR over all of them. GR was my first modding experience, and I have always loved it's moddability. The biggest thanks, I think, should go to Rocky and the staff here at GR.net, without whom, this game would probably be completely dead, and it would've happened long ago. This is a bit of a pet project, I'm just glad some other folks are finding it interesting/usefull. I have always hated the standard AI games in GR, firefight ect, even the ones like assualt and defend are limited by the lack of random movement by the AI. I will continue working on this as time allows, and continue to try to refine the logic that I have designed. Your suggestions and recaps are immensely helpfull in trying to determine what works and what doesn't. It's a challenge to create robust code to deal with various odd, but possible circumstances, while still preserving smooth operation, but then, that's the fun.

-
I'm glad you may find it usefull Silent_Op. I have updated the file here. The updates are as follows;I added some catches to a few strings that may have been causing some wierd behavior, namely extra added to periods of sitting still.
I also adjusted the plans some, and now the AI seems alot more likely to throw thier frags, as well, I took them out of locked crouch, so they are a bit less stealthy when moving, but they will cover more ground. This was only for the N,S,E,W plans, so basically when they are on the move. They are still free to assume w/e stance they like during combat.
I adjusted some of the times to make them move a bit further, and to pause a little bit less time. Basically just trying to make them a bit more agressive.
I added a condition I called adrenaline rush. Basically, when there is only one guy left on the enemy company, his stats are boosted, and ammo refilled, as well his spotting distance is increased some. This is to simulate the adrenaline rush I think we all get when we are the Lone Ranger, or LMS for our team.
I noticed that when playing against the teams, they can still get very lodged up in certain areas sometimes, especially on this map, I am trying to work on that for the future. Silent_Op, you are basically the only person following this(if u still are), so let me know of your thoughts on these changes, and what other map you would like to try this out on.(just one for now, pleez)

note*
(There are some debug messages still in there, they are there to call out certain situations, if you encounter them, messages saying something to the effect of, "X was determined to be a bad idea, ect.", just make a mental note, and let me know it occured. It is a little query to improve the overall gameplay, it will come into play much more on larger maps, I believe.)

-
-
Thank you for your kind words. The actor that is used for the bots is placed in the actors folder of the mod, and simply named "enemy_bot.atr". Open IGOR and then select the actor editor from the tools dropdown. Browse and open the file, and check out the setup. You can load any actor you would like to use, and then save it over the existing enemy_bot. Be sure to adjust the properties accordingly, or as you see fit, they will of course effect gameplay. As I progress on this, I will add more acotrs, perhaps even some custom ones(hint, hint, if anyone wants to help), and have them scripted to be placed at random thoughout the teams, much like the opposing_force actors work.
Bot Hunt
in GR - General Mod Topics
Posted
NP, as a note, I have updated the mod. I adjusted some of the spotting distances, as they were a bit too far for some of the night/foggy maps. I also added the battlefield map, and I would suggest anyone interested should re-d/l the mod in order to get the latest version. It is still only 405Kb. Thanks for all of your input, and participation. Please feel free to list any maps you would like to see this on, and I will add the script to them as I can find the time. X
THIS JUST IN..................
I created a lil mod for the WSV map. It can be found here...
(TO BE USED WITH THE WSV mod)
Bot Hunt WSV
Missions included for all three versions of the map.
I am now returning to my work on Operation Jack Frost, a campaign mod for the excelent Frostbite expansion, which will include Bot Hunts on all(or at least most) of the maps.