-
Notifications
You must be signed in to change notification settings - Fork 3
/
readme.html
2637 lines (2573 loc) · 132 KB
/
readme.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<html>
<head>
<title>Mik's Scrolling Battle Text Readme</title>
<style type="text/css">
body { font-size: 10pt; font-family: verdana, arial, helvetica, sans-serif; }
h1 { font-weight: bold; color: #004080; }
a:link { color: #000060; text-decoration: none; }
a:visited { color: #000060; text-decoration: none; }
a:hover { text-decoration: underline; }
div#HeaderBlock { background-color: #e0e0e0; border: 1px solid #000060; padding: 1ex; margin: 2em 0em 4em 0em; }
div.TOCTitle { font-weight: bold; font-size: 14pt; color: #004080; border-bottom: 1px solid #000060; }
div.TOC { margin: 2ex 1ex 4em 2ex; }
div.TOCSection { margin-bottom: 2ex; }
div.SectionTitle { margin-top: 6ex; font-weight: bold; font-size: 14pt; color: #004080; border-bottom: 1px solid #000060; }
div.SectionBody { margin: 2ex 0ex 2ex 2ex; }
div.SectionBody ul { margin-top: 1ex; }
div.SectionBody a:link { color: #002080; }
div.SectionBody a:visited { color: #002080; }
div.SectionBody a:hover { text-decoration: underline; }
div.SubsectionTitle { margin-top: 4ex; margin-bottom: 2ex; font-weight: bold; font-size: 110%; color: #004080; }
div.SubsectionBody { margin: 2ex 0ex 2ex 2ex; }
div.TriggerParameter { margin-left: 2ex; }
td.ParameterName { font-size: 10pt; background-color: #e0e0e0; vertical-align: top; }
td.ParameterDesc { font-size: 10pt; background-color: #e0e0e0; text-align: left; }
li.FAQListItem { margin-bottom: 6ex; }
</style>
</head>
<body>
<h1>Mik's Scrolling Battle Text</h1>
<div id="HeaderBlock">
Version: 5.7.148<br />
Author: Mikord<br />
Updated: February 5, 2018<br />
Official Site: <a href="https://wow.curseforge.com/projects/mik-scrolling-battle-text">https://wow.curseforge.com/projects/mik-scrolling-battle-text</a><br /><br />
<a href="#Credits">See Credits</a>
</div>
<div class="SectionTitle"><a name="TOC"></a>Table of Contents:</div>
<div class="TOC">
<ul>
<li><a href="#WhatsNew">What's new?</a></li>
<li><a href="#Install">Installation Instructions</a></li>
<li><a href="#Description">Description</a></li>
<li><a href="#Commands">Commands</a></li>
<li>
<a href="#TriggerGuide">Trigger Guide</a>
<div class="TOCSection">
<ul>
<li><a href="#TriggerBasicConcepts">Basic Concepts</a></li>
<li><a href="#TriggerMechanics">Trigger Mechanics</a></li>
<li><a href="#TriggerAdvancedConcepts">Advanced Concepts</a></li>
<li><a href="#ExampleTriggers">Example Triggers</a></li>
</ul>
</div>
</li>
<li>
<a href="#TriggerReference">Trigger Reference</a>
<div class="TOCSection">
<ul>
<li><a href="#MainEvents">Trigger Main Events</a></li>
<li><a href="#MainEventConditions">Main Event Conditions</a></li>
<li><a href="#TriggerExceptions">Trigger Exceptions</a></li>
</ul>
</div>
</li>
<li><a href="#SearchPatternReference">Search Pattern Reference</a></li>
<li>
<a href="#FAQ">Frequently Asked Questions</a></li>
<div class="TOCSection">
<ul>
<li><a href="#FAQFonts">I don't like any of the fonts supplied with MSBT. How do I use my own fonts?</a></li>
<li><a href="#FAQFontSize">How do I increase the font size to something larger than 38?</a></li>
<li><a href="#FAQSounds">How do I add my own custom sounds?</a></li>
<li><a href="#FAQNewTrigger">How do I create a new trigger?</a></li>
<li><a href="#FAQMutilate">Is it possible to prevent Mutilate from being merged?</a></li>
<li><a href="#FAQXP">Is is possible to disable the default Blizzard XP Text?</a></li>
<li><a href="#FAQVE">How do I suppress Vampiric Embrace?</a></li>
<li><a href="#FAQExclusiveIcons">I want to see skill names even when there is an icon. Is that possible?</a></li>
<li><a href="#FAQGameDamage">Is there a way to show the damage above the target's heads like the default damage text?</a></li>
<li><a href="#FAQEfficiency">Is MSBT efficient?</a></li>
</ul>
</div>
</li>
<li><a href="#VersionHistory">Version History</a></li>
<li><a href="#Credits">Credits</a></li>
</ul>
</div>
<div class="SectionTitle"><a name="Install"></a>Installation Instructions</div>
<a href="#TOC">Return to TOC</a><br /><br />
<div class="SectionBody">
Unzip the contents into the AddOns directory of your WoW game directory.<br /><br />
This is typically C:\Program Files\World of Warcraft\Interface\AddOns.<br /><br />
<b>If you are upgrading the mod from a previous version, make sure to delete the old version prior to installing
the new version.</b>
</div>
<div class="SectionTitle"><a name="Description"></a>Description</div>
<a href="#TOC">Return to TOC</a><br /><br />
<div class="SectionBody">
MSBT is designed to be an extremely lightweight, efficient, and highly configurable mod that makes it easier to see combat
information by scrolling the information on the screen in separate, dynamically creatable scroll areas. It is a replacement
for Blizzard's Floating Combat Text and Damage output.<br /><br />
<div class="SubsectionTitle">Features:</div>
<div class="SubsectionBody">
<ul>
<li>Lightweight and efficient design.</li>
<li>Scroll incoming damage/heals, outgoing damage/heals, and notifications in separate configurable scroll areas on the playing field.</li>
<li>Display cooldown completion alerts.</li>
<li>Display loot alerts with a total of how many are now in inventory.</li>
<li>Add triggers that will allow you to show notifications based on a variety of conditions.</li>
<li>Assign a sound file to play for events/triggers.</li>
<li>Dynamically create new scroll areas and assign any event/trigger to them.</li>
<li>Customize the position, size, animation style, enabled state, font style, font size, font outline, and opacity for each of the scroll areas.</li>
<li>Customize each individual event's color, font style, font size, font outline, opacity, output message, enabled state, and scroll area.</li>
<li>Set "Master Font" settings that will be inherited by all of the scroll areas and the events in them unless they are overridden at the scroll area or event level.</li>
<li>Merge AoE data into one event with cumulative damage/healing done with number of normal and crits specified.</li>
<li>Show overhealing amounts against yourself or party/raid members.</li>
<li>Color unit names according to their class (including CUSTOM_CLASS_COLORS support).</li>
<li>Color damage amounts according to damage type.</li>
<li>Show partial effects (resists, absorbs, vulnerabilities, etc) colored according to type.</li>
<li>Filter output information with a full suite of spam controls.</li>
<li>Load on demand options.</li>
<li>For mod developers:
<ul>
<li>
Output your own scrolling messages with the MikSBT.DisplayMessage function instead of having
to create your own frame and animation code. You can also use your own font by first registering
it with MSBT via the MikSBT.RegisterFont function.
</li>
<li>Create custom animation styles.</li>
<li>See the included API.html file for reference information.</li>
</ul>
</li>
</ul>
</div>
<div class="SubsectionTitle">Supported Events:</div>
<div class="SubsectionBody">
<ul>
<li>Incoming:</li>
<ul>
<li>Melee Damage, Misses, Dodges, Parries, Blocks, Deflects, Absorbs, and Immunes</li>
<li>Skill Damage, Damage Over Time (DoTs), Misses, Dodges, Parries, Blocks, Deflects, Absorbs, Immunes, Reflects, and Interrupts</li>
<li>Spell Resists</li>
<li>Heals and Heals Over Time (HoTs)</li>
<li>Pet Melee Damage, Misses, Dodges, Parries, Blocks, Deflects, Absorbs, and Immunes</li>
<li>Pet Skill Damage, Damage Over Time (DoTs), Misses, Dodges, Parries, Blocks, Deflects, Absorbs, and Immunes</li>
<li>Pet Spell Resists</li>
<li>Pet Heals and Heals Over Time (HoTs)</li>
<li>Environmental Damage</li>
</ul>
<br />
<li>Outgoing:</li>
<ul>
<li>Melee Damage, Misses, Dodges, Parries, Blocks, Deflects, Absorbs, Immunes, Evades</li>
<li>Skill Damage, Damage Over Time (DoTs), Misses, Dodges, Parries, Blocks, Deflects, Absorbs, Immunes, Reflects, Interrupts, and Evades</li>
<li>Spell Resists and Buff Dispels</li>
<li>Heals and Heals Over Time (HoTs)</li>
<li>Pet Melee Damage, Misses, Dodges, Parries, Blocks, Deflects, Absorbs, Immunes, and Evades</li>
<li>Pet Skill Damage, Damage Over Time (DoTs), Misses, Dodges, Parries, Blocks, Deflects, Absorbs, Immunes, and Evades</li>
<li>Pet Spell Resists and Buff Dispels</li>
<li>Pet Heals and Heals Over Time (HoTs)</li>
</ul>
<br />
<li>Notification:</li>
<ul>
<li>Buffs / Buff Stacks / Buff Fades</li>
<li>Debuffs / Debuff Stacks / Debuff Fades</li>
<li>Item Buffs / Item Buff Fades</li>
<li>Enter/Leave Combat</li>
<li>Power Gains and Losses</li>
<li>Alternate Power Gains and Losses</li>
<li>Chi Gains and Chi Full</li>
<li>Combo Point Gains and Combo Points Full</li>
<li>Holy Power Changes and Holy Power Full</li>
<li>Honor Gains</li>
<li>Reputation Gains and Losses</li>
<li>Skill Gains</li>
<li>Experience Gains</li>
<li>Killing Blows (Player and NPC)</li>
<li>Extra Attacks</li>
<li>Soul Shard Creation</li>
<li>Enemy Buff Gains</li>
<li>Monster Emotes</li>
<li>Player, Pet, and Item Cooldown Completions</li>
</ul>
<br />
<li>Loot:</li>
<ul>
<li>Looted Items</li>
<li>Money Gains</li>
</ul>
<br />
<li>Default Triggers:</li>
<ul>
<li>All Relevant Classes - Low Health, Low Mana, Low Pet Health</li>
<li>Death Knight - Killing Machine, Rime, Shadow Infusion x5</li>
<li>Druid - Berserk, Clearcasting, Predator's Swiftness, Shooting Stars</li>
<li>Hunter - Kill Shot, Lock and Load</li>
<li>Mage - Brain Freeze, Clearcasting, Fingers of Frost, Missile Barrage</li>
<li>Monk- Elusive Brew x5, x10, x15, Mana Tea x20, Vital Mists x5</li>
<li>Paladin - Hammer of Wrath, The Art of War</li>
<li>Priest - Clearcasting</li>
<li>Rogue - Blindside</li>
<li>Shaman - Clearcasting, Lava Surge, Maelstrom Weapon x5, Tidal Waves</li>
<li>Warlock - Decimation, Molten Core, Nightfall</li>
<li>Warrior - Bloodsurge, Execute, Revenge, Sudden Death, Taste for Blood, Victory Rush</li>
</ul>
</ul>
</div>
</div>
<div class="SectionTitle"><a name="Commands"></a>Commands</div>
<a href="#TOC">Return to TOC</a><br /><br />
<div class="SectionBody">
<table cellspacing="3">
<tr>
<td class="ParameterName">/msbt</td>
<td class="ParameterDesc">Shows the options interface.</td>
</tr>
<tr>
<td class="ParameterName">/msbt reset</td>
<td class="ParameterDesc">Resets the current profile to the default settings.</td>
</tr>
<tr>
<td class="ParameterName">/msbt disable</td>
<td class="ParameterDesc">Disables the mod.</td>
</tr>
<tr>
<td class="ParameterName">/msbt enable</td>
<td class="ParameterDesc">Enables the mod.</td>
</tr>
<tr>
<td class="ParameterName">/msbt version</td>
<td class="ParameterDesc">Shows the current version.</td>
</tr>
<tr>
<td class="ParameterName">/msbt help</td>
<td class="ParameterDesc">Shows the command usage.</td>
</tr>
</table>
</div>
<div class="SectionTitle"><a name="TriggerGuide"></a>Trigger Guide</div>
<a href="#TOC">Return to TOC</a><br /><br />
<div class="SectionBody">
The trigger system is a powerful and flexible system that allows you to specify custom events to be displayed based on
specific game events that are not already handled by default. There are several mechanisms in place to ensure triggers are efficient as
possible so they are not needlessly wasting CPU cycles checking conditions that aren't relevant. Due to this optimization, several common
triggers are included by default.
<div class="SubsectionTitle"><a name="TriggerBasicConcepts"></a>Basic Concepts:</div>
<div class="SubsectionBody">
Every time almost anything happens in the game, a combat log entry is generated for it. While it is not readily visible, each of these
combat log entries is categorized by Blizzard according to specific event types. It is these event types that drive triggers. Triggers are
really just definitions of a specific set of circumstances that must occur before they will fire.
<br /><br />
Aside from being categorized into an event type, each event that occurs in game has several other pieces of information associated with it such as
who the source of the event was, how much the event hit or healed for, and whether or not the event was a crit. Obviously this additional information
varies according to the type of event it is since, for example, an aura application can't crit.
<br /><br />
The trigger system refers to these event types as <a href="#MainEvents">main events</a> and the additional pieces of information as
<a href="#MainEventConditions">conditions</a>, since ultimately it is these additional pieces of information that define the specific
circumstances of interest.
<br /><br />
Let's consider an example event to better understand how the pieces fit together. Assume that you were just hit by a fireball. The damage caused
to you by the fireball generated an event of type "Skill Damage". The event also has many of other pieces of information associated with it like
the name of the unit who cast the fireball, how much the fireball hit you for, whether or not it crit, whether the unit who cast the fireball is a
player or an NPC, etc.
<br /><br />
Putting the above fireball example in terms of the trigger system, the fireball hitting you was a <a href="#MainEvents">main event</a> of type
"Skill Damage", and the <a href="#MainEventConditions">conditions</a> were the name of the unit who cast the fireball, how much it hit you for, and so on.
<br /><br />
While the <a href="#MainEvents">main events</a> and their <a href="#MainEventConditions">conditions</a> offer a wealth the information, there is other non-event
related "state" information available such as the current zone your character is in, whether or not certain buffs are active, and whether or not certain skills are
available. This "state" information forms the basis for what the trigger system refers to as <a href="#TriggerExceptions">exceptions</a>. An
<a href="#TriggerExceptions">exception</a> will prevent a trigger from being displayed when it applies.
</div>
<div class="SubsectionTitle"><a name="TriggerMechanics"></a>Trigger Mechanics:</div>
<div class="SubsectionBody">
Now that it is clear what <a href="#MainEvents">main events</a>, <a href="#MainEventConditions">conditions</a>, and <a href="#TriggerExceptions">exceptions</a>
are, we can explore how triggers make use of them and consequently how they are defined.
<br /><br />
The following list summarizes the stages a trigger follows to determine whether or not it fires:
<ol>
<li>One of the <a href="#MainEvents">main events</a> that a trigger has defined occurs.</li>
<li>
The specific <a href="#MainEventConditions">conditions</a> defined for the <a href="#MainEvents">main event</a> for the trigger are tested. If any of the
conditions do not apply, the trigger will not fire and all processing for the trigger stops.
</li>
<li>
The <a href="#TriggerExceptions">exceptions</a> defined for the trigger are tested. If any of the exceptions apply, the trigger will not fire and all
processing for the trigger stops.
</li>
<li>The trigger fires thus displaying the specified output message and event settings.</li>
</ol>
<br />
As mentioned in the "<a href="#TriggerBasicConcepts">Basic Concepts</a>" section above, triggers are driven by <a href="#MainEvents">main events</a>.
Each trigger can be based on one or more of these <a href="#MainEvents">main events</a> each with unique <a href="#MainEventConditions">conditions</a>.
These <a href="#MainEvents">main events</a> are treated as an "or" relationship meaning that when <b>ANY</b> one of them occurs, the trigger will move to the next
stage of testing the <a href="#MainEventConditions">conditions</a>.
<br /><br />
The <a href="#MainEventConditions">conditions</a> defined for a given <a href="#MainEvents">main event</a> are treated as an "and" relationship meaning that
<b>ALL</b> of them must be true for the trigger to move to the next stage of testing <a href="#TriggerExceptions">exceptions</a>.
<br /><br />
During the final stage, the <a href="#TriggerExceptions">exceptions</a> defined for a trigger are treated as an "or" relationship meaning that when <b>ANY</b> one
of them is true, the trigger will not fire.
</div>
<div class="SubsectionTitle"><a name="TriggerAdvancedConcepts"></a>Advanced Concepts:</div>
<div class="SubsectionBody">
Most common triggers won't need to delve into any of the concepts presented in this section, but using some of the more advanced capabilities
can lead to triggers for highly complex events or single triggers capable of handling multiple events.
<br /><br />
Here is an overview of the main points that will be covered:
<ul>
<li>Each <a href="#MainEvents">main event</a> can be used multiple times for a single trigger</li>
<li>Each <a href="#MainEventConditions">condition</a> can be used multiple times for a given <a href="#MainEvents">main event</a>.</li>
<li>Triggers will try to choose an appropriate icon based on the <a href="#MainEvents">main event</a> that fired it.</li>
<li>Substitution codes for skill names are available.</li>
<li>Skill IDs can be used to discern which rank of a skill was used.</li>
</ul>
<br />
Recall from the "<a href="#TriggerMechanics">Trigger Mechanics</a>" section that each trigger can have multiple <a href="#MainEvents">main events</a> treated
as an "or" relationship, and that each <a href="#MainEvents">main event</a> can have its own unique <a href="#MainEventConditions">conditions</a>. Combining that
with the capability to use a <a href="#MainEvents">main event</a> multiple times for a single trigger means you can effectively cover a set of common
scenarios all with a single trigger. For example, imagine you want to see when both Mace Stun and Improved Hamstring proc. Both cases are an aura application,
but they have different skill names. By adding the same <a href="#MainEvents">main event</a> twice, but specifying a different skill name
<a href="#MainEventConditions">condition</a> for each one, you are effectively saying when Mace Stun or Improved Hamstring proc this trigger should fire. Naturally
the other <a href="#MainEventConditions">conditions</a> such as affiliation and reaction would need to also be set for each event.
<br /><br />
The astute reader will say "Wait a second! How will I be able to tell which one procced if the output message is the same?". This problem is solved with substitution
codes. Depending on which event actually caused the trigger to fire, %s will be replaced the appropriate skill name. Also, the correct icon would be displayed since
triggers attempt to choose an appropriate icon based on the <a href="#MainEvents">main event</a> that fired them.
<br /><br />
The capability of using the same condition multiple times for a given <a href="#MainEvents">main event</a> with different relationships means that things such as ranges
and complex pattern matching can be implemented. For example, imagine you are trying to create a trigger that will fire when an amount is between two values. The first
<a href="#MainEventConditions">condition</a> could be "Amount - Is Greater Than - X" and the second could be "Amount - Is Less Than - Y".
<br /><br />
Another advanced capability is using skill IDs to detect when specific ranks, such as rank 1, are being used. Most online databases can be used to ascertain
what the skill ID is for the ranks of each skill. By adding <a href="#MainEventConditions">conditions</a> that specify these specific skill IDs, it is possible
to only trigger on specific skill ranks.
</div>
<div class="SubsectionTitle"><a name="ExampleTriggers"></a>Example Triggers:</div>
<div class="SubsectionBody">
Since the point of the trigger system is to allow for custom events that are not already available, there is no way to cover all of the possibilities.
However, most commonly requested triggers fall within the following categories. An example trigger or two for each category is provided and can be
used as a guide to creating your desired trigger.
<br /><br />
Please note these examples don't make use of advanced capabilities in order to keep the examples easy to
understand.
<br /><br />
<table cellspacing="3">
<tr>
<td class="ParameterName" nowrap="nowrap">CC Breaks:</td>
<td class="ParameterDesc">
A common request for triggers is to be notified when crowd control skills like sheep, sap, and blind break from your focus target while in the arena.
Nearly all of these effects involve removing an aura and therefore the <a href="#MainEvents">main event</a> type will usually be "Aura Removal".
<br /><br />
The most common <a href="#MainEventConditions">conditions</a> used for this category of triggers are "Skill Name", "Recipient Unit Affiliation", and
"Recipient Unit Reaction".
<br /><br />
<b><u>Polymorph Broke</u></b>
<br /><br />
Output Message: Poly Broke - %r!<br />
Main Events:
<div class="TriggerParameter">
Aura Removal
<div class="TriggerParameter">
Skill Name - Is Equal To - Polymorph<br />
Recipient Unit Affiliation - Is Equal To - Focus<br />
Recipient Unit Reaction - Is Equal To - Hostile<br />
</div>
</div>
<br />
Exceptions:
<div class="TriggerParameter">
Zone Type - Is Not Equal To - Arena<br />
</div>
</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Procs:</td>
<td class="ParameterDesc">
Another common request for triggers is to be notified when certain procs such as Mace Stun, Improved Wing Clip, or item-based haste effects occur.
Nearly all of the effects apply an aura of some sort and as such the <a href="#MainEvents">main event</a> type will usually be "Aura Application".
<br /><br />
The most common <a href="#MainEventConditions">conditions</a> used for this category of triggers are "Skill Name", "Recipient Unit Affiliation", and
"Recipient Unit Reaction".
<br /><br />
<b><u>Mace Stun</u></b>
<br /><br />
Output Message: Mace Stun!<br />
Main Events:
<div class="TriggerParameter">
Aura Application
<div class="TriggerParameter">
Skill Name - Is Equal To - Mace Stun Effect<br />
Recipient Unit Affiliation - Is Equal To - Target<br />
Recipient Unit Reaction - Is Equal To - Hostile<br />
</div>
</div>
<br />
Exceptions:
<div class="TriggerParameter">None</div>
<br /><br />
<b><u>Focus</u></b> (from Mystical Skyfire Diamond)
<br /><br />
Output Message: Focus!<br />
Main Events:
<div class="TriggerParameter">
Aura Application
<div class="TriggerParameter">
Skill Name - Is Equal To - Focus<br />
Recipient Unit Affiliation - Is Equal To - You<br />
</div>
</div>
<br />
Exceptions:
<div class="TriggerParameter">None</div>
</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Key Skill Usage:</td>
<td class="ParameterDesc">
Many players find it useful to create a trigger for when certain key abilities such as Hand of Freedom or Hand of Protection are used while
in the arena. Most of these effects involve successfully casting a spell and so the <a href="#MainEvents">main event</a> type will usually be "Cast Success".
<br /><br />
The most common <a href="#MainEventConditions">conditions</a> used for this category of triggers are "Skill Name" and "Source Unit Reaction".
<br /><br />
<b><u>Hand of Protection Used</u></b>
<br /><br />
Output Message: Melee Bubble!<br />
Main Events:
<div class="TriggerParameter">
Cast Success
<div class="TriggerParameter">
Skill Name - Is Equal To - Hand of Protection<br />
Source Unit Reaction - Is Equal To - Hostile<br />
</div>
</div>
<br />
Exceptions:
<div class="TriggerParameter">
Zone Type - Is Not Equal To - Arena<br />
</div>
<br /><br />
<b><u>Priest Fear Used</u></b>
<br /><br />
Output Message: Priest Fear Down!<br />
Main Events:
<div class="TriggerParameter">
Cast Success
<div class="TriggerParameter">
Skill Name - Is Equal To - Psychic Scream<br />
Source Unit Reaction - Is Equal To - Hostile<br />
</div>
</div>
<br />
Exceptions:
<div class="TriggerParameter">
Zone Type - Is Not Equal To - Arena<br />
</div>
</td>
</tr>
</table>
</div>
</div>
<div class="SectionTitle"><a name="TriggerReference"></a>Trigger Reference</div>
<a href="#TOC">Return to TOC</a><br /><br />
<div class="SectionBody">
This section provides a reference for each of the <a href="#MainEvents">main events</a>, <a href="#MainEventConditions">conditions</a>,
and <a href="#TriggerExceptions">exceptions</a> that triggers may utilize.
<br /><br />
The following is a description of the fields unique to the trigger system interface:
<br /><br />
<table cellspacing="3">
<tr>
<td class="ParameterName" nowrap="nowrap">Output Message:</td>
<td class="ParameterDesc">
This is the message that will be displayed when the trigger fires.
<br /><br />
Most <a href="#MainEvents">main events</a> allow the following substitution codes:<br />
<ul>
<li>%n - The name of the source of the event.</li>
<li>%r - The name of the recipient of the event.</li>
<li>%a - The amount associated with the event.</li>
<li>%s - The skill name associated with the event.</li>
</ul>
<br />
In addition, certain <a href="#MainEvents">main events</a> that involve two different skill names like dispels (the name of skill performing the dispel and
the name of the skill being dispelled) allow the following substitution code:
<ul>
<li>%e - The extra skill name associated with the event.</li>
</ul>
</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Trigger Classes:</td>
<td class="ParameterDesc">
This allows you to set the classes that you want the trigger to apply to. <b>NOTE: THIS IS YOUR
CLASS NOT THE TARGET CLASS.</b> You may look at the Execute trigger for an example. Since Warrior is
selected, the trigger will only apply when you are playing on a warrior.
</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap"><a href="#MainEvents">Main Events</a>:</td>
<td class="ParameterDesc">
This allows you to define which <a href="#MainEvents">main events</a> should begin the process of testing the trigger. When <b>ANY</b>
(or relationship) of these main events occur and their <a href="#MainEventconditions">conditions</a> are true, the trigger will then make sure
none of the <a href="#TriggerExceptions">exceptions</a> are true before firing.
<br /><br />
The <a href="#MainEvents">main events</a> reference table details the purpose of each event.
</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap"><a href="#TriggerExceptions">Trigger Exceptions</a>:</td>
<td class="ParameterDesc">
This allows you define <a href="#TriggerExceptions">exceptions</a> to prevent the trigger from firing.
<br /><br />
They are only checked if one of the <a href="#MainEvents">main events</a> has occurred and all its <a href="#MainEventConditions">conditions</a> are true.
<br /><br />
The <a href="#TriggerExceptions">trigger exceptions</a> reference table below details the purpose of each exception.
</td>
</tr>
</table>
<div class="SubsectionTitle"><a name="MainEvents"></a>Trigger Main Events:</div>
<div class="SubsectionBody">
<table cellspacing="3">
<tr>
<td class="ParameterName" nowrap="nowrap">Aura Application:</td>
<td class="ParameterDesc">Fired when an aura is applied to a unit.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Aura Broken:</td>
<td class="ParameterDesc">Fired when an aura is broken by a skill.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Aura Dispel:</td>
<td class="ParameterDesc">Fired when an aura is dispelled from a unit.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Aura Removal:</td>
<td class="ParameterDesc">Fired when an aura is removed from a unit.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Aura Refresh:</td>
<td class="ParameterDesc">Fired when an aura is refreshed on a unit.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Aura Stolen:</td>
<td class="ParameterDesc">Fired when an aura is stolen from a unit.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Cast Failure:</td>
<td class="ParameterDesc">Fired when a cast fails.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Cast Start:</td>
<td class="ParameterDesc">Fired when a cast begins.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Cast Success:</td>
<td class="ParameterDesc">Fired when a cast successfully completes.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Create:</td>
<td class="ParameterDesc">Fired when items are created. This is typically for conjured items.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Damage Shield Damage:</td>
<td class="ParameterDesc">Fired when damage is done from a damage shield like thorns.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Damage Shield Miss:</td>
<td class="ParameterDesc">Fired when damage from a damage shield like thorns is resisted, absorbed, etc.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Dispel Failed:</td>
<td class="ParameterDesc">Fired when a dispel attempt fails.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Enchant Application:</td>
<td class="ParameterDesc">Fired when an enchant is applied to an item.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Environmental Damage:</td>
<td class="ParameterDesc">Fired when damage is done as the result of an environmental effect like falling and drowning.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Extra Attacks:</td>
<td class="ParameterDesc">Fired when extra attacks occur from abilities like Windfury.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Heal:</td>
<td class="ParameterDesc">Fired when a unit is healed.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Health Change:</td>
<td class="ParameterDesc">Fired when a health value changes for one of the supported units.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Item Cooldown Complete:</td>
<td class="ParameterDesc">Fired when an item cooldown completes.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Killing Blow:</td>
<td class="ParameterDesc">Fired when a unit gets a killing blow.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Periodic Skill Damage (DoT):</td>
<td class="ParameterDesc">Fired when damage from a periodic source is done.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Periodic Skill Miss:</td>
<td class="ParameterDesc">Fired when damage from a periodic source is resisted, absorbed, etc.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Periodic Heal (HoT):</td>
<td class="ParameterDesc">Fired when a unit is healed by a periodic source.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Periodic Power Drain:</td>
<td class="ParameterDesc">Fired when power is drained as the result of a periodic source.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Periodic Power Gain:</td>
<td class="ParameterDesc">Fired when power is gained from a periodic source.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Periodic Power Leech:</td>
<td class="ParameterDesc">Fired when power is leeched as the result of a periodic source.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Pet Cooldown Complete:</td>
<td class="ParameterDesc">Fired when a pet skill cooldown completes.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Player Cooldown Complete:</td>
<td class="ParameterDesc">Fired when a player skill cooldown completes.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Power Change:</td>
<td class="ParameterDesc">Fired when a power value changes for one of the supported units.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Power Drain:</td>
<td class="ParameterDesc">Fired when power is drained from a unit.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Power Gain:</td>
<td class="ParameterDesc">Fired when power is gained by a unit.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Power Leech:</td>
<td class="ParameterDesc">Fired when power is leeched from a unit.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Range Damage:</td>
<td class="ParameterDesc">Fired when damage from a ranged source like wands/bows is done.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Range Miss:</td>
<td class="ParameterDesc">Fired when damage from a ranged source like wands/bows is dodged, absorbed, etc.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Skill Damage:</td>
<td class="ParameterDesc">Fired when damage from a skill was done to a unit.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Skill Interrupt:</td>
<td class="ParameterDesc">Fired when a skill is interrupted (not pushed back).</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Skill Miss:</td>
<td class="ParameterDesc">Fired when damage from a skill is resisted, absorbed, etc.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Split Damage:</td>
<td class="ParameterDesc">Fired when damage is being split between the source and recipient units.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Swing Damage:</td>
<td class="ParameterDesc">Fired when damage from normal melee swings is done to a unit.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Swing/Range/Skill Damage:</td>
<td class="ParameterDesc">Fired when any form of non-periodic damage is done to a unit.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Swing Miss:</td>
<td class="ParameterDesc">Fired when damage from normal melee swings is dodged, absorbed, etc.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Swing/Range/Skill Miss:</td>
<td class="ParameterDesc">Fired when any form of non-periodic damage is dodged, resisted, absorbed, etc.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Summon:</td>
<td class="ParameterDesc">Fired when a creature is summoned.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Unit Death:</td>
<td class="ParameterDesc">Fired when a unit dies.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Unit Destroy:</td>
<td class="ParameterDesc">Fired when a mechanical unit is destroyed.</td>
</tr>
</table>
</div>
<div class="SubsectionTitle"><a name="MainEventConditions"></a>Main Event Conditions:</div>
<div class="SubsectionBody">
<table cellspacing="3">
<tr>
<td class="ParameterName" nowrap="nowrap">Absorb Amount:</td>
<td class="ParameterDesc">The amount of damage absorbed.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Amount:</td>
<td class="ParameterDesc">The amount of damage, health, power, etc generated by the event.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Aura Type:</td>
<td class="ParameterDesc">The type of aura (buff, debuff) generated by the event.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Block Amount:</td>
<td class="ParameterDesc">The amount of damage blocked.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Crit:</td>
<td class="ParameterDesc">Whether or not the event is a critical event.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Crushing Blow:</td>
<td class="ParameterDesc">Whether or not the hit was a crushing blow.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Damage Type:</td>
<td class="ParameterDesc">The type of damage (arcane, fire, holy, etc) associated with the event.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Extra Amount:</td>
<td class="ParameterDesc">Secondary amount used for events that have more than one amount value.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Extra Skill ID:</td>
<td class="ParameterDesc">The ID of the secondary skill associated with the event.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Extra Skill Name:</td>
<td class="ParameterDesc">The name of the secondary skill associated with the event.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Extra Skill School:</td>
<td class="ParameterDesc">The school (arcane, fire, holy, etc) of the secondary skill associated with the event.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Glancing Hit:</td>
<td class="ParameterDesc">Whether or not the hit was a glancing hit.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Hazard Type:</td>
<td class="ParameterDesc">The type of hazard (falling, drowning, etc) that caused environmental damage.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Miss Type:</td>
<td class="ParameterDesc">The type of miss (block, dodge, parry, resist, etc) that occurred.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Power Type:</td>
<td class="ParameterDesc">The type of power (energy, mana, rage, etc) that was affected.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Recipient Unit Affiliation:</td>
<td class="ParameterDesc">The affiliation (mine, target, focus, you, party member, etc) of the unit that was the recipient of the event.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Recipient Unit Control:</td>
<td class="ParameterDesc">The controlling mechanism (server, human) of the unit that was the recipient of the event.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Recipient Unit Name:</td>
<td class="ParameterDesc">The name of the unit that was the recipient of the event.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Recipient Unit Reaction:</td>
<td class="ParameterDesc">The reaction (hostile, friendly, neutral) of the unit that was the recipient of the event.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Recipient Unit Type:</td>
<td class="ParameterDesc">The type of the unit (player, pet, NPC, etc) that was the recipient of the event.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Resist Amount:</td>
<td class="ParameterDesc">The amount of damage resisted.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Skill ID:</td>
<td class="ParameterDesc">The ID of the skill associated with the event.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Skill Name:</td>
<td class="ParameterDesc">The name of the skill associated with the event.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Skill School:</td>
<td class="ParameterDesc">The school (arcane, fire, holy etc) of the skill associated with the event.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Source Unit Affiliation:</td>
<td class="ParameterDesc">The affiliation (mine, target, focus, you, party member, etc) of the unit that was the source of the event.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Source Unit Control:</td>
<td class="ParameterDesc">The controlling mechanism (server, human) of the unit that was the source of the event.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Source Unit Name:</td>
<td class="ParameterDesc">The name of the unit that was the source of the event.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Source Unit Reaction:</td>
<td class="ParameterDesc">The reaction (hostile, friendly, neutral) of the unit that was the source of the event.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Source Unit Type:</td>
<td class="ParameterDesc">The type of the unit (player, pet, NPC, etc) that was the source of the event.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Threshold:</td>
<td class="ParameterDesc">Percentage value that must be crossed when dealing with changes in energy, health, mana, etc.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Unit ID:</td>
<td class="ParameterDesc">The ID of the unit affected. Use this condition to test specific units for changes in energy, health, mana, etc.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Unit Reaction:</td>
<td class="ParameterDesc">The reaction of the unit affected by changes in energy, health, mana, etc.</td>
</tr>
</table>
</div>
<div class="SubsectionTitle"><a name="TriggerExceptions"></a>Trigger Exceptions:</div>
<div class="SubsectionBody">
<table cellpacing="3">
<tr>
<td class="ParameterName" nowrap="nowrap">Active Talents:</td>
<td class="ParameterDesc">Examines if the specified talent group is currently active.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Buff Active:</td>
<td class="ParameterDesc">Examines if the specified buff is currently active on you.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Current Combo Points:</td>
<td class="ParameterDesc">The current number of combo points you have.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Current Power:</td>
<td class="ParameterDesc">The current amount of power you have.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Trigger Recently Fired:</td>
<td class="ParameterDesc">The number of seconds since the last time the trigger fired.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Trivial Target:</td>
<td class="ParameterDesc">Examines if the current target is trivial (grey).</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Unavailable Skill:</td>
<td class="ParameterDesc">
Examines if the specified skill is unknown or on cooldown. It does not cover other facets such as necessary reagents,
appropriate range, etc.
</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Warrior Stance:</td>
<td class="ParameterDesc">The current stance your warrior is in. Only works correctly if you are playing a warrior.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Zone Name:</td>
<td class="ParameterDesc">The zone you are currently in.</td>
</tr>
<tr>
<td class="ParameterName" nowrap="nowrap">Zone Type:</td>
<td class="ParameterDesc">The type of zone you are currently in.</td>
</tr>
</table>
</div>
</div>
<div class="SectionTitle"><a name="SearchPatternReference"></a>Search Pattern Reference</div>
<a href="#TOC">Return to TOC</a><br /><br />
<div class="SectionBody">
Here is the official lua reference for patterns:
<div class="SubsectionTitle">Character Class:</div>
<div class="SubsectionBody">
A <i>character class</i> is used to represent a set of characters. The following combinations are allowed in describing a character class:
<ul>
<li>x: (where x is not one of the magic characters ^$()%.[]*+-?) represents the character x itself.</li>
<li>.: (a dot) represents all characters.</li>
<li>%a: represents all letters.</li>
<li>%c: represents all control characters.</li>
<li>%d: represents all digits.</li>
<li>%l: represents all lowercase letters.</li>
<li>%p: represents all punctuation characters.</li>
<li>%s: represents all space characters.</li>
<li>%u: represents all uppercase letters.</li>
<li>%w: represents all alphanumeric characters.</li>
<li>%x: represents all hexadecimal digits.</li>
<li>%z: represents the character with representation 0.</li>
<li>
%x: (where x is any non-alphanumeric character) represents the character x. This is the standard way to escape the magic characters. Any punctuation character (even the non magic)
can be preceded by a '%' when used to represent itself in a pattern.
</li>
<li>
[set]: represents the class which is the union of all characters in set. A range of characters may be specified by separating the end characters of the range with a '-'. All classes
%x described above may also be used as components in set. All other characters in set represent themselves. For example, [%w_] (or [_%w]) represents all alphanumeric characters plus
the underscore, [0-7] represents the octal digits, and [0-7%l%-] represents the octal digits plus the lowercase letters plus the '-' character.
<br /><br />
The interaction between ranges and classes is not defined. Therefore, patterns like [%a-z] or [a-%%] have no meaning.
</li>
<br />
<li>[^set]: represents the complement of set, where set is interpreted as above.</li>
</ul>
For all classes represented by single letters (%a, %c, etc.), the corresponding uppercase letter represents the complement of the class. For instance, %S represents all non-space characters.
<br /><br />
The definitions of letter, space, and other character groups depend on the current locale. In particular, the class [a-z] may not be equivalent to %l.
</div>
<div class="SubsectionTitle">Pattern Item:</div>
<div class="SubsectionBody">
A pattern item may be:
<ul>
<li>a single character class, which matches any single character in the class;</li>
<li>a single character class followed by '*', which matches 0 or more repetitions of characters in the class. These repetition items will always match the longest possible sequence;</li>
<li>a single character class followed by '+', which matches 1 or more repetitions of characters in the class. These repetition items will always match the longest possible sequence;</li>
<li>a single character class followed by '-', which also matches 0 or more repetitions of characters in the class. Unlike '*', these repetition items will always match the shortest possible sequence;</li>
<li>a single character class followed by '?', which matches 0 or 1 occurrence of a character in the class;</li>
<li>%n, for n between 1 and 9; such item matches a substring equal to the n-th captured string (see below);</li>
<li>
%bxy, where x and y are two distinct characters; such item matches strings that start with x, end with y, and where the x and y are balanced. This means that, if one reads the string from left to right,
counting +1 for an x and -1 for a y, the ending y is the first y where the count reaches 0. For instance, the item %b() matches expressions with balanced parentheses.
</li>
</ul>
</div>
<div class="SubsectionTitle">Pattern:</div>
<div class="SubsectionBody">
A <i>pattern</i> is a sequence of pattern items. A '^' at the beginning of a pattern anchors the match at the beginning of the subject string. A '$' at the end of a pattern anchors the match at the end of the subject string.
At other positions, '^' and '$' have no special meaning and represent themselves.
</div>
<div class="SubsectionTitle">Captures:</div>
<div class="SubsectionBody">
A pattern may contain sub-patterns enclosed in parentheses; they describe captures. When a match succeeds, the substrings of the subject string that match captures are stored (captured) for future use. Captures are numbered
according to their left parentheses. For instance, in the pattern "(a*(.)%w(%s*))", the part of the string matching "a*(.)%w(%s*)" is stored as the first capture (and therefore has number 1); the character matching "." is
captured with number 2, and the part matching "%s*" has number 3.
<br /><br />
As a special case, the empty capture () captures the current string position (a number). For instance, if we apply the pattern "()aa()" on the string "flaaap", there will be two captures: 3 and 5.
</div>
</div>
<div class="SectionTitle"><a name="FAQ"></a>Frequently Asked Questions</div>
<a href="#TOC">Return to TOC</a><br /><br />
<div class="SectionBody">
<ol>
<li class="FAQListItem">
<a name="FAQFonts"></a><b>I don't like any of the fonts supplied with MSBT. How do I use my own fonts?</b>