Jump to content

Bot Hunt


X69RZX
 Share

Recommended Posts

  • Replies 94
  • Created
  • Last Reply

Top Posters In This Topic

I installed it ,and it ran fine. However I could stand right next to the enemy AI and they didnt hit me when they were shooting.any reasons why this happend? I no this is an early version ,and I am sure things need to be worked out with development. so please keep up this work. Its probably very anticipated. thanks. :thumbsup:

Link to comment
Share on other sites

The only thing I can think of is that you may have engaged the DEV block? :huh: 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. :thumbsup:

Link to comment
Share on other sites

The only thing I can think of is that you may have engaged the DEV block? :huh: 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. :thumbsup:

What do you mean by "game timer"? Are you saying you want to have the missions last only 5, 10, or 15 minutes? Why? If so, can it still be set to what ever time the host server sets or the single player sets?

silent_op

Link to comment
Share on other sites

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. :huh: 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. :shifty:

Link to comment
Share on other sites

X69RZX,

You are doing some incredible work here for GR tango AI. It sounds like you have pushed the envelope and are about to rip it open. :thumbsup:

I am looking forward to the next version of your Bothunt. I knew this was gold when I read it the first time.

While you are developing new Bot AI for the tangos, can that same AI be used for friendlies?...

Imagine a mission with those "a US soldier" guys actually doing there job and searching out the enemy instead of waiting to be smacked in the head with a rolled up magazine. In the course of a mission, you might spot a groupd of "friendlies" on a long range patrol (really searching for the enemy). We (the Ghosts or whatever SF team you play as) could stumble across some interesting Bot Vs. Bot battles during the course of a mission.

Even better, imagine a mission where your SF team is sent in to an area with a civil war going on. The best part is no one there likes strangers being there either, but if you keep your head down you'll slip by the many skurmishes going on. Maybe you'll be forced to engage once in a while ( :o= ). Missions will never be the same again. I can see the many new layers of imaginative plots and objectives missions can be made with. All thanks to your Bot work.

Some people may say that these Bots are nothing special compared to what they have seen in games like UnReal Tournament. They may be absolutely correct, but this isn't UnReal. If we've all been happy with the some what below standard AI that we go up against in GR missions, imagine how much of an improvement these bots will make to your missions. These Bots can even be placd in missions with standard GR tango AI guys on the map.

Rocky if you're reading these threads, you GR.net guys should take careful note of X69RZX. He deserves at least a nomination for the most innovative concept ever approached for Ghost Recon.

silent_op

Edited by silent_op
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

:)

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

Bot Hunt

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.:ph34r:

Link to comment
Share on other sites

X69RZX,

This is great news! :rofl:

I'm going to download this as soon as I get home. Thanks so much for listening to everyone's (including myself) requests/suggestions. I understand that you can't make everything that was asked of you happen, due to the limited nature of what you have to work with.

Regardless, this is the best Ghost Recon AI exploration done and released to the community yet. I hope your AI work inspires others to use your Bot technology in new missions/mods.

Thank you X69RZX :thumbsup:

silent_op

Link to comment
Share on other sites

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. :yes:

Link to comment
Share on other sites

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."

:thumbsup:

Link to comment
Share on other sites

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. :rocky:

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. :thumbsup:

Link to comment
Share on other sites

X69RZX,

I think you forgot to add the maps to the Bot Hunt WSV Map folder. I keep getting CTD. I looked inside the Mod folder and noticed the Map folder was empty. Can you update the link? I'll download it later then.

I'm guessing this is the problem.

silent_op

Link to comment
Share on other sites

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. :thumbsup:

That sounds good. Frigid bots to battle. :support:
Link to comment
Share on other sites

Perhaps you are confused Silent Op. The BotHuntWSV mod is made to be used in CONJUCTION with the WSV mod, not in lue of it. In other words, you will need to activate the WSV mod, and then the BotHuntWSV mod, in order for it to work. I didn't want to add the maps to the mod, because 1) I didn't make them 2) It would make the mod much larger file size.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share


×
×
  • Create New...