<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>comment</key>
    <string></string>
    <key>fileTypes</key>
    <array>
        <string>psc</string>
    </array>
    <key>firstLineMatch</key>
    <string>(?i)^scriptname</string>
    <key>foldingStartMarker</key>
    <string>(?i)^(\s*state|\s*event|\s*(\S+\s+)?function)</string>
    <key>foldingStopMarker</key>
    <string>(?i)^\s*(endstate|endevent|endfunction)</string>
    <key>name</key>
    <string>Papyrus</string>
    <key>patterns</key>
    <array>
        <dict>
            <key>begin</key>
            <string>&quot;</string>
            <key>end</key>
            <string>&quot;</string>
            <key>name</key>
            <string>string.quoted.double.papyrus</string>
        </dict>
        <dict>
            <key>begin</key>
            <string>&apos;</string>
            <key>end</key>
            <string>&apos;</string>
            <key>name</key>
            <string>string.quoted.single.papyrus</string>
        </dict>
        <dict>
            <key>begin</key>
            <string>;/</string>
            <key>end</key>
            <string>/;</string>
            <key>name</key>
            <string>comment.block.papyrus</string>
        </dict>
        <dict>
            <key>match</key>
            <string>(;).*$\n?</string>
            <key>name</key>
            <string>comment.line.semicolon.papyrus</string>
        </dict>
        <dict>
            <key>begin</key>
            <string>{</string>
            <key>end</key>
            <string>}</string>
            <key>name</key>
            <string>comment.documentation.papyrus</string>
        </dict>
        <dict>
            <key>captures</key>
            <dict>
                <key>1</key>
                <dict>
                    <key>name</key>
                    <string>support.type.other.scriptname-declaration.papyrus</string>
                </dict>
                <key>2</key>
                <dict>
                    <key>name</key>
                    <string>entity.type.scriptname.papyrus</string>
                </dict>
                <key>3</key>
                <dict>
                    <key>name</key>
                    <string>variable.language.extends.papyrus</string>
                </dict>
                <key>4</key>
                <dict>
                    <key>name</key>
                    <string>entity.other.inherited-class.papyrus</string>
                </dict>
                <key>5</key>
                <dict>
                    <key>name</key>
                    <string>variable.language.conditional.papyrus</string>
                </dict>
            </dict>
            <key>match</key>
            <string>(?i)^\s*(scriptname)\s+(\S+)\s+(extends)\s+(\S+)\s+(conditional)?</string>
        </dict>
        <dict>
            <key>begin</key>
            <string>(?i)(property)\s+(\S+)</string>
            <key>beginCaptures</key>
            <dict>
                <key>1</key>
                <dict>
                    <key>name</key>
                    <string>keyword.other.property.papyrus</string>
                </dict>
                <key>2</key>
                <dict>
                    <key>name</key>
                    <string>variable.other.property.papyrus</string>
                </dict>
            </dict>
            <key>end</key>
            <string>(auto\s|autoreadonly\s)?(conditional)?\n</string>
            <key>endCaptures</key>
            <dict>
                <key>1</key>
                <dict>
                    <key>name</key>
                    <string>variable.language.auto.papyrus</string>
                </dict>
                <key>2</key>
                <dict>
                    <key>name</key>
                    <string>variable.language.condtional.papyrus</string>
                </dict>
            </dict>
            <key>patterns</key>
            <array>
                <dict>
                    <key>include</key>
                    <string>$self</string>
                </dict>
            </array>
        </dict>
        <dict>
            <key>begin</key>
            <string>(?i)\b(function|event)\s+([^\(]*)\(</string>
            <key>beginCaptures</key>
            <dict>
                <key>1</key>
                <dict>
                    <key>name</key>
                    <string>keyword.control.functionstart.papyrus</string>
                </dict>
                <key>2</key>
                <dict>
                    <key>name</key>
                    <string>entity.name.function.papyrus</string>
                </dict>
            </dict>
            <key>end</key>
            <string>\)</string>
            <key>name</key>
            <string>meta.function.papyrus</string>
            <key>patterns</key>
            <array>
                <dict>
                    <key>include</key>
                    <string>#params</string>
                </dict>
            </array>
        </dict>
        <dict>
            <key>captures</key>
            <dict>
                <key>1</key>
                <dict>
                    <key>name</key>
                    <string>keyword.control.statestart.papyrus</string>
                </dict>
                <key>2</key>
                <dict>
                    <key>name</key>
                    <string>entity.name.section.papyrus</string>
                </dict>
            </dict>
            <key>match</key>
            <string>(?i)\b(state)\s+(.*)\n</string>
        </dict>
        <dict>
            <key>match</key>
            <string>(?i)\b(conditional)\s*$</string>
            <key>name</key>
            <string>variable.language.conditional.papyrus</string>
        </dict>
        <dict>
            <key>include</key>
            <string>#constants</string>
        </dict>
        <dict>
            <key>match</key>
            <string>&amp;&amp;|\|\||\=\=|!\=|&lt;\=|&gt;\=|&gt;|&lt;</string>
            <key>name</key>
            <string>keyword.operator.logical.papyrus</string>
        </dict>
        <dict>
            <key>match</key>
            <string>\+|\-|\*|/|!|%</string>
            <key>name</key>
            <string>keyword.operator.arithmetic.papyrus</string>
        </dict>
        <dict>
            <key>match</key>
            <string>\=|\+\=|-\=|\*\=|/\=|%\=</string>
            <key>name</key>
            <string>keyword.operator.assignment.papyrus</string>
        </dict>
        <dict>
            <key>match</key>
            <string>(?i)\b(if|else|elseif|endif|while|endwhile|return)\b</string>
            <key>name</key>
            <string>keyword.control.flow.papyrus</string>
        </dict>
        <dict>
            <key>match</key>
            <string>(?i)\b(import)\b</string>
            <key>name</key>
            <string>keyword.control.papyrus</string>
        </dict>
        <dict>
            <key>match</key>
            <string>(?i)\b(global|hidden|native)\b</string>
            <key>name</key>
            <string>storage.modifier.papyrus</string>
        </dict>
        <dict>
            <key>match</key>
            <string>(?i)\b(self|parent|extends|auto)\b</string>
            <key>name</key>
            <string>variable.language.papyrus</string>
        </dict>
        <dict>
            <key>match</key>
            <string>(?i)\b(endstate)\b</string>
            <key>name</key>
            <string>keyword.control.stateend.papyrus</string>
        </dict>
        <dict>
            <key>match</key>
            <string>(?i)\b(endfunction)\b</string>
            <key>name</key>
            <string>keyword.control.functionend.papyrus</string>
        </dict>
        <dict>
            <key>match</key>
            <string>(?i)\b(endevent)\b</string>
            <key>name</key>
            <string>keyword.control.eventend.papyrus</string>
        </dict>
        <dict>
            <key>match</key>
            <string>(?i)\b(endproperty)\b</string>
            <key>name</key>
            <string>keyword.control.propertyend.papyrus</string>
        </dict>
        <dict>
            <key>include</key>
            <string>#base-types</string>
        </dict>
        <dict>
            <key>include</key>
            <string>#class-types</string>
        </dict>
        <dict>
            <key>include</key>
            <string>#builtin-funcs</string>
        </dict>
    </array>
    <key>repository</key>
    <dict>
        <key>base-types</key>
        <dict>
            <key>match</key>
            <string>(?i)\b(int|string|float|bool)\b</string>
            <key>name</key>
            <string>storage.type.papyrus</string>
        </dict>
        <key>constants</key>
        <dict>
            <key>patterns</key>
            <array>
                <dict>
                    <key>match</key>
                    <string>\b(?i:(\d+\.\d*(e[\-\+]?\d+)?))(?=[^a-zA-Z_])</string>
                    <key>name</key>
                    <string>constant.numeric.float.papyrus</string>
                </dict>
                <dict>
                    <key>match</key>
                    <string>\b([1-9]+[0-9]*|0)</string>
                    <key>name</key>
                    <string>constant.numeric.integer.papyrus</string>
                </dict>
                <dict>
                    <key>match</key>
                    <string>(?i)\b(true|false|none)\b</string>
                    <key>name</key>
                    <string>constant.language.bool.papyrus</string>
                </dict>
            </array>
        </dict>
        <key>builtin-funcs</key>
        <dict>
            <key>match</key>
            <string>(?i)\b(abs|acos|activate|add|addachievement|addform|addhavokballandsocketconstraint|addinventoryeventfilter|additem|addkeyifneeded|addperk|addshout|addspell|addtofaction|addtomap|advanceskill|allowbleedoutdialogue|allowpcdialogue|apply|applycrossfade|applyhavokimpulse|asin|atan|attachashpile|blockactivation|calculateencounterlevel|calculatefavorcost|canfasttraveltomarker|canpaycrimegold|cast|ceiling|centeroncell|centeroncellandwait|clear|cleararrested|cleardestruction|clearextraarrows|clearforcedlandingmarker|clearkeepoffsetfromactor|clearlookat|clearprison|cleartempeffects|closeuserlog|completeallobjectives|completequest|cos|countlinkedrefchain|createdetectionevent|damageactorvalue|damageav|damageobject|debugchannelnotify|degreestoradians|delete|deletewhenable|disable|disablelinkchain|disablenowait|disableplayercontrols|dispel|dispelallspells|dispelspell|docombatspellapply|dropobject|dumpaliasdata|enable|enableai|enablefasttravel|enablelinkchain|enablenowait|enableplayercontrols|equipitem|equipshout|equipspell|evaluatepackage|fadeoutgame|failallobjectives|fasttravel|findclosestactor|findclosestactorfromref|findclosestreferenceofanytypeinlist|findclosestreferenceofanytypeinlistfromref|findclosestreferenceoftype|findclosestreferenceoftypefromref|findrandomactor|findrandomactorfromref|findrandomreferenceofanytypeinlist|findrandomreferenceofanytypeinlistfromref|findrandomreferenceoftype|findrandomreferenceoftypefromref|findweather|fire|floor|forceactive|forceactorvalue|forceaddragdolltoworld|forceav|forcefirstperson|forcerefifempty|forcelocationto|forcerefto|forceremoveragdollfromworld|forcestart|forcethirdperson|gametimetostring|getactorbase|getactorowner|getactorref|getactorreference|getactorvalue|getactorvaluepercentage|getalias|getanglex|getangley|getanglez|getanimationvariablebool|getanimationvariablefloat|getanimationvariableint|getassociatedskill|getat|getav|getavpercentage|getbaseactorvalue|getbaseav|getbaseobject|getbribeamount|getcasteractor|getclass|getclassification|getcombatstate|getcombattarget|getconfigname|getcrimefaction|getcrimegold|getcrimegoldnonviolent|getcrimegoldviolent|getcurrentdestructionstage|getcurrentlocation|getcurrentpackage|getcurrentgametime|getcurrentrealtime|getcurrentscene|getcurrentstageid|getcurrentweather|getcurrentweathertransition|getdeadcount|getdialoguetarget|getdistance|geteditorlocation|getequippeditemtype|getequippedshield|getequippedshout|getequippedspell|getequippedweapon|getfactionowner|getfactionrank|getfactionreaction|getflyingstate|getforcedlandingmarker|getform|getformid|getgamesettingfloat|getgamesettingint|getgamesettingstring|getgiftfilter|getgoldamount|getgoldvalue|getheadingangle|getheight|gethighestrelationshiprank|getinfamy|getinfamynonviolent|getinfamyviolent|getitemcount|getitemhealthpercent|getkey|getkeyworddata|getkiller|getlength|getlevel|getleveledactorbase|getlinkedref|getlightlevel|getlocation|getlocklevel|getlowestrelationshiprank|getmass|getnobleedoutrecovery|getnthlinkedref|getopenstate|getoutgoingweather|getowningquest|getparentcell|getplatformname|getplayer|getplayercontrols|getplayergrabbedref|getpositionx|getpositiony|getpositionz|gettargetactor|getrace|getreaction|getrealhourspassed|getref|getreference|getreftypealivecount|getreftypedeadcount|getregard|getrelationshiprank|getreputation|getscale|getsex|getsitstate|getsize|getskymode|getsleepstate|getstage|getstagedone|getstate|getstolenitemvaluecrime|getstolenitemvaluenocrime|gettempfavorpoints|gettemplate|gettriggerobjectcount|getvalue|getvalueint|getversionnumber|getvoicerecoverytime|getvoicetype|getwidth|getworldspace|gotostate|hasassociation|hascommonparent|haseffectkeyword|hasfamilyrelationship|hasform|haskeyword|haslos|hasmagiceffectwithkeyword|hasnode|hasparentrelationship|hasperk|hasreftype|hasspell|hidetitlesequencemenu|ignorefriendlyhits|incrementskill|incrementskillby|incrementstat|interruptcast|is3dloaded|isactioncomplete|isactivatechild|isactivatecontrolsenabled|isactivationblocked|isactive|isalarmed|isalerted|isallowedtofly|isarrested|isarrestingtarget|isattached|isbleedingout|isbribed|iscamswitchcontrolsenabled|ischild|iscleared|iscommandedactor|iscompleted|isdead|isdetectedby|isdisabled|isdoingfavor|isenabled|isequipped|isessential|isfactionincrimegroup|isfasttravelenabled|isfightingcontrolsenabled|isflying|isfurnitureinuse|isfurnituremarkerinuse|isghost|isguard|ishostile|ishostiletoactor|isignoringfriendlyhits|isincombat|isindialoguewithplayer|isinfaction|isininterior|isinkillmove|isinlocation|isinmenumode|isintimidated|isjournalcontrolsenabled|islockbroken|islocked|islookingcontrolsenabled|isprotected|isinterior|isinvulnerable|isloaded|ismapmarkervisible|ismenucontrolsenabled|ismovementcontrolsenabled|isnearplayer|isobjectivecompleted|isobjectivedisplayed|isobjectivefailed|isplayerexpelled|isplayerslastriddenhorse|isplayerteammate|isplaying|isrunning|issamelocation|issneaking|issneakingcontrolsenabled|issprinting|isstagedone|isstarting|isstopping|isstopped|istrespassing|isunconscious|isunique|isweapondrawn|iswordunlocked|keepoffsetfromactor|kill|killessential|killsilent|knockareaeffect|learneffect|learnnexteffect|learnalleffects|lock|messagebox|makeplayerfriend|mod|modactorvalue|modav|modcrimegold|modfactionrank|modfavorpoints|modobjectiveglobal|modreaction|modregard|moveto|movetoifunloaded|movetointeractionlocation|movetomyeditorlocation|movetonode|movetopackagelocation|mute|notification|onactivate|onanimationevent|onanimationeventunregistered|onattachedtocell|onbeginstate|oncellattach|oncelldetach|oncellload|onclose|oncombatstatechanged|oncontainerchanged|ondeath|ondestructionstagechanged|ondetachedfromcell|oneffectstart|oneffectfinish|onendstate|onenterbleedout|onequipped|ongainlos|ongetup|ongrab|onhit|oninit|onitemadded|onitemremoved|onload|onlocationchange|onlockstatechanged|onmagiceffectapply|onobjectequipped|onobjectunequipped|onopen|onlostlos|onpackagechange|onpackageend|onpackagestart|onraceswitchcomplete|onread|onrelease|onreset|onsell|onsit|onsleepstart|onsleepstop|onspellcast|onstoryactivateactor|onstoryaddtoplayer|onstoryarrest|onstoryassaultactor|onstorybribenpc|onstorycastmagic|onstorychangelocation|onstorycraftitem|onstorycrimegold|onstorycure|onstorydialogue|onstorydiscoverdeadbody|onstoryescapejail|onstoryflatternpc|onstoryhello|onstoryincreaselevel|onstoryincreaseskill|onstoryinfection|onstoryintimidatenpc|onstoryjail|onstorykillactor|onstorynewvoicepower|onstorypicklock|onstorypayfine|onstoryplayergetsfavor|onstoryrelationshipchange|onstoryremovefromplayer|onstoryscript|onstoryservedtime|onstorytrespass|ontrackedstatsevent|ontranslationalmostcomplete|ontranslationcomplete|ontranslationfailed|ontraphit|ontraphitstart|ontraphitstop|ontrigger|ontriggerenter|ontriggerleave|onunequipped|onunload|onupdate|onupdategametime|onwardhit|openinventory|openuserlog|pathtoreference|pause|placeactoratme|placeatme|play|playaction|playactionandwait|playandwait|playanimation|playanimationandwait|playbink|playerknows|playermovetoandwait|playerpaycrimegold|playgamebryoanimation|playidle|playidlewithtarget|playimpacteffect|playsubgraphanimation|playsyncedanimationandwaitss|playsyncedanimationss|playterraineffect|popto|pow|precachechargen|precachechargenclear|processtraphit|pushactoraway|querystat|quitgame|quittomainmenu|radianstodegrees|ramprumble|randomint|randomfloat|registerforanimationevent|registerforlos|registerforsinglelosgain|registerforsingleloslost|registerforsleep|registerforsingleupdate|registerforsingleupdategametime|registerfortrackedstatsevent|registerforupdate|registerforupdategametime|releaseoverride|remotecast|remove|removeaddedform|removecrossfade|removefromfaction|removefromallfactions|removeallinventoryeventfilters|removeallitems|removehavokconstraint|removeinventoryeventfilter|removeitem|removeperk|removeshout|removespell|requestautosave|requestmodel|requestsave|reset|resethealthandlimbs|resethelpmessage|resurrect|restoreactorvalue|restoreav|revert|say|sendanimationevent|sendassaultalarm|sendplayertojail|sendstealalarm|sendstoryevent|sendstoryeventandwait|sendtrespassalarm|servetime|sendwerewolftransformation|setactive|setactorcause|setactorowner|setactorvalue|setalert|setallowflying|setally|setalpha|setangle|setanimationvariablebool|setanimationvariablefloat|setanimationvariableint|setattackactoronsight|setav|setbeastform|setbribed|setcameratarget|setcleared|setcrimefaction|setcrimegold|setcrimegoldviolent|setcriticalstage|setcurrentstageid|setdestroyed|setdoingfavor|setenemy|setessential|setfactionowner|setfactionrank|setfogcolor|setfogplanes|setfogpower|setfootik|setforcedlandingmarker|setfrequency|setghost|setgodmode|setheadtracking|sethudcartmode|setinchargen|setinibool|setinifloat|setiniint|setinistring|setinstancevolume|setintimidated|setinvulnerable|setkeyworddata|setlocklevel|setlookat|setmotiontype|setnobleedoutrecovery|setnofavorallowed|setnotshowonstealthmeter|setplayercontrols|setobjectivecompleted|setobjectivedisplayed|setobjectivefailed|setopen|setoutfit|setplayeraidriven|setplayerenemy|setplayerexpelled|setplayerreportcrime|setplayerresistingarrest|setplayerteammate|setposition|setprotected|setpublic|setrace|setreaction|setrelationshiprank|setrestrained|setscale|setsittingrotation|setstage|settempfavorpoints|setunconscious|setvalue|setvalueint|setvehicle|setvoicerecoverytime|setvolume|shakecamera|shakecontroller|show|showashelpmessage|showbartermenu|showfirstpersongeometry|showracemenu|showtitlesequencemenu|showtrainingmenu|sin|splinetranslateto|splinetranslatetoref|splinetranslatetorefnode|sqrt|start|startcannibal|startcombat|startscriptprofiling|startstackprofiling|starttitlesequence|startvampirefeed|startobjectprofiling|stop|stopcombat|stopcombatalarm|stopinstance|stopobjectprofiling|stopscriptprofiling|stopstackprofiling|stoptranslation|takescreenshot|tan|teachword|tethertohorse|toggleai|togglecollisions|togglemenus|trace|traceandbox|traceconditional|tracestack|traceuser|translateto|translatetoref|trapsoul|triggerscreenblood|trytoaddtofaction|trytoclear|trytodisable|trytodisablenowait|trytoenable|trytoenablenowait|trytoevaluatepackage|trytokill|trytomoveto|trytoremovefromfaction|trytoreset|trytostopcombat|unequipall|unequipitem|unequipshout|unequipspell|unlockowneddoorsincell|unlockword|unmute|unpause|unregisterforanimationevent|unregisterforlos|unregisterforsleep|unregisterfortrackedstatsevent|unregisterforupdate|unregisterforupdategametime|updatecurrentinstanceglobal|usinggamepad|wait|waitforanimationevent|waitgametime|waitmenumode|willintimidatesucceed|wornhaskeyword)\b</string>
            <key>name</key>
            <string>support.function.papyrus</string>
        </dict>
        <key>class-types</key>
        <dict>
            <key>match</key>
            <string>(?i)\b(action|activator|activemagiceffect|actor|actorbase|alias|ammo|apparatus|armor|associationtype|book|cell|class|constructibleobject|container|debug|door|enchantment|encounterzone|effectshader|explosion|faction|flora|form|formlist|furniture|game|globalvariable|hazard|idle|imagespacemodifier|impactdataset|ingredient|key|keyword|leveledactor|leveleditem|leveledspell|light|location|locationalias|locationreftype|magiceffect|math|message|miscobject|musictype|objectreference|outfit|package|perk|potion|projectile|quest|race|referencealias|scene|scroll|shout|sound|soundcategory|soulgem|spell|static|talkingactivator|topic|topicinfo|utility|visualeffect|voicetype|weapon|weather|wordofpower|worldspace)\b</string>
            <key>name</key>
            <string>support.class.papyrus</string>
        </dict>
        <key>params</key>
        <dict>
            <key>patterns</key>
            <array>
                <dict>
                    <key>include</key>
                    <string>#constants</string>
                </dict>
                <dict>
                    <key>match</key>
                    <string>(?:\G\s*|,\s*)(\w+)\s+(\w+)\b(?:\s*(=))?</string>
                    <key>captures</key>
                    <dict>
                        <key>1</key>
                        <dict>
                            <key>name</key>
                            <string>storage.type.variable.papyrus</string>
                        </dict>
                        <key>2</key>
                        <dict>
                            <key>name</key>
                            <string>variable.parameter.papyrus</string>
                        </dict>
                        <key>3</key>
                        <dict>
                            <key>name</key>
                            <string>keyword.operator.assignment.papyrus</string>
                        </dict>
                    </dict>
                    <key>name</key>
                    <string>meta.parameter.papyrus</string>
                </dict>
                <dict>
                    <key>match</key>
                    <string>[^\s\)]+?</string>
                    <key>name</key>
                    <string>invalid.illegal.function.papyrus</string>
                </dict>
            </array>
        </dict>
    </dict>
    <key>scopeName</key>
    <string>source.papyrus</string>
    <key>uuid</key>
    <string>A4B74D45-A967-4BF7-99C9-FEA2E18CB98C</string>
</dict>
</plist>