{"name":"Witcher Script","scopeName":"source.witcherscript","patterns":[{"name":"comment.block.witcherscript","begin":"/\\*","end":"\\*/"},{"name":"comment.double-slash.witcherscript","match":"//.*"},{"name":"string.quoted.double.witcherscript","begin":"\"","end":"\""},{"name":"string.quoted.single.witcherscript","begin":"'","end":"'"},{"name":"keyword.control.witcherscript","match":"\\b(break|case|continue|else|for|if|return|switch|while)\\b"},{"name":"keyword.other.witcherscript","match":"\\b(out|inlined|autobind|editable|entry|exec|hint|import|latent|optional|out|quest|saved|statemachine|timer)\\b"},{"name":"keyword.operator.new.witcherscript","match":"\\b(=|!|\u003c|\u003e|\u0026|\\+|-|\\^|\\*|\\/|\\|)\\b"},{"name":"constant.numeric.witcherscript","match":"\\b(\\d+|\\d+.?(f)?)\\b"},{"name":"constant.rgb-value.witcherscript","match":"(#)([0-9a-fA-F]{3}|[0-9a-fA-F]{6})\\b(?!.*?(?\u003c!@){)"},{"name":"constant.language.witcherscript","match":"\\b(false|NULL|true)\\b"},{"name":"storage.type.witcherscript","match":"\\b(enum|struct|state|array)\\b"},{"name":"storage.modifier.witcherscript","match":"\\b(abstract|const|final|private|protected|public)\\b"},{"name":"support.class.witcherscript","match":"\\b(theGame|theInput|thePlayer|theSound)\\b"},{"name":"variable.language.witcherscript","match":"\\b(this|parent|super)\\b"},{"begin":"(function|event)\\s*(\\/\\*.*\\*\\/)?\\s*(\\w+)\\s*\\(","end":"\\)(\\s*:\\s*(array\\s*\u003c\\s*\\w+\\s*\u003e|\\w*))?","patterns":[{"match":"\\s*(out|optional)?\\s*(\\w+)\\s*:\\s*(array\\s*\u003c\\s*\\w+\\s*\u003e|\\w*|),?","captures":{"1":{"name":"keyword.other.witcherscript"},"2":{"name":"support.variable.witcherscript"},"3":{"patterns":[{"include":"#witcherscript-var-types"}]}}}],"beginCaptures":{"1":{"name":"support.type.witcherscript"},"2":{"name":"comment.block.witcherscript"},"3":{"name":"support.function.witcherscript"}},"endCaptures":{"2":{"patterns":[{"include":"#witcherscript-var-types"}]}}},{"begin":"\\b(var)\\b\\s*","end":":\\s*(array\\s*\u003c\\s*\\w+\\s*\u003e|\\w*)\\s*;","patterns":[{"name":"support.variable.witcherscript","match":"(\\w+)\\s*,?"}],"beginCaptures":{"1":{"name":"storage.type.witcherscript"}},"endCaptures":{"1":{"patterns":[{"include":"#witcherscript-var-types"}]}}},{"match":"(default)\\s*(\\w+)","captures":{"1":{"name":"keyword.control.witcherscript"},"2":{"name":"support.variable"}}},{"match":"(extends|class)\\s*(\\w*)","captures":{"1":{"name":"keyword.other.witcherscript"},"2":{"name":"support.class.witcherscript"}}},{"match":"\\(\\s*(\\s*[A-Z]\\w+\\s*)\\s*\\)\\s*\\(","captures":{"1":{"name":"support.class.witcherscript"}}},{"match":"\\(\\s*\\(\\s*([A-Z]\\w+)\\s*\\)","captures":{"1":{"name":"support.class.witcherscript"}}},{"match":"(new)\\s*(\\w+)\\s*(in)\\s*(this)","captures":{"1":{"name":"variable.language.witcherscript"},"2":{"name":"support.class.witcherscript"},"3":{"name":"variable.language.witcherscript"},"4":{"name":"variable.language.witcherscript"}}},{"include":"#witcherscript-data-types"}],"repository":{"witcherscript-data-types":{"patterns":[{"name":"storage.type.witcherscript","match":"\\b(string|int|integer|bool|float|name|range)\\b"}]},"witcherscript-object-types":{"patterns":[{"name":"support.class.witcherscript","match":"[A-Z]\\w+"}]},"witcherscript-var-types":{"patterns":[{"include":"#witcherscript-object-types"},{"match":"(array)\\s*\u003c\\s*(\\w+)\\s*\u003e","captures":{"1":{"name":"storage.type.witcherscript"},"2":{"patterns":[{"include":"#witcherscript-object-types"},{"include":"#witcherscript-data-types"}]}}},{"include":"#witcherscript-data-types"}]}}}
