Once I get that upgrade to 36-hour days, I will tackle that. – Mychaeel

Difference between revisions of "User:00zX/UScript.xml"

From Unreal Wiki, The Unreal Engine Documentation Site
Jump to: navigation, search
m
Line 27: Line 27:
 
<PROPERTY NAME="unindentThisLine"
 
<PROPERTY NAME="unindentThisLine"
 
VALUE="^.*(default:\s*|case.*:.*)$" />
 
VALUE="^.*(default:\s*|case.*:.*)$" />
 +
 +
<PROPERTY NAME="lineUpClosingBracket" VALUE="true" />
 
</PROPS>
 
</PROPS>
  
<RULES ESCAPE="\" IGNORE_CASE="TRUE" HIGHLIGHT_DIGITS="TRUE"
+
<RULES SET="WIP"  IGNORE_CASE="TRUE">
DIGIT_RE="0x[\p{XDigit}]+|\d+(\.\d*)?(e[+-]?\d+)?[fF]?">
+
<!-- default values section for class and structs -->
 +
<!--<SEQ_REGEXP HASH_CHARS="cp" NO_LINE_BREAK="FALSE" MATCH_TYPE="KEYWORD1" DELEGATE="CPPTEXT">(struct)?cpptext\s*$</SEQ_REGEXP>-->
 +
<SPAN_REGEXP HASH_CHARS="st" NO_LINE_BREAK="FALSE" MATCH_TYPE="KEYWORD1" DELEGATE="CPPTEXT">
 +
<!--<BEGIN>structcpptext(\s*|\n)[{]$</BEGIN>-->
 +
<BEGIN>structcpptext</BEGIN><!--\s([?]{3})[:]?\s+(.+?)$-->
 +
<END>((.*[}].*){2})<!--(?!\.*;?\n*\.*)}--><!--(?!.*?[}]+.*?){3, }--></END>
 +
 
 +
<!--<END>(\s*\w*[}])\2</END>-->
 +
<!--<END>{(?=\s*[}])\2}</END>-->
 +
<!--<END>(?![{]\s*{3})\s*\w*[}]</END>--><!--(?![{]\s?)-->
 +
</SPAN_REGEXP>
 +
<!--(?!;(\s*|\n)$)[}]\n*$ -->
 +
 
 +
<!--\n*$(?!\s*[{]^.*[}]\n*$)-->
 +
 
 +
<!--(\s*\w*)(?!\s*\w*(?!{)})-->
 +
 
 +
<!--$\s*(?!\s*\w*{)-->
 +
 
 +
<!--<SPAN_REGEXP HASH_CHARS="cp" NO_LINE_BREAK="FALSE" MATCH_TYPE="KEYWORD1" DELEGATE="CPPTEXT">
 +
<BEGIN>cpptext(\s*|\n)</BEGIN>
 +
<END>}(\s*|\n)(?![{].*[}])+$</END>
 +
</SPAN_REGEXP>-->
 +
 
 +
<!--<SPAN AT_WHITESPACE_END="TRUE" TYPE="MARKUP" MATCH_TYPE="KEYWORD4">
 +
<BEGIN>&lt;</BEGIN>
 +
<END>&gt;</END>
 +
</SPAN>-->
 +
 
 +
<!--<SPAN_REGEXP AT_WORD_START="TRUE" TYPE="MARKUP" HASH_CHAR="&lt;" DELEGATE="METADATA">
 +
<BEGIN>&lt;</BEGIN>
 +
<END>&gt;</END>
 +
</SPAN_REGEXP>-->
 +
 
 +
<!--<SEQ_REGEXP HASH_CHAR="&lt;" TYPE="MARKUP" DELEGATE="METADATA">&lt;\S*&gt;</SEQ_REGEXP>-->
 +
 
 +
<SPAN_REGEXP AT_WHITESPACE_END="TRUE" HASH_CHAR="&lt;" TYPE="MARKUP" MATCH_TYPE="MARKUP"><!--&lt;(\w*|\w*\B*)&gt;-->
 +
<BEGIN>&lt;\S*</BEGIN>
 +
<END>&gt;</END>
 +
</SPAN_REGEXP>
 +
 
 +
<!-- Standard Variable Keyword -->
 +
<!--<SEQ_REGEXP AT_WHITESPACE_END="TRUE" HASH_CHAR="v" TYPE="KEYWORD1" MATCH_TYPE="KEYWORD1">var\b[(\s*)]|var\s*[(\w)]</SEQ_REGEXP>-->
 +
 
 +
<!-- Special Editor version of variable declaration -->
 +
<!--<SPAN_REGEXP AT_WORD_START="TRUE" HASH_CHARS="v" TYPE="KEYWORD4" MATCH_TYPE="KEYWORD1">
 +
<BEGIN>var\b[(\s*)]|var\s*[(\w)]</BEGIN>
 +
<END>(?!\w[(])|)</END>
 +
</SPAN_REGEXP>-->
 +
 
 +
<!--var(?=\s)|\b(?=\s*\([\w])-->
 +
<!-- var\b|var(\s*)|var\s*(\w)-->
 +
 
 +
<!--<MARK_PREVIOUS TYPE="KEYWORD1" MATCH_TYPE="KEYWORD1">(?=(var(\b|\s*)[(]))</MARK_PREVIOUS>-->
 +
<!--<SEQ_REGEXP HASH_CHAR="v" TYPE="KEYWORD1" MATCH_TYPE="KEYWORD4">var\s*[(\s*\w*\s*)]\s*</SEQ_REGEXP>--><!--var(\b\s*|\b\s*[(\s*)]\s*|\s*[(\s*\w*\s*)]\s*)-->
 +
<!--<SEQ_REGEXP HASH_CHAR="v" TYPE="KEYWORD1" MATCH_TYPE="KEYWORD4">var[\s*(\s*\w*\s*)\s*]</SEQ_REGEXP>-->
 +
<SEQ_REGEXP AT_WHITESPACE_END="TRUE" HASH_CHAR="v" TYPE="KEYWORD1" MATCH_TYPE="KEYWORD4">var\b\s+</SEQ_REGEXP>
 +
<!--<SEQ_REGEXP AT_WHITESPACE_END="TRUE" HASH_CHAR="v" TYPE="KEYWORD1" MATCH_TYPE="KEYWORD4">var\s*[(\s*)]</SEQ_REGEXP>-->
 +
 
 +
<SPAN_REGEXP HASH_CHARS="v" TYPE="KEYWORD4" MATCH_TYPE="KEYWORD1">
 +
<BEGIN>var(?!\b\s+\w*)(\b\s*[(\s*]|\s*[(\s*\w*])</BEGIN>
 +
<END>)</END><!--(?!var?!\b(\s*\w*)*;\n)-->
 +
</SPAN_REGEXP>
 +
 
 +
</RULES>
 +
 
 +
<RULES ESCAPE="\" IGNORE_CASE="TRUE" HIGHLIGHT_DIGITS="TRUE" DIGIT_RE="0x[\p{XDigit}]+|\d+(\.\d*)?(e[+-]?\d+)?[fF]?">
  
 
<SPAN TYPE="COMMENT2" DELEGATE="COMMENT">
 
<SPAN TYPE="COMMENT2" DELEGATE="COMMENT">
Line 108: Line 176:
 
<SEQ TYPE="OPERATOR">|</SEQ>
 
<SEQ TYPE="OPERATOR">|</SEQ>
 
<SEQ TYPE="OPERATOR">:</SEQ>
 
<SEQ TYPE="OPERATOR">:</SEQ>
<SEQ TYPE="OPERATOR">&lt;</SEQ>
+
<!-- <SEQ TYPE="OPERATOR">&lt;</SEQ>
<SEQ TYPE="OPERATOR">&gt;</SEQ>
+
<SEQ TYPE="OPERATOR">&gt;</SEQ>-->
 
<SEQ TYPE="OPERATOR">/</SEQ>
 
<SEQ TYPE="OPERATOR">/</SEQ>
 
<SEQ TYPE="OPERATOR">?</SEQ>
 
<SEQ TYPE="OPERATOR">?</SEQ>
Line 118: Line 186:
  
 
<!-- functions -->
 
<!-- functions -->
<MARK_PREVIOUS TYPE="FUNCTION" MATCH_TYPE="OPERATOR">(</MARK_PREVIOUS>
+
<!--<MARK_PREVIOUS TYPE="FUNCTION" MATCH_TYPE="OPERATOR">(</MARK_PREVIOUS>-->
  
 
<!-- static modifier -->
 
<!-- static modifier -->
<SEQ_REGEXP AT_WORD_START="TRUE" HASH_CHAR="s"
+
<SEQ_REGEXP AT_WORD_START="TRUE" HASH_CHAR="s" TYPE="KEYWORD1">static\b(?!\s*\.)</SEQ_REGEXP>
TYPE="KEYWORD1">static\b(?!\s*\.)</SEQ_REGEXP>
+
 
+
 
<!-- static function call -->
 
<!-- static function call -->
<SEQ_REGEXP AT_WORD_START="TRUE" HASH_CHAR="s"
+
<SEQ_REGEXP AT_WORD_START="TRUE" HASH_CHAR="s" TYPE="KEYWORD2">static\b(?=\s*\.)</SEQ_REGEXP>
TYPE="KEYWORD2">static\b(?=\s*\.)</SEQ_REGEXP>
+
  
 
<!-- switch keyword -->
 
<!-- switch keyword -->
<SEQ_REGEXP AT_WORD_START="TRUE" HASH_CHAR="s"
+
<SEQ_REGEXP AT_WORD_START="TRUE" HASH_CHAR="s" TYPE="KEYWORD1">switch\b(?=\s*\()</SEQ_REGEXP>
TYPE="KEYWORD1">switch\b(?=\s*\()</SEQ_REGEXP>
+
  
 
<!-- default switch case -->
 
<!-- default switch case -->
<SEQ_REGEXP AT_WORD_START="TRUE" HASH_CHAR="d"
+
<SEQ_REGEXP AT_WORD_START="TRUE" HASH_CHAR="d" TYPE="KEYWORD1">default\b(?=\s*\:)</SEQ_REGEXP>
TYPE="KEYWORD1">default\b(?=\s*\:)</SEQ_REGEXP>
+
 
<!-- default value access -->
 
<!-- default value access -->
<SEQ_REGEXP AT_WORD_START="TRUE" HASH_CHAR="d"
+
<SEQ_REGEXP AT_WORD_START="TRUE" HASH_CHAR="d" TYPE="KEYWORD2">default\b(?=\s*\.)</SEQ_REGEXP>
TYPE="KEYWORD2">default\b(?=\s*\.)</SEQ_REGEXP>
+
  
 
<!-- input variable modifier -->
 
<!-- input variable modifier -->
<SEQ_REGEXP AT_WORD_START="TRUE" HASH_CHAR="i"
+
<SEQ_REGEXP AT_WORD_START="TRUE" HASH_CHAR="i" TYPE="KEYWORD1">input\b(?=\s*[\w&gt;])</SEQ_REGEXP>
TYPE="KEYWORD1">input\b(?=\s*[\w&gt;])</SEQ_REGEXP>
+
  
 
<!-- name datatype -->
 
<!-- name datatype -->
<!-- <SEQ_REGEXP AT_WORD_START="TRUE" HASH_CHAR="n"
+
<!-- <SEQ_REGEXP AT_WORD_START="TRUE" HASH_CHAR="n" TYPE="KEYWORD3">name\b(?=\s*[\w&gt;])</SEQ_REGEXP>-->
TYPE="KEYWORD3">name\b(?=\s*[\w&gt;])</SEQ_REGEXP>-->
+
  
 
<!-- class keyword -->
 
<!-- class keyword -->
<!-- <SEQ_REGEXP AT_WHITESPACE_END="TRUE" HASH_CHAR="c"
+
<!-- <SEQ_REGEXP AT_WHITESPACE_END="TRUE" HASH_CHAR="c" TYPE="KEYWORD1">class\b(?=\s*[\w])</SEQ_REGEXP>-->
TYPE="KEYWORD1">class\b(?=\s*[\w])</SEQ_REGEXP>-->
+
 
<!-- class identifier?? -->
 
<!-- class identifier?? -->
<!-- <SEQ_REGEXP AT_WHITESPACE_END="TRUE" HASH_CHAR="c"
+
<!-- <SEQ_REGEXP AT_WHITESPACE_END="TRUE" HASH_CHAR="c" TYPE="KEYWORD1">class\b(?=[\s*\w'])</SEQ_REGEXP>-->
TYPE="KEYWORD1">class\b(?=[\s*\w'])</SEQ_REGEXP>-->
+
 
<!-- class datatype -->
+
<!--<SEQ_REGEXP AT_WORD_START="TRUE" HASH_CHARS="a&lt;" TYPE="MARKUP" DELEGATE="METADATA">(?!array)&lt;.*&gt;</SEQ_REGEXP>-->
<!-- <SEQ_REGEXP AT_WORD_START="TRUE" HASH_CHAR="c"
+
 
TYPE="KEYWORD1">class\b(?=\s*[\w&lt;&gt;])</SEQ_REGEXP>-->
+
<!-- class / array datatype -->
 +
<!--<SEQ_REGEXP AT_WORD_START="TRUE" HASH_CHARS="ac" TYPE="KEYWORD1">array\b\s*&lt;\s*class\b\s*&lt;\s*\w*\s*&gt;\s+&gt;</SEQ_REGEXP>
 +
<SEQ_REGEXP AT_WORD_START="TRUE" HASH_CHARS="ac" TYPE="INVALID">array\b\s*&lt;\s*class\b\s*&lt;\s*\w*\s*&gt;&gt;</SEQ_REGEXP>-->
 +
<SEQ_REGEXP AT_WORD_START="TRUE" HASH_CHARS="ac" TYPE="KEYWORD1">(array|class)\b(?=\s*[&lt;\s*(?!(array|class))\w*\s*&gt;])</SEQ_REGEXP>
 +
 
 +
<SPAN_REGEXP HASH_CHAR="&lt;" TYPE="MARKUP" MATCH_TYPE="MARKUP" DELEGATE="METADATA">
 +
<BEGIN>(?!(array)?\s*&lt;(=)?)?&lt;|(?!&lt;\s*\d)?&lt;</BEGIN>
 +
<END><!--(?!&gt;=)?-->&gt;</END><!--(&gt;(?![=]))|(&gt;[;])-->
 +
</SPAN_REGEXP>
  
 
<!-- delegate keyword -->
 
<!-- delegate keyword -->
<SEQ_REGEXP AT_WHITESPACE_END="TRUE" HASH_CHAR="d"
+
<SEQ_REGEXP AT_WHITESPACE_END="TRUE" HASH_CHAR="d" TYPE="KEYWORD1">delegate\b(?=\s*[\w])</SEQ_REGEXP>
TYPE="KEYWORD1">delegate\b(?=\s*[\w])</SEQ_REGEXP>
+
 
<!-- delegate datatype -->
 
<!-- delegate datatype -->
<SEQ_REGEXP AT_WORD_START="TRUE" HASH_CHAR="d"
+
<SEQ_REGEXP AT_WORD_START="TRUE" HASH_CHAR="d" TYPE="KEYWORD3">delegate\b(?=\s*[\w&lt;&gt;])</SEQ_REGEXP>
TYPE="KEYWORD3">delegate\b(?=\s*[\w&lt;&gt;])</SEQ_REGEXP>
+
  
 
<!-- default values section for class and structs -->
 
<!-- default values section for class and structs -->
Line 169: Line 234:
 
<END>}</END>
 
<END>}</END>
 
</SPAN_REGEXP>
 
</SPAN_REGEXP>
 +
 +
<!-- Standard Variable Keyword -->
 +
<SEQ_REGEXP AT_WHITESPACE_END="TRUE" HASH_CHAR="v" TYPE="KEYWORD1" MATCH_TYPE="KEYWORD4">var\b\s+(?![(])</SEQ_REGEXP>
 +
 +
<!-- Special Editor version of variable declaration -->
 +
<SPAN_REGEXP HASH_CHARS="v" TYPE="KEYWORD4" MATCH_TYPE="KEYWORD1">
 +
<BEGIN>var(?!\b\s+\w*)(\b\s*[(\s*]|\s*[(\s*\w*])</BEGIN><!-- TODO: Compress me \b(\s*[(\s*])(\w*)?  -->
 +
<END>)</END>
 +
</SPAN_REGEXP>
 +
<!--"KEYWORD4"-->
 +
<!--<SPAN_REGEXP AT_WORD_START="TRUE" HASH_CHARS="ca&lt;" TYPE="MARKUP" MATCH_TYPE="MARKUP" DELEGATE="METADATA">
 +
<BEGIN>(?!(array|class)\b)(&lt;\s*\w*)</BEGIN>
 +
<END>&gt;</END>
 +
</SPAN_REGEXP>-->
 +
 +
<!--(?!+\s*&lt;)-->
 +
<!--(?!\s+&gt;\s*\w*)\s*\w*[;]-->
 +
<!--<IMPORT DELEGATE="uscript::WIP"/>-->
  
 
<KEYWORDS>
 
<KEYWORDS>
Line 174: Line 257:
 
<!-- Class Syntax -->
 
<!-- Class Syntax -->
 
<KEYWORD1>Interface</KEYWORD1>
 
<KEYWORD1>Interface</KEYWORD1>
<KEYWORD1>Class</KEYWORD1><!--db: added test-->
+
<!--<KEYWORD1>Class</KEYWORD1>--><!--db: added test-->
 
<INVALID>Expands</INVALID><!-- only early UE1, shouldn't really be used -->
 
<INVALID>Expands</INVALID><!-- only early UE1, shouldn't really be used -->
 
<KEYWORD1>Extends</KEYWORD1>
 
<KEYWORD1>Extends</KEYWORD1>
<KEYWORD3>Name</KEYWORD3>
 
  
 
<!-- Class Syntax: Optional Specifiers -->
 
<!-- Class Syntax: Optional Specifiers -->
Line 204: Line 286:
 
<KEYWORD1>EditConstArray</KEYWORD1><!-- only UE2 -->
 
<KEYWORD1>EditConstArray</KEYWORD1><!-- only UE2 -->
 
<KEYWORD1>EditFixedSize</KEYWORD1><!-- since UE3 -->
 
<KEYWORD1>EditFixedSize</KEYWORD1><!-- since UE3 -->
<KEYWORD1>EditInlineNew</KEYWORD1><!-- Editor --><!-- since UE2 -->
 
<KEYWORD1>EditInlineNotify</KEYWORD1><!-- only UE2 -->
 
<KEYWORD1>EditInlineUse</KEYWORD1><!-- UE2+ -->
 
 
<KEYWORD4>HideCategories</KEYWORD4><!-- UE2+ -->
 
<KEYWORD4>HideCategories</KEYWORD4><!-- UE2+ -->
 
<KEYWORD4>HideDropDown</KEYWORD4><!-- UE2+ -->
 
<KEYWORD4>HideDropDown</KEYWORD4><!-- UE2+ -->
<KEYWORD4>NotEditInlineNew</KEYWORD4><!-- since UE2 -->
 
 
<KEYWORD4>NotPlaceable</KEYWORD4><!-- UE2+ -->
 
<KEYWORD4>NotPlaceable</KEYWORD4><!-- UE2+ -->
 
<KEYWORD4>Placeable</KEYWORD4>
 
<KEYWORD4>Placeable</KEYWORD4>
Line 215: Line 293:
 
<KEYWORD1>SafeReplace</KEYWORD1>
 
<KEYWORD1>SafeReplace</KEYWORD1>
 
<KEYWORD1>ShowCategories</KEYWORD1><!-- since UE2 -->
 
<KEYWORD1>ShowCategories</KEYWORD1><!-- since UE2 -->
 +
 +
<!-- Object Specifiers -->
 +
<KEYWORD4>EditInline</KEYWORD4><!-- since UE2 -->
 +
<KEYWORD4>EditInlineUse</KEYWORD4><!-- UE2+ -->
 +
<KEYWORD1>EditInlineNew</KEYWORD1><!-- since UE2 -->
 +
<KEYWORD1>EditInlineNotify</KEYWORD1><!-- only UE2 -->
 +
<KEYWORD4>NotEditInlineNew</KEYWORD4><!-- since UE2 -->
  
 
<!--===================================================================================================-->
 
<!--===================================================================================================-->
Line 221: Line 306:
 
<KEYWORD1>Cache</KEYWORD1><!-- only UE2 -->
 
<KEYWORD1>Cache</KEYWORD1><!-- only UE2 -->
 
<KEYWORD1>CacheExempt</KEYWORD1><!-- only UE2 -->
 
<KEYWORD1>CacheExempt</KEYWORD1><!-- only UE2 -->
<KEYWORD1>DuplicateTransient</KEYWORD1><!-- since UE3 -->
 
 
<KEYWORD1>Import</KEYWORD1>
 
<KEYWORD1>Import</KEYWORD1>
 
<KEYWORD1>Init</KEYWORD1>
 
<KEYWORD1>Init</KEYWORD1>
Line 233: Line 317:
  
 
<!-- Function Syntax: Primary Specifiers -->
 
<!-- Function Syntax: Primary Specifiers -->
<KEYWORD1>cpptext</KEYWORD1><!-- only UE2? -->
+
<!--<KEYWORD1>cpptext</KEYWORD1>--><!-- only UE2? -->
<KEYWORD1>cppstruct</KEYWORD1><!-- only UE2? -->
+
<!--<KEYWORD1>cppstruct</KEYWORD1>--><!-- only UE2? -->
 +
<!--<KEYWORD1>structcpptext</KEYWORD1>-->
 
<KEYWORD1>Event</KEYWORD1>
 
<KEYWORD1>Event</KEYWORD1>
 
<KEYWORD1>Function</KEYWORD1>
 
<KEYWORD1>Function</KEYWORD1>
Line 266: Line 351:
 
<!-- db: Secondary Keywords - grey/italic (like uncodex)-->
 
<!-- db: Secondary Keywords - grey/italic (like uncodex)-->
 
<KEYWORD4>Self</KEYWORD4>
 
<KEYWORD4>Self</KEYWORD4>
<KEYWORD4>Owner</KEYWORD4><!--common-->
+
<KEYWORD4>Outer</KEYWORD4><!--common-->
 +
<COMMENT3>Owner</COMMENT3><!--common-->
 +
<KEYWORD4>Instigator</KEYWORD4><!--common-->
 
<KEYWORD4>Optional</KEYWORD4>
 
<KEYWORD4>Optional</KEYWORD4>
 
<KEYWORD4>Out</KEYWORD4>
 
<KEYWORD4>Out</KEYWORD4>
Line 275: Line 362:
 
<KEYWORD2>Super</KEYWORD2>
 
<KEYWORD2>Super</KEYWORD2>
 
<KEYWORD2>Global</KEYWORD2>
 
<KEYWORD2>Global</KEYWORD2>
 +
<INVALID>Null</INVALID>
  
 
<!-- Function Syntax: Secondary Specifiers -->
 
<!-- Function Syntax: Secondary Specifiers -->
 
<INVALID>Intrinsic</INVALID><!-- only early UE1, replaced by "native" -->
 
<INVALID>Intrinsic</INVALID><!-- only early UE1, replaced by "native" -->
 +
<INVALID>Virtual</INVALID>
 
<KEYWORD4>Static</KEYWORD4>
 
<KEYWORD4>Static</KEYWORD4>
 
<KEYWORD4>Final</KEYWORD4>
 
<KEYWORD4>Final</KEYWORD4>
Line 289: Line 378:
 
<KEYWORD1>Unreliable</KEYWORD1>
 
<KEYWORD1>Unreliable</KEYWORD1>
 
<KEYWORD1>Automated</KEYWORD1><!-- only UE2 -->
 
<KEYWORD1>Automated</KEYWORD1><!-- only UE2 -->
 +
<KEYWORD4>k2override</KEYWORD4><!-- UDK+ -->
  
 
<!-- built-in type names -->
 
<!-- built-in type names -->
 
<KEYWORD1>Const</KEYWORD1>
 
<KEYWORD1>Const</KEYWORD1>
<KEYWORD1>Var</KEYWORD1>
+
<!--<KEYWORD1>Var</KEYWORD1>-->
 
<KEYWORD1>Local</KEYWORD1>
 
<KEYWORD1>Local</KEYWORD1>
 
<!-- db: modifed these to be keyword 1 from 3 -->
 
<!-- db: modifed these to be keyword 1 from 3 -->
Line 304: Line 394:
 
<KEYWORD1>Struct</KEYWORD1>
 
<KEYWORD1>Struct</KEYWORD1>
 
<KEYWORD1>Pointer</KEYWORD1><!-- UE2+ -->
 
<KEYWORD1>Pointer</KEYWORD1><!-- UE2+ -->
<KEYWORD1>Array</KEYWORD1>
+
<!--<KEYWORD1>Array</KEYWORD1>-->
 +
<KEYWORD1>Name</KEYWORD1>
  
<KEYWORD1>Vector</KEYWORD1>
+
<KEYWORD1>vector</KEYWORD1>
<KEYWORD1>Rotator</KEYWORD1>
+
<KEYWORD1>rotator</KEYWORD1>
 
<KEYWORD1>vector2d</KEYWORD1>
 
<KEYWORD1>vector2d</KEYWORD1>
 
<KEYWORD1>color</KEYWORD1>
 
<KEYWORD1>color</KEYWORD1>
 +
<KEYWORD1>quat</KEYWORD1>
 +
<KEYWORD1>matrix</KEYWORD1>
  
 
<!-- Variable Secondary (Syntax)Flags-->
 
<!-- Variable Secondary (Syntax)Flags-->
Line 320: Line 413:
 
<KEYWORD4>RepNotify</KEYWORD4>
 
<KEYWORD4>RepNotify</KEYWORD4>
 
<KEYWORD4>Transient</KEYWORD4>
 
<KEYWORD4>Transient</KEYWORD4>
 +
<KEYWORD1>DuplicateTransient</KEYWORD1><!-- since UE3 -->
 
<KEYWORD1>Instanced</KEYWORD1><!-- UE2+ -->
 
<KEYWORD1>Instanced</KEYWORD1><!-- UE2+ -->
 
<KEYWORD1>DataBinding</KEYWORD1><!-- UE3+ -->
 
<KEYWORD1>DataBinding</KEYWORD1><!-- UE3+ -->
Line 326: Line 420:
 
<KEYWORD1>Long</KEYWORD1><!-- UE2+ (struct) -->
 
<KEYWORD1>Long</KEYWORD1><!-- UE2+ (struct) -->
 
<KEYWORD4>k2Call</KEYWORD4>
 
<KEYWORD4>k2Call</KEYWORD4>
 +
<KEYWORD4>PrivateWrite</KEYWORD4>
 +
<KEYWORD4>interp</KEYWORD4>
 +
<KEYWORD4>Archetype</KEYWORD4>
 +
<KEYWORD4>k2pure</KEYWORD4>
 +
<!-- Editor -->
 
<KEYWORD4>EditorOnly</KEYWORD4>
 
<KEYWORD4>EditorOnly</KEYWORD4>
<KEYWORD4>EditInline</KEYWORD4><!-- since UE2 -->
+
<KEYWORD4>EditHide</KEYWORD4>
  
 
<!-- literals and special function calls -->
 
<!-- literals and special function calls -->
 
<KEYWORD2>True</KEYWORD2>
 
<KEYWORD2>True</KEYWORD2>
 
<KEYWORD2>False</KEYWORD2>
 
<KEYWORD2>False</KEYWORD2>
 +
<KEYWORD2>enable</KEYWORD2>
 +
<KEYWORD2>disable</KEYWORD2>
  
 
<!-- literals -->
 
<!-- literals -->
Line 344: Line 445:
 
<KEYWORD2>EnumCount</KEYWORD2>
 
<KEYWORD2>EnumCount</KEYWORD2>
 
<KEYWORD2>Length</KEYWORD2><!-- UE2+ -->
 
<KEYWORD2>Length</KEYWORD2><!-- UE2+ -->
 +
<KEYWORD2>PathName</KEYWORD2>
  
<!-- Dynamic Arrays -->
+
</KEYWORDS>
 +
 
 +
<!-- Expanded UnrealEngine highlighting rules -->
 +
<IMPORT DELEGATE="uscript::UNREALENGINE"/>
 +
 
 +
</RULES>
 +
 
 +
<RULES SET="UNREALENGINE" IGNORE_CASE="TRUE">
 +
 
 +
<!-- UnrealEngine functions -->
 +
<SEQ_REGEXP HASH_CHAR="fi" TYPE="KEYWORD4">FindChild(?=[(]\s*|\w*[)])</SEQ_REGEXP>
 +
<SEQ_REGEXP HASH_CHAR="is" TYPE="KEYWORD4">IsA(?=[(]\s*|\w*[)])</SEQ_REGEXP>
 +
<SEQ_REGEXP HASH_CHAR="c" TYPE="KEYWORD4">ClassIsChildOf(?=[(]\s*|\w*[)])</SEQ_REGEXP>
 +
 
 +
<SEQ_REGEXP HASH_CHAR="isi" TYPE="KEYWORD4">IsInState(?=[(]\s*|\w*[)])</SEQ_REGEXP>
 +
<SEQ_REGEXP HASH_CHAR="dr" TYPE="KEYWORD4">Draw3DLine(?=[(]\s*|\w*[)])</SEQ_REGEXP>
 +
<SEQ_REGEXP HASH_CHAR="de" TYPE="KEYWORD4">DeProject(?=[(]\s*|\w*[)])</SEQ_REGEXP>
 +
 
 +
<SEQ_REGEXP HASH_CHAR="re" TYPE="KEYWORD4">ReplicateMove(?=[(]\s*|\w*[)])</SEQ_REGEXP>
 +
<SEQ_REGEXP HASH_CHAR="pr" TYPE="KEYWORD4">ProcessMove(?=[(]\s*|\w*[)])</SEQ_REGEXP>
 +
<SEQ_REGEXP HASH_CHAR="pl" TYPE="KEYWORD4">PlayerTick(?=[(]\s*|\w*[)])</SEQ_REGEXP>
 +
 
 +
<SEQ_REGEXP HASH_CHAR="po" TYPE="KEYWORD4">PostRender(?=[(]\s*|\w*[)])</SEQ_REGEXP>
 +
<SEQ_REGEXP HASH_CHAR="ge" TYPE="KEYWORD4">GetEnum(?=[(]\s*|\w*[)])</SEQ_REGEXP>
 +
<SEQ_REGEXP HASH_CHAR="fi" TYPE="KEYWORD4">FindObject(?=[(]\s*|\w*[)])</SEQ_REGEXP>
 +
 
 +
<SEQ_REGEXP HASH_CHAR="tr" TYPE="KEYWORD4">Trace(?=[(]\s*|\w*[)])</SEQ_REGEXP>
 +
<SEQ_REGEXP HASH_CHAR="fa" TYPE="KEYWORD4">FastTrace(?=[(]\s*|\w*[)])</SEQ_REGEXP>
 +
<SEQ_REGEXP HASH_CHAR="sp" TYPE="KEYWORD4">Spawn(?=[(]\s*|\w*[)])</SEQ_REGEXP>
 +
 
 +
<KEYWORDS>
 +
<!-- Dynamic Arrays -->
 
<KEYWORD2>Find</KEYWORD2><!-- (since UE3) -->
 
<KEYWORD2>Find</KEYWORD2><!-- (since UE3) -->
 
<KEYWORD2>Add</KEYWORD2><!-- (since UE3) -->
 
<KEYWORD2>Add</KEYWORD2><!-- (since UE3) -->
Line 355: Line 488:
 
<KEYWORD1>index_none</KEYWORD1>
 
<KEYWORD1>index_none</KEYWORD1>
  
<!-- UE3 property tags -->
+
<!-- Constants -->
<!-- db: moved these to keyword 3 instead of 4 to make room -->
+
<KEYWORD2>MaxInt</KEYWORD2>
<!--
+
<KEYWORD2>Pi</KEYWORD2>
<KEYWORD3>AllowAbstract</KEYWORD3>
+
<KEYWORD2>RadToDeg</KEYWORD2>
<KEYWORD3>AutoComment</KEYWORD3>
+
<KEYWORD2>DegToRad</KEYWORD2>
<KEYWORD3>DisplayName</KEYWORD3>
+
<KEYWORD2>UnrRotToRad</KEYWORD2>
<KEYWORD3>EditCondition</KEYWORD3>
+
<KEYWORD2>RadToUnrRot</KEYWORD2>
<KEYWORD3>Tooltip</KEYWORD3>
+
<KEYWORD2>DegToUnrRot</KEYWORD2>
-->
+
<KEYWORD2>UnrRotToDeg</KEYWORD2>
<!-- UnrealEngine Functions -->
+
<KEYWORD4>min</KEYWORD4>
+
<KEYWORD4>max</KEYWORD4>
+
<KEYWORD4>abs</KEYWORD4>
+
<KEYWORD4>clamp</KEYWORD4>
+
<KEYWORD4>vlerp</KEYWORD4>
+
<KEYWORD4>Vsize2d</KEYWORD4>
+
<KEYWORD4>round</KEYWORD4>
+
 
+
<KEYWORD4>DynamicLoadObject</KEYWORD4>
+
  
 
<KEYWORD3>Velocity</KEYWORD3>
 
<KEYWORD3>Velocity</KEYWORD3>
Line 389: Line 512:
 
<KEYWORD3>PlayerController</KEYWORD3>
 
<KEYWORD3>PlayerController</KEYWORD3>
 
<KEYWORD3>Material</KEYWORD3>
 
<KEYWORD3>Material</KEYWORD3>
 +
<KEYWORD3>PhysicalMaterial</KEYWORD3>
 
<KEYWORD3>MaterialInterface</KEYWORD3><!-- UE3 -->
 
<KEYWORD3>MaterialInterface</KEYWORD3><!-- UE3 -->
 
<KEYWORD3>Texture</KEYWORD3>
 
<KEYWORD3>Texture</KEYWORD3>
Line 396: Line 520:
 
<KEYWORD3>Font</KEYWORD3>
 
<KEYWORD3>Font</KEYWORD3>
 
<KEYWORD3>Projectile</KEYWORD3>
 
<KEYWORD3>Projectile</KEYWORD3>
 +
<KEYWORD3>PlayerInput</KEYWORD3>
  
 
<!-- UnrealEngine Enums -->
 
<!-- UnrealEngine Enums -->
Line 411: Line 536:
 
<KEYWORD3>UIObject</KEYWORD3>
 
<KEYWORD3>UIObject</KEYWORD3>
 
<KEYWORD3>UIImage</KEYWORD3>
 
<KEYWORD3>UIImage</KEYWORD3>
 +
<KEYWORD3>TextureCoordinates</KEYWORD3>
  
 
<KEYWORD3>AnimSet</KEYWORD3><!-- UE3 -->
 
<KEYWORD3>AnimSet</KEYWORD3><!-- UE3 -->
 +
<KEYWORD3>AnimNode</KEYWORD3>
 +
<KEYWORD3>AnimNodeSequence</KEYWORD3>
 +
 
<KEYWORD3>CameraAnim</KEYWORD3>
 
<KEYWORD3>CameraAnim</KEYWORD3>
 
<KEYWORD3>Emitter</KEYWORD3>
 
<KEYWORD3>Emitter</KEYWORD3>
Line 431: Line 560:
  
 
<KEYWORD3>ForceFeedbackWaveform</KEYWORD3>
 
<KEYWORD3>ForceFeedbackWaveform</KEYWORD3>
 +
<KEYWORD3>FluidSurfaceActor</KEYWORD3>
 +
 +
<KEYWORD3>Sequence</KEYWORD3>
 +
<KEYWORD3>SequenceEvent</KEYWORD3>
 +
<KEYWORD3>SequenceObject</KEYWORD3>
 +
 +
<KEYWORD3>FaceFXAsset</KEYWORD3>
  
 
<!--Components UE3-->
 
<!--Components UE3-->
<KEYWORD3>Component</KEYWORD3>
+
<KEYWORD4>AttachComponent</KEYWORD4>
<KEYWORD3>ActorComponent</KEYWORD3>
+
<KEYWORD4>DetachComponent</KEYWORD4>
<KEYWORD3>PrimitiveComponent</KEYWORD3>
+
<KEYWORD4>ReattachComponent</KEYWORD4>
<KEYWORD3>SVehicleSimBase</KEYWORD3>
+
<COMMENT3>AttachComponentToSocket</COMMENT3>
<KEYWORD3>StaticMeshComponent</KEYWORD3>
+
<KEYWORD3>Component</KEYWORD3>
<KEYWORD3>SkeletalMeshComponent</KEYWORD3>
+
<KEYWORD3>ActorComponent</KEYWORD3>
<KEYWORD3>ParticleSystemComponent</KEYWORD3>
+
<KEYWORD3>PrimitiveComponent</KEYWORD3>
<KEYWORD3>PointLightComponent</KEYWORD3>
+
<KEYWORD3>SVehicleSimBase</KEYWORD3>
<KEYWORD3>SplineComponent</KEYWORD3>
+
<KEYWORD3>StaticMeshComponent</KEYWORD3>
 +
<KEYWORD3>SkeletalMeshComponent</KEYWORD3>
 +
<KEYWORD3>ParticleSystemComponent</KEYWORD3>
 +
<KEYWORD3>PointLightComponent</KEYWORD3>
 +
<KEYWORD3>SplineComponent</KEYWORD3>
 +
<KEYWORD3>AudioComponent</KEYWORD3>
  
 
<!--UDK specific-->
 
<!--UDK specific-->
Line 455: Line 596:
 
<KEYWORD3>SoundCue</KEYWORD3><!-- UE3 -->
 
<KEYWORD3>SoundCue</KEYWORD3><!-- UE3 -->
  
<!-- UnrealEngine functions -->
+
<!-- Object Events -->
<KEYWORD4>FindChild</KEYWORD4>
+
<KEYWORD4>IsA</KEYWORD4>
+
<KEYWORD4>ClassIsChildOf</KEYWORD4>
+
<KEYWORD4>IsInState</KEYWORD4>
+
<KEYWORD4>Draw3DLine</KEYWORD4>
+
<KEYWORD4>DeProject</KEYWORD4>
+
<KEYWORD4>ReplicateMove</KEYWORD4>
+
<KEYWORD4>ProcessMove</KEYWORD4>
+
<KEYWORD4>PlayerTick</KEYWORD4>
+
<KEYWORD4>Tick</KEYWORD4>
+
<KEYWORD4>PostRender</KEYWORD4>
+
<KEYWORD4>PostBeginPlay</KEYWORD4>
+
<KEYWORD4>PreBeginPlay</KEYWORD4>
+
<KEYWORD4>Trace</KEYWORD4>
+
<KEYWORD4>Spawn</KEYWORD4>
+
<KEYWORD4>AttachComponent</KEYWORD4>
+
 
<KEYWORD4>BeginState</KEYWORD4>
 
<KEYWORD4>BeginState</KEYWORD4>
 
<KEYWORD4>EndState</KEYWORD4>
 
<KEYWORD4>EndState</KEYWORD4>
 +
<KEYWORD4>PushedState</KEYWORD4>
 +
<KEYWORD4>PoppedState</KEYWORD4>
 +
<KEYWORD4>PausedState</KEYWORD4>
 +
<KEYWORD4>ContinuedState</KEYWORD4>
  
<!-- Timer functions: UE3-->
+
<!-- Actor Events -->
 +
<KEYWORD4>ReplicatedEvent</KEYWORD4><!-- UE3+ -->
 +
<KEYWORD4>Destroyed</KEYWORD4>
 +
<KEYWORD4>GainedChild</KEYWORD4>
 +
<KEYWORD4>LostChild</KEYWORD4>
 +
<KEYWORD4>Tick</KEYWORD4>
 +
<KEYWORD4>Timer</KEYWORD4>
 +
<KEYWORD4>HitWall</KEYWORD4>
 +
<KEYWORD4>Falling</KEYWORD4>
 +
<KEYWORD4>Landed</KEYWORD4>
 +
<KEYWORD4>PhysicsVolumeChange</KEYWORD4>
 +
<KEYWORD4>Touch</KEYWORD4>
 +
<KEYWORD4>PostTouch</KEYWORD4>
 +
<KEYWORD4>UnTouch</KEYWORD4>
 +
<KEYWORD4>Bump</KEYWORD4>
 +
<KEYWORD4>BaseChange</KEYWORD4>
 +
<KEYWORD4>Attach</KEYWORD4>
 +
<KEYWORD4>Detach</KEYWORD4>
 +
<KEYWORD4>SpecialHandling</KEYWORD4>
 +
<KEYWORD4>CollisionChanged</KEYWORD4>
 +
<KEYWORD4>EncroachingOn</KEYWORD4>
 +
<KEYWORD4>EncroachedBy</KEYWORD4>
 +
<KEYWORD4>RanInto</KEYWORD4>
 +
<KEYWORD4>OnWakeRBPhysics</KEYWORD4>
 +
<KEYWORD4>OnSleepRBPhysics</KEYWORD4>
 +
<KEYWORD4>OverRotated</KEYWORD4>
 +
<KEYWORD4>FellOutOfWorld</KEYWORD4>
 +
<KEYWORD4>OutsideWorldBounds</KEYWORD4>
 +
<KEYWORD4>TornOff</KEYWORD4>
 +
<KEYWORD4>PreBeginPlay</KEYWORD4>
 +
<KEYWORD4>BroadcastLocalizedMessage</KEYWORD4>
 +
<KEYWORD4>BroadcastLocalizedTeamMessage</KEYWORD4>
 +
<KEYWORD4>PostBeginPlay</KEYWORD4>
 +
<KEYWORD4>SetInitialState</KEYWORD4>
 +
<KEYWORD4>ConstraintBrokenNotify</KEYWORD4>
 +
<KEYWORD4>NotifySkelControlBeyondLimit</KEYWORD4>
 +
<KEYWORD4>TakeDamage</KEYWORD4>
 +
<KEYWORD4>HealDamage</KEYWORD4>
 +
<KEYWORD4>DebugFreezeGame</KEYWORD4>
 +
<KEYWORD4>BecomeViewTarget</KEYWORD4>
 +
<KEYWORD4>EndViewTarget</KEYWORD4>
 +
<KEYWORD4>ModifyHearSoundComponent</KEYWORD4>
 +
<KEYWORD4>GetFaceFXAudioComponent</KEYWORD4>
 +
<KEYWORD4>Reset</KEYWORD4>
 +
<KEYWORD4>DebugMessagePlayer</KEYWORD4>
 +
<KEYWORD4>ReceivedNewEvent</KEYWORD4>
 +
<KEYWORD4>ForceNetRelevant</KEYWORD4>
 +
<KEYWORD4>ShutDown</KEYWORD4>
 +
<KEYWORD4>OnAnimEnd</KEYWORD4>
 +
<KEYWORD4>OnAnimPlay</KEYWORD4>
 +
<KEYWORD4>BeginAnimControl</KEYWORD4>
 +
<KEYWORD4>SetAnimPosition</KEYWORD4>
 +
<KEYWORD4>FinishAnimControl</KEYWORD4>
 +
<KEYWORD4>PlayActorFaceFXAnim</KEYWORD4>
 +
<KEYWORD4>StopActorFaceFXAnim</KEYWORD4>
 +
<KEYWORD4>SetMorphWeight</KEYWORD4>
 +
<KEYWORD4>SetSkelControlScale</KEYWORD4>
 +
<KEYWORD4>GetActorFaceFXAsset</KEYWORD4>
 +
<KEYWORD4>GetActorEyesViewPoint</KEYWORD4>
 +
<KEYWORD4>ScriptGetTeamNum</KEYWORD4>
 +
<KEYWORD4>SpawnedByKismet</KEYWORD4>
 +
<KEYWORD4>InterpolationStarted</KEYWORD4>
 +
<KEYWORD4>InterpolationFinished</KEYWORD4>
 +
<KEYWORD4>InterpolationChanged</KEYWORD4>
 +
<KEYWORD4>RigidBodyCollision</KEYWORD4>
 +
<KEYWORD4>OnRanOver</KEYWORD4>
 +
<KEYWORD4>PostRenderFor</KEYWORD4>
 +
<KEYWORD4>RootMotionModeChanged</KEYWORD4>
 +
<KEYWORD4>RootMotionProcessed</KEYWORD4>
 +
<KEYWORD4>RootMotionExtracted</KEYWORD4>
 +
<KEYWORD4>PostInitAnimTree</KEYWORD4>
 +
<KEYWORD4>OnRigidBodySpringOverextension</KEYWORD4>
 +
<KEYWORD4>PlayParticleEffect</KEYWORD4>
 +
<KEYWORD4>CreateForceField</KEYWORD4>
 +
<KEYWORD4>TrailsNotify</KEYWORD4>
 +
<KEYWORD4>TrailsNotifyTick</KEYWORD4>
 +
<KEYWORD4>TrailsNotifyEnd</KEYWORD4>
 +
<KEYWORD4>AnimTreeUpdated</KEYWORD4>
 +
<KEYWORD4>PostDemoRewind</KEYWORD4>
 +
<KEYWORD4>ReplicationEnded</KEYWORD4>
 +
 
 +
<!-- Math Functions -->
 +
<KEYWORD4>min</KEYWORD4>
 +
<KEYWORD4>max</KEYWORD4>
 +
<KEYWORD4>abs</KEYWORD4>
 +
<KEYWORD4>clamp</KEYWORD4>
 +
 
 +
<KEYWORD4>sin</KEYWORD4>
 +
<KEYWORD4>cos</KEYWORD4>
 +
<KEYWORD4>atan</KEYWORD4>
 +
 
 +
<KEYWORD4>vlerp</KEYWORD4>
 +
<KEYWORD4>vsize</KEYWORD4>
 +
<KEYWORD4>vsize2d</KEYWORD4>
 +
<KEYWORD4>round</KEYWORD4>
 +
 
 +
<KEYWORD4>fclamp</KEYWORD4>
 +
<KEYWORD4>fmin</KEYWORD4>
 +
<KEYWORD4>fmax</KEYWORD4>
 +
<KEYWORD4>frand</KEYWORD4>
 +
 
 +
<!-- Actor Functions -->
 +
<KEYWORD4>SetLocation</KEYWORD4>
 +
<KEYWORD4>SetRotation</KEYWORD4>
 +
<KEYWORD4>SetBase</KEYWORD4>
 +
<KEYWORD4>SetHidden</KEYWORD4>
 +
<KEYWORD4>SetHardAttach</KEYWORD4>
 +
<KEYWORD4>SetCollision</KEYWORD4>
 +
 
 +
<KEYWORD4>DynamicLoadObject</KEYWORD4>
 +
 
 +
<!-- SkeletalMesh Component functions -->
 +
<KEYWORD4>GetSocketWorldLocationAndRotation</KEYWORD4>
 +
<KEYWORD4>GetSocketByName</KEYWORD4>
 +
<KEYWORD4>MatchRefBone</KEYWORD4>
 +
<KEYWORD4>TransformFromBoneSpace</KEYWORD4>
 +
 
 +
<!-- Timer functions: UE3-->
 
<KEYWORD4>SetTimer</KEYWORD4>
 
<KEYWORD4>SetTimer</KEYWORD4>
 
<KEYWORD4>ClearTimer</KEYWORD4>
 
<KEYWORD4>ClearTimer</KEYWORD4>
Line 481: Line 727:
 
<KEYWORD4>GetTimerCount</KEYWORD4>
 
<KEYWORD4>GetTimerCount</KEYWORD4>
 
<KEYWORD4>GetTimerRate</KEYWORD4>
 
<KEYWORD4>GetTimerRate</KEYWORD4>
 +
<KEYWORD4>ClearAllTimers</KEYWORD4>
 +
<KEYWORD4>PauseTimer</KEYWORD4>
  
<!-- Main Iterators Foreach -->
+
<!-- Native Iterators -->
 
<KEYWORD4>AllActors</KEYWORD4><!-- UE2+ -->
 
<KEYWORD4>AllActors</KEYWORD4><!-- UE2+ -->
 
<KEYWORD4>DynamicActors</KEYWORD4><!-- UE2+ -->
 
<KEYWORD4>DynamicActors</KEYWORD4><!-- UE2+ -->
Line 496: Line 744:
 
<KEYWORD4>AllOwnedComponents</KEYWORD4><!-- UE3+ -->
 
<KEYWORD4>AllOwnedComponents</KEYWORD4><!-- UE3+ -->
 
<KEYWORD4>LocalPlayerControllers</KEYWORD4>
 
<KEYWORD4>LocalPlayerControllers</KEYWORD4>
 +
 
</KEYWORDS>
 
</KEYWORDS>
 +
 
</RULES>
 
</RULES>
  
Line 529: Line 779:
 
<EOL_SPAN DELEGATE="PRAGMA" TYPE="KEYWORD1">pragma</EOL_SPAN>
 
<EOL_SPAN DELEGATE="PRAGMA" TYPE="KEYWORD1">pragma</EOL_SPAN>
 
<EOL_SPAN DELEGATE="PRAGMA" TYPE="KEYWORD1">ucpp</EOL_SPAN>
 
<EOL_SPAN DELEGATE="PRAGMA" TYPE="KEYWORD1">ucpp</EOL_SPAN>
 +
</RULES>
 +
 +
<RULES SET="METADATA" IGNORE_CASE="TRUE" HIGHLIGHT_DIGITS="TRUE" DIGIT_RE="0x[\p{XDigit}]+|\d+(\.\d*)?(e[+-]?\d+)?[fF]?">
 +
<!-- operators, separators and brackets -->
 +
<SEQ TYPE="OPERATOR">|</SEQ>
 +
 +
<KEYWORDS>
 +
<!-- UE3 property tags -->
 +
<!-- db: moved these to keyword 3 instead of 4 to make room -->
 +
 +
<MARKUP>AllowAbstract</MARKUP>
 +
<MARKUP>AutoComment</MARKUP>
 +
<MARKUP>DisplayName</MARKUP>
 +
<MARKUP>EditCondition</MARKUP>
 +
<MARKUP>Tooltip</MARKUP>
 +
<MARKUP>ClampMin</MARKUP>
 +
<MARKUP>ClampMax</MARKUP>
 +
<MARKUP>UIMin</MARKUP>
 +
<MARKUP>UIMax</MARKUP>
 +
</KEYWORDS>
 
</RULES>
 
</RULES>
  
Line 594: Line 864:
 
<LITERAL2>on</LITERAL2>
 
<LITERAL2>on</LITERAL2>
 
<LITERAL2>off</LITERAL2>
 
<LITERAL2>off</LITERAL2>
 +
</KEYWORDS>
 +
</RULES>
 +
 +
<RULES SET="CPPTEXT" ESCAPE="\" IGNORE_CASE="false">
 +
 +
<!--  -->
 +
<EOL_SPAN AT_WHITESPACE_END="TRUE" DELEGATE="DIRECTIVE" TYPE="KEYWORD2">#</EOL_SPAN>
 +
 +
<SPAN TYPE="COMMENT2" DELEGATE="COMMENT">
 +
<BEGIN>/**</BEGIN>
 +
<END>*/</END>
 +
</SPAN>
 +
 +
<!-- multi line comments -->
 +
<SPAN TYPE="COMMENT1" DELEGATE="COMMENT">
 +
<BEGIN>/*</BEGIN>
 +
<END>*/</END>
 +
</SPAN>
 +
 +
<!-- end of line comments -->
 +
<EOL_SPAN TYPE="COMMENT1" DELEGATE="EOLCOMMENT">//</EOL_SPAN>
 +
<EOL_SPAN TYPE="COMMENT2" DELEGATE="EOLCOMMENT">///</EOL_SPAN>
 +
 +
<!--<IMPORT DELEGATE="c++::LEX"/>-->
 +
<IMPORT DELEGATE="c++::CORE"/>
 +
<!--<IMPORT DELEGATE="c++::DEFINE"/>-->
 +
 +
<KEYWORDS>
 +
<KEYWORD1>NULL</KEYWORD1>
 +
<KEYWORD1>FALSE</KEYWORD1>
 +
<KEYWORD1>TRUE</KEYWORD1>
 +
 +
<KEYWORD1>BYTE</KEYWORD1>
 +
<KEYWORD1>FLOAT</KEYWORD1>
 +
<KEYWORD1>INT</KEYWORD1>
 +
<KEYWORD1>TCHAR</KEYWORD1>
 +
 +
<!-- Unreal Engine CPP Types -->
 +
<KEYWORD2>FName</KEYWORD2>
 +
<KEYWORD2>FVector</KEYWORD2>
 +
<KEYWORD2>FRotator</KEYWORD2>
 +
<KEYWORD2>FColor</KEYWORD2>
 +
<KEYWORD2>FLinearColor</KEYWORD2>
 +
<KEYWORD2>FGuid</KEYWORD2>
 +
<KEYWORD2>FFrame</KEYWORD2>
 +
 +
<KEYWORD3>FRigidBodyState</KEYWORD3>
 +
<KEYWORD3>FRigidBodyCollisionInfo</KEYWORD3>
 +
<KEYWORD3>FCollisionImpactData</KEYWORD3>
 +
 +
<KEYWORD3>UBOOL</KEYWORD3>
 +
<KEYWORD3>UPackageMap</KEYWORD3>
 +
<KEYWORD3>UActorChannel</KEYWORD3>
 +
<KEYWORD3>UPackageMap</KEYWORD3>
 +
<KEYWORD3>UFunction</KEYWORD3>
 +
<KEYWORD3>UProperty</KEYWORD3>
 +
<KEYWORD3>UPrimitiveComponent</KEYWORD3>
 +
<KEYWORD3>ULevel</KEYWORD3>
 +
<KEYWORD3>UAnimNodeSequence</KEYWORD3>
 +
 +
<KEYWORD3>AActor</KEYWORD3>
 +
<KEYWORD3>APawn</KEYWORD3>
 +
<KEYWORD3>APlayerController</KEYWORD3>
 +
<KEYWORD3>AVolume</KEYWORD3>
 +
<KEYWORD3>AController</KEYWORD3>
 +
<KEYWORD3>AFluidSurfaceActor</KEYWORD3>
 +
<KEYWORD3>AProjectile</KEYWORD3>
 +
<KEYWORD3>APortalTeleporter</KEYWORD3>
 +
<KEYWORD3>ANavigationPoint</KEYWORD3>
 +
 +
<KEYWORD3>TArray</KEYWORD3>
 +
 +
<!-- PhysX -->
 +
<KEYWORD3>NxActorDesc</KEYWORD3>
 +
<KEYWORD3>NxActor</KEYWORD3>
 +
 
</KEYWORDS>
 
</KEYWORDS>
 
</RULES>
 
</RULES>
Line 643: Line 989:
 
<MARK_PREVIOUS AT_WORD_START="TRUE" MATCH_TYPE="OPERATOR" TYPE="MARKUP">.</MARK_PREVIOUS>
 
<MARK_PREVIOUS AT_WORD_START="TRUE" MATCH_TYPE="OPERATOR" TYPE="MARKUP">.</MARK_PREVIOUS>
 
<MARK_PREVIOUS AT_WORD_START="TRUE" MATCH_TYPE="OPERATOR" TYPE="MARKUP">(</MARK_PREVIOUS>
 
<MARK_PREVIOUS AT_WORD_START="TRUE" MATCH_TYPE="OPERATOR" TYPE="MARKUP">(</MARK_PREVIOUS>
<MARK_PREVIOUS AT_WORD_START="TRUE" MATCH_TYPE="OPERATOR" TYPE="MARKUP">[</MARK_PREVIOUS>
+
<MARK_PREVIOUS AT_WORD_START="TRUE" MATCH_TYPE="OPERATOR" TYPE="MARKUP">[</MARK_PREVIOUS><!-- Invalid for arrays in defaults -->
  
 
<!-- closing brackets -->
 
<!-- closing brackets -->
<SEQ TYPE="OPERATOR">]</SEQ>
+
<SEQ TYPE="OPERATOR">]</SEQ><!-- Invalid for arrays in defaults -->
 
<SEQ TYPE="OPERATOR">)</SEQ>
 
<SEQ TYPE="OPERATOR">)</SEQ>
  
Line 677: Line 1,023:
 
<KEYWORD3>Texture</KEYWORD3>
 
<KEYWORD3>Texture</KEYWORD3>
 
<KEYWORD3>Texture2D</KEYWORD3>
 
<KEYWORD3>Texture2D</KEYWORD3>
 +
<KEYWORD3>SkeletalMesh</KEYWORD3>
 +
<KEYWORD3>AnimTree</KEYWORD3>
 +
<KEYWORD3>PhysicsAsset</KEYWORD3>
  
 
<!--Components UE3-->
 
<!--Components UE3-->

Revision as of 10:50, 15 May 2011

<?xml version="1.0"?>
<!DOCTYPE MODE SYSTEM "xmode.dtd">
<MODE>
	<!--
	UnrealScript edit mode.
	Put this file to your .jedit/modes/ directory and add the following line
	to your .jedit/modes/catalog file:
 
	<MODE NAME="unrealscript" FILE="unrealscript.xml" FILE_NAME_GLOB="*.{uc,puc,uci}"/>
	-->
 
	<PROPS>
		<PROPERTY NAME="commentStart" VALUE="/*" />
		<PROPERTY NAME="commentEnd" VALUE="*/" />
		<PROPERTY NAME="lineComment" VALUE="//" />
		<PROPERTY NAME="newlineComment" VALUE="///" />
		<PROPERTY NAME="wordBreakChars" VALUE=",+-=&lt;&gt;/?^&amp;*" />
 
		<!-- Auto indent -->
		<PROPERTY NAME="indentOpenBrackets" VALUE="{" />
		<PROPERTY NAME="indentCloseBrackets" VALUE="}" />
		<PROPERTY NAME="unalignedOpenBrackets" VALUE="(" />
		<PROPERTY NAME="unalignedCloseBrackets" VALUE=")" />
		<PROPERTY NAME="indentNextLine"
			VALUE="\s*(((if|while)\s*\(|else\s*|else\s+if\s*\(|for(?:each)?\s*\(.*\))[^{;]*)" />
		<PROPERTY NAME="unindentThisLine"
			VALUE="^.*(default:\s*|case.*:.*)$" />
 
		<PROPERTY NAME="lineUpClosingBracket" VALUE="true" />
	</PROPS>
 
	<RULES SET="WIP"  IGNORE_CASE="TRUE">
		<!-- default values section for class and structs -->
		<!--<SEQ_REGEXP HASH_CHARS="cp" NO_LINE_BREAK="FALSE" MATCH_TYPE="KEYWORD1" DELEGATE="CPPTEXT">(struct)?cpptext\s*$</SEQ_REGEXP>-->
		<SPAN_REGEXP HASH_CHARS="st" NO_LINE_BREAK="FALSE" MATCH_TYPE="KEYWORD1" DELEGATE="CPPTEXT">
			<!--<BEGIN>structcpptext(\s*|\n)[{]$</BEGIN>-->
			<BEGIN>structcpptext</BEGIN><!--\s([?]{3})[:]?\s+(.+?)$-->
			<END>((.*[}].*){2})<!--(?!\.*;?\n*\.*)}--><!--(?!.*?[}]+.*?){3, }--></END>
 
			<!--<END>(\s*\w*[}])\2</END>-->
			<!--<END>{(?=\s*[}])\2}</END>-->
			<!--<END>(?![{]\s*{3})\s*\w*[}]</END>--><!--(?![{]\s?)-->
		</SPAN_REGEXP>
		<!--(?!;(\s*|\n)$)[}]\n*$ -->
 
		<!--\n*$(?!\s*[{]^.*[}]\n*$)-->
 
		<!--(\s*\w*)(?!\s*\w*(?!{)})-->
 
		<!--$\s*(?!\s*\w*{)-->
 
		<!--<SPAN_REGEXP HASH_CHARS="cp" NO_LINE_BREAK="FALSE" MATCH_TYPE="KEYWORD1" DELEGATE="CPPTEXT">
			<BEGIN>cpptext(\s*|\n)</BEGIN>
			<END>}(\s*|\n)(?![{].*[}])+$</END>
		</SPAN_REGEXP>-->
 
		<!--<SPAN AT_WHITESPACE_END="TRUE" TYPE="MARKUP" MATCH_TYPE="KEYWORD4">
			<BEGIN>&lt;</BEGIN>
			<END>&gt;</END>
		</SPAN>-->
 
		<!--<SPAN_REGEXP AT_WORD_START="TRUE" TYPE="MARKUP" HASH_CHAR="&lt;" DELEGATE="METADATA">
			<BEGIN>&lt;</BEGIN>
			<END>&gt;</END>
		</SPAN_REGEXP>-->
 
		<!--<SEQ_REGEXP HASH_CHAR="&lt;" TYPE="MARKUP" DELEGATE="METADATA">&lt;\S*&gt;</SEQ_REGEXP>-->
 
		<SPAN_REGEXP AT_WHITESPACE_END="TRUE" HASH_CHAR="&lt;" TYPE="MARKUP" MATCH_TYPE="MARKUP"><!--&lt;(\w*|\w*\B*)&gt;-->
			<BEGIN>&lt;\S*</BEGIN>
			<END>&gt;</END>
		</SPAN_REGEXP>
 
		<!-- Standard Variable Keyword -->
		<!--<SEQ_REGEXP AT_WHITESPACE_END="TRUE" HASH_CHAR="v" TYPE="KEYWORD1" MATCH_TYPE="KEYWORD1">var\b[(\s*)]|var\s*[(\w)]</SEQ_REGEXP>-->
 
		<!-- Special Editor version of variable declaration -->
		<!--<SPAN_REGEXP AT_WORD_START="TRUE" HASH_CHARS="v" TYPE="KEYWORD4" MATCH_TYPE="KEYWORD1">
			<BEGIN>var\b[(\s*)]|var\s*[(\w)]</BEGIN>
			<END>(?!\w[(])|)</END>
		</SPAN_REGEXP>-->
 
		<!--var(?=\s)|\b(?=\s*\([\w])-->
		 <!-- var\b|var(\s*)|var\s*(\w)-->
 
		<!--<MARK_PREVIOUS TYPE="KEYWORD1" MATCH_TYPE="KEYWORD1">(?=(var(\b|\s*)[(]))</MARK_PREVIOUS>-->
		<!--<SEQ_REGEXP HASH_CHAR="v" TYPE="KEYWORD1" MATCH_TYPE="KEYWORD4">var\s*[(\s*\w*\s*)]\s*</SEQ_REGEXP>--><!--var(\b\s*|\b\s*[(\s*)]\s*|\s*[(\s*\w*\s*)]\s*)-->
		<!--<SEQ_REGEXP HASH_CHAR="v" TYPE="KEYWORD1" MATCH_TYPE="KEYWORD4">var[\s*(\s*\w*\s*)\s*]</SEQ_REGEXP>-->
		<SEQ_REGEXP AT_WHITESPACE_END="TRUE" HASH_CHAR="v" TYPE="KEYWORD1" MATCH_TYPE="KEYWORD4">var\b\s+</SEQ_REGEXP>
		<!--<SEQ_REGEXP AT_WHITESPACE_END="TRUE" HASH_CHAR="v" TYPE="KEYWORD1" MATCH_TYPE="KEYWORD4">var\s*[(\s*)]</SEQ_REGEXP>-->
 
		<SPAN_REGEXP HASH_CHARS="v" TYPE="KEYWORD4" MATCH_TYPE="KEYWORD1">
			<BEGIN>var(?!\b\s+\w*)(\b\s*[(\s*]|\s*[(\s*\w*])</BEGIN>
			<END>)</END><!--(?!var?!\b(\s*\w*)*;\n)-->
		</SPAN_REGEXP>
 
	</RULES>
 
	<RULES ESCAPE="\" IGNORE_CASE="TRUE" HIGHLIGHT_DIGITS="TRUE" DIGIT_RE="0x[\p{XDigit}]+|\d+(\.\d*)?(e[+-]?\d+)?[fF]?">
 
		<SPAN TYPE="COMMENT2" DELEGATE="COMMENT">
			<BEGIN>/**</BEGIN>
			<END>*/</END>
		</SPAN>
 
		<!-- multi line comments -->
		<SPAN TYPE="COMMENT1" DELEGATE="COMMENT">
			<BEGIN>/*</BEGIN>
			<END>*/</END>
		</SPAN>
 
		<!-- end of line comments -->
		<EOL_SPAN TYPE="COMMENT1" DELEGATE="EOLCOMMENT">//</EOL_SPAN>
		<EOL_SPAN TYPE="COMMENT2" DELEGATE="EOLCOMMENT">///</EOL_SPAN>
 
		<!-- string literals -->
		<SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE">
			<BEGIN>"</BEGIN>
			<END>"</END>
		</SPAN>
 
		<!-- name and object literals -->
		<SPAN TYPE="LITERAL2" NO_LINE_BREAK="TRUE" ESCAPE="\">
			<BEGIN>'</BEGIN>
			<END>'</END>
		</SPAN>
 
<!--		<SPAN_REGEXP AT_WORD_START="TRUE" TYPE="LITERAL2" NO_LINE_BREAK="TRUE">
			<BEGIN>\w*\s*'</BEGIN>
			<END>'</END>
		</SPAN_REGEXP>-->
 
		<!-- UE1/2 compiler directives and UCPP pragmas -->
		<EOL_SPAN AT_WHITESPACE_END="TRUE" DELEGATE="DIRECTIVE" TYPE="KEYWORD2">#</EOL_SPAN>
 
		<!-- UE3 compiler macros -->
		<!-- macro in braces -->
		<SPAN TYPE="MARKUP" MATCH_TYPE="KEYWORD2" NO_LINE_BREAK="TRUE">
			<BEGIN>`{</BEGIN>
			<END>}</END>
		</SPAN>
 
		<!-- special UE3 compiler macros -->
		<EOL_SPAN_REGEXP HASH_CHAR="`" AT_WHITESPACE_END="TRUE" DELEGATE="MAIN"
			TYPE="KEYWORD4">`(define|else|endif|if|debug)\b</EOL_SPAN_REGEXP>
 
		<SPAN AT_WHITESPACE_END="TRUE" TYPE="LITERAL4" MATCH_TYPE="KEYWORD4">
			<BEGIN>`include(</BEGIN>
			<END>)</END>
		</SPAN>
 
		<SEQ_REGEXP HASH_CHAR="`" TYPE="KEYWORD4">`(isdefined|notdefined)\b</SEQ_REGEXP>
 
		<!-- in-line macro -->
		<MARK_FOLLOWING MATCH_TYPE="KEYWORD2" TYPE="MARKUP">`</MARK_FOLLOWING>
 
		<!-- GoTo labels -->
		<MARK_PREVIOUS TYPE="LABEL" MATCH_TYPE="OPERATOR" AT_WHITESPACE_END="TRUE">:</MARK_PREVIOUS>
 
		<!-- UE3 native replacements -->
		<SEQ_REGEXP HASH_CHAR="{" TYPE="COMMENT4">\{[^}]+}</SEQ_REGEXP>
 
		<!-- operators, separators and brackets -->
		<SEQ TYPE="OPERATOR">~</SEQ>
		<SEQ TYPE="OPERATOR">!</SEQ>
		<SEQ TYPE="OPERATOR">@</SEQ>
		<SEQ TYPE="OPERATOR">#</SEQ>
		<SEQ TYPE="OPERATOR">$</SEQ>
		<SEQ TYPE="OPERATOR">^</SEQ>
		<SEQ TYPE="OPERATOR">&amp;</SEQ>
		<SEQ TYPE="OPERATOR">*</SEQ>
		<SEQ TYPE="OPERATOR">-</SEQ>
		<SEQ TYPE="OPERATOR">=</SEQ>
		<SEQ TYPE="OPERATOR">+</SEQ>
		<SEQ TYPE="OPERATOR">|</SEQ>
		<SEQ TYPE="OPERATOR">:</SEQ>
<!--		<SEQ TYPE="OPERATOR">&lt;</SEQ>
		<SEQ TYPE="OPERATOR">&gt;</SEQ>-->
		<SEQ TYPE="OPERATOR">/</SEQ>
		<SEQ TYPE="OPERATOR">?</SEQ>
		<SEQ TYPE="OPERATOR">\</SEQ>
		<SEQ TYPE="OPERATOR">)</SEQ>
		<SEQ TYPE="OPERATOR">{</SEQ>
		<SEQ TYPE="OPERATOR">}</SEQ>
 
		<!-- functions -->
		<!--<MARK_PREVIOUS TYPE="FUNCTION" MATCH_TYPE="OPERATOR">(</MARK_PREVIOUS>-->
 
		<!-- static modifier -->
		<SEQ_REGEXP AT_WORD_START="TRUE" HASH_CHAR="s" TYPE="KEYWORD1">static\b(?!\s*\.)</SEQ_REGEXP>
		<!-- static function call -->
		<SEQ_REGEXP AT_WORD_START="TRUE" HASH_CHAR="s" TYPE="KEYWORD2">static\b(?=\s*\.)</SEQ_REGEXP>
 
		<!-- switch keyword -->
		<SEQ_REGEXP AT_WORD_START="TRUE" HASH_CHAR="s" TYPE="KEYWORD1">switch\b(?=\s*\()</SEQ_REGEXP>
 
		<!-- default switch case -->
		<SEQ_REGEXP AT_WORD_START="TRUE" HASH_CHAR="d" TYPE="KEYWORD1">default\b(?=\s*\:)</SEQ_REGEXP>
		<!-- default value access -->
		<SEQ_REGEXP AT_WORD_START="TRUE" HASH_CHAR="d" TYPE="KEYWORD2">default\b(?=\s*\.)</SEQ_REGEXP>
 
		<!-- input variable modifier -->
		<SEQ_REGEXP AT_WORD_START="TRUE" HASH_CHAR="i" TYPE="KEYWORD1">input\b(?=\s*[\w&gt;])</SEQ_REGEXP>
 
		<!-- name datatype -->
<!--		<SEQ_REGEXP AT_WORD_START="TRUE" HASH_CHAR="n" TYPE="KEYWORD3">name\b(?=\s*[\w&gt;])</SEQ_REGEXP>-->
 
		<!-- class keyword -->
<!--		<SEQ_REGEXP AT_WHITESPACE_END="TRUE" HASH_CHAR="c" TYPE="KEYWORD1">class\b(?=\s*[\w])</SEQ_REGEXP>-->
		<!-- class identifier?? -->
<!--		<SEQ_REGEXP AT_WHITESPACE_END="TRUE" HASH_CHAR="c" TYPE="KEYWORD1">class\b(?=[\s*\w'])</SEQ_REGEXP>-->
 
		<!--<SEQ_REGEXP AT_WORD_START="TRUE" HASH_CHARS="a&lt;" TYPE="MARKUP" DELEGATE="METADATA">(?!array)&lt;.*&gt;</SEQ_REGEXP>-->
 
		<!-- class / array datatype -->
		<!--<SEQ_REGEXP AT_WORD_START="TRUE" HASH_CHARS="ac" TYPE="KEYWORD1">array\b\s*&lt;\s*class\b\s*&lt;\s*\w*\s*&gt;\s+&gt;</SEQ_REGEXP>
		<SEQ_REGEXP AT_WORD_START="TRUE" HASH_CHARS="ac" TYPE="INVALID">array\b\s*&lt;\s*class\b\s*&lt;\s*\w*\s*&gt;&gt;</SEQ_REGEXP>-->
		<SEQ_REGEXP AT_WORD_START="TRUE" HASH_CHARS="ac" TYPE="KEYWORD1">(array|class)\b(?=\s*[&lt;\s*(?!(array|class))\w*\s*&gt;])</SEQ_REGEXP>
 
		<SPAN_REGEXP HASH_CHAR="&lt;" TYPE="MARKUP" MATCH_TYPE="MARKUP" DELEGATE="METADATA">
			<BEGIN>(?!(array)?\s*&lt;(=)?)?&lt;|(?!&lt;\s*\d)?&lt;</BEGIN>
			<END><!--(?!&gt;=)?-->&gt;</END><!--(&gt;(?![=]))|(&gt;[;])-->
		</SPAN_REGEXP>
 
		<!-- delegate keyword -->
		<SEQ_REGEXP AT_WHITESPACE_END="TRUE" HASH_CHAR="d" TYPE="KEYWORD1">delegate\b(?=\s*[\w])</SEQ_REGEXP>
		<!-- delegate datatype -->
		<SEQ_REGEXP AT_WORD_START="TRUE" HASH_CHAR="d" TYPE="KEYWORD3">delegate\b(?=\s*[\w&lt;&gt;])</SEQ_REGEXP>
 
		<!-- default values section for class and structs -->
		<SPAN_REGEXP AT_WHITESPACE_END="TRUE" HASH_CHARS="ds" NO_LINE_BREAK="FALSE" MATCH_TYPE="KEYWORD1" DELEGATE="DEFAULTS">
			<BEGIN>(struct)?defaultproperties\s*$</BEGIN>
			<END>}</END>
		</SPAN_REGEXP>
 
		<!-- Standard Variable Keyword -->
		<SEQ_REGEXP AT_WHITESPACE_END="TRUE" HASH_CHAR="v" TYPE="KEYWORD1" MATCH_TYPE="KEYWORD4">var\b\s+(?![(])</SEQ_REGEXP>
 
		<!-- Special Editor version of variable declaration -->
		<SPAN_REGEXP HASH_CHARS="v" TYPE="KEYWORD4" MATCH_TYPE="KEYWORD1">
			<BEGIN>var(?!\b\s+\w*)(\b\s*[(\s*]|\s*[(\s*\w*])</BEGIN><!-- TODO: Compress me \b(\s*[(\s*])(\w*)?   -->
			<END>)</END>
		</SPAN_REGEXP>
<!--"KEYWORD4"-->
		<!--<SPAN_REGEXP AT_WORD_START="TRUE" HASH_CHARS="ca&lt;" TYPE="MARKUP" MATCH_TYPE="MARKUP" DELEGATE="METADATA">
			<BEGIN>(?!(array|class)\b)(&lt;\s*\w*)</BEGIN>
			<END>&gt;</END>
		</SPAN_REGEXP>-->
 
<!--(?!+\s*&lt;)-->
<!--(?!\s+&gt;\s*\w*)\s*\w*[;]-->
		<!--<IMPORT DELEGATE="uscript::WIP"/>-->
 
		<KEYWORDS>
 
		<!-- Class Syntax -->
			<KEYWORD1>Interface</KEYWORD1>
			<!--<KEYWORD1>Class</KEYWORD1>--><!--db: added test-->
			<INVALID>Expands</INVALID><!-- only early UE1, shouldn't really be used -->
			<KEYWORD1>Extends</KEYWORD1>
 
		<!-- Class Syntax: Optional Specifiers -->
			<!-- General -->
			<KEYWORD1>Implements</KEYWORD1><!-- UE3+ -->
			<KEYWORD1>Abstract</KEYWORD1>
			<KEYWORD1>Config</KEYWORD1><!-- used for both class and var -->
			<KEYWORD1>GlobalConfig</KEYWORD1><!-- used for both class and var?? -->
				<KEYWORD4>PerObjectConfig</KEYWORD4>
			<KEYWORD1>Native</KEYWORD1>
			<KEYWORD1>NativeReplication</KEYWORD1>
			<KEYWORD1>NoExport</KEYWORD1>
			<KEYWORD1>NoImport</KEYWORD1>
			<KEYWORD1>NotTransient</KEYWORD1><!-- since UE2 -->
			<KEYWORD1>Within</KEYWORD1><!-- since UE2 -->
			<KEYWORD1>DependsOn</KEYWORD1><!-- since UE2 -->
			<KEYWORD4>Deprecated</KEYWORD4><!-- since UE2, marks variables that should no longer be used -->
 
		<!-- Class Syntax: Secondary Specifiers -->
			<!-- Editor -->
			<KEYWORD4>AutoExpandCategories</KEYWORD4><!-- since UE3? -->
			<KEYWORD4>CollapseCatergories</KEYWORD4><!-- since UE2 -->
			<KEYWORD4>DontCollapseCategories</KEYWORD4><!-- UE2+ -->
			<KEYWORD1>EdFindable</KEYWORD1>
			<KEYWORD1>EditConst</KEYWORD1>
			<KEYWORD1>EditConstArray</KEYWORD1><!-- only UE2 -->
			<KEYWORD1>EditFixedSize</KEYWORD1><!-- since UE3 -->
			<KEYWORD4>HideCategories</KEYWORD4><!-- UE2+ -->
			<KEYWORD4>HideDropDown</KEYWORD4><!-- UE2+ -->
			<KEYWORD4>NotPlaceable</KEYWORD4><!-- UE2+ -->
			<KEYWORD4>Placeable</KEYWORD4>
			<KEYWORD1>ExportStructs</KEYWORD1><!-- only UE2 -->
			<KEYWORD1>SafeReplace</KEYWORD1>
			<KEYWORD1>ShowCategories</KEYWORD1><!-- since UE2 -->
 
			<!-- Object Specifiers -->
			<KEYWORD4>EditInline</KEYWORD4><!-- since UE2 -->
			<KEYWORD4>EditInlineUse</KEYWORD4><!-- UE2+ -->
			<KEYWORD1>EditInlineNew</KEYWORD1><!-- since UE2 -->
			<KEYWORD1>EditInlineNotify</KEYWORD1><!-- only UE2 -->
			<KEYWORD4>NotEditInlineNew</KEYWORD4><!-- since UE2 -->
 
<!--===================================================================================================-->
			<KEYWORD4>Inherits</KEYWORD4><!-- native effect, since UE3 -->
			<KEYWORD1>Assert</KEYWORD1>
			<KEYWORD1>Cache</KEYWORD1><!-- only UE2 -->
			<KEYWORD1>CacheExempt</KEYWORD1><!-- only UE2 -->
			<KEYWORD1>Import</KEYWORD1>
			<KEYWORD1>Init</KEYWORD1>
			<KEYWORD1>Latent</KEYWORD1>
			<KEYWORD1>ParseConfig</KEYWORD1>
			<KEYWORD1>Skip</KEYWORD1>
			<KEYWORD1>Stop</KEYWORD1>
			<KEYWORD1>Travel</KEYWORD1>
			<KEYWORD1>Export</KEYWORD1>
<!--===================================================================================================-->
 
		<!-- Function Syntax: Primary Specifiers -->
			<!--<KEYWORD1>cpptext</KEYWORD1>--><!-- only UE2? -->
			<!--<KEYWORD1>cppstruct</KEYWORD1>--><!-- only UE2? -->
			<!--<KEYWORD1>structcpptext</KEYWORD1>-->
			<KEYWORD1>Event</KEYWORD1>
			<KEYWORD1>Function</KEYWORD1>
			<KEYWORD1>Operator</KEYWORD1>
			<KEYWORD1>PostOperator</KEYWORD1>
			<KEYWORD1>PreOperator</KEYWORD1>
			<KEYWORD1>Replication</KEYWORD1><!-- db: Could update so replication block gets special handling -->
 
			<KEYWORD1>If</KEYWORD1>
			<KEYWORD1>Else</KEYWORD1>
			<KEYWORD1>Case</KEYWORD1>
			<KEYWORD1>Break</KEYWORD1>
			<KEYWORD1>Continue</KEYWORD1>
			<KEYWORD1>Return</KEYWORD1>
 
				<KEYWORD1>State</KEYWORD1>
				<KEYWORD1>Goto</KEYWORD1>
				<KEYWORD2>GotoState</KEYWORD2>
			<!-- State Syntax: Secondary Specifiers -->
				<KEYWORD1>Auto</KEYWORD1>
				<KEYWORD1>Ignores</KEYWORD1>
 
		<!-- Function Syntax: Iterators -->
			<KEYWORD1>For</KEYWORD1>
			<KEYWORD1>ForEach</KEYWORD1>
 
			<KEYWORD1>While</KEYWORD1>
			<KEYWORD1>Do</KEYWORD1>
			<KEYWORD1>Until</KEYWORD1>
 
			<!-- db: Secondary Keywords - grey/italic (like uncodex)-->
			<KEYWORD4>Self</KEYWORD4>
			<KEYWORD4>Outer</KEYWORD4><!--common-->
			<COMMENT3>Owner</COMMENT3><!--common-->
			<KEYWORD4>Instigator</KEYWORD4><!--common-->
			<KEYWORD4>Optional</KEYWORD4>
			<KEYWORD4>Out</KEYWORD4>
			<KEYWORD4>Object</KEYWORD4>
			<KEYWORD4>Native</KEYWORD4>
				<KEYWORD2>New</KEYWORD2>
				<KEYWORD2>None</KEYWORD2>
				<KEYWORD2>Super</KEYWORD2>
				<KEYWORD2>Global</KEYWORD2>
				<INVALID>Null</INVALID>
 
			<!-- Function Syntax: Secondary Specifiers -->
				<INVALID>Intrinsic</INVALID><!-- only early UE1, replaced by "native" -->
				<INVALID>Virtual</INVALID>
				<KEYWORD4>Static</KEYWORD4>
				<KEYWORD4>Final</KEYWORD4>
				<KEYWORD4>Server</KEYWORD4><!-- UE3+ -->
				<KEYWORD4>Client</KEYWORD4><!-- UE3+ -->
				<KEYWORD4>Simulated</KEYWORD4>
				<KEYWORD4>Iterator</KEYWORD4>
				<KEYWORD4>Singular</KEYWORD4>
				<KEYWORD4>Exec</KEYWORD4>
				<KEYWORD1>Reliable</KEYWORD1>
				<KEYWORD1>Unreliable</KEYWORD1>
				<KEYWORD1>Automated</KEYWORD1><!-- only UE2 -->
				<KEYWORD4>k2override</KEYWORD4><!-- UDK+ -->
 
		<!-- built-in type names -->
			<KEYWORD1>Const</KEYWORD1>
			<!--<KEYWORD1>Var</KEYWORD1>-->
			<KEYWORD1>Local</KEYWORD1>
			<!-- db: modifed these to be keyword 1 from 3 -->
			<!-- Variable Primary (Syntax)Flags -->
			<KEYWORD1>Bool</KEYWORD1>
			<KEYWORD1>Byte</KEYWORD1>
			<KEYWORD1>Enum</KEYWORD1>
			<KEYWORD1>Float</KEYWORD1>
			<KEYWORD1>Int</KEYWORD1>
			<KEYWORD1>String</KEYWORD1>
			<KEYWORD1>Struct</KEYWORD1>
			<KEYWORD1>Pointer</KEYWORD1><!-- UE2+ -->
			<!--<KEYWORD1>Array</KEYWORD1>-->
			<KEYWORD1>Name</KEYWORD1>
 
				<KEYWORD1>vector</KEYWORD1>
				<KEYWORD1>rotator</KEYWORD1>
				<KEYWORD1>vector2d</KEYWORD1>
				<KEYWORD1>color</KEYWORD1>
				<KEYWORD1>quat</KEYWORD1>
				<KEYWORD1>matrix</KEYWORD1>
 
			<!-- Variable Secondary (Syntax)Flags-->
				<INVALID>Public</INVALID><!-- redundant, members are always public unless marked private or protected -->
				<KEYWORD4>Private</KEYWORD4>
				<KEYWORD4>Protected</KEYWORD4>
				<KEYWORD4>Localized</KEYWORD4>
				<KEYWORD4>Config</KEYWORD4><!--is also a class flag-->
				<KEYWORD4>GlobalConfig</KEYWORD4>
				<KEYWORD4>RepNotify</KEYWORD4>
				<KEYWORD4>Transient</KEYWORD4>
				<KEYWORD1>DuplicateTransient</KEYWORD1><!-- since UE3 -->
				<KEYWORD1>Instanced</KEYWORD1><!-- UE2+ -->
				<KEYWORD1>DataBinding</KEYWORD1><!-- UE3+ -->
				<KEYWORD1>Immutable</KEYWORD1><!-- UE3+ (struct) -->
				<KEYWORD1>Coerce</KEYWORD1><!-- (string) -->
				<KEYWORD1>Long</KEYWORD1><!-- UE2+ (struct) -->
				<KEYWORD4>k2Call</KEYWORD4>
				<KEYWORD4>PrivateWrite</KEYWORD4>
				<KEYWORD4>interp</KEYWORD4>
				<KEYWORD4>Archetype</KEYWORD4>
				<KEYWORD4>k2pure</KEYWORD4>
				<!-- Editor -->
				<KEYWORD4>EditorOnly</KEYWORD4>
				<KEYWORD4>EditHide</KEYWORD4>
 
		<!-- literals and special function calls -->
			<KEYWORD2>True</KEYWORD2>
			<KEYWORD2>False</KEYWORD2>
			<KEYWORD2>enable</KEYWORD2>
			<KEYWORD2>disable</KEYWORD2>
 
				<!-- literals -->
				<KEYWORD2>Vect2D</KEYWORD2>
				<KEYWORD2>Vect</KEYWORD2>
				<KEYWORD2>Rot</KEYWORD2>
				<KEYWORD2>NameOf</KEYWORD2>
					<KEYWORD2>Normal</KEYWORD2>
					<KEYWORD2>VSize</KEYWORD2>
 
				<KEYWORD2>ArrayCount</KEYWORD2>
				<KEYWORD2>EnumCount</KEYWORD2>
				<KEYWORD2>Length</KEYWORD2><!-- UE2+ -->
					<KEYWORD2>PathName</KEYWORD2>
 
		</KEYWORDS>
 
		<!-- Expanded UnrealEngine highlighting rules -->
		<IMPORT DELEGATE="uscript::UNREALENGINE"/>
 
	</RULES>
 
	<RULES SET="UNREALENGINE" IGNORE_CASE="TRUE">
 
		<!-- UnrealEngine functions -->
		<SEQ_REGEXP HASH_CHAR="fi" TYPE="KEYWORD4">FindChild(?=[(]\s*|\w*[)])</SEQ_REGEXP>
		<SEQ_REGEXP HASH_CHAR="is" TYPE="KEYWORD4">IsA(?=[(]\s*|\w*[)])</SEQ_REGEXP>
		<SEQ_REGEXP HASH_CHAR="c" TYPE="KEYWORD4">ClassIsChildOf(?=[(]\s*|\w*[)])</SEQ_REGEXP>
 
		<SEQ_REGEXP HASH_CHAR="isi" TYPE="KEYWORD4">IsInState(?=[(]\s*|\w*[)])</SEQ_REGEXP>
		<SEQ_REGEXP HASH_CHAR="dr" TYPE="KEYWORD4">Draw3DLine(?=[(]\s*|\w*[)])</SEQ_REGEXP>
		<SEQ_REGEXP HASH_CHAR="de" TYPE="KEYWORD4">DeProject(?=[(]\s*|\w*[)])</SEQ_REGEXP>
 
		<SEQ_REGEXP HASH_CHAR="re" TYPE="KEYWORD4">ReplicateMove(?=[(]\s*|\w*[)])</SEQ_REGEXP>
		<SEQ_REGEXP HASH_CHAR="pr" TYPE="KEYWORD4">ProcessMove(?=[(]\s*|\w*[)])</SEQ_REGEXP>
		<SEQ_REGEXP HASH_CHAR="pl" TYPE="KEYWORD4">PlayerTick(?=[(]\s*|\w*[)])</SEQ_REGEXP>
 
		<SEQ_REGEXP HASH_CHAR="po" TYPE="KEYWORD4">PostRender(?=[(]\s*|\w*[)])</SEQ_REGEXP>
		<SEQ_REGEXP HASH_CHAR="ge" TYPE="KEYWORD4">GetEnum(?=[(]\s*|\w*[)])</SEQ_REGEXP>
		<SEQ_REGEXP HASH_CHAR="fi" TYPE="KEYWORD4">FindObject(?=[(]\s*|\w*[)])</SEQ_REGEXP>
 
		<SEQ_REGEXP HASH_CHAR="tr" TYPE="KEYWORD4">Trace(?=[(]\s*|\w*[)])</SEQ_REGEXP>
		<SEQ_REGEXP HASH_CHAR="fa" TYPE="KEYWORD4">FastTrace(?=[(]\s*|\w*[)])</SEQ_REGEXP>
		<SEQ_REGEXP HASH_CHAR="sp" TYPE="KEYWORD4">Spawn(?=[(]\s*|\w*[)])</SEQ_REGEXP>
 
		<KEYWORDS>
					<!-- Dynamic Arrays -->
				<KEYWORD2>Find</KEYWORD2><!-- (since UE3) -->
				<KEYWORD2>Add</KEYWORD2><!-- (since UE3) -->
				<KEYWORD2>AddItem</KEYWORD2><!-- (since UE3) -->
				<KEYWORD2>Insert</KEYWORD2><!-- (since UE2) -->
				<KEYWORD2>InsertItem</KEYWORD2><!-- (since UE3) -->
				<KEYWORD2>Remove</KEYWORD2><!-- UE2+ -->
				<KEYWORD2>RemoveItem</KEYWORD2><!-- UE+ -->
					<KEYWORD1>index_none</KEYWORD1>
 
			<!-- Constants -->
			<KEYWORD2>MaxInt</KEYWORD2>
			<KEYWORD2>Pi</KEYWORD2>
			<KEYWORD2>RadToDeg</KEYWORD2>
			<KEYWORD2>DegToRad</KEYWORD2>
			<KEYWORD2>UnrRotToRad</KEYWORD2>
			<KEYWORD2>RadToUnrRot</KEYWORD2>
			<KEYWORD2>DegToUnrRot</KEYWORD2>
			<KEYWORD2>UnrRotToDeg</KEYWORD2>
 
				<KEYWORD3>Velocity</KEYWORD3>
 
			<!-- UnrealEngine Classes-->
			<KEYWORD3>Weapon</KEYWORD3>
<!--			<KEYWORD3>Other</KEYWORD3>
			<KEYWORD3>Instigator</KEYWORD3>-->
			<KEYWORD3>Actor</KEYWORD3>
			<KEYWORD3>Controller</KEYWORD3>
			<KEYWORD3>LightType</KEYWORD3><!-- UE3 -->
			<KEYWORD3>Level</KEYWORD3><!-- UE2 -->
			<KEYWORD3>WorldInfo</KEYWORD3><!-- UE3 -->
			<KEYWORD3>Pawn</KEYWORD3>
			<KEYWORD3>PlayerController</KEYWORD3>
			<KEYWORD3>Material</KEYWORD3>
			<KEYWORD3>PhysicalMaterial</KEYWORD3>
			<KEYWORD3>MaterialInterface</KEYWORD3><!-- UE3 -->
			<KEYWORD3>Texture</KEYWORD3>
			<KEYWORD3>Texture2D</KEYWORD3>
			<KEYWORD3>Effects</KEYWORD3>
			<KEYWORD3>Info</KEYWORD3>
			<KEYWORD3>Font</KEYWORD3>
			<KEYWORD3>Projectile</KEYWORD3>
			<KEYWORD3>PlayerInput</KEYWORD3>
 
			<!-- UnrealEngine Enums -->
			<KEYWORD3>LinearColor</KEYWORD3><!-- UE3 -->
			<KEYWORD3>FontRenderInfo</KEYWORD3>
			<KEYWORD3>InterpCurveVector</KEYWORD3>
			<KEYWORD3>InterpCurvePointVector</KEYWORD3>
			<KEYWORD3>TraceHitInfo</KEYWORD3>
 
				<!-- User Interface -->
				<KEYWORD3>Canvas</KEYWORD3>
				<KEYWORD3>HUD</KEYWORD3>
				<KEYWORD3>UIRoot</KEYWORD3><!-- UE3 -->
				<KEYWORD3>UIScene</KEYWORD3><!-- UE3 -->
				<KEYWORD3>UIObject</KEYWORD3>
				<KEYWORD3>UIImage</KEYWORD3>
					<KEYWORD3>TextureCoordinates</KEYWORD3>
 
			<KEYWORD3>AnimSet</KEYWORD3><!-- UE3 -->
			<KEYWORD3>AnimNode</KEYWORD3>
			<KEYWORD3>AnimNodeSequence</KEYWORD3>
 
			<KEYWORD3>CameraAnim</KEYWORD3>
			<KEYWORD3>Emitter</KEYWORD3>
			<KEYWORD3>ParticleSystem</KEYWORD3>
			<KEYWORD3>Projector</KEYWORD3><!-- UE2+ -->
			<KEYWORD3>DamageType</KEYWORD3>
			<KEYWORD3>GameInfo</KEYWORD3>
			<KEYWORD3>GameRules</KEYWORD3>
			<KEYWORD3>PlayerReplicationInfo</KEYWORD3><!-- UE2+ -->
			<KEYWORD3>GameReplicationInfo</KEYWORD3><!-- UE2+ -->
			<KEYWORD3>Inventory</KEYWORD3>
			<KEYWORD3>Vehicle</KEYWORD3><!-- UE2.5+ -->
			<KEYWORD3>StaticMesh</KEYWORD3><!-- UE2+ -->
 
			<KEYWORD3>NavigationPoint</KEYWORD3>
			<KEYWORD3>PhysicsVolume</KEYWORD3>
			<KEYWORD3>Mutator</KEYWORD3>
 
			<KEYWORD3>ForceFeedbackWaveform</KEYWORD3>
			<KEYWORD3>FluidSurfaceActor</KEYWORD3>
 
			<KEYWORD3>Sequence</KEYWORD3>
			<KEYWORD3>SequenceEvent</KEYWORD3>
			<KEYWORD3>SequenceObject</KEYWORD3>
 
			<KEYWORD3>FaceFXAsset</KEYWORD3>
 
				<!--Components UE3-->
				<KEYWORD4>AttachComponent</KEYWORD4>
				<KEYWORD4>DetachComponent</KEYWORD4>
				<KEYWORD4>ReattachComponent</KEYWORD4>
				<COMMENT3>AttachComponentToSocket</COMMENT3>
					<KEYWORD3>Component</KEYWORD3>
					<KEYWORD3>ActorComponent</KEYWORD3>
					<KEYWORD3>PrimitiveComponent</KEYWORD3>
					<KEYWORD3>SVehicleSimBase</KEYWORD3>
					<KEYWORD3>StaticMeshComponent</KEYWORD3>
					<KEYWORD3>SkeletalMeshComponent</KEYWORD3>
					<KEYWORD3>ParticleSystemComponent</KEYWORD3>
					<KEYWORD3>PointLightComponent</KEYWORD3>
					<KEYWORD3>SplineComponent</KEYWORD3>
					<KEYWORD3>AudioComponent</KEYWORD3>
 
				<!--UDK specific-->
				<KEYWORD3>UDKParticleSystemComponent</KEYWORD3>
				<KEYWORD3>UDKExplosionLight</KEYWORD3>
 
				<!--UT3 specific-->
				<KEYWORD3>UTSkeletalMeshComponent</KEYWORD3>
 
				<!--Sound, was changed-->
				<KEYWORD3>Sound</KEYWORD3>
				<KEYWORD3>SoundNode</KEYWORD3><!-- UE3 -->
				<KEYWORD3>SoundCue</KEYWORD3><!-- UE3 -->
 
			<!-- Object Events -->
			<KEYWORD4>BeginState</KEYWORD4>
			<KEYWORD4>EndState</KEYWORD4>
			<KEYWORD4>PushedState</KEYWORD4>
			<KEYWORD4>PoppedState</KEYWORD4>
			<KEYWORD4>PausedState</KEYWORD4>
			<KEYWORD4>ContinuedState</KEYWORD4>
 
				<!-- Actor Events -->
				<KEYWORD4>ReplicatedEvent</KEYWORD4><!-- UE3+ -->
				<KEYWORD4>Destroyed</KEYWORD4>
				<KEYWORD4>GainedChild</KEYWORD4>
				<KEYWORD4>LostChild</KEYWORD4>
				<KEYWORD4>Tick</KEYWORD4>
				<KEYWORD4>Timer</KEYWORD4>
				<KEYWORD4>HitWall</KEYWORD4>
				<KEYWORD4>Falling</KEYWORD4>
				<KEYWORD4>Landed</KEYWORD4>
				<KEYWORD4>PhysicsVolumeChange</KEYWORD4>
				<KEYWORD4>Touch</KEYWORD4>
				<KEYWORD4>PostTouch</KEYWORD4>
				<KEYWORD4>UnTouch</KEYWORD4>
				<KEYWORD4>Bump</KEYWORD4>
				<KEYWORD4>BaseChange</KEYWORD4>
				<KEYWORD4>Attach</KEYWORD4>
				<KEYWORD4>Detach</KEYWORD4>
				<KEYWORD4>SpecialHandling</KEYWORD4>
				<KEYWORD4>CollisionChanged</KEYWORD4>
				<KEYWORD4>EncroachingOn</KEYWORD4>
				<KEYWORD4>EncroachedBy</KEYWORD4>
				<KEYWORD4>RanInto</KEYWORD4>
				<KEYWORD4>OnWakeRBPhysics</KEYWORD4>
				<KEYWORD4>OnSleepRBPhysics</KEYWORD4>
				<KEYWORD4>OverRotated</KEYWORD4>
				<KEYWORD4>FellOutOfWorld</KEYWORD4>
				<KEYWORD4>OutsideWorldBounds</KEYWORD4>
				<KEYWORD4>TornOff</KEYWORD4>
				<KEYWORD4>PreBeginPlay</KEYWORD4>
				<KEYWORD4>BroadcastLocalizedMessage</KEYWORD4>
				<KEYWORD4>BroadcastLocalizedTeamMessage</KEYWORD4>
				<KEYWORD4>PostBeginPlay</KEYWORD4>
				<KEYWORD4>SetInitialState</KEYWORD4>
				<KEYWORD4>ConstraintBrokenNotify</KEYWORD4>
				<KEYWORD4>NotifySkelControlBeyondLimit</KEYWORD4>
				<KEYWORD4>TakeDamage</KEYWORD4>
				<KEYWORD4>HealDamage</KEYWORD4>
				<KEYWORD4>DebugFreezeGame</KEYWORD4>
				<KEYWORD4>BecomeViewTarget</KEYWORD4>
				<KEYWORD4>EndViewTarget</KEYWORD4>
				<KEYWORD4>ModifyHearSoundComponent</KEYWORD4>
				<KEYWORD4>GetFaceFXAudioComponent</KEYWORD4>
				<KEYWORD4>Reset</KEYWORD4>
				<KEYWORD4>DebugMessagePlayer</KEYWORD4>
				<KEYWORD4>ReceivedNewEvent</KEYWORD4>
				<KEYWORD4>ForceNetRelevant</KEYWORD4>
				<KEYWORD4>ShutDown</KEYWORD4>
				<KEYWORD4>OnAnimEnd</KEYWORD4>
				<KEYWORD4>OnAnimPlay</KEYWORD4>
				<KEYWORD4>BeginAnimControl</KEYWORD4>
				<KEYWORD4>SetAnimPosition</KEYWORD4>
				<KEYWORD4>FinishAnimControl</KEYWORD4>
				<KEYWORD4>PlayActorFaceFXAnim</KEYWORD4>
				<KEYWORD4>StopActorFaceFXAnim</KEYWORD4>
				<KEYWORD4>SetMorphWeight</KEYWORD4>
				<KEYWORD4>SetSkelControlScale</KEYWORD4>
				<KEYWORD4>GetActorFaceFXAsset</KEYWORD4>
				<KEYWORD4>GetActorEyesViewPoint</KEYWORD4>
				<KEYWORD4>ScriptGetTeamNum</KEYWORD4>
				<KEYWORD4>SpawnedByKismet</KEYWORD4>
				<KEYWORD4>InterpolationStarted</KEYWORD4>
				<KEYWORD4>InterpolationFinished</KEYWORD4>
				<KEYWORD4>InterpolationChanged</KEYWORD4>
				<KEYWORD4>RigidBodyCollision</KEYWORD4>
				<KEYWORD4>OnRanOver</KEYWORD4>
				<KEYWORD4>PostRenderFor</KEYWORD4>
				<KEYWORD4>RootMotionModeChanged</KEYWORD4>
				<KEYWORD4>RootMotionProcessed</KEYWORD4>
				<KEYWORD4>RootMotionExtracted</KEYWORD4>
				<KEYWORD4>PostInitAnimTree</KEYWORD4>
				<KEYWORD4>OnRigidBodySpringOverextension</KEYWORD4>
				<KEYWORD4>PlayParticleEffect</KEYWORD4>
				<KEYWORD4>CreateForceField</KEYWORD4>
				<KEYWORD4>TrailsNotify</KEYWORD4>
				<KEYWORD4>TrailsNotifyTick</KEYWORD4>
				<KEYWORD4>TrailsNotifyEnd</KEYWORD4>
				<KEYWORD4>AnimTreeUpdated</KEYWORD4>
				<KEYWORD4>PostDemoRewind</KEYWORD4>
				<KEYWORD4>ReplicationEnded</KEYWORD4>
 
				<!-- Math Functions -->
				<KEYWORD4>min</KEYWORD4>
				<KEYWORD4>max</KEYWORD4>
				<KEYWORD4>abs</KEYWORD4>
				<KEYWORD4>clamp</KEYWORD4>
 
				<KEYWORD4>sin</KEYWORD4>
				<KEYWORD4>cos</KEYWORD4>
				<KEYWORD4>atan</KEYWORD4>
 
				<KEYWORD4>vlerp</KEYWORD4>
				<KEYWORD4>vsize</KEYWORD4>
				<KEYWORD4>vsize2d</KEYWORD4>
				<KEYWORD4>round</KEYWORD4>
 
				<KEYWORD4>fclamp</KEYWORD4>
				<KEYWORD4>fmin</KEYWORD4>
				<KEYWORD4>fmax</KEYWORD4>
				<KEYWORD4>frand</KEYWORD4>
 
				<!-- Actor Functions -->
				<KEYWORD4>SetLocation</KEYWORD4>
				<KEYWORD4>SetRotation</KEYWORD4>
				<KEYWORD4>SetBase</KEYWORD4>
				<KEYWORD4>SetHidden</KEYWORD4>
				<KEYWORD4>SetHardAttach</KEYWORD4>
				<KEYWORD4>SetCollision</KEYWORD4>
 
			<KEYWORD4>DynamicLoadObject</KEYWORD4>
 
				<!-- SkeletalMesh Component functions -->
				<KEYWORD4>GetSocketWorldLocationAndRotation</KEYWORD4>
				<KEYWORD4>GetSocketByName</KEYWORD4>
				<KEYWORD4>MatchRefBone</KEYWORD4>
				<KEYWORD4>TransformFromBoneSpace</KEYWORD4>
 
				<!-- Timer functions: UE3-->
				<KEYWORD4>SetTimer</KEYWORD4>
				<KEYWORD4>ClearTimer</KEYWORD4>
				<KEYWORD4>IsTimerActive</KEYWORD4>
				<KEYWORD4>GetTimerCount</KEYWORD4>
				<KEYWORD4>GetTimerRate</KEYWORD4>
				<KEYWORD4>ClearAllTimers</KEYWORD4>
				<KEYWORD4>PauseTimer</KEYWORD4>
 
				<!-- Native Iterators -->
				<KEYWORD4>AllActors</KEYWORD4><!-- UE2+ -->
				<KEYWORD4>DynamicActors</KEYWORD4><!-- UE2+ -->
				<KEYWORD4>ChildActors</KEYWORD4><!-- UE2+ -->
				<KEYWORD4>BasedActors</KEYWORD4><!-- UE2+ -->
				<KEYWORD4>TouchingActors</KEYWORD4><!-- UE2+ -->
				<KEYWORD4>TraceActors</KEYWORD4>
				<KEYWORD4>VisibleActors</KEYWORD4><!-- UE2+ -->
				<KEYWORD4>VisibleCollidingActors</KEYWORD4><!-- UE2+ -->
				<KEYWORD4>CollidingActors</KEYWORD4>
				<KEYWORD4>OverlappingActors</KEYWORD4>
				<KEYWORD4>ComponentList</KEYWORD4><!-- UE3+ -->
				<KEYWORD4>AllOwnedComponents</KEYWORD4><!-- UE3+ -->
				<KEYWORD4>LocalPlayerControllers</KEYWORD4>
 
		</KEYWORDS>
 
	</RULES>
 
	<RULES IGNORE_CASE="TRUE" SET="DIRECTIVE">
		<EOL_SPAN TYPE="COMMENT2">//</EOL_SPAN>
 
		<!-- exec directives -->
		<EOL_SPAN DELEGATE="EXEC_COMMAND" TYPE="KEYWORD1">exec</EOL_SPAN>
		<EOL_SPAN DELEGATE="EXEC_COMMAND" TYPE="KEYWORD1">alwaysexec</EOL_SPAN>
		<EOL_SPAN DELEGATE="EXEC_COMMAND" TYPE="KEYWORD1">forceexec</EOL_SPAN>
		<!-- source include -->
		<EOL_SPAN DELEGATE="EXEC_COMMAND" TYPE="KEYWORD1">include</EOL_SPAN>
		<!-- execute command file -->
		<EOL_SPAN DELEGATE="EXEC_COMMAND" TYPE="KEYWORD1">call</EOL_SPAN>
		<EOL_SPAN DELEGATE="EXEC_COMMAND" TYPE="KEYWORD1">alwayscall</EOL_SPAN>
 
		<!-- throw compiler error -->
		<EOL_SPAN DELEGATE="IGNORED" TYPE="KEYWORD1">error</EOL_SPAN>
 
		<!-- UCPP directives -->
		<EOL_SPAN DELEGATE="MAIN" TYPE="KEYWORD1">ifdef</EOL_SPAN>
		<EOL_SPAN DELEGATE="MAIN" TYPE="KEYWORD1">ifndef</EOL_SPAN>
		<EOL_SPAN DELEGATE="MAIN" TYPE="KEYWORD1">if</EOL_SPAN>
		<EOL_SPAN DELEGATE="MAIN" TYPE="KEYWORD1">elif</EOL_SPAN>
		<EOL_SPAN DELEGATE="IGNORED" TYPE="KEYWORD1">else</EOL_SPAN>
		<EOL_SPAN DELEGATE="IGNORED" TYPE="KEYWORD1">endif</EOL_SPAN>
 
		<EOL_SPAN DELEGATE="MAIN" TYPE="KEYWORD1">define</EOL_SPAN>
		<EOL_SPAN DELEGATE="MAIN" TYPE="KEYWORD1">undef</EOL_SPAN>
		<EOL_SPAN DELEGATE="MAIN" TYPE="KEYWORD1">linenumber</EOL_SPAN>
 
		<EOL_SPAN DELEGATE="PRAGMA" TYPE="KEYWORD1">pragma</EOL_SPAN>
		<EOL_SPAN DELEGATE="PRAGMA" TYPE="KEYWORD1">ucpp</EOL_SPAN>
	</RULES>
 
	<RULES SET="METADATA" IGNORE_CASE="TRUE" HIGHLIGHT_DIGITS="TRUE" DIGIT_RE="0x[\p{XDigit}]+|\d+(\.\d*)?(e[+-]?\d+)?[fF]?">
		<!-- operators, separators and brackets -->
		<SEQ TYPE="OPERATOR">|</SEQ>
 
		<KEYWORDS>
		<!-- UE3 property tags -->
			<!-- db: moved these to keyword 3 instead of 4 to make room -->
 
			<MARKUP>AllowAbstract</MARKUP>
			<MARKUP>AutoComment</MARKUP>
			<MARKUP>DisplayName</MARKUP>
			<MARKUP>EditCondition</MARKUP>
			<MARKUP>Tooltip</MARKUP>
			<MARKUP>ClampMin</MARKUP>
			<MARKUP>ClampMax</MARKUP>
			<MARKUP>UIMin</MARKUP>
			<MARKUP>UIMax</MARKUP>
		</KEYWORDS>
	</RULES>
 
	<RULES DEFAULT="COMMENT1" SET="COMMENT">
	<!-- UE3 @tags in all kinds of comments -->
		<!--<SEQ_REGEXP AT_WORD_START="TRUE" HASH_CHAR="@" TYPE="LABEL">(?&lt;!\w)@\w+</SEQ_REGEXP>-->
	</RULES>
 
	<RULES DEFAULT="COMMENT3" SET="DOCCOMMENT">
		<IMPORT DELEGATE="COMMENT"/>
	</RULES>
 
	<RULES DEFAULT="COMMENT2" SET="EOLCOMMENT">
		<IMPORT DELEGATE="COMMENT"/>
	</RULES>
 
	<RULES DEFAULT="COMMENT1" SET="IGNORED">
		<EOL_SPAN TYPE="COMMENT2">//</EOL_SPAN>
	</RULES>
 
	<RULES DEFAULT="MARKUP" SET="PRAGMA">
	<!-- UCPP pragmas -->
 
		<EOL_SPAN TYPE="COMMENT2">//</EOL_SPAN>
 
		<KEYWORDS>
			<KEYWORD1>ucpp</KEYWORD1>
 
			<KEYWORD3>notice</KEYWORD3>
			<KEYWORD3>rename</KEYWORD3>
			<KEYWORD3>include</KEYWORD3>
			<KEYWORD3>warning</KEYWORD3>
			<KEYWORD3>config</KEYWORD3>
 
			<LITERAL2>true</LITERAL2>
			<LITERAL2>false</LITERAL2>
			<LITERAL2>on</LITERAL2>
			<LITERAL2>off</LITERAL2>
		</KEYWORDS>
	</RULES>
 
	<RULES IGNORE_CASE="TRUE" SET="EXEC_COMMAND" NO_WORD_SEP="_\\.,+-&lt;&gt;/?^&amp;*">
	<!-- exec directive markup -->
 
		<EOL_SPAN TYPE="COMMENT2">//</EOL_SPAN>
 
		<!-- quoted strings -->
		<SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE">
			<BEGIN>"</BEGIN>
			<END>"</END>
		</SPAN>
 
		<!-- numbers -->
		<SEQ_REGEXP HASH_CHARS="0123456789" TYPE="DIGIT">\b(0x[\p{XDigit}]+|\d+(\.\d*)?(e[+-]?\d+)?[fF]?)\b</SEQ_REGEXP>
 
		<!-- parameters -->
		<MARK_PREVIOUS MATCH_TYPE="OPERATOR" TYPE="MARKUP">=</MARK_PREVIOUS>
 
		<!-- boolean values -->
		<KEYWORDS>
			<LITERAL2>true</LITERAL2>
			<LITERAL2>false</LITERAL2>
			<LITERAL2>yes</LITERAL2>
			<LITERAL2>no</LITERAL2>
			<LITERAL2>on</LITERAL2>
			<LITERAL2>off</LITERAL2>
		</KEYWORDS>
	</RULES>
 
	<RULES SET="CPPTEXT" ESCAPE="\" IGNORE_CASE="false">
 
		<!--  -->
		<EOL_SPAN AT_WHITESPACE_END="TRUE" DELEGATE="DIRECTIVE" TYPE="KEYWORD2">#</EOL_SPAN>
 
		<SPAN TYPE="COMMENT2" DELEGATE="COMMENT">
			<BEGIN>/**</BEGIN>
			<END>*/</END>
		</SPAN>
 
		<!-- multi line comments -->
		<SPAN TYPE="COMMENT1" DELEGATE="COMMENT">
			<BEGIN>/*</BEGIN>
			<END>*/</END>
		</SPAN>
 
		<!-- end of line comments -->
		<EOL_SPAN TYPE="COMMENT1" DELEGATE="EOLCOMMENT">//</EOL_SPAN>
		<EOL_SPAN TYPE="COMMENT2" DELEGATE="EOLCOMMENT">///</EOL_SPAN>
 
		<!--<IMPORT DELEGATE="c++::LEX"/>-->
		<IMPORT DELEGATE="c++::CORE"/>
		<!--<IMPORT DELEGATE="c++::DEFINE"/>-->
 
		<KEYWORDS>
			<KEYWORD1>NULL</KEYWORD1>
			<KEYWORD1>FALSE</KEYWORD1>
			<KEYWORD1>TRUE</KEYWORD1>
 
			<KEYWORD1>BYTE</KEYWORD1>
			<KEYWORD1>FLOAT</KEYWORD1>
			<KEYWORD1>INT</KEYWORD1>
			<KEYWORD1>TCHAR</KEYWORD1>
 
			<!-- Unreal Engine CPP Types -->
			<KEYWORD2>FName</KEYWORD2>
			<KEYWORD2>FVector</KEYWORD2>
			<KEYWORD2>FRotator</KEYWORD2>
			<KEYWORD2>FColor</KEYWORD2>
			<KEYWORD2>FLinearColor</KEYWORD2>
			<KEYWORD2>FGuid</KEYWORD2>
			<KEYWORD2>FFrame</KEYWORD2>
 
			<KEYWORD3>FRigidBodyState</KEYWORD3>
			<KEYWORD3>FRigidBodyCollisionInfo</KEYWORD3>
			<KEYWORD3>FCollisionImpactData</KEYWORD3>
 
			<KEYWORD3>UBOOL</KEYWORD3>
			<KEYWORD3>UPackageMap</KEYWORD3>
			<KEYWORD3>UActorChannel</KEYWORD3>
			<KEYWORD3>UPackageMap</KEYWORD3>
			<KEYWORD3>UFunction</KEYWORD3>
			<KEYWORD3>UProperty</KEYWORD3>
			<KEYWORD3>UPrimitiveComponent</KEYWORD3>
			<KEYWORD3>ULevel</KEYWORD3>
			<KEYWORD3>UAnimNodeSequence</KEYWORD3>
 
			<KEYWORD3>AActor</KEYWORD3>
			<KEYWORD3>APawn</KEYWORD3>
			<KEYWORD3>APlayerController</KEYWORD3>
			<KEYWORD3>AVolume</KEYWORD3>
			<KEYWORD3>AController</KEYWORD3>
			<KEYWORD3>AFluidSurfaceActor</KEYWORD3>
			<KEYWORD3>AProjectile</KEYWORD3>
			<KEYWORD3>APortalTeleporter</KEYWORD3>
			<KEYWORD3>ANavigationPoint</KEYWORD3>
 
			<KEYWORD3>TArray</KEYWORD3>
 
			<!-- PhysX -->
			<KEYWORD3>NxActorDesc</KEYWORD3>
			<KEYWORD3>NxActor</KEYWORD3>
 
		</KEYWORDS>
	</RULES>
 
	<RULES SET="DEFAULTS" ESCAPE="\" IGNORE_CASE="TRUE">
	<!-- defaultproperties and structdefaultproperties -->
 
	<!--
		highlight initial opening brace like final closing brace
		(there are no others in defprops, so this shouldn't be a problem
	-->
		<SEQ TYPE="KEYWORD1">{</SEQ>
 
		<!-- multi line comments -->
		<SPAN TYPE="COMMENT1" DELEGATE="COMMENT">
			<BEGIN>/*</BEGIN>
			<END>*/</END>
		</SPAN>
 
		<!-- end of line comments -->
		<EOL_SPAN TYPE="COMMENT2" DELEGATE="EOLCOMMENT">//</EOL_SPAN>
 
		<!-- string literals -->
		<SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE">
			<BEGIN>"</BEGIN>
			<END>"</END>
		</SPAN>
 
		<!-- name and object literals -->
		<SPAN TYPE="LITERAL2" NO_LINE_BREAK="TRUE" ESCAPE="\">
			<BEGIN>'</BEGIN>
			<END>'</END>
		</SPAN>
 
<!--		<SPAN_REGEXP AT_WORD_START="TRUE" TYPE="LITERAL2" NO_LINE_BREAK="TRUE">
			<BEGIN>\w*\s*'</BEGIN>
			<END>'</END>
		</SPAN_REGEXP>-->
 
		<!-- subobjects -->
		<EOL_SPAN_REGEXP HASH_CHAR="b" AT_WHITESPACE_END="TRUE" DELEGATE="BEGINOBJECT" MATCH_TYPE="KEYWORD1">begin\s+object\s*</EOL_SPAN_REGEXP>
		<EOL_SPAN_REGEXP HASH_CHAR="e" AT_WHITESPACE_END="TRUE" MATCH_TYPE="KEYWORD1">end\s+object\s*</EOL_SPAN_REGEXP>
 
		<!-- regular expression for hexadecimal and decimal numbers, including sign -->
		<SEQ_REGEXP HASH_CHARS="+-0123456789" TYPE="DIGIT">\b0x[\p{XDigit}]+|[+-]?\b\d+(\.\d*)?([eE][+-]?\d+)?[fF]?\b</SEQ_REGEXP>
 
		<!-- everything before "=", ".", "(" or "[" is a variable name -->
		<MARK_PREVIOUS AT_WORD_START="TRUE" MATCH_TYPE="OPERATOR" TYPE="MARKUP">=</MARK_PREVIOUS>
		<MARK_PREVIOUS AT_WORD_START="TRUE" MATCH_TYPE="OPERATOR" TYPE="MARKUP">.</MARK_PREVIOUS>
		<MARK_PREVIOUS AT_WORD_START="TRUE" MATCH_TYPE="OPERATOR" TYPE="MARKUP">(</MARK_PREVIOUS>
		<MARK_PREVIOUS AT_WORD_START="TRUE" MATCH_TYPE="OPERATOR" TYPE="MARKUP">[</MARK_PREVIOUS><!-- Invalid for arrays in defaults -->
 
		<!-- closing brackets -->
		<SEQ TYPE="OPERATOR">]</SEQ><!-- Invalid for arrays in defaults -->
		<SEQ TYPE="OPERATOR">)</SEQ>
 
		<!-- comma for dynarray and struct values -->
		<SEQ TYPE="OPERATOR">,</SEQ>
 
		<!-- variable names can be separated from "=" by whitespace, so highlight that case separately -->
		<SEQ_REGEXP AT_WHITESPACE_END="TRUE" HASH_CHARS="abcdefghijklmnopqrstuvwxyz" TYPE="MARKUP">\w+</SEQ_REGEXP>
 
		<KEYWORDS>
			<KEYWORD1>class</KEYWORD1>
 
			<!-- dynamic array operations -->
			<KEYWORD1>Add</KEYWORD1>
			<KEYWORD1>Empty</KEYWORD1>
			<KEYWORD1>Remove</KEYWORD1>
 
			<!-- literals -->
			<KEYWORD2>False</KEYWORD2>
			<KEYWORD2>None</KEYWORD2>
			<KEYWORD2>True</KEYWORD2>
 
				<!-- UnrealEngine Classes / Enums -->
				<KEYWORD3>AnimSet</KEYWORD3><!-- UE3 -->
				<KEYWORD3>CameraAnim</KEYWORD3>
				<KEYWORD3>Emitter</KEYWORD3>
				<KEYWORD3>ParticleSystem</KEYWORD3>
				<KEYWORD3>Material</KEYWORD3>
				<KEYWORD3>MaterialInterface</KEYWORD3><!-- UE3 -->
				<KEYWORD3>Texture</KEYWORD3>
				<KEYWORD3>Texture2D</KEYWORD3>
				<KEYWORD3>SkeletalMesh</KEYWORD3>
				<KEYWORD3>AnimTree</KEYWORD3>
				<KEYWORD3>PhysicsAsset</KEYWORD3>
 
				<!--Components UE3-->
				<KEYWORD3>Component</KEYWORD3>
				<KEYWORD3>ActorComponent</KEYWORD3>
				<KEYWORD3>PrimitiveComponent</KEYWORD3>
				<KEYWORD3>SVehicleSimBase</KEYWORD3>
				<KEYWORD3>StaticMeshComponent</KEYWORD3>
				<KEYWORD3>SkeletalMeshComponent</KEYWORD3>
				<KEYWORD3>ParticleSystemComponent</KEYWORD3>
				<KEYWORD3>PointLightComponent</KEYWORD3>
				<KEYWORD3>SplineComponent</KEYWORD3>
 
				<!--UDK specific-->
				<KEYWORD3>UDKParticleSystemComponent</KEYWORD3>
				<KEYWORD3>UDKExplosionLight</KEYWORD3>
 
				<!--UT3 specific-->
				<KEYWORD3>UTSkeletalMeshComponent</KEYWORD3>
 
				<!--Sound, was changed-->
				<KEYWORD3>Sound</KEYWORD3>
				<KEYWORD3>SoundNode</KEYWORD3><!-- UE3 -->
				<KEYWORD3>SoundCue</KEYWORD3><!-- UE3 -->
				<KEYWORD3>ParticleSystem</KEYWORD3>
		</KEYWORDS>
	</RULES>
 
	<RULES SET="BEGINOBJECT">
	<!-- special highlighting for "Begin Object" lines -->
		<SEQ TYPE="OPERATOR">=</SEQ>
 
		<!-- multi line comments -->
		<SPAN TYPE="COMMENT1" DELEGATE="COMMENT">
			<BEGIN>/*</BEGIN>
			<END>*/</END>
		</SPAN>
 
		<!-- name and object literals -->
		<SPAN TYPE="LITERAL2" NO_LINE_BREAK="TRUE" ESCAPE="\">
			<BEGIN>'</BEGIN>
			<END>'</END>
		</SPAN>
 
		<KEYWORDS>
			<KEYWORD1>Class</KEYWORD1>
			<KEYWORD1>Name</KEYWORD1>
			<KEYWORD1>LegacyClassName</KEYWORD1><!-- UE3 -->
			<KEYWORD1>ObjName</KEYWORD1>
			<KEYWORD1>Archetype</KEYWORD1><!-- UE3 -->
 
				<!-- UnrealEngine Classes / Enums -->
				<KEYWORD3>AnimSet</KEYWORD3><!-- UE3 -->
				<KEYWORD3>CameraAnim</KEYWORD3>
				<KEYWORD3>Emitter</KEYWORD3>
				<KEYWORD3>ParticleSystem</KEYWORD3>
				<KEYWORD3>Material</KEYWORD3>
				<KEYWORD3>MaterialInterface</KEYWORD3><!-- UE3 -->
				<KEYWORD3>Texture</KEYWORD3>
				<KEYWORD3>Texture2D</KEYWORD3>
 
				<!--Components UE3-->
				<KEYWORD3>Component</KEYWORD3>
				<KEYWORD3>ActorComponent</KEYWORD3>
				<KEYWORD3>PrimitiveComponent</KEYWORD3>
				<KEYWORD3>SVehicleSimBase</KEYWORD3>
				<KEYWORD3>StaticMeshComponent</KEYWORD3>
				<KEYWORD3>SkeletalMeshComponent</KEYWORD3>
				<KEYWORD3>ParticleSystemComponent</KEYWORD3>
				<KEYWORD3>PointLightComponent</KEYWORD3>
				<KEYWORD3>SplineComponent</KEYWORD3>
 
				<!--UDK specific-->
				<KEYWORD3>UDKParticleSystemComponent</KEYWORD3>
				<KEYWORD3>UDKExplosionLight</KEYWORD3>
 
				<!--UT3 specific-->
				<KEYWORD3>UTSkeletalMeshComponent</KEYWORD3>
 
				<!--Sound, was changed-->
				<KEYWORD3>Sound</KEYWORD3>
				<KEYWORD3>SoundNode</KEYWORD3><!-- UE3 -->
				<KEYWORD3>SoundCue</KEYWORD3><!-- UE3 -->
		</KEYWORDS>
	</RULES>
</MODE>