Data/Attach Methods/Pattern

## Pattern

### Description

Follows a pattern, according to the keyword related index. A filter attach method can be paired up to indicate which attachement point to use (or avoid) from the selected keyword's indexes. It is a fact that the Pattern can operate on its own without the filter since it read all indexes (from the chosen keyword) on the model itself. In case a filter is used, this one should only use the same keyword as the pattern, because even if it's built with the Logic "Or", the Pattern method will only read what its keyword is set about. For example, if the Filter Contained Weapon -1 and Center -1, the Center keyword will be ignored.

* The Pattern attach method has the advantage of tracking the logical repetitiveness of the action actor from its triggering effect tree. It will know if a create persistant effect is currently repeating an effect, requesting a pattern and will continue rolling on the indexes until the effect tree has completed its run. It does in fact, **REQUIRE** a Persistent effect. It does not work with a weapon firing once, then a second time etc, it really only views the same effect tree.

### Testing

As it seems, it can only trace the **numeric** values of it's keyword, which means this is the reason why it cannot distinguish Weapon Left from Weapon Right, even if checking them both from a Filter method containing the words "Weapon" and even if the model only have those attachments containing the words "Weapons". This is the reason why the Marauder has modified attachement properties on its model.

Further more, the same example (Marauder) shows us that it is not required to have an associated Filter method, as he only uses this pattern to justify the pattern. In this sense, the Filter would be more useful in cases where the unit has really more than 2 indexes (or the number of shooting points required) that can be used: example: Thor shoots from his Weapons 05 and 07. Using a pattern with only the keyword "Weapon" wouldn't be precise, as he possess a larger arsenal of "Weapon" attachement points all over its shoulder. This would cause the pattern to use his other attachement points as well.

* When modifying attachement properties on the model, remember that the Pattern will shoot all the same index number at once. To make sure that the second attachement points launches on its following turn (in a pattern way), use a different numeric index.
* Remember that it reads the indexes in order. Ex: A filter, even if indicating which points to use, cannot deceide that the point 6 will launch before the point 3 and then point 1. Filter may deceide which points to use, but it will always be read in growing numbers. If it's problematic, one can easily swap the attachement's name with attachement properties on the model, and give them the proper order of index of another type of attachement name (Ex: SetA) and use that replacement name as the new keyword for the Pattern. See how to use it on models.

## Field Categories

### Base

Changes the way that the pattern selects its matches inside the filter list.

* Yet, most of the attach method that use this field use the string word: ::RollingIndex in it. This one is used to randomize the pattern (since it's a pattern, the attachement point will not pop twice as the random attach method does. It will probably follow the same path twice if the filter runs out of points to continue the pattern with). It is a good example of how using this attach method to make a shuffle random pattern.
* Tests have work on the Shadow Battlecruiser model, but failed on Cerberus.

### Driver

ID name of the effect that is verified to establish the pattern.

* If the action actor uses a damage token, then it requires the attack effect indicated in it.
* If the action actor uses launch and impact tokens, then it requires the launch effect indicated in it.

* The Siege Tank (Tank Mode) launch attahcment query uses a pattern named: Pattern Rolling Stripe with the string word ::RollingIndex in the driver section. This would suppose that it defines a generic value that will take any effect and generate the pattern. In other words, a driver is always needed, but some strings seem to be premade for this field, allowing multiple Action Actor to use it.

### Keyword

Keyword that is looked on all the model's list of attachement point, in index order (from 0 to higher). What is filtered is indicated by a paired up filter. Consider that the Pattern will read from the Filter, but will not respect it's order of indexes, neither use any other keyword in it that does not correspond with the this field.

### Offset

Moves the starting position of the pattern within the associated attachement point list.

Example: If the keyword's list has keywords/index Weapon 1, Weapon 2 and Weapon 3, and the offset is 1: Instead of doing the pattern as 1,2,3, it will do 2,3,1.

If the offset is 2, then it will do 3,1,2, if the offset is 3, then 1,2,3.

### Pattern Type

Most of them are set to "Stripe"

* Bounce: Follows the pattern normaly, and then, If the pattern runs out of attachement points to continue, it will pattern back from the end to the start. In other words, it's like going from A to Z and then going Z to A to come back (and then resets going from A to Z if it keeps going further). This is a zigzagging pattern.
* Stripe: Follows the pattern normally. If the pattern runs out of attachement points to continue, it will start over the same pattern.