Motenten

Mote-Rules-Include r3

Sep 15th, 2012
2,089
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
XML 117.47 KB | None | 0 0
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!-- Last modified: 4/27/2013 7:03:14 PM -->
  3.  
  4. <!-- IMPORTANT -->
  5.  
  6. <!--
  7.     This include, and the xmls based on it, make use of new custom trigger spells
  8.     from the "radsources" resources.  Current updated resources should include these
  9.     in the standard client.  If things don't appear to be working, check that first.
  10. -->
  11.  
  12. <!-- REQUIRED -->
  13.  
  14. <!-- The following include entries must be imported for this include to be properly functional. -->
  15.  
  16. <!-- Vars section:
  17.     ConfigurationVars (required)
  18.     UtilityVars (required)
  19.  
  20.     RecastDurations (if using RecastWarnings)
  21.     ElementalStaves (if using ElementalStaffRules or FastCastCalculations)
  22.     FastCastVars (if using FastCastCalculations)
  23.     ElementalGear (if using ObiRingCape-*)
  24. -->
  25.  
  26. <!-- Sets section:
  27.     Base-Group (recommended as base for inheritance)
  28.  
  29.     Outside-Group (group required for normal outside areas; inherit from Base-Group)
  30.     Abyssea-Group (group for inside Abyssea) [Visitant status]
  31.     Campaign-Group (group for when in Campaign) [Allied Tags status]
  32.     Voidwatch-Group (group for when in Voidwatch) [Voidwatcher status]
  33.     Salvage-Group (group for when in Salvage) [*Remnants zone]
  34.     Legion-Group (group for when in Legion) [??? status]
  35.  
  36.     These groups are only required if using the areaRules include, which automatically switches
  37.     based on where you currently are.  Most of the time, only the Outside-Group needs to
  38.     have sets defined, and the remainder can be empty groups that inherit from that one.
  39. -->
  40.  
  41. <!-- Rules section:
  42.     UniversalTriggerRules - The fundamental include that this Include file is based around.
  43. -->
  44.  
  45.  
  46. <!-- Notes:
  47.     <addtochat color="12"></addtochat> - This color triggers the /tell chime.
  48. -->
  49.  
  50.  
  51. <includes xmlns="http://www.windower.net/spellcast/"
  52.    xmlns:xi="http://www.w3.org/2001/XInclude"
  53.    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  54.    xsi:schemaLocation="http://www.windower.net/spellcast/ spellcastIncludeRules.xsd">
  55.   <!-- ******************* Rules ******************* -->
  56.  
  57.     <!-- Make sure things like basic area and status are set as soon as possible. -->
  58.     <include name="RunFirstUpdate">
  59.         <if advanced='"$FirstUpdate"="No"'>
  60.             <var cmd="set FirstUpdate Yes" />
  61.             <addtochat>Ran first update.</addtochat>
  62.             <if commandprefix="/trigger">
  63.                 <command>$UpdateCommand;wait 0.5;input /ma %spell %spellTargetRaw</command>
  64.             </if>
  65.             <else>
  66.                 <command>$UpdateCommand;wait 0.5;input %commandprefix %spell %spellTargetRaw</command>
  67.             </else>
  68.            
  69.             <!-- Class binds -->
  70.             <!-- On first run, will execute these to bind - and = keys to custom commands. -->
  71.             <!-- Set the values per job xml, use defaults, or set to "None" to not use them. -->
  72.            
  73.             <!-- Ctrl-= -->
  74.             <if advanced='"$ClassBindCtrlEqual"="None"'>
  75.                 <command>unbind ^=</command>
  76.             </if>
  77.             <elseif advanced='"$ClassBindCtrlEqual"!="Ignore"'>
  78.                 <command>bind ^= $ClassBindCtrlEqual</command>
  79.             </elseif>
  80.  
  81.             <!-- Alt-= -->
  82.             <if advanced='"$ClassBindAltEqual"="None"'>
  83.                 <command>unbind !=</command>
  84.             </if>
  85.             <elseif advanced='"$ClassBindAltEqual"!="Ignore"'>
  86.                 <command>bind != $ClassBindAltEqual</command>
  87.             </elseif>
  88.  
  89.             <!-- Ctrl+- -->
  90.             <if advanced='"$ClassBindCtrlDash"="None"'>
  91.                 <command>unbind ^-</command>
  92.             </if>
  93.             <elseif advanced='"$ClassBindCtrlDash"!="Ignore"'>
  94.                 <command>bind ^- $ClassBindCtrlDash</command>
  95.             </elseif>
  96.  
  97.             <!-- Alt+- -->
  98.             <if advanced='"$ClassBindAltDash"="None"'>
  99.                 <command>unbind !-</command>
  100.             </if>
  101.             <elseif advanced='"$ClassBindAltDash"!="Ignore"'>
  102.                 <command>bind !- $ClassBindAltDash</command>
  103.             </elseif>
  104.  
  105.             <!-- Ctrl+` -->
  106.             <if advanced='"$ClassBindCtrlTilde"="None"'>
  107.                 <command>unbind ^`</command>
  108.             </if>
  109.             <elseif advanced='"$ClassBindCtrlTilde"!="Ignore"'>
  110.                 <command>bind ^` $ClassBindCtrlTilde</command>
  111.             </elseif>
  112.  
  113.             <!-- Alt+` -->
  114.             <if advanced='"$ClassBindAltTilde"="None"'>
  115.                 <command>unbind !`</command>
  116.             </if>
  117.             <elseif advanced='"$ClassBindAltTilde"!="Ignore"'>
  118.                 <command>bind !` $ClassBindAltTilde</command>
  119.             </elseif>
  120.  
  121.             <cancelspell />
  122.             <return />
  123.         </if>
  124.     </include>
  125.  
  126.     <!-- Do not use rules if level 50 or lower. -->
  127.     <include name="LevelRequirement">
  128.         <if notmainjoblvlgt="50">
  129.             <return />
  130.         </if>
  131.     </include>
  132.  
  133.     <!-- These stop any gear changes if you're unable to take particular actions. -->
  134.     <include name="ReturnRules">
  135.         <!-- The bug that required this should be fixed -->
  136.         <if spelltargetraw="&lt;st*">
  137.             <return />
  138.         </if>
  139.  
  140.         <!-- Allow manipulation of equipment sets while under adverse effects.
  141.             Do not perform restriction checks on any trigger actions. -->
  142.         <if nottype="Trigger">
  143.             <if status="dead">
  144.                 <!-- Can't do anything if you're dead -->
  145.                 <addtochat>DEAD!</addtochat>
  146.                 <return />
  147.             </if>
  148.             <elseif status="Event">
  149.                 <!-- Don't attempt gear swaps during events (talk with NPC, etc) -->
  150.                 <return />
  151.             </elseif>
  152.             <elseif BuffActive="Sleep|Petrification|Stun|Terror|Charm">
  153.                 <!-- Ignoring Illusion|Egg|Costume -->
  154.                 <addtochat color="28">Cannot act.</addtochat>
  155.                 <return />
  156.             </elseif>
  157.             <elseif spell="Ranged">
  158.                 <if advanced='%spellTargetDistance &gt; 24.9'>
  159.                     <addtochat color="28">Out of range.</addtochat>
  160.                     <return />
  161.                 </if>
  162.             </elseif>
  163.             <elseif BuffActive="Silence|Mute|Omerta">
  164.                 <if type="*Magic|BardSong|Ninjutsu">
  165.                     <addtochat color="28">Silenced.</addtochat>
  166.                     <return />
  167.                 </if>
  168.             </elseif>
  169.             <elseif BuffActive="Amnesia|Impairment">
  170.                 <if type="Weaponskill|JobAbility|Scholar|PetCommand|BloodPact*|CorsairRoll|CorsairShot">
  171.                     <addtochat color="28">Amnesiad.</addtochat>
  172.                     <return />
  173.                 </if>
  174.             </elseif>
  175.             <elseif type="PetCommand|BloodPact*" PetIsValid="false">
  176.                 <addtochat color="28">No valid pet.</addtochat>
  177.                 <return />
  178.             </elseif>
  179.             <elseif type="Weaponskill">
  180.                 <if SpellTargetDistanceGT="12.0">
  181.                     <cancelspell />
  182.                     <addtochat color="28">Too far away, foo'!</addtochat>
  183.                     <return />
  184.                 </if>
  185.                 <!-- <if mode="OR" TPLT="80" advanced='%SpellTargetDistance &gt; $WSDistance'>
  186.                    <cancelspell />
  187.                    <addtochat color="28">%spell cancelled: TP or distance.</addtochat>
  188.                    <return />
  189.                </if> -->
  190.             </elseif>
  191.         </if>
  192.     </include>
  193.  
  194.     <!-- Do not change gear if spell is a transport spell used on self (Warp II/Retrace on others is fine). -->
  195.     <include name="CleanTransportation">
  196.         <if spell="Warp|Warp II|Teleport*|Recall*|Retrace" SpellTargetType="Self">
  197.             <return />
  198.         </if>
  199.     </include>
  200.  
  201.     <!-- area variable rule -->
  202.     <include name="AreaRules">
  203.         <!-- Determine general area, as some give access to special gear, or differences in approach to gearing. -->
  204.         <if BuffActive="Voidwatcher">
  205.             <var cmd="set Area Voidwatch" />
  206.             <var cmd="set IdleArea Field" />
  207.         </if>
  208.         <elseif BuffActive="Allied Tags">
  209.             <var cmd="set Area Campaign" />
  210.             <var cmd="set IdleArea Field" />
  211.         </elseif>
  212.         <elseif BuffActive="Visitant">
  213.             <var cmd="set Area Abyssea" />
  214.             <var cmd="set IdleArea Field" />
  215.         </elseif>
  216.         <elseif advanced='"%area"!="$LastKnownArea"'>
  217.             <if area="*Remnants">
  218.                 <var cmd="set Area Salvage" />
  219.             </if>
  220.             <elseif area="Nyzul Isle|Ilrusi Atoll|Leujaoam Sanctum|Mamool Ja Training Grounds|Lebros Cavern|Periqia">
  221.                 <var cmd="set Area Assault" />
  222.             </elseif>
  223.             <elseif area="*Legion">
  224.                 <var cmd="set Area Legion" />
  225.             </elseif>
  226.             <else>
  227.                 <var cmd="set Area Outside" />
  228.             </else>
  229.  
  230.             <!-- Define idle set based on town or elsewhere -->
  231.             <if area="Ru'Lude Gardens|Nashmau|Tavnazian Safehold|Port*|Bastok*|Windurst*|*San d'Oria|*Jeuno|*Whitegate|*Adoulin" notarea="Dynamis*|*[S]">
  232.                 <var cmd="set IdleArea Town" />
  233.             </if>
  234.             <else>
  235.                 <var cmd="set IdleArea Field" />
  236.             </else>
  237.         </elseif>
  238.  
  239.         <var cmd="set LastKnownArea %area" />
  240.  
  241.         <!-- Change group based on area -->
  242.         <if notgroup="$Area-Group">
  243.             <command>sc group $Area-Group</command>
  244.         </if>
  245.     </include>
  246.  
  247.     <!-- spell Cancel Rules -->
  248.     <include name="SpellCancel">
  249.         <if spell="Sneak" BuffActive="Sneak" SpellTargetType="Self">
  250.             <midcastdelay delay="1" />
  251.             <command when="midcast">cancel 71</command>
  252.         </if>
  253.         <elseif spell="Spectral Jig" BuffActive="Sneak">
  254.             <command when="precast">cancel 71</command>
  255.         </elseif>
  256.         <elseif spell="Monomi*" BuffActive="Sneak">
  257.             <midcastdelay delay="2.5" />
  258.             <command when="midcast">cancel 71</command>
  259.         </elseif>
  260.         <elseif spell="Utsusemi: Ichi" buffactive="Copy Image*" NotBuffActive="Silence|Mute|Omerta|Obliviscence">
  261.             <if NotBuffActive="Copy Image (3)|Copy Image (4)">
  262.                 <midcastdelay delay="2.5" />
  263.                 <command when="midcast">cancel 66</command>
  264.                 <command when="midcast">cancel 446</command>
  265.             </if>
  266.             <else>
  267.                 <cancelspell />
  268.                 <return />
  269.             </else>
  270.         </elseif>
  271.         <elseif spell="Stoneskin" BuffActive="Stoneskin">
  272.             <midcastdelay delay="2.8" />
  273.             <command when="midcast">cancel 37</command>
  274.         </elseif>
  275.     </include>
  276.  
  277.     <!-- Lock various slots when using particular gear. -->
  278.     <include name="EquipmentLockRules">
  279.         <if equipmain="$TrialWeapon">
  280.             <changelock slot="main|sub|range" when="All" lock="true" />
  281.         </if>
  282.         <if equiprange="$PullWeapons|Soulgauger*">
  283.             <changelock slot="range|ammo" when="All" lock="true" />
  284.         </if>
  285.         <if equipfeet="Powder Boots|Sprint Shoes">
  286.             <changelock slot="feet" when="All" lock="true" />
  287.         </if>
  288.         <if equiphead="Reraise Hairpin">
  289.             <changelock slot="head" when="All" lock="true" />
  290.         </if>
  291.         <if equipneck="Sanctus Rosary|Reraise Gorget|Lavalier +1">
  292.             <changelock slot="neck" when="All" lock="true" />
  293.         </if>
  294.         <if equiplear="$ReraiseEarrings">
  295.             <changelock slot="lear" when="All" lock="true" />
  296.         </if>
  297.         <if equiprear="$ReraiseEarrings">
  298.             <changelock slot="rear" when="All" lock="true" />
  299.         </if>
  300.         <if equiplring="Emperor Band|Decennial Ring">
  301.             <changelock slot="lring" when="All" lock="true" />
  302.         </if>
  303.         <if equiprring="Emperor Band|Decennial Ring">
  304.             <changelock slot="rring" when="All" lock="true" />
  305.         </if>
  306.  
  307.         <!-- Only test for teleport stuff in town to avoid tons of unneeded checks. -->
  308.         <if advanced='"$Idlearea"="Town"'>
  309.             <if equiphead="Maat's Cap|Star Cap|Moogle Cap|Nomad Cap|Laurel Crown">
  310.                 <changelock slot="head" when="All" lock="true" />
  311.             </if>
  312.             <if equipneck="Federation Stable Scarf|Kingdom Stable Collar|Republic Stable Medal">
  313.                 <changelock slot="neck" when="All" lock="true" />
  314.             </if>
  315.             <if equiplear="Duchy Earring|Empire Earring|Federation Earring|Republic Earring|Kingdom Earring|Nashmau Earring|Mhaura Earring|Selbina Earring|Norg Earring|Rabao Earring|Reraise Earring|Raising Earring|Kocco's Earring|Mamool Ja Earring">
  316.                 <changelock slot="lear" when="All" lock="true" />
  317.             </if>
  318.             <if equiprear="Duchy Earring|Empire Earring|Federation Earring|Republic Earring|Kingdom Earring|Nashmau Earring|Mhaura Earring|Selbina Earring|Norg Earring|Rabao Earring|Reraise Earring|Raising Earring|Kocco's Earring|Mamool Ja Earring">
  319.                 <changelock slot="rear" when="All" lock="true" />
  320.             </if>
  321.             <if equiplring="Tavnazian Ring|Olduum Ring|Mea Ring|Dem Ring|Holla Ring|Vahzl Ring|Yhoat Ring">
  322.                 <changelock slot="lring" when="All" lock="true" />
  323.             </if>
  324.             <if equiprring="Tavnazian Ring|Olduum Ring|Mea Ring|Dem Ring|Holla Ring|Vahzl Ring|Yhoat Ring">
  325.                 <changelock slot="rring" when="All" lock="true" />
  326.             </if>
  327.             <if equipbody="Tidal Talisman">
  328.                 <changelock slot="body" when="All" lock="true" />
  329.             </if>
  330.         </if>
  331.     </include>
  332.  
  333.     <!-- Handle universal toggle and cycle triggers -->
  334.     <!-- This is a REQUIRED include. -->
  335.     <include name="UniversalTriggerRules">
  336.         <if type="Trigger">
  337.             <if skill="ControlTrigger">
  338.                 <cancelspell />
  339.  
  340.                 <!-- Handle various types of resets. -->
  341.                 <if spell="Reset">
  342.                     <if SpellTargetRaw=".Defense">
  343.                         <var cmd="set MagicalDefense None" />
  344.                         <var cmd="set PhysicalDefense None" />
  345.                         <if status="Engaged">
  346.                             <var cmd="set Movement None" />
  347.                         </if>
  348.  
  349.                         <addtochat>PDT/MDT reset.</addtochat>
  350.                     </if>
  351.                     <elseif SpellTargetRaw="SteppedDefense">
  352.                         <if advanced='"$MagicalDefense" != "None"'>
  353.                             <var cmd="set MagicalDefense None" />
  354.                             <addtochat>Magical Defense reset.</addtochat>
  355.                         </if>
  356.                         <elseif advanced='"$PhysicalDefense" != "None"'>
  357.                             <var cmd="set PhysicalDefense None" />
  358.                             <addtochat>Physical Defense reset.</addtochat>
  359.                         </elseif>
  360.                     </elseif>
  361.                     <elseif SpellTargetRaw="All|Full">
  362.                         <var cmd="set Movement None" />
  363.                         <var cmd="set MagicalDefense None" />
  364.                         <var cmd="set PhysicalDefense None" />
  365.                         <var cmd="set FightingMode Offense" />
  366.                         <var cmd="set AttackMode Normal" />
  367.                         <var cmd="set FightingFocus Normal" />
  368.                         <var cmd="set WSMode Default" />
  369.                         <var cmd="set AggressiveMode Off" />
  370.                         <var cmd="set CastingMode Normal" />
  371.  
  372.                         <addtochat>All modes reset.</addtochat>
  373.                     </elseif>
  374.                     <elseif SpellTargetRaw="Physical*">
  375.                         <var cmd="set PhysicalDefense None" />
  376.                         <addtochat>Physical Defense reset.</addtochat>
  377.                     </elseif>
  378.                     <elseif SpellTargetRaw="Casting*">
  379.                         <var cmd="set CastingMode Normal" />
  380.                         <addtochat>Casting Mode reset.</addtochat>
  381.                     </elseif>
  382.                     <elseif SpellTargetRaw="Magical*">
  383.                         <var cmd="set MagicalDefense None" />
  384.                         <addtochat>Magical Defense reset.</addtochat>
  385.                     </elseif>
  386.                     <elseif SpellTargetRaw="Debug">
  387.                         <var cmd="set Debug 0" />
  388.                         <addtochat>Debug off.</addtochat>
  389.                     </elseif>
  390.                 </if>
  391.                 <elseif spell="Update">
  392.                     <if SpellTargetRaw="WSDistance">
  393.                         <if TargetType="Monster">
  394.                             <var cmd="set WSDistance %TargetDistance" />
  395.                             <addtochat>Distance Variable: $WSDistance</addtochat>
  396.                         </if>
  397.                         <else>
  398.                             <addtochat>Invalid target for weaponskill distance.</addtochat>
  399.                         </else>
  400.                     </if>
  401.                     <elseif SpellTargetRaw="Debug">
  402.                         <var cmd="set Debug 1" />
  403.                         <addtochat>Debug active.</addtochat>
  404.                     </elseif>
  405.                 </elseif>
  406.             </if>
  407.  
  408.             <elseif skill="ElementalTrigger">
  409.                 <!-- MDT elemental triggers.  Other elemental triggers handled per job. -->
  410.                 <if SpellTargetRaw="MDT|Resist">
  411.                     <cancelspell />
  412.    
  413.                     <var cmd="set MagicalDefElement %SpellElement" />
  414.  
  415.                     <if advanced='"$MagicalDefense" != "None"'>
  416.                         <var cmd="set MagicalDefense $MagicalDefMode-$MagicalDefElement" />
  417.                     </if>
  418.  
  419.                     <addtochat>Magical Defense Element: $MagicalDefElement ($MagicalDefMode)</addtochat>
  420.                 </if>
  421.             </elseif>
  422.  
  423.             <elseif skill="CombatTrigger">
  424.                 <cancelspell />
  425.  
  426.                 <!-- Physical and magical defense modes -->
  427.  
  428.                 <if spell="PhysicalDefense">
  429.                     <!-- Handle changes in physical defense -->
  430.                     <if SpellTargetRaw=".Off">
  431.                         <var cmd="set PhysicalDefense None" />
  432.                         <addtochat>Physical Defense: $PhysicalDefense</addtochat>
  433.                     </if>
  434.                     <elseif SpellTargetRaw=".On">
  435.                         <var cmd="set PhysicalDefense PhysDef-$PhysicalDefMode" />
  436.                         <addtochat>Physical Defense: $PhysicalDefense</addtochat>
  437.                     </elseif>
  438.                     <elseif SpellTargetRaw=".Toggle">
  439.                         <if advanced='"$PhysicalDefense" = "None"'>
  440.                             <var cmd="set PhysicalDefense PhysDef-$PhysicalDefMode" />
  441.                         </if>
  442.                         <else>
  443.                             <var cmd="set PhysicalDefense None" />
  444.                         </else>
  445.  
  446.                         <addtochat>Physical Defense: $PhysicalDefense</addtochat>
  447.                     </elseif>
  448.                     <elseif SpellTargetRaw="Mode:*|PDT|Evasion|Shield|Defense|Custom">
  449.                         <if SpellTargetRaw="PDT|*:PDT" advanced='Regex("$Options.DefenseModes", "PDT")'>
  450.                             <var cmd="set PhysicalDefMode PDT" />
  451.                         </if>
  452.                         <elseif SpellTargetRaw="Evasion|*:Evasion" advanced='Regex("$Options.DefenseModes", "Evasion")'>
  453.                             <var cmd="set PhysicalDefMode Evasion" />
  454.                         </elseif>
  455.                         <elseif SpellTargetRaw="Shield|*:Shield" advanced='Regex("$Options.DefenseModes", "Shield")'>
  456.                             <var cmd="set PhysicalDefMode Shield" />
  457.                         </elseif>
  458.                         <elseif SpellTargetRaw="Defense|*:Defense" advanced='Regex("$Options.DefenseModes", "Defense")'>
  459.                             <var cmd="set PhysicalDefMode Defense" />
  460.                         </elseif>
  461.                         <elseif SpellTargetRaw="Custom|*:Custom" advanced='Regex("$Options.DefenseModes", "Custom")'>
  462.                             <var cmd="set PhysicalDefMode Shield" />
  463.                         </elseif>
  464.                         <else>
  465.                             <addtochat>Unknown or invalid mode: [%spellTargetRaw]</addtochat>
  466.                             <return />
  467.                         </else>
  468.  
  469.    
  470.                         <if advanced='"$PhysicalDefense" != "None"'>
  471.                             <var cmd="set PhysicalDefense PhysDef-$PhysicalDefMode" />
  472.                         </if>
  473.    
  474.                         <addtochat>Physical Defense Mode: $PhysicalDefMode</addtochat>
  475.                     </elseif>
  476.                     <elseif SpellTargetRaw=".Cycle">
  477.                         <!-- Order: PDT > Evasion > Defense > Shield > Custom [Counter isn't used] -->
  478.                         <if advanced='"$PhysicalDefMode" = "PDT"'>
  479.                             <if advanced='Regex("$Options.DefenseModes", "Evasion")'>
  480.                                 <var cmd="set PhysicalDefMode Evasion" />
  481.                             </if>
  482.                             <elseif advanced='Regex("$Options.DefenseModes", "Defense")'>
  483.                                 <var cmd="set PhysicalDefMode Defense" />
  484.                             </elseif>
  485.                             <elseif advanced='Regex("$Options.DefenseModes", "Shield")'>
  486.                                 <var cmd="set PhysicalDefMode Shield" />
  487.                             </elseif>
  488.                             <elseif advanced='Regex("$Options.DefenseModes", "Custom")'>
  489.                                 <var cmd="set PhysicalDefMode Custom" />
  490.                             </elseif>
  491.                         </if>
  492.                         <elseif advanced='"$PhysicalDefMode" = "Evasion"'>
  493.                             <if advanced='Regex("$Options.DefenseModes", "Defense")'>
  494.                                 <var cmd="set PhysicalDefMode Defense" />
  495.                             </if>
  496.                             <elseif advanced='Regex("$Options.DefenseModes", "Shield")'>
  497.                                 <var cmd="set PhysicalDefMode Shield" />
  498.                             </elseif>
  499.                             <elseif advanced='Regex("$Options.DefenseModes", "Custom")'>
  500.                                 <var cmd="set PhysicalDefMode Custom" />
  501.                             </elseif>
  502.                             <elseif advanced='Regex("$Options.DefenseModes", "PDT")'>
  503.                                 <var cmd="set PhysicalDefMode PDT" />
  504.                             </elseif>
  505.                         </elseif>
  506.                         <elseif advanced='"$PhysicalDefMode" = "Defense"'>
  507.                             <if advanced='Regex("$Options.DefenseModes", "Shield")'>
  508.                                 <var cmd="set PhysicalDefMode Shield" />
  509.                             </if>
  510.                             <elseif advanced='Regex("$Options.DefenseModes", "Custom")'>
  511.                                 <var cmd="set PhysicalDefMode Custom" />
  512.                             </elseif>
  513.                             <elseif advanced='Regex("$Options.DefenseModes", "PDT")'>
  514.                                 <var cmd="set PhysicalDefMode PDT" />
  515.                             </elseif>
  516.                             <elseif advanced='Regex("$Options.DefenseModes", "Evasion")'>
  517.                                 <var cmd="set PhysicalDefMode Evasion" />
  518.                             </elseif>
  519.                         </elseif>
  520.                         <elseif advanced='"$PhysicalDefMode" = "Shield"'>
  521.                             <if advanced='Regex("$Options.DefenseModes", "Custom")'>
  522.                                 <var cmd="set PhysicalDefMode Custom" />
  523.                             </if>
  524.                             <elseif advanced='Regex("$Options.DefenseModes", "PDT")'>
  525.                                 <var cmd="set PhysicalDefMode PDT" />
  526.                             </elseif>
  527.                             <elseif advanced='Regex("$Options.DefenseModes", "Evasion")'>
  528.                                 <var cmd="set PhysicalDefMode Evasion" />
  529.                             </elseif>
  530.                             <elseif advanced='Regex("$Options.DefenseModes", "Defense")'>
  531.                                 <var cmd="set PhysicalDefMode Defense" />
  532.                             </elseif>
  533.                         </elseif>
  534.                         <else>
  535.                             <if advanced='Regex("$Options.DefenseModes", "PDT")'>
  536.                                 <var cmd="set PhysicalDefMode PDT" />
  537.                             </if>
  538.                             <elseif advanced='Regex("$Options.DefenseModes", "Evasion")'>
  539.                                 <var cmd="set PhysicalDefMode Evasion" />
  540.                             </elseif>
  541.                             <elseif advanced='Regex("$Options.DefenseModes", "Defense")'>
  542.                                 <var cmd="set PhysicalDefMode Defense" />
  543.                             </elseif>
  544.                             <elseif advanced='Regex("$Options.DefenseModes", "Shield")'>
  545.                                 <var cmd="set PhysicalDefMode Shield" />
  546.                             </elseif>
  547.                             <elseif advanced='Regex("$Options.DefenseModes", "Custom")'>
  548.                                 <var cmd="set PhysicalDefMode Custom" />
  549.                             </elseif>
  550.                             <else>
  551.                                 <addtochat>No valid Defense Modes available.</addtochat>
  552.                                 <var cmd="set PhysicalDefMode None" />
  553.                             </else>
  554.                         </else>
  555.    
  556.                         <if advanced='"$PhysicalDefense" != "None"'>
  557.                             <var cmd="set PhysicalDefense PhysDef-$PhysicalDefMode" />
  558.                         </if>
  559.  
  560.                         <addtochat>Physical Defense Type: $PhysicalDefMode</addtochat>
  561.                     </elseif>
  562.                     <else>
  563.                         <!-- Default: Turn on -->
  564.                         <var cmd="set PhysicalDefense PhysDef-$PhysicalDefMode" />
  565.                         <addtochat>Physical Defense: $PhysicalDefense</addtochat>
  566.                     </else>
  567.                 </if>
  568.                 <elseif spell="MagicalDefense">
  569.                     <!-- Turn Magical Defense on and off -->
  570.                     <if SpellTargetRaw=".On">
  571.                         <var cmd="set MagicalDefense $MagicalDefMode-$MagicalDefElement" />
  572.                         <addtochat>Magical Defense: $MagicalDefense</addtochat>
  573.                     </if>
  574.                     <elseif SpellTargetRaw=".Off">
  575.                         <var cmd="set MagicalDefense None" />
  576.                         <addtochat>Magical Defense: $MagicalDefense</addtochat>
  577.                     </elseif>
  578.                     <elseif SpellTargetRaw=".Toggle">
  579.                         <if advanced='"$MagicalDefense" = "None"'>
  580.                             <var cmd="set MagicalDefense $MagicalDefMode-$MagicalDefElement" />
  581.                         </if>
  582.                         <else>
  583.                             <var cmd="set MagicalDefense None" />
  584.                         </else>
  585.  
  586.                         <addtochat>Magical Defense: $MagicalDefense</addtochat>
  587.                     </elseif>
  588.                     <elseif SpellTargetRaw="Mode:*|MDT|Resist">
  589.                         <if SpellTargetRaw="MDT|*:MDT">
  590.                             <var cmd="set MagicalDefMode MDT" />
  591.                         </if>
  592.                         <elseif SpellTargetRaw="Resist|*:Resist">
  593.                             <var cmd="set MagicalDefMode Resist" />
  594.                         </elseif>
  595.  
  596.                         <addtochat>Magical Defense Mode: $MagicalDefMode ($MagicalDefElement)</addtochat>
  597.                     </elseif>
  598.                     <elseif SpellTargetRaw=".Cycle|.Reverse">
  599.                         <if advanced='"$MagicalDefMode" = "MDT"'>
  600.                             <var cmd="set MagicalDefMode Resist" />
  601.                         </if>
  602.                         <else>
  603.                             <var cmd="set MagicalDefMode MDT" />
  604.                         </else>
  605.  
  606.                         <addtochat>Magical Defense Mode: $MagicalDefMode ($MagicalDefElement)</addtochat>
  607.                     </elseif>
  608.                     <elseif SpellTargetRaw="Element:*">
  609.                         <if SpellTargetRaw="*:Fire">
  610.                             <var cmd="set MagicalDefElement Fire" />
  611.                         </if>
  612.                         <elseif SpellTargetRaw="*:Earth|*:Stone">
  613.                             <var cmd="set MagicalDefElement Earth" />
  614.                         </elseif>
  615.                         <elseif SpellTargetRaw="*:Water">
  616.                             <var cmd="set MagicalDefElement Water" />
  617.                         </elseif>
  618.                         <elseif SpellTargetRaw="*:Air|*:Aero|*:Wind">
  619.                             <var cmd="set MagicalDefElement Wind" />
  620.                         </elseif>
  621.                         <elseif SpellTargetRaw="*:Ice">
  622.                             <var cmd="set MagicalDefElement Ice" />
  623.                         </elseif>
  624.                         <elseif SpellTargetRaw="*:Lightning|*:Thunder">
  625.                             <var cmd="set MagicalDefElement Thunder" />
  626.                         </elseif>
  627.                         <elseif SpellTargetRaw="*:Light">
  628.                             <var cmd="set MagicalDefElement Light" />
  629.                         </elseif>
  630.                         <elseif SpellTargetRaw="*:Dark">
  631.                             <var cmd="set MagicalDefElement Dark" />
  632.                         </elseif>
  633.                         <elseif SpellTargetRaw="*:Any|*:None">
  634.                             <var cmd="set MagicalDefElement Any" />
  635.                         </elseif>
  636.                         <elseif SpellTargetRaw="*:All">
  637.                             <var cmd="set MagicalDefElement All" />
  638.                         </elseif>
  639.                         <else>
  640.                             <addtochat>Unknown Magical Defense element: [%spellTargetRaw]</addtochat>
  641.                             <return />
  642.                         </else>
  643.  
  644.                         <addtochat>Magical Defense Element: $MagicalDefElement</addtochat>
  645.                     </elseif>
  646.                     <else>
  647.                         <!-- Default: Turn on -->
  648.                         <var cmd="set MagicalDefense $MagicalDefMode-$MagicalDefElement" />
  649.                         <addtochat>Magical Defense: $MagicalDefense</addtochat>
  650.                     </else>
  651.  
  652.                 </elseif>
  653.  
  654.                 <!-- Idle/Resting modes -->
  655.  
  656.                 <elseif spell="IdleMode|CycleIdleMode">
  657.                     <!-- Customize these in job xml. -->
  658.                 </elseif>
  659.                 <elseif spell="RestingMode|CycleRestingMode">
  660.                     <!-- Customize these in job xml. -->
  661.                 </elseif>
  662.  
  663.                 <!-- Offensive and Defensive modes -->
  664.  
  665.                 <!-- spellTargetRaw will be analyzed to determine which aspect of combat is being set,
  666.                     and how.
  667.  
  668.                     Modes:
  669.                     Aggressive [on|off]
  670.                     Offense (general fighting mode)
  671.                     Defense (general fighting mode)
  672.                     WS (focus for weaponskills separate from standard focus)
  673.                 -->
  674.  
  675.                 <elseif spell="CombatMode">
  676.                     <if SpellTargetRaw="Aggressive|Aggressive:*">
  677.                         <if SpellTargetRaw="*:Off">
  678.                             <var cmd="set AggressiveMode Off" />
  679.                         </if>
  680.                         <else>
  681.                             <var cmd="set AggressiveMode On" />
  682.                         </else>
  683.  
  684.                         <addtochat>Aggressive Mode: $AggressiveMode</addtochat>
  685.                     </if>
  686.                     <elseif SpellTargetRaw="Kite|Kite:*">
  687.                         <if SpellTargetRaw="*:Off">
  688.                             <var cmd="set KiteMode None" />
  689.                         </if>
  690.                         <elseif SpellTargetRaw="*:Toggle">
  691.                             <if advanced='"$KiteMode"="Kite"'>
  692.                                 <var cmd="set KiteMode None" />
  693.                             </if>
  694.                             <else>
  695.                                 <var cmd="set KiteMode Kite" />
  696.                             </else>
  697.                         </elseif>
  698.                         <else>
  699.                             <var cmd="set KiteMode Kite" />
  700.                         </else>
  701.  
  702.                         <addtochat>Kiting: $KiteMode</addtochat>
  703.                     </elseif>
  704.                    
  705.                     <elseif SpellTargetRaw="Offense:*">
  706.                         <!-- Var to convert SpellTargetRaw to a valid value -->
  707.                         <var cmd="set TempMode None" />
  708.  
  709.                         <if SpellTargetRaw="Offense:Normal">
  710.                             <var cmd="set TempMode Normal" />
  711.                         </if>
  712.                         <elseif SpellTargetRaw="Offense:Att|Offense:Attack">
  713.                             <var cmd="set TempMode Att" />
  714.                         </elseif>
  715.                         <elseif SpellTargetRaw="Offense:Acc|Offense:Accuracy">
  716.                             <var cmd="set TempMode Acc" />
  717.                         </elseif>
  718.                         <elseif SpellTargetRaw="Offense:MaxAcc|Offense:MaxAccuracy">
  719.                             <var cmd="set TempMode MaxAcc" />
  720.                         </elseif>
  721.                         <elseif SpellTargetRaw="Offense:Str">
  722.                             <var cmd="set TempMode Str" />
  723.                         </elseif>
  724.                         <elseif SpellTargetRaw="Offense:Crit">
  725.                             <var cmd="set TempMode Crit" />
  726.                         </elseif>
  727.                         <elseif SpellTargetRaw="Offense:LowDmg">
  728.                             <var cmd="set TempMode LowDmg" />
  729.                         </elseif>
  730.                         <else>
  731.                             <var cmd="set TempMode Normal" />
  732.                         </else>
  733.  
  734.                         <if advanced='Regex("$Options.OffenseModes", "$TempMode")'>
  735.                             <var cmd="set OffenseMode $TempMode" />
  736.                         </if>
  737.                         <else>
  738.                             <addtochat>$TempMode is unavailable.</addtochat>
  739.                         </else>
  740.  
  741.                         <addtochat>Offense Mode: $OffenseMode</addtochat>
  742.                     </elseif>
  743.                     <elseif SpellTargetRaw="Defense:*">
  744.                         <!-- Var to convert SpellTargetRaw to a valid value -->
  745.                         <var cmd="set TempMode None" />
  746.                        
  747.                         <if SpellTargetRaw="Defense:Eva|Defense:Evasion">
  748.                             <var cmd="set TempMode Evasion" />
  749.                         </if>
  750.                         <elseif SpellTargetRaw="Defense:Shield">
  751.                             <var cmd="set TempMode Shield" />
  752.                         </elseif>
  753.                         <elseif SpellTargetRaw="Defense:Counter">
  754.                             <var cmd="set TempMode Counter" />
  755.                         </elseif>
  756.                         <elseif SpellTargetRaw="Defense:PDT">
  757.                             <var cmd="set TempMode PDT" />
  758.                         </elseif>
  759.                         <elseif SpellTargetRaw="Defense:Defense">
  760.                             <var cmd="set TempMode Defense" />
  761.                         </elseif>
  762.                         <elseif SpellTargetRaw="Defense:Custom">
  763.                             <var cmd="set TempMode Custom" />
  764.                         </elseif>
  765.                         <else>
  766.                             <var cmd="set TempMode Normal" />
  767.                         </else>
  768.  
  769.                         <if advanced='Regex("$Options.DefenseModes", "$TempMode")'>
  770.                             <var cmd="set DefenseMode $TempMode" />
  771.                         </if>
  772.                         <else>
  773.                             <addtochat>$TempMode is unavailable.</addtochat>
  774.                         </else>
  775.  
  776.                         <addtochat>Defense Mode: $DefenseMode</addtochat>
  777.                     </elseif>
  778.                     <elseif SpellTargetRaw="WS:*|Weaponskill:*">
  779.                         <!-- Var to convert SpellTargetRaw to a valid value -->
  780.                         <var cmd="set TempMode None" />
  781.  
  782.                         <if SpellTargetRaw="*:Acc|*:Accuracy">
  783.                             <var cmd="set TempMode Accuracy" />
  784.                         </if>
  785.                         <elseif SpellTargetRaw="*:Att|*:Attack">
  786.                             <var cmd="set TempMode Attack" />
  787.                         </elseif>
  788.                         <elseif SpellTargetRaw="*:Mod">
  789.                             <var cmd="set TempMode Mod" />
  790.                         </elseif>
  791.                         <elseif SpellTargetRaw="*:Crit">
  792.                             <var cmd="set TempMode Crit" />
  793.                         </elseif>
  794.                         <else>
  795.                             <var cmd="set TempMode Default" />
  796.                         </else>
  797.  
  798.                         <if advanced='Regex("$Options.WSModes", "$TempMode")'>
  799.                             <var cmd="set WSMode $TempMode" />
  800.                         </if>
  801.                         <else>
  802.                             <addtochat>$TempMode is unavailable.</addtochat>
  803.                         </else>
  804.  
  805.                         <addtochat>Weaponskill Focus: $WSMode</addtochat>
  806.                     </elseif>
  807.                     <elseif SpellTargetRaw="Cycle(*)">
  808.                         <if SpellTargetRaw="*(Offense)">
  809.                             <!-- Order: Normal > Acc > MaxAcc > Att > Crit > Str > LowDmg > Custom -->
  810.  
  811.                             <if advanced='"$OffenseMode" = "Normal"'>
  812.                                 <if advanced='Regex("$Options.OffenseModes", "Acc")'>
  813.                                     <var cmd="set OffenseMode Acc" />
  814.                                 </if>
  815.                                 <elseif advanced='Regex("$Options.OffenseModes", "MaxAcc")'>
  816.                                     <var cmd="set OffenseMode MaxAcc" />
  817.                                 </elseif>
  818.                                 <elseif advanced='Regex("$Options.OffenseModes", "Att")'>
  819.                                     <var cmd="set OffenseMode Att" />
  820.                                 </elseif>
  821.                                 <elseif advanced='Regex("$Options.OffenseModes", "Crit")'>
  822.                                     <var cmd="set OffenseMode Crit" />
  823.                                 </elseif>
  824.                                 <elseif advanced='Regex("$Options.OffenseModes", "Str")'>
  825.                                     <var cmd="set OffenseMode Str" />
  826.                                 </elseif>
  827.                                 <elseif advanced='Regex("$Options.OffenseModes", "LowDmg")'>
  828.                                     <var cmd="set OffenseMode LowDmg" />
  829.                                 </elseif>
  830.                                 <elseif advanced='Regex("$Options.OffenseModes", "Custom")'>
  831.                                     <var cmd="set OffenseMode Custom" />
  832.                                 </elseif>
  833.                             </if>
  834.                             <elseif advanced='"$OffenseMode" = "Acc"'>
  835.                                 <if advanced='Regex("$Options.OffenseModes", "MaxAcc")'>
  836.                                     <var cmd="set OffenseMode MaxAcc" />
  837.                                 </if>
  838.                                 <elseif advanced='Regex("$Options.OffenseModes", "Att")'>
  839.                                     <var cmd="set OffenseMode Att" />
  840.                                 </elseif>
  841.                                 <elseif advanced='Regex("$Options.OffenseModes", "Crit")'>
  842.                                     <var cmd="set OffenseMode Crit" />
  843.                                 </elseif>
  844.                                 <elseif advanced='Regex("$Options.OffenseModes", "Str")'>
  845.                                     <var cmd="set OffenseMode Str" />
  846.                                 </elseif>
  847.                                 <elseif advanced='Regex("$Options.OffenseModes", "LowDmg")'>
  848.                                     <var cmd="set OffenseMode LowDmg" />
  849.                                 </elseif>
  850.                                 <elseif advanced='Regex("$Options.OffenseModes", "Custom")'>
  851.                                     <var cmd="set OffenseMode Custom" />
  852.                                 </elseif>
  853.                                 <else>
  854.                                     <var cmd="set OffenseMode Normal" />
  855.                                 </else>
  856.                             </elseif>
  857.                             <elseif advanced='"$OffenseMode" = "MaxAcc"'>
  858.                                 <if advanced='Regex("$Options.OffenseModes", "Att")'>
  859.                                     <var cmd="set OffenseMode Att" />
  860.                                 </if>
  861.                                 <elseif advanced='Regex("$Options.OffenseModes", "Crit")'>
  862.                                     <var cmd="set OffenseMode Crit" />
  863.                                 </elseif>
  864.                                 <elseif advanced='Regex("$Options.OffenseModes", "Str")'>
  865.                                     <var cmd="set OffenseMode Str" />
  866.                                 </elseif>
  867.                                 <elseif advanced='Regex("$Options.OffenseModes", "LowDmg")'>
  868.                                     <var cmd="set OffenseMode LowDmg" />
  869.                                 </elseif>
  870.                                 <elseif advanced='Regex("$Options.OffenseModes", "Custom")'>
  871.                                     <var cmd="set OffenseMode Custom" />
  872.                                 </elseif>
  873.                                 <else>
  874.                                     <var cmd="set OffenseMode Normal" />
  875.                                 </else>
  876.                             </elseif>
  877.                             <elseif advanced='"$OffenseMode" = "Att"'>
  878.                                 <if advanced='Regex("$Options.OffenseModes", "Crit")'>
  879.                                     <var cmd="set OffenseMode Crit" />
  880.                                 </if>
  881.                                 <elseif advanced='Regex("$Options.OffenseModes", "Str")'>
  882.                                     <var cmd="set OffenseMode Str" />
  883.                                 </elseif>
  884.                                 <elseif advanced='Regex("$Options.OffenseModes", "LowDmg")'>
  885.                                     <var cmd="set OffenseMode LowDmg" />
  886.                                 </elseif>
  887.                                 <elseif advanced='Regex("$Options.OffenseModes", "Custom")'>
  888.                                     <var cmd="set OffenseMode Custom" />
  889.                                 </elseif>
  890.                                 <else>
  891.                                     <var cmd="set OffenseMode Normal" />
  892.                                 </else>
  893.                             </elseif>
  894.                             <elseif advanced='"$OffenseMode" = "Crit"'>
  895.                                 <if advanced='Regex("$Options.OffenseModes", "Str")'>
  896.                                     <var cmd="set OffenseMode Str" />
  897.                                 </if>
  898.                                 <elseif advanced='Regex("$Options.OffenseModes", "LowDmg")'>
  899.                                     <var cmd="set OffenseMode LowDmg" />
  900.                                 </elseif>
  901.                                 <elseif advanced='Regex("$Options.OffenseModes", "Custom")'>
  902.                                     <var cmd="set OffenseMode Custom" />
  903.                                 </elseif>
  904.                                 <else>
  905.                                     <var cmd="set OffenseMode Normal" />
  906.                                 </else>
  907.                             </elseif>
  908.                             <elseif advanced='"$OffenseMode" = "Str"'>
  909.                                 <if advanced='Regex("$Options.OffenseModes", "LowDmg")'>
  910.                                     <var cmd="set OffenseMode LowDmg" />
  911.                                 </if>
  912.                                 <elseif advanced='Regex("$Options.OffenseModes", "Custom")'>
  913.                                     <var cmd="set OffenseMode Custom" />
  914.                                 </elseif>
  915.                                 <else>
  916.                                     <var cmd="set OffenseMode Normal" />
  917.                                 </else>
  918.                             </elseif>
  919.                             <elseif advanced='"$OffenseMode" = "LowDmg"'>
  920.                                 <if advanced='Regex("$Options.OffenseModes", "Custom")'>
  921.                                     <var cmd="set OffenseMode Custom" />
  922.                                 </if>
  923.                                 <else>
  924.                                     <var cmd="set OffenseMode Normal" />
  925.                                 </else>
  926.                             </elseif>
  927.                             <else>
  928.                                 <var cmd="set OffenseMode Normal" />
  929.                             </else>
  930.  
  931.                             <addtochat>Offense Mode: $OffenseMode</addtochat>
  932.                         </if>
  933.                         <elseif SpellTargetRaw="*(Defense)">
  934.                             <!-- Order: Normal > Evasion > PDT > Shield > Counter > Custom -->
  935.  
  936.                             <if advanced='"$DefenseMode" = "Normal"'>
  937.                                 <if advanced='Regex("$Options.DefenseModes", "Evasion")'>
  938.                                     <var cmd="set DefenseMode Evasion" />
  939.                                 </if>
  940.                                 <elseif advanced='Regex("$Options.DefenseModes", "PDT")'>
  941.                                     <var cmd="set DefenseMode PDT" />
  942.                                 </elseif>
  943.                                 <elseif advanced='Regex("$Options.DefenseModes", "Shield")'>
  944.                                     <var cmd="set DefenseMode Shield" />
  945.                                 </elseif>
  946.                                 <elseif advanced='Regex("$Options.DefenseModes", "Counter")'>
  947.                                     <var cmd="set DefenseMode Counter" />
  948.                                 </elseif>
  949.                                 <elseif advanced='Regex("$Options.DefenseModes", "Custom")'>
  950.                                     <var cmd="set DefenseMode Custom" />
  951.                                 </elseif>
  952.                             </if>
  953.                             <elseif advanced='"$DefenseMode" = "Evasion"'>
  954.                                 <if advanced='Regex("$Options.DefenseModes", "PDT")'>
  955.                                     <var cmd="set DefenseMode PDT" />
  956.                                 </if>
  957.                                 <elseif advanced='Regex("$Options.DefenseModes", "Shield")'>
  958.                                     <var cmd="set DefenseMode Shield" />
  959.                                 </elseif>
  960.                                 <elseif advanced='Regex("$Options.DefenseModes", "Counter")'>
  961.                                     <var cmd="set DefenseMode Counter" />
  962.                                 </elseif>
  963.                                 <elseif advanced='Regex("$Options.DefenseModes", "Custom")'>
  964.                                     <var cmd="set DefenseMode Custom" />
  965.                                 </elseif>
  966.                                 <else>
  967.                                     <var cmd="set DefenseMode Normal" />
  968.                                 </else>
  969.                             </elseif>
  970.                             <elseif advanced='"$DefenseMode" = "PDT"'>
  971.                                 <if advanced='Regex("$Options.DefenseModes", "Shield")'>
  972.                                     <var cmd="set DefenseMode Shield" />
  973.                                 </if>
  974.                                 <elseif advanced='Regex("$Options.DefenseModes", "Counter")'>
  975.                                     <var cmd="set DefenseMode Counter" />
  976.                                 </elseif>
  977.                                 <elseif advanced='Regex("$Options.DefenseModes", "Custom")'>
  978.                                     <var cmd="set DefenseMode Custom" />
  979.                                 </elseif>
  980.                                 <else>
  981.                                     <var cmd="set DefenseMode Normal" />
  982.                                 </else>
  983.                             </elseif>
  984.                             <elseif advanced='"$DefenseMode" = "Shield"'>
  985.                                 <if advanced='Regex("$Options.DefenseModes", "Counter")'>
  986.                                     <var cmd="set DefenseMode Counter" />
  987.                                 </if>
  988.                                 <elseif advanced='Regex("$Options.DefenseModes", "Custom")'>
  989.                                     <var cmd="set DefenseMode Custom" />
  990.                                 </elseif>
  991.                                 <else>
  992.                                     <var cmd="set DefenseMode Normal" />
  993.                                 </else>
  994.                             </elseif>
  995.                             <elseif advanced='"$DefenseMode" = "Counter"'>
  996.                                 <if advanced='Regex("$Options.DefenseModes", "Custom")'>
  997.                                     <var cmd="set DefenseMode Custom" />
  998.                                 </if>
  999.                                 <else>
  1000.                                     <var cmd="set DefenseMode Normal" />
  1001.                                 </else>
  1002.                             </elseif>
  1003.                             <else>
  1004.                                 <var cmd="set DefenseMode Normal" />
  1005.                             </else>
  1006.  
  1007.                             <addtochat>Defense Mode: $DefenseMode</addtochat>
  1008.                         </elseif>
  1009.                         <elseif SpellTargetRaw="*(WS)|*(Weaponskill)">
  1010.                             <!-- Order: Default > Acc > Att > Mod > Crit -->
  1011.  
  1012.                             <if advanced='"$WSMode" = "Default"'>
  1013.                                 <if advanced='Regex("$Options.WSModes", "Acc")'>
  1014.                                     <var cmd="set WSMode Acc" />
  1015.                                 </if>
  1016.                                 <elseif advanced='Regex("$Options.WSModes", "Att")'>
  1017.                                     <var cmd="set WSMode Att" />
  1018.                                 </elseif>
  1019.                                 <elseif advanced='Regex("$Options.WSModes", "Mod")'>
  1020.                                     <var cmd="set WSMode Mod" />
  1021.                                 </elseif>
  1022.                                 <elseif advanced='Regex("$Options.WSModes", "Crit")'>
  1023.                                     <var cmd="set WSMode Crit" />
  1024.                                 </elseif>
  1025.                             </if>
  1026.                             <elseif advanced='"$WSMode" = "Acc"'>
  1027.                                 <if advanced='Regex("$Options.WSModes", "Att")'>
  1028.                                     <var cmd="set WSMode Att" />
  1029.                                 </if>
  1030.                                 <elseif advanced='Regex("$Options.WSModes", "Mod")'>
  1031.                                     <var cmd="set WSMode Mod" />
  1032.                                 </elseif>
  1033.                                 <elseif advanced='Regex("$Options.WSModes", "Crit")'>
  1034.                                     <var cmd="set WSMode Crit" />
  1035.                                 </elseif>
  1036.                                 <else>
  1037.                                     <var cmd="set WSMode Default" />
  1038.                                 </else>
  1039.                             </elseif>
  1040.                             <elseif advanced='"$WSMode" = "Att"'>
  1041.                                 <if advanced='Regex("$Options.WSModes", "Mod")'>
  1042.                                     <var cmd="set WSMode Mod" />
  1043.                                 </if>
  1044.                                 <elseif advanced='Regex("$Options.WSModes", "Crit")'>
  1045.                                     <var cmd="set WSMode Crit" />
  1046.                                 </elseif>
  1047.                                 <else>
  1048.                                     <var cmd="set WSMode Default" />
  1049.                                 </else>
  1050.                             </elseif>
  1051.                             <elseif advanced='"$WSMode" = "Mod"'>
  1052.                                 <if advanced='Regex("$Options.WSModes", "Crit")'>
  1053.                                     <var cmd="set WSMode Crit" />
  1054.                                 </if>
  1055.                                 <else>
  1056.                                     <var cmd="set WSMode Default" />
  1057.                                 </else>
  1058.                             </elseif>
  1059.                             <else>
  1060.                                 <var cmd="set WSMode Default" />
  1061.                             </else>
  1062.                            
  1063.                             <addtochat>Weaponskill Focus: $WSMode</addtochat>
  1064.                         </elseif>
  1065.                     </elseif>
  1066.                     <elseif SpellTargetRaw="Reverse(*)">
  1067.                         <if SpellTargetRaw="*(Offense)">
  1068.                             <!-- Order: Normal < Acc < MaxAcc < Att < Crit < Str < LowDmg < Custom -->
  1069.  
  1070.                             <if advanced='"$OffenseMode" = "Normal"'>
  1071.                                 <if advanced='Regex("$Options.OffenseModes", "Custom")'>
  1072.                                     <var cmd="set OffenseMode Custom" />
  1073.                                 </if>
  1074.                                 <elseif advanced='Regex("$Options.OffenseModes", "LowDmg")'>
  1075.                                     <var cmd="set OffenseMode LowDmg" />
  1076.                                 </elseif>
  1077.                                 <elseif advanced='Regex("$Options.OffenseModes", "Str")'>
  1078.                                     <var cmd="set OffenseMode Str" />
  1079.                                 </elseif>
  1080.                                 <elseif advanced='Regex("$Options.OffenseModes", "Crit")'>
  1081.                                     <var cmd="set OffenseMode Crit" />
  1082.                                 </elseif>
  1083.                                 <elseif advanced='Regex("$Options.OffenseModes", "Att")'>
  1084.                                     <var cmd="set OffenseMode Att" />
  1085.                                 </elseif>
  1086.                                 <elseif advanced='Regex("$Options.OffenseModes", "MaxAcc")'>
  1087.                                     <var cmd="set OffenseMode MaxAcc" />
  1088.                                 </elseif>
  1089.                                 <elseif advanced='Regex("$Options.OffenseModes", "Acc")'>
  1090.                                     <var cmd="set OffenseMode Acc" />
  1091.                                 </elseif>
  1092.                             </if>
  1093.                             <elseif advanced='"$OffenseMode" = "Custom"'>
  1094.                                 <if advanced='Regex("$Options.OffenseModes", "LowDmg")'>
  1095.                                     <var cmd="set OffenseMode LowDmg" />
  1096.                                 </if>
  1097.                                 <elseif advanced='Regex("$Options.OffenseModes", "Str")'>
  1098.                                     <var cmd="set OffenseMode Str" />
  1099.                                 </elseif>
  1100.                                 <elseif advanced='Regex("$Options.OffenseModes", "Crit")'>
  1101.                                     <var cmd="set OffenseMode Crit" />
  1102.                                 </elseif>
  1103.                                 <elseif advanced='Regex("$Options.OffenseModes", "Att")'>
  1104.                                     <var cmd="set OffenseMode Att" />
  1105.                                 </elseif>
  1106.                                 <elseif advanced='Regex("$Options.OffenseModes", "MaxAcc")'>
  1107.                                     <var cmd="set OffenseMode MaxAcc" />
  1108.                                 </elseif>
  1109.                                 <elseif advanced='Regex("$Options.OffenseModes", "Acc")'>
  1110.                                     <var cmd="set OffenseMode Acc" />
  1111.                                 </elseif>
  1112.                                 <else>
  1113.                                     <var cmd="set OffenseMode Normal" />
  1114.                                 </else>
  1115.                             </elseif>
  1116.                             <elseif advanced='"$OffenseMode" = "LowDmg"'>
  1117.                                 <if advanced='Regex("$Options.OffenseModes", "Str")'>
  1118.                                     <var cmd="set OffenseMode Str" />
  1119.                                 </if>
  1120.                                 <elseif advanced='Regex("$Options.OffenseModes", "Crit")'>
  1121.                                     <var cmd="set OffenseMode Crit" />
  1122.                                 </elseif>
  1123.                                 <elseif advanced='Regex("$Options.OffenseModes", "Att")'>
  1124.                                     <var cmd="set OffenseMode Att" />
  1125.                                 </elseif>
  1126.                                 <elseif advanced='Regex("$Options.OffenseModes", "MaxAcc")'>
  1127.                                     <var cmd="set OffenseMode MaxAcc" />
  1128.                                 </elseif>
  1129.                                 <elseif advanced='Regex("$Options.OffenseModes", "Acc")'>
  1130.                                     <var cmd="set OffenseMode Acc" />
  1131.                                 </elseif>
  1132.                                 <else>
  1133.                                     <var cmd="set OffenseMode Normal" />
  1134.                                 </else>
  1135.                             </elseif>
  1136.                             <elseif advanced='"$OffenseMode" = "Str"'>
  1137.                                 <if advanced='Regex("$Options.OffenseModes", "Crit")'>
  1138.                                     <var cmd="set OffenseMode Crit" />
  1139.                                 </if>
  1140.                                 <elseif advanced='Regex("$Options.OffenseModes", "Att")'>
  1141.                                     <var cmd="set OffenseMode Att" />
  1142.                                 </elseif>
  1143.                                 <elseif advanced='Regex("$Options.OffenseModes", "MaxAcc")'>
  1144.                                     <var cmd="set OffenseMode MaxAcc" />
  1145.                                 </elseif>
  1146.                                 <elseif advanced='Regex("$Options.OffenseModes", "Acc")'>
  1147.                                     <var cmd="set OffenseMode Acc" />
  1148.                                 </elseif>
  1149.                                 <else>
  1150.                                     <var cmd="set OffenseMode Normal" />
  1151.                                 </else>
  1152.                             </elseif>
  1153.                             <elseif advanced='"$OffenseMode" = "Crit"'>
  1154.                                 <if advanced='Regex("$Options.OffenseModes", "Att")'>
  1155.                                     <var cmd="set OffenseMode Att" />
  1156.                                 </if>
  1157.                                 <elseif advanced='Regex("$Options.OffenseModes", "MaxAcc")'>
  1158.                                     <var cmd="set OffenseMode MaxAcc" />
  1159.                                 </elseif>
  1160.                                 <elseif advanced='Regex("$Options.OffenseModes", "Acc")'>
  1161.                                     <var cmd="set OffenseMode Acc" />
  1162.                                 </elseif>
  1163.                                 <else>
  1164.                                     <var cmd="set OffenseMode Normal" />
  1165.                                 </else>
  1166.                             </elseif>
  1167.                             <elseif advanced='"$OffenseMode" = "Att"'>
  1168.                                 <if advanced='Regex("$Options.OffenseModes", "MaxAcc")'>
  1169.                                     <var cmd="set OffenseMode MaxAcc" />
  1170.                                 </if>
  1171.                                 <elseif advanced='Regex("$Options.OffenseModes", "Acc")'>
  1172.                                     <var cmd="set OffenseMode Acc" />
  1173.                                 </elseif>
  1174.                                 <else>
  1175.                                     <var cmd="set OffenseMode Normal" />
  1176.                                 </else>
  1177.                             </elseif>
  1178.                             <elseif advanced='"$OffenseMode" = "MaxAcc"'>
  1179.                                 <if advanced='Regex("$Options.OffenseModes", "Acc")'>
  1180.                                     <var cmd="set OffenseMode Acc" />
  1181.                                 </if>
  1182.                                 <else>
  1183.                                     <var cmd="set OffenseMode Normal" />
  1184.                                 </else>
  1185.                             </elseif>
  1186.                             <else>
  1187.                                 <var cmd="set OffenseMode Normal" />
  1188.                             </else>
  1189.  
  1190.                             <addtochat>Offense Mode: $OffenseMode</addtochat>
  1191.                         </if>
  1192.                         <elseif SpellTargetRaw="*(Defense)">
  1193.                             <!-- Order: Normal < Evasion < PDT < Shield < Counter < Custom -->
  1194.                             <!-- Order: Normal > Custom > Counter > Shield > PDT > Evasion -->
  1195.                             <if advanced='"$DefenseMode" = "Normal"'>
  1196.                                 <if advanced='Regex("$Options.DefenseModes", "Custom")'>
  1197.                                     <var cmd="set DefenseMode Custom" />
  1198.                                 </if>
  1199.                                 <elseif advanced='Regex("$Options.DefenseModes", "Counter")'>
  1200.                                     <var cmd="set DefenseMode Counter" />
  1201.                                 </elseif>
  1202.                                 <elseif advanced='Regex("$Options.DefenseModes", "Shield")'>
  1203.                                     <var cmd="set DefenseMode Shield" />
  1204.                                 </elseif>
  1205.                                 <elseif advanced='Regex("$Options.DefenseModes", "PDT")'>
  1206.                                     <var cmd="set DefenseMode PDT" />
  1207.                                 </elseif>
  1208.                                 <elseif advanced='Regex("$Options.DefenseModes", "Evasion")'>
  1209.                                     <var cmd="set DefenseMode Evasion" />
  1210.                                 </elseif>
  1211.                             </if>
  1212.                             <elseif advanced='"$DefenseMode" = "Custom"'>
  1213.                                 <if advanced='Regex("$Options.DefenseModes", "Counter")'>
  1214.                                     <var cmd="set DefenseMode Counter" />
  1215.                                 </if>
  1216.                                 <elseif advanced='Regex("$Options.DefenseModes", "Shield")'>
  1217.                                     <var cmd="set DefenseMode Shield" />
  1218.                                 </elseif>
  1219.                                 <elseif advanced='Regex("$Options.DefenseModes", "PDT")'>
  1220.                                     <var cmd="set DefenseMode PDT" />
  1221.                                 </elseif>
  1222.                                 <elseif advanced='Regex("$Options.DefenseModes", "Evasion")'>
  1223.                                     <var cmd="set DefenseMode Evasion" />
  1224.                                 </elseif>
  1225.                                 <else>
  1226.                                     <var cmd="set DefenseMode Normal" />
  1227.                                 </else>
  1228.                             </elseif>
  1229.                             <elseif advanced='"$DefenseMode" = "Counter"'>
  1230.                                 <if advanced='Regex("$Options.DefenseModes", "Shield")'>
  1231.                                     <var cmd="set DefenseMode Shield" />
  1232.                                 </if>
  1233.                                 <elseif advanced='Regex("$Options.DefenseModes", "PDT")'>
  1234.                                     <var cmd="set DefenseMode PDT" />
  1235.                                 </elseif>
  1236.                                 <elseif advanced='Regex("$Options.DefenseModes", "Evasion")'>
  1237.                                     <var cmd="set DefenseMode Evasion" />
  1238.                                 </elseif>
  1239.                                 <else>
  1240.                                     <var cmd="set DefenseMode Normal" />
  1241.                                 </else>
  1242.                             </elseif>
  1243.                             <elseif advanced='"$DefenseMode" = "Shield"'>
  1244.                                 <if advanced='Regex("$Options.DefenseModes", "PDT")'>
  1245.                                     <var cmd="set DefenseMode PDT" />
  1246.                                 </if>
  1247.                                 <elseif advanced='Regex("$Options.DefenseModes", "Evasion")'>
  1248.                                     <var cmd="set DefenseMode Evasion" />
  1249.                                 </elseif>
  1250.                                 <else>
  1251.                                     <var cmd="set DefenseMode Normal" />
  1252.                                 </else>
  1253.                             </elseif>
  1254.                             <elseif advanced='"$DefenseMode" = "PDT"'>
  1255.                                 <if advanced='Regex("$Options.DefenseModes", "Evasion")'>
  1256.                                     <var cmd="set DefenseMode Evasion" />
  1257.                                 </if>
  1258.                                 <else>
  1259.                                     <var cmd="set DefenseMode Normal" />
  1260.                                 </else>
  1261.                             </elseif>
  1262.                             <else>
  1263.                                 <var cmd="set DefenseMode Normal" />
  1264.                             </else>
  1265.  
  1266.                             <addtochat>Defense Mode: $DefenseMode</addtochat>
  1267.                         </elseif>
  1268.                         <elseif SpellTargetRaw="*(WS)|*(Weaponskill)">
  1269.                             <!-- Order: Default < Acc < Att < Mod < Crit -->
  1270.  
  1271.                             <if advanced='"$WSMode" = "Default"'>
  1272.                                 <if advanced='Regex("$Options.WSModes", "Crit")'>
  1273.                                     <var cmd="set WSMode Crit" />
  1274.                                 </if>
  1275.                                 <elseif advanced='Regex("$Options.WSModes", "Mod")'>
  1276.                                     <var cmd="set WSMode Mod" />
  1277.                                 </elseif>
  1278.                                 <elseif advanced='Regex("$Options.WSModes", "Att")'>
  1279.                                     <var cmd="set WSMode Att" />
  1280.                                 </elseif>
  1281.                                 <elseif advanced='Regex("$Options.WSModes", "Acc")'>
  1282.                                     <var cmd="set WSMode Acc" />
  1283.                                 </elseif>
  1284.                             </if>
  1285.                             <elseif advanced='"$WSMode" = "Crit"'>
  1286.                                 <if advanced='Regex("$Options.WSModes", "Mod")'>
  1287.                                     <var cmd="set WSMode Mod" />
  1288.                                 </if>
  1289.                                 <elseif advanced='Regex("$Options.WSModes", "Att")'>
  1290.                                     <var cmd="set WSMode Att" />
  1291.                                 </elseif>
  1292.                                 <elseif advanced='Regex("$Options.WSModes", "Acc")'>
  1293.                                     <var cmd="set WSMode Acc" />
  1294.                                 </elseif>
  1295.                                 <else>
  1296.                                     <var cmd="set WSMode Default" />
  1297.                                 </else>
  1298.                             </elseif>
  1299.                             <elseif advanced='"$WSMode" = "Mod"'>
  1300.                                 <if advanced='Regex("$Options.WSModes", "Att")'>
  1301.                                     <var cmd="set WSMode Att" />
  1302.                                 </if>
  1303.                                 <elseif advanced='Regex("$Options.WSModes", "Acc")'>
  1304.                                     <var cmd="set WSMode Acc" />
  1305.                                 </elseif>
  1306.                                 <else>
  1307.                                     <var cmd="set WSMode Default" />
  1308.                                 </else>
  1309.                             </elseif>
  1310.                             <elseif advanced='"$WSMode" = "Att"'>
  1311.                                 <if advanced='Regex("$Options.WSModes", "Acc")'>
  1312.                                     <var cmd="set WSMode Acc" />
  1313.                                 </if>
  1314.                                 <else>
  1315.                                     <var cmd="set WSMode Default" />
  1316.                                 </else>
  1317.                             </elseif>
  1318.                             <else>
  1319.                                 <var cmd="set WSMode Default" />
  1320.                             </else>
  1321.                            
  1322.                             <addtochat>Weaponskill Focus: $WSMode</addtochat>
  1323.                         </elseif>
  1324.                     </elseif>
  1325.                     <elseif SpellTargetRaw="Toggle(*)">
  1326.                         <if SpellTargetRaw="*(Aggressive)">
  1327.                             <if advanced='"$AggressiveMode"="On"'>
  1328.                                 <var cmd="set AggressiveMode Off" />
  1329.                             </if>
  1330.                             <else>
  1331.                                 <var cmd="set AggressiveMode On" />
  1332.                             </else>
  1333.  
  1334.                             <addtochat>Aggressive Mode: $AggressiveMode</addtochat>
  1335.                         </if>
  1336.                         <elseif SpellTargetRaw="*(Kite)">
  1337.                             <if advanced='"$KiteMode"="Kite"'>
  1338.                                 <var cmd="set KiteMode None" />
  1339.                             </if>
  1340.                             <else>
  1341.                                 <var cmd="set KiteMode Kite" />
  1342.                             </else>
  1343.  
  1344.                             <addtochat>Kite Mode: $KiteMode</addtochat>
  1345.                         </elseif>
  1346.                     </elseif>
  1347.                 </elseif>
  1348.  
  1349.                 <!-- Casting modes (abstract concepts, not explicit sets) -->
  1350.  
  1351.                 <elseif spell="CastingMode">
  1352.                     <if SpellTargetRaw="Cycle(STAL)">
  1353.                         <if advanced='"$STALMode"="stal"'>
  1354.                             <var cmd="set STALMode stpt" />
  1355.                         </if>
  1356.                         <elseif advanced='"$STALMode"="stpt"'>
  1357.                             <var cmd="set STALMode stpc" />
  1358.                         </elseif>
  1359.                         <else>
  1360.                             <var cmd="set STALMode stal" />
  1361.                         </else>
  1362.  
  1363.                         <addtochat>Targetting Mode: $STALMode</addtochat>
  1364.                     </if>
  1365.                     <elseif SpellTargetRaw="SetTarget(STAL)">
  1366.                         <var cmd="set STALMode stal" />
  1367.                         <addtochat>Targetting Mode: $STALMode</addtochat>
  1368.                     </elseif>
  1369.                     <elseif SpellTargetRaw="SetTarget(STPT)">
  1370.                         <var cmd="set STALMode stpt" />
  1371.                         <addtochat>Targetting Mode: $STALMode</addtochat>
  1372.                     </elseif>
  1373.                     <elseif SpellTargetRaw="SetTarget(STPC)">
  1374.                         <var cmd="set STALMode stpc" />
  1375.                         <addtochat>Targetting Mode: $STALMode</addtochat>
  1376.                     </elseif>
  1377.                     <else>
  1378.                         <if SpellTargetRaw="NM|Resistant">
  1379.                             <var cmd="set CastingMode Resistant" />
  1380.                         </if>
  1381.                         <elseif SpellTargetRaw="AOEBurn">
  1382.                             <var cmd="set CastingMode AOEBurn" />
  1383.                         </elseif>
  1384.                         <elseif SpellTargetRaw="Dire">
  1385.                             <var cmd="set CastingMode Dire" />
  1386.                         </elseif>
  1387.                         <elseif SpellTargetRaw="Speed">
  1388.                             <var cmd="set CastingMode Speed" />
  1389.                         </elseif>
  1390.                         <elseif SpellTargetRaw="Enmity">
  1391.                             <var cmd="set CastingMode Enmity" />
  1392.                         </elseif>
  1393.                         <elseif SpellTargetRaw="Normal|Reset">
  1394.                             <var cmd="set CastingMode Normal" />
  1395.                         </elseif>
  1396.    
  1397.                         <addtochat>Casting Mode: $CastingMode</addtochat>
  1398.                     </else>
  1399.                 </elseif>
  1400.                 <elseif spell="CycleCastingMode">
  1401.                     <if SpellTargetRaw="Reverse">
  1402.                         <if advanced='"$CastingMode"="Normal"'>
  1403.                             <var cmd="set CastingMode Dire" />
  1404.                         </if>
  1405.                         <elseif advanced='"$CastingMode"="Dire"'>
  1406.                             <var cmd="set CastingMode AOEBurn" />
  1407.                         </elseif>
  1408.                         <elseif advanced='"$CastingMode"="AOEBurn"'>
  1409.                             <var cmd="set CastingMode Resistant" />
  1410.                         </elseif>
  1411.                         <elseif advanced='"$CastingMode"="Resistant"'>
  1412.                             <var cmd="set CastingMode Speed" />
  1413.                         </elseif>
  1414.                         <elseif advanced='"$CastingMode"="Speed"'>
  1415.                             <var cmd="set CastingMode Enmity" />
  1416.                         </elseif>
  1417.                         <else>
  1418.                             <!-- Default: Normal -->
  1419.                             <var cmd="set CastingMode Normal" />
  1420.                         </else>
  1421.                     </if>
  1422.                     <else>
  1423.                         <if advanced='"$CastingMode"="Normal"'>
  1424.                             <var cmd="set CastingMode Enmity" />
  1425.                         </if>
  1426.                         <elseif advanced='"$CastingMode"="Enmity"'>
  1427.                             <var cmd="set CastingMode Speed" />
  1428.                         </elseif>
  1429.                         <elseif advanced='"$CastingMode"="Speed"'>
  1430.                             <var cmd="set CastingMode Resistant" />
  1431.                         </elseif>
  1432.                         <elseif advanced='"$CastingMode"="Resistant"'>
  1433.                             <var cmd="set CastingMode AOEBurn" />
  1434.                         </elseif>
  1435.                         <elseif advanced='"$CastingMode"="AOEBurn"'>
  1436.                             <var cmd="set CastingMode Dire" />
  1437.                         </elseif>
  1438.                         <else>
  1439.                             <!-- Default: Normal -->
  1440.                             <var cmd="set CastingMode Normal" />
  1441.                         </else>
  1442.                     </else>
  1443.  
  1444.                     <addtochat>Casting Mode: $CastingMode</addtochat>
  1445.                 </elseif>
  1446.             </elseif>
  1447.            
  1448.             <elseif skill="GenericTrigger">
  1449.                 <if SpellTargetRaw="Test">
  1450.                 </if>
  1451.                 <elseif SpellTargetRaw="Check">
  1452.                     <cancelspell />
  1453.                     <addtochat>Current base TP set: TP-$TPWeapon-$OffenseMode-$DefenseMode</addtochat>
  1454.                 </elseif>
  1455.             </elseif>
  1456.             <elseif skill="Trigger">
  1457.                 <if Spell="Trigger1">
  1458.                   <!--
  1459.                      /ma Trigger1 Cycle(Step)
  1460.                      /ma Trigger1 Cycle(AltStep)
  1461.                      /ma Trigger1 Cycle(UseAltStep)
  1462.                      /ma Trigger1 Cycle(SelectStepTarget)
  1463.                      /ma Trigger1 Step
  1464.                      /ma Trigger1 StepT
  1465.                      
  1466.                      
  1467.                      Note: You can change the trigger number if you like. Make sure to update the rules as well.
  1468.                      Also: "/ma Trigger" currently resolves to "/ma Trigger1", so you can use that without the
  1469.                      number unless/until they actually fix it in Spellcast.
  1470.                      
  1471.                      
  1472.                      Cycle(Step) and Cycle(AltStep) rotate through the available steps, like your example.
  1473.                      
  1474.                      UseAltStep determines whether or not to use the alternate step.  Default is No, but you can
  1475.                      set a different default in each job xml.
  1476.                      
  1477.                      SelectStepTarget determines whether the default target is the normal <t>, or <stnpc> (which I
  1478.                      use in Dynamis for hitting mobs I'm not engaged to).  Default is No, but you can set a different
  1479.                      default in each job xml.
  1480.                      
  1481.                      The Step command uses the currently defined step.  Using StepT forces it to use the <t>
  1482.                      target instead of SelectStepTarget.
  1483.                      
  1484.                      
  1485.                      I'd probably set up binds like:
  1486.                      
  1487.                      bind ^= input /ma Trigger1 Cycle(Step)
  1488.                      bind != input /ma Trigger1 Cycle(AltStep)
  1489.                      
  1490.                      And set the UseAltStep and SelectStepTarget values to defaults I expect to keep (or put them
  1491.                      in macros on my dustbin palette, as the number of bind options is pretty limited).
  1492.                  
  1493.                  -->
  1494.                     <if SpellTargetRaw="Step|StepT">
  1495.                         <if status="engaged">
  1496.                             <if advanced='"$$CurrentStepStep"="Quick"'>
  1497.                                 <changespell spell="Quickstep" />
  1498.                             </if>
  1499.                             <elseif advanced='"$$CurrentStepStep"="Box"'>
  1500.                                 <changespell spell="Box Step" />
  1501.                             </elseif>
  1502.                             <elseif advanced='"$$CurrentStepStep"="Stutter"'>
  1503.                                 <changespell spell="Stutter Step" />
  1504.                             </elseif>
  1505.                             <elseif advanced='"$$CurrentStepStep"="Feather"'>
  1506.                                 <changespell spell="Feather Step" />
  1507.                             </elseif>
  1508.                             <else>
  1509.                                 <addtochat>Unknown step: $$CurrentStepStep</addtochat>
  1510.                             </else>
  1511.  
  1512.                             <if advanced='"$UseAltStep"="Yes"'>
  1513.                                 <if advanced='"$CurrentStep"="Main"'>
  1514.                                     <var cmd="set CurrentStep Alt" />
  1515.                                 </if>
  1516.                                 <else>
  1517.                                     <var cmd="set CurrentStep Main" />
  1518.                                 </else>
  1519.                             </if>
  1520.  
  1521.                             <if SpellTargetRaw="StepT">
  1522.                                 <changetarget target="&lt;t&gt;" />
  1523.                             </if>
  1524.                             <elseif advanced='"$SelectStepTarget"="Yes"'>
  1525.                                 <changetarget target="&lt;stnpc&gt;" />
  1526.                             </elseif>
  1527.                             <else>
  1528.                                 <changetarget target="&lt;t&gt;" />
  1529.                             </else>
  1530.                         </if>
  1531.                         <else>
  1532.                             <addtochat color="112">Insufficient TP or not engaged.</addtochat>
  1533.                         </else>
  1534.                     </if>
  1535.                     <elseif SpellTargetRaw="Cycle(Step)">
  1536.                         <if advanced='"$MainStep"="Quick"'>
  1537.                             <var cmd="set MainStep Box" />
  1538.                         </if>
  1539.                         <elseif advanced='"$MainStep"="Box"'>
  1540.                             <var cmd="set MainStep Stutter" />
  1541.                         </elseif>
  1542.                         <elseif advanced='"$MainStep"="Stutter"' MainJob="Dnc">
  1543.                             <var cmd="set MainStep Feather" />
  1544.                         </elseif>
  1545.                         <else>
  1546.                             <var cmd="set MainStep Quick" />
  1547.                         </else>
  1548.                        
  1549.                         <addtochat>Main Step: $MainStep</addtochat>
  1550.                     </elseif>
  1551.                     <elseif SpellTargetRaw="Cycle(AltStep)">
  1552.                         <if advanced='"$AltStep"="Quick"'>
  1553.                             <var cmd="set AltStep Box" />
  1554.                         </if>
  1555.                         <elseif advanced='"$AltStep"="Box"'>
  1556.                             <var cmd="set AltStep Stutter" />
  1557.                         </elseif>
  1558.                         <elseif advanced='"$AltStep"="Stutter"' MainJob="Dnc">
  1559.                             <var cmd="set AltStep Feather" />
  1560.                         </elseif>
  1561.                         <else>
  1562.                             <var cmd="set AltStep Quick" />
  1563.                         </else>
  1564.  
  1565.                         <addtochat>Alt Step: $AltStep</addtochat>
  1566.                     </elseif>
  1567.                     <elseif SpellTargetRaw="Cycle(UseAltStep)">
  1568.                         <if advanced='"$UseAltStep"="No"'>
  1569.                             <var cmd="set UseAltStep Yes" />
  1570.                         </if>
  1571.                         <else>
  1572.                             <var cmd="set UseAltStep No" />
  1573.                         </else>
  1574.  
  1575.                         <addtochat>Use Alt Step: $UseAltStep</addtochat>
  1576.                     </elseif>
  1577.                     <elseif SpellTargetRaw="Cycle(SelectStepTarget)">
  1578.                         <if advanced='"$SelectStepTarget"="No"'>
  1579.                             <var cmd="set SelectStepTarget Yes" />
  1580.                         </if>
  1581.                         <else>
  1582.                             <var cmd="set SelectStepTarget No" />
  1583.                         </else>
  1584.  
  1585.                         <addtochat>Select step target: $SelectStepTarget</addtochat>
  1586.                     </elseif>
  1587.                 </if>
  1588.             </elseif>
  1589.         </if>
  1590.     </include>
  1591.  
  1592.     <!-- Define the base layer for the $CurrentSet variable to use. -->
  1593.     <include name="DefineBaseLayer">
  1594.         <if status="Engaged">
  1595.             <if advanced='"$Use-OffenseMode"!="None"'>
  1596.                 <var cmd="set OMode $Use-OffenseMode" />
  1597.             </if>
  1598.             <else>
  1599.                 <var cmd="set OMode $OffenseMode" />
  1600.             </else>
  1601.  
  1602.             <var cmd="set BaseLayer TP-$TPWeapon-$OMode-$DefenseMode" />
  1603.  
  1604.             <if advanced='"$AggressiveMode"="On"'>
  1605.                 <var cmd="set UseAggressive $AgressiveLayer" />
  1606.             </if>
  1607.             <else>
  1608.                 <var cmd="set UseAggressive None" />
  1609.             </else>
  1610.         </if>
  1611.         <else>
  1612.             <var cmd="set BaseLayer Idle-$Idlearea-$IdleMode" />
  1613.         </else>
  1614.     </include>
  1615.  
  1616.  
  1617.     <!-- Define the general weaponskill set based on certain vars. -->
  1618.     <!-- Define which weaponskill mode to use. -->
  1619.     <include name="DefineWeaponskillSet">
  1620.         <if spell="$MagicalWS">
  1621.             <var cmd="set WSSet WS-%spell" />
  1622.         </if>
  1623.         <else>
  1624.             <if advanced='"$Use-WSMode" != "None"'>
  1625.                 <var cmd="set TempMode $Use-WSMode" />
  1626.             </if>
  1627.             <else>
  1628.                 <if advanced='"$WSMode"="default"'>
  1629.                     <if advanced='"$OffenseMode"="Acc" OR "$OffenseMode"="MaxAcc"' notspell="$SingleHitWS">
  1630.                         <var cmd="set TempMode Acc" />
  1631.                     </if>
  1632.                     <elseif spell="$CritWS" BuffActive="Blood Rage">
  1633.                         <var cmd="set TempMode Crit" />
  1634.                     </elseif>
  1635.                     <elseif mode="OR" advanced='"$OffenseMode"="Str" OR "$OffenseMode"="Crit"'
  1636.                      BuffActive="Berserk|Last Resort|Attack Boost|Building Flourish|Chaos Roll">
  1637.                         <var cmd="set TempMode Mod" />
  1638.                     </elseif>
  1639.                     <elseif BuffActive="Voidwatcher">
  1640.                         <var cmd="set TempMode Att" />
  1641.                     </elseif>
  1642.                     <else>
  1643.                         <var cmd="set TempMode Att" />
  1644.                     </else>
  1645.                 </if>
  1646.                 <else>
  1647.                     <var cmd="set TempMode $WSMode" />
  1648.                 </else>
  1649.             </else>
  1650.  
  1651.             <if advanced='Regex("$TempMode", "$Options.WSModes")'>
  1652.                 <var cmd="set WSSet WS-%spell-$TempMode" />
  1653.             </if>
  1654.             <else>
  1655.                 <var cmd="set WSSet WS-%spell-Att" />
  1656.             </else>
  1657.         </else>
  1658.  
  1659.         <if advanced='$Debug=1'>
  1660.             <addtochat>WS Set: $WSSet</addtochat>
  1661.         </if>
  1662.     </include>
  1663.  
  1664.  
  1665.     <!-- Change to appropriate gear set at proper times. -->
  1666.     <include name="HandleEquippingGear">
  1667.         <!-- INCLUDE ONLY AFTER [CurrentSet] HAS BEEN DEFINED BY YOUR JOB RULES. -->
  1668.  
  1669.         <if advanced='$Debug=1'>
  1670.             <addtochat>Current Set: $CurrentSet</addtochat>
  1671.         </if>
  1672.  
  1673.         <!-- After all calculations are done, if the spellcast was run due to a Trigger action,
  1674.             just equip the specified gear and return. -->
  1675.         <if type="Trigger">
  1676.             <equip set="$CurrentSet" />
  1677.             <return />
  1678.         </if>
  1679.  
  1680.         <if type="JobAbility|WeaponSkill|Step|Waltz|Flourish*|Scholar|CorsairShot">
  1681.             <aftercastdelay delay="0.5" />
  1682.         </if>
  1683.  
  1684.         <!-- Aftercast equipment resolution deferred.  Avoid up-front lag
  1685.             from doing these calculations now. -->
  1686.         <if status="resting">
  1687.             <equip when="all" set="Resting-$RestMode" />
  1688.         </if>
  1689.         <elseif spell="Autoset">
  1690.             <equip when="idle|engaged" set="$CurrentSet" />
  1691.         </elseif>
  1692.         <else>
  1693.             <!-- Change to <equip> line if you want to test current direct lag. -->
  1694.             <!-- <equip when="aftercast" set="$CurrentSet" /> -->
  1695.             <if advanced='"$UseFastCastAftercast"="Yes"'>
  1696.                 <if advanced='$Debug=1'>
  1697.                     <addtochat>FastCast delay: $FastCastDelay</addtochat>
  1698.                 </if>
  1699.                 <command when="midcast">wait $FastCastDelay; $UpdateAftercast</command>
  1700.             </if>
  1701.             <else>
  1702.                 <command when="aftercast">$UpdateAftercast</command>
  1703.             </else>
  1704.         </else>
  1705.  
  1706.     </include>
  1707.  
  1708.     <!-- Handle evaluation of sets and equipping gear at aftercast time slot
  1709.         instead of doing all the work before the requested action.  Helps
  1710.         reduce lag effects. -->
  1711.     <include name="ChangeGearAftercast">
  1712.         <if type="Trigger" spell="Update" SpellTargetRaw=".Aftercast">
  1713.             <cancelspell />
  1714.  
  1715.             <if notstatus="Dead|Zoning|Event">
  1716.                 <if advanced='"$CurrentGroup"!="None"'>
  1717.                     <equip setgroup="$CurrentGroup" set="$BaseLayer" />
  1718.                     <equip set="$CurrentSet" />
  1719.                 </if>
  1720.                 <else>
  1721.                     <equip set="$CurrentSet" />
  1722.                 </else>
  1723.             </if>
  1724.  
  1725.             <return />
  1726.         </if>
  1727.     </include>
  1728.  
  1729.     <!-- White mage spells which are cast using <stal> will, if STALMode is
  1730.         set to 'stpt', get converted to <stpt> or <stpc>. -->
  1731.     <include name="ConvertSTALTargets">
  1732.         <if type="WhiteMagic" SpellTargetRaw="&lt;stal&gt;" advanced='"$STALMode"!="stal"'>
  1733.             <changetarget target="&lt;$STALMode&gt;" />
  1734.         </if>
  1735.     </include>
  1736.  
  1737.  
  1738.  
  1739.     <!-- Elemental Staff Rules -->
  1740.     <include name="ElementalStaffRules">
  1741.         <if skill="ElementalMagic">
  1742.             <if spell="Burn|Frost|Choke|Rasp|Shock|Drown">
  1743.                 <equip when="precast|midcast">
  1744.                     <main>$Staff-Acc-%SpellElement</main>
  1745.                 </equip>
  1746.             </if>
  1747.             <else>
  1748.                 <if advanced='"$CastingMode" = "Proc"'>
  1749.                     <equip when="precast|midcast">
  1750.                         <main>$Staff-Proc-%SpellElement</main>
  1751.                     </equip>
  1752.                 </if>
  1753.                 <else>
  1754.                     <equip when="precast|midcast">
  1755.                         <main>$Staff-Dmg-%SpellElement</main>
  1756.                         <sub>Wizzan Grip</sub>
  1757.                     </equip>
  1758.                 </else>
  1759.             </else>
  1760.  
  1761.             <if NotAdvanced='Regex("$Staff-FastCastAmt-%SpellElement", "^[$]")'>
  1762.                 <equip when="precast">
  1763.                     <main>$Staff-FastCast-%SpellElement</main>
  1764.                 </equip>
  1765.             </if>
  1766.         </if>
  1767.         <elseif skill="HealingMagic" spell="Cure*|Cura*">
  1768.             <equip when="precast|midcast">
  1769.                 <main>$Staff-Cures</main>
  1770.             </equip>
  1771.         </elseif>
  1772.         <elseif skill="EnfeeblingMagic">
  1773.             <equip when="precast|midcast">
  1774.                 <main>$Staff-Acc-%SpellElement</main>
  1775.             </equip>
  1776.             <if NotAdvanced='Regex("$Staff-FastCastAmt-%SpellElement", "^[$]")'>
  1777.                 <equip when="precast">
  1778.                     <main>$Staff-FastCast-%SpellElement</main>
  1779.                 </equip>
  1780.             </if>
  1781.         </elseif>
  1782.         <elseif type="BardSong">
  1783.             <if spelltargettype="MONSTER|NPC">
  1784.                 <equip when="precast|midcast">
  1785.                     <main>$Staff-Acc-%SpellElement</main>
  1786.                 </equip>
  1787.             </if>
  1788.             <if NotAdvanced='Regex("$Staff-FastCastAmt-%SpellElement", "^[$]")'>
  1789.                 <equip when="precast">
  1790.                     <main>$Staff-FastCast-%SpellElement</main>
  1791.                 </equip>
  1792.             </if>
  1793.         </elseif>
  1794.         <elseif skill="DivineMagic">
  1795.             <if spell="Banish*|Holy*">
  1796.                 <equip when="precast|midcast">
  1797.                     <main>$Staff-Dmg-%SpellElement</main>
  1798.                 </equip>
  1799.             </if>
  1800.             <else>
  1801.                 <equip when="precast|midcast">
  1802.                     <main>$Staff-Acc-%SpellElement</main>
  1803.                 </equip>
  1804.             </else>
  1805.         </elseif>
  1806.         <elseif skill="DarkMagic">
  1807.             <if NotSpell="Stun">
  1808.                 <equip when="precast|midcast">
  1809.                     <main>$Staff-Acc-%SpellElement</main>
  1810.                 </equip>
  1811.                
  1812.                 <if NotAdvanced='Regex("$Staff-FastCastAmt-%SpellElement", "^[$]")'>
  1813.                     <equip when="precast">
  1814.                         <main>$Staff-FastCast-%SpellElement</main>
  1815.                     </equip>
  1816.                 </if>
  1817.             </if>
  1818.             <else>
  1819.                 <equip when="precast|midcast">
  1820.                     <main>Apamajas II</main>
  1821.                 </equip>
  1822.             </else>
  1823.         </elseif>
  1824.     </include>
  1825.  
  1826.     <!-- Swapping in Obi/Zodiac Ring/Twilight Cape when using Elemental Magic.
  1827.         Assumed to be imported in after check for skill="ElementalMagic" has
  1828.         already been done. -->
  1829.     <include name="ObiRingCape-ElementalMagic">
  1830.         <if element="%DayElement">
  1831.             <if skill="ElementalMagic" notspell="Burn|Frost|Choke|Rasp|Shock|Drown">
  1832.                 <if advanced='"ZodiacRing"!="0"' notelement="Light|Dark">
  1833.                     <equip when="midcast">
  1834.                         <rring>Zodiac Ring</rring>
  1835.                     </equip>
  1836.                 </if>
  1837.  
  1838.                 <if advanced='"$TwilightCape"!="0"'>
  1839.                     <equip when="midcast">
  1840.                         <back>Twilight Cape</back>
  1841.                     </equip>
  1842.                 </if>
  1843.  
  1844.                 <if NotAdvanced='Regex("$Obi-%SpellElement", "^[$]")'>
  1845.                     <equip when="midcast">
  1846.                         <waist>$Obi-%spellElement</waist>
  1847.                     </equip>
  1848.                 </if>
  1849.             </if>
  1850.         </if>
  1851.  
  1852.         <elseif element="%WeatherElement">
  1853.             <if NotAdvanced='Regex("$Obi-%SpellElement", "^[$]")'>
  1854.                 <if skill="ElementalMagic" notspell="Burn|Frost|Choke|Rasp|Shock|Drown">
  1855.                     <equip when="midcast">
  1856.                         <waist>$Obi-%spellElement</waist>
  1857.                     </equip>
  1858.  
  1859.                     <if advanced='"$TwilightCape"!="0"'>
  1860.                         <equip when="midcast">
  1861.                             <back>Twilight Cape</back>
  1862.                         </equip>
  1863.                     </if>
  1864.                 </if>
  1865.             </if>
  1866.         </elseif>
  1867.     </include>
  1868.  
  1869.     <!-- Swapping in Obi/Zodiac Ring/Twilight Cape when using Healing Magic.
  1870.         Assumed to be imported in after check for skill="HealingMagic" has
  1871.         already been done. -->
  1872.     <include name="ObiRingCape-HealingMagic">
  1873.         <if element="%DayElement">
  1874.             <if spell="Cure*|Cura*">
  1875.                 <if NotAdvanced='Regex("$Obi-%SpellElement", "^[$]")'>
  1876.                     <equip when="midcast">
  1877.                         <waist>$Obi-%SpellElement</waist>
  1878.                     </equip>
  1879.                 </if>
  1880.  
  1881.                 <if advanced='"$TwilightCape"!="0"'>
  1882.                     <equip when="midcast">
  1883.                         <back>Twilight Cape</back>
  1884.                     </equip>
  1885.                 </if>
  1886.             </if>
  1887.         </if>
  1888.  
  1889.         <elseif element="%WeatherElement">
  1890.             <if NotAdvanced='Regex("$Obi-%SpellElement", "^[$]")'>
  1891.                 <if spell="Cure*|Cura*">
  1892.                     <equip when="midcast">
  1893.                         <waist>$Obi-%SpellElement</waist>
  1894.                     </equip>
  1895.  
  1896.                     <if advanced='"$TwilightCape"!="0"'>
  1897.                         <equip when="midcast">
  1898.                             <back>Twilight Cape</back>
  1899.                         </equip>
  1900.                     </if>
  1901.                 </if>
  1902.             </if>
  1903.         </elseif>
  1904.     </include>
  1905.  
  1906.     <!-- Swapping in Obi/Zodiac Ring/Twilight Cape when using Divine Magic.
  1907.         Assumed to be imported in after check for skill="DivineMagic" has
  1908.         already been done. -->
  1909.     <include name="ObiRingCape-DivineMagic">
  1910.         <if element="%DayElement">
  1911.             <if spell="Banish*|Holy*">
  1912.                 <if advanced='"$TwilightCape"!="0"'>
  1913.                     <equip when="midcast">
  1914.                         <back>Twilight Cape</back>
  1915.                     </equip>
  1916.                 </if>
  1917.  
  1918.                 <if NotAdvanced='Regex("$Obi-%SpellElement", "^[$]")'>
  1919.                     <equip when="midcast">
  1920.                         <waist>$Obi-%SpellElement</waist>
  1921.                     </equip>
  1922.                 </if>
  1923.             </if>
  1924.         </if>
  1925.  
  1926.         <elseif element="%WeatherElement">
  1927.             <if NotAdvanced='Regex("$Obi-%SpellElement", "^[$]")'>
  1928.                 <if spell="Banish*|Holy*">
  1929.                     <equip when="midcast">
  1930.                         <waist>$Obi-%SpellElement</waist>
  1931.                     </equip>
  1932.  
  1933.                     <if advanced='"$TwilightCape"!="0"'>
  1934.                         <equip when="midcast">
  1935.                             <back>Twilight Cape</back>
  1936.                         </equip>
  1937.                     </if>
  1938.                 </if>
  1939.             </if>
  1940.         </elseif>
  1941.     </include>
  1942.  
  1943.     <!-- Swapping in Obi/Zodiac Ring/Twilight Cape when using Quick Draw.
  1944.         Assumed to be imported in after check for type="CorsairShot" has
  1945.         already been done. -->
  1946.     <include name="ObiRingCape-CorsairShot">
  1947.         <if notelement="Light|Dark">
  1948.             <if element="%DayElement">
  1949.                 <if advanced='"ZodiacRing"!="0"'>
  1950.                     <equip when="precast">
  1951.                         <rring>Zodiac Ring</rring>
  1952.                     </equip>
  1953.                 </if>
  1954.  
  1955.                 <if NotAdvanced='Regex("$Obi-%SpellElement", "^[$]")'>
  1956.                     <equip when="precast">
  1957.                         <waist>$Obi-%SpellElement</waist>
  1958.                     </equip>
  1959.                 </if>
  1960.             </if>
  1961.  
  1962.             <elseif element="%WeatherElement">
  1963.                 <if NotAdvanced='Regex("$Obi-%SpellElement", "^[$]")'>
  1964.                     <equip when="precast">
  1965.                         <waist>$Obi-%SpellElement</waist>
  1966.                     </equip>
  1967.                 </if>
  1968.             </elseif>
  1969.         </if>
  1970.     </include>
  1971.  
  1972.     <!-- Swapping in Obi/Zodiac Ring/Twilight Cape when using Ninjutsu.
  1973.         Assumed to be imported in after check for type="Ninjutsu" has
  1974.         already been done. -->
  1975.     <include name="ObiRingCape-Ninjutsu">
  1976.         <if element="%DayElement">
  1977.             <if spell="Katon*|Hyoton*|Huton*|Doton*|Suiton*|Raiton*">
  1978.                 <if advanced='"ZodiacRing"!="0"'>
  1979.                     <equip when="midcast">
  1980.                         <rring>Zodiac Ring</rring>
  1981.                     </equip>
  1982.                 </if>
  1983.  
  1984.                 <if advanced='"$TwilightCape"!="0"'>
  1985.                     <equip when="midcast">
  1986.                         <back>Twilight Cape</back>
  1987.                     </equip>
  1988.                 </if>
  1989.  
  1990.                 <if NotAdvanced='Regex("$Obi-%SpellElement", "^[$]")'>
  1991.                     <equip when="midcast">
  1992.                         <waist>$Obi-%SpellElement</waist>
  1993.                     </equip>
  1994.                 </if>
  1995.             </if>
  1996.         </if>
  1997.  
  1998.         <elseif element="%WeatherElement">
  1999.             <if NotAdvanced='Regex("$Obi-%SpellElement", "^[$]")'>
  2000.                 <if spell="Katon*|Hyoton*|Huton*|Doton*|Suiton*|Raiton*">
  2001.                     <equip when="midcast">
  2002.                         <waist>$Obi-%SpellElement</waist>
  2003.                     </equip>
  2004.  
  2005.                     <if advanced='"$TwilightCape"!="0"'>
  2006.                         <equip when="midcast">
  2007.                             <back>Twilight Cape</back>
  2008.                         </equip>
  2009.                     </if>
  2010.                 </if>
  2011.             </if>
  2012.         </elseif>
  2013.     </include>
  2014.  
  2015.     <!-- Swapping in Obi/Zodiac Ring/Twilight Cape when using Blue Magic.
  2016.         Assumed to be imported in after check for skill="BlueMagic" has
  2017.         already been done. -->
  2018.     <include name="ObiRingCape-BlueMagic">
  2019.         <if element="%DayElement">
  2020.             <if spell="*Whisker|*Grudge|Thermal*|Mind Blast|Regurg*|Ice Break|Leaf*|Thunderbolt|Dark Orb">
  2021.                 <if advanced='"ZodiacRing"!="0"'>
  2022.                     <equip when="midcast">
  2023.                         <rring>Zodiac Ring</rring>
  2024.                     </equip>
  2025.                 </if>
  2026.  
  2027.                 <if advanced='"$TwilightCape"!="0"'>
  2028.                     <equip when="midcast">
  2029.                         <back>Twilight Cape</back>
  2030.                     </equip>
  2031.                 </if>
  2032.  
  2033.                 <if NotAdvanced='Regex("$Obi-%SpellElement", "^[$]")'>
  2034.                     <equip when="midcast">
  2035.                         <waist>$Obi-%SpellElement</waist>
  2036.                     </equip>
  2037.                 </if>
  2038.             </if>
  2039.         </if>
  2040.  
  2041.         <elseif element="%WeatherElement">
  2042.             <if NotAdvanced='Regex("$Obi-%SpellElement", "^[$]")'>
  2043.                 <if spell="*Whisker|*Grudge|Thermal*|Mind Blast|Regurg*|Ice Break|Leaf*|Thunderbolt|Dark Orb">
  2044.                     <equip when="midcast">
  2045.                         <waist>$Obi-%SpellElement</waist>
  2046.                     </equip>
  2047.  
  2048.                     <if advanced='"$TwilightCape"!="0"'>
  2049.                         <equip when="midcast">
  2050.                             <back>Twilight Cape</back>
  2051.                         </equip>
  2052.                     </if>
  2053.                 </if>
  2054.             </if>
  2055.         </elseif>
  2056.     </include>
  2057.  
  2058.     <!-- Swapping in Obi/Zodiac Ring/Twilight Cape when using Dark Magic.
  2059.         Assumed to be imported in after check for skill="DarkMagic" has
  2060.         already been done. -->
  2061.     <include name="ObiRingCape-DarkMagic">
  2062.         <if element="%DayElement">
  2063.             <if spell="Drain*|Aspir*|Kaustra">
  2064.                 <if advanced='"$TwilightCape"!="0"'>
  2065.                     <equip when="midcast">
  2066.                         <back>Twilight Cape</back>
  2067.                     </equip>
  2068.                 </if>
  2069.  
  2070.                 <if NotAdvanced='Regex("$Obi-%SpellElement", "^[$]")'>
  2071.                     <equip when="midcast">
  2072.                         <waist>$Obi-%SpellElement</waist>
  2073.                     </equip>
  2074.                 </if>
  2075.             </if>
  2076.         </if>
  2077.  
  2078.         <elseif element="%WeatherElement">
  2079.             <if NotAdvanced='Regex("$Obi-%SpellElement", "^[$]")'>
  2080.                 <if spell="Drain*|Aspir*|Kaustra">
  2081.                     <equip when="midcast">
  2082.                         <waist>$Obi-%SpellElement</waist>
  2083.                     </equip>
  2084.  
  2085.                     <if advanced='"$TwilightCape"!="0"'>
  2086.                         <equip when="midcast">
  2087.                             <back>Twilight Cape</back>
  2088.                         </equip>
  2089.                     </if>
  2090.                 </if>
  2091.             </if>
  2092.         </elseif>
  2093.     </include>
  2094.  
  2095.     <!-- Swapping in Obi/Zodiac Ring/Twilight Cape when using Rune Fencer.
  2096.         Assumed to be imported in after check for spell="Lunge" has
  2097.         already been done. -->
  2098.     <include name="ObiRingCape-Runes">
  2099.         <if BuffActive="$Rune-%DayElement">
  2100.             <if NotAdvanced='Regex("$Obi-%DayElement", "^[$]")'>
  2101.                 <equip when="midcast">
  2102.                     <waist>$Obi-%DayElement</waist>
  2103.                 </equip>
  2104.             </if>
  2105.         </if>
  2106.         <elseif BuffActive="$Rune-%WeatherElement">
  2107.             <if NotAdvanced='Regex("$Obi-%WeatherElement", "^[$]")'>
  2108.                 <equip when="midcast">
  2109.                     <waist>$Obi-%WeatherElement</waist>
  2110.                 </equip>
  2111.             </if>
  2112.         </elseif>
  2113.     </include>
  2114.    
  2115.     <!-- Automatically generate notifications when buffs are about to wear off (15 second warning). -->
  2116.     <!-- MUST include RecastDurations in vars section. -->
  2117.     <include name="RecastWarnings">
  2118.         <if skill="EnhancingMagic">
  2119.             <if spell="Enlight">
  2120.                 <var cmd="set Buff-Duration 120" />
  2121.             </if>
  2122.             <elseif spell="Haste|Phalanx|Phalanx II|Temper|Reprisal|En*">
  2123.                 <var cmd="set Buff-Duration 180" />
  2124.             </elseif>
  2125.             <elseif spell="Refresh II|Refresh">
  2126.                 <var cmd="set Buff-Duration 150" />
  2127.             </elseif>
  2128.             <elseif spell="*Spikes">
  2129.                 <var cmd="set Buff-Duration 140" />
  2130.             </elseif>
  2131.             <else>
  2132.                 <!-- Anything else we don't want to give warnings for. -->
  2133.                 <var cmd="set Buff-Duration 0" />
  2134.             </else>
  2135.  
  2136.             <if advanced='$Buff-Duration &gt; 0'>
  2137.                 <!-- Account for rdm stuff that extends durations -->
  2138.                 <if mainjob="Rdm">
  2139.                     <var cmd="setcalc BuffDurationMult 100 + ($EstoqueurCape*10) + ($EstoqueurFeet*10)" />
  2140.  
  2141.                     <if BuffActive="Composure">
  2142.                         <if SpellTargetType="SELF">
  2143.                             <var cmd="setcalc BuffDurationMult $BuffDurationMult * 3" />
  2144.                         </if>
  2145.                         <elseif SpellTargetType="PLAYER">
  2146.                             <var cmd="setcalc BuffDurationMult $BuffDurationMult + $EstoqueurSetBonus" />
  2147.                         </elseif>
  2148.                     </if>
  2149.  
  2150.                     <var cmd="setcalc Buff-Duration $Buff-Duration * $BuffDurationMult / 100" />
  2151.                 </if>
  2152.                 <elseif mainjob="Sch">
  2153.                     <var cmd="setcalc BuffDurationMult 100" />
  2154.  
  2155.                     <if mode="OR" BuffActive="Perpetuance" advanced='"$PerpFlag"="Yes"'>
  2156.                         <!-- 2.5x duration for Perpetuance with AF3+2 hands. -->
  2157.                         <var cmd="setcalc BuffDurationMult 200 + (25 * $SchPerpHands)" />
  2158.                     </if>
  2159.  
  2160.                     <var cmd="setcalc Buff-Duration $Buff-Duration * $BuffDurationMult / 100" />
  2161.                 </elseif>
  2162.  
  2163.                 <var cmd="setcalc Warn-Duration $Buff-Duration - 15" />
  2164.                 <command when="Aftercast">wait $Warn-Duration;input /echo ~~~~~~~~~~ [%spell] &lt;%SpellTargetName&gt; wearing off in 15 sec. ~~~~~~~~~~</command>
  2165.             </if>
  2166.         </if>
  2167.         <elseif type="Samba">
  2168.             <if mainjob="Dnc">
  2169.                 <var cmd="set Buff-Duration 120" />
  2170.             </if>
  2171.             <else>
  2172.                 <var cmd="set Buff-Duration 90" />
  2173.             </else>
  2174.  
  2175.             <var cmd="setcalc Warn-Duration $Buff-Duration - 15" />
  2176.             <command when="Aftercast">wait $Warn-Duration;input /echo [%spell] ~~~~~~~~~ Wearing off in 15 sec.</command>
  2177.         </elseif>
  2178.         <elseif mode="or" skill="EnfeeblingMagic|DivineMagic|BlueMagic|Singing" type="CorsairShot">
  2179.             <if Spell="Sleep|Sleepga|Light Shot|Sheep Song">
  2180.                 <var cmd="set Buff-Duration 60" />
  2181.             </if>
  2182.             <elseif Spell="Sleep II|Sleepga II|Repose|Dream Flower|Soporific|Yawn">
  2183.                 <var cmd="set Buff-Duration 90" />
  2184.             </elseif>
  2185.             <elseif Spell="Foe Lullaby|Horde Lullaby">
  2186.                 <var cmd="set Buff-Duration 36" />
  2187.             </elseif>
  2188.             <elseif Spell="Foe Lullaby II|Horde Lullaby II">
  2189.                 <var cmd="set Buff-Duration 72" />
  2190.             </elseif>
  2191.             <elseif Spell="Break">
  2192.                 <var cmd="set Buff-Duration 30" />
  2193.             </elseif>
  2194.             <else>
  2195.                 <var cmd="set Buff-Duration 0" />
  2196.             </else>
  2197.            
  2198.          
  2199.             <if advanced='$Buff-Duration &gt; 0'>
  2200.                 <var cmd="inc SleepOrder" />
  2201.  
  2202.                 <if advanced='$Buff-Duration &gt; 40'>
  2203.                     <var cmd="setcalc Warn-Duration $Buff-Duration - 30" />
  2204.                     <command when="Aftercast">wait $Warn-Duration;input /echo [%spell] &lt;%spellTargetName&gt; ($SleepOrder) wearing off in 30 sec.</command>
  2205.                 </if>
  2206.  
  2207.                 <var cmd="setcalc Warn-Duration $Buff-Duration - 10" />
  2208.                 <command when="Aftercast">wait $Warn-Duration;input /echo [%spell] &lt;%spellTargetName&gt; ($SleepOrder) wearing off in 10 sec.;spellcast var dec SleepOrder</command>
  2209.             </if>
  2210.         </elseif>
  2211.     </include>
  2212.  
  2213.     <!-- Include for calculating expected cast time for a given spell, to use in
  2214.         determining which gear swaps are feasible. -->
  2215.     <include name="FastCastCalculations">
  2216.         <var cmd="set UseFastCastAftercast No" />
  2217.         <if type="WhiteMagic|BlackMagic|BardSong|Ninjutsu">
  2218.             <!-- Don't bother for vary fast-casting spells. -->
  2219.             <if casttimegt="1">
  2220.                 <if skill="HealingMagic">
  2221.                     <if spell="Cure*|Cura*">
  2222.                         <var cmd="set FastCastAmt $CureFastCast" />
  2223.                     </if>
  2224.                     <else>
  2225.                         <var cmd="set FastCastAmt $HealFastCast" />
  2226.                     </else>
  2227.                 </if>
  2228.                 <elseif skill="EnhancingMagic">
  2229.                     <var cmd="set FastCastAmt $EnhancingFastCast" />
  2230.                 </elseif>
  2231.                 <elseif skill="ElementalMagic">
  2232.                     <var cmd="set FastCastAmt $ElementalFastCast" />
  2233.    
  2234.                     <if mainjob="BLM">
  2235.                         <if mainjoblvlgt="89">
  2236.                             <var cmd="setcalc FastCastAmt $FastCastAmt + 30" />
  2237.                         </if>
  2238.                         <else>
  2239.                             <var cmd="setcalc FastCastAmt $FastCastAmt + 15" />
  2240.                         </else>
  2241.                     </if>
  2242.                 </elseif>
  2243.    
  2244.                 <var cmd="setcalc FastCastAmt $FastCastAmt + $GeneralFastCast" />
  2245.    
  2246.                 <if mainjob="RDM">
  2247.                     <var cmd="setcalc FastCastAmt $FastCastAmt + 30" />
  2248.                 </if>
  2249.                 <elseif subjob="RDM">
  2250.                     <var cmd="setcalc FastCastAmt $FastCastAmt + 15" />
  2251.                 </elseif>
  2252.  
  2253.    
  2254.                 <if NotAdvanced='Regex("$Staff-FastCastAmt-%SpellElement", "^[$]")'>
  2255.                     <var cmd="setcalc FastCastAmt $FastCastAmt + $Staff-FastCastAmt-%SpellElement" />
  2256.                 </if>
  2257.    
  2258.    
  2259.                 <if BuffActive="Light Arts|Addendum: White">
  2260.                     <if type="WhiteMagic">
  2261.                         <var cmd="setcalc FastCastAmt $FastCastAmt + ((100-$FastCastAmt)* 0.1)" />
  2262.                     </if>
  2263.                     <elseif type="BlackMagic">
  2264.                         <var cmd="setcalc FastCastAmt $FastCastAmt - ((100-$FastCastAmt)* 0.2)" />
  2265.                     </elseif>
  2266.                 </if>
  2267.                 <elseif BuffActive="Dark Arts|Addendum: Black">
  2268.                     <if type="BlackMagic">
  2269.                         <var cmd="setcalc FastCastAmt $FastCastAmt + ((100-$FastCastAmt)* 0.1)" />
  2270.                     </if>
  2271.                     <elseif type="WhiteMagic">
  2272.                         <var cmd="setcalc FastCastAmt $FastCastAmt - ((100-$FastCastAmt)* 0.2)" />
  2273.                     </elseif>
  2274.                 </elseif>
  2275.                
  2276.                 <if advanced='$FastCastAmt > 80'>
  2277.                     <var cmd="setcalc FastCastAmt 80" />
  2278.                 </if>
  2279.    
  2280.                 <var cmd="setcalc FCCastTime (%CastTime * (100-$FastCastAmt)) / 100" />
  2281.    
  2282.                 <if advanced='$FCCastTime > 1'>
  2283.                     <var cmd="set FastCastMode Normal" />
  2284.                 </if>
  2285.                 <elseif advanced='$FCCastTime > 0.7'>
  2286.                     <var cmd="set FastCastMode Moderate" />
  2287.                 </elseif>
  2288.                 <else>
  2289.                     <var cmd="set FastCastMode Quick" />
  2290.                 </else>
  2291.  
  2292.                 <var cmd="setcalc FastCastDelay $FCCastTime + 0.25" />
  2293.                 <if advanced='$FastCastDelay > %CastTime'>
  2294.                     <var cmd="set FastCastDelay %CastTime" />
  2295.                 </if>
  2296.  
  2297.                 <var cmd="set UseFastCastAftercast Yes" />
  2298.             </if>
  2299.             <else>
  2300.                 <var cmd="set FastCastMode Quick" />
  2301.             </else>
  2302.         </if>
  2303.         <else>
  2304.             <var cmd="set FastCastMode None" />
  2305.         </else>
  2306.     </include>
  2307.  
  2308.     <!-- Proc rules exclusive to blm for testing spell procs. -->
  2309.     <!-- Staff choice is already handled in Staffs include. -->
  2310.     <include name="TestProcRules">
  2311.         <!-- Turn on: //castingmode proc
  2312.             Turn off: //castingmode proc.off
  2313.             Set element: //firetrigger proc (or whichever element~trigger)
  2314.             Cast spell: //anyelementtrigger proc-t3
  2315.                         //anyelementtrigger proc-t4
  2316.                         //anyelementtrigger proc-ga3
  2317.                         //anyelementtrigger proc-AM
  2318.                         //anyelementtrigger proc-brd
  2319.         -->
  2320.              
  2321.         <if spell="CastingMode" SpellTargetRaw="Proc*">
  2322.             <cancelspell />
  2323.  
  2324.             <if BuffActive="Visitant|Voidwatcher">
  2325.                 <if SpellTargetRaw="*.off|*:off">
  2326.                     <var cmd="set CastingMode Normal" />
  2327.                 </if>
  2328.                 <elseif SpellTargetRaw="*.toggle|*:toggle">
  2329.                     <if advanced='"$CastingMode"="Proc"'>
  2330.                         <var cmd="set CastingMode Normal" />
  2331.                     </if>
  2332.                     <else>
  2333.                         <var cmd="set CastingMode Proc" />
  2334.                     </else>
  2335.                 </elseif>
  2336.                 <else>
  2337.                     <var cmd="set CastingMode Proc" />
  2338.                 </else>
  2339.             </if>
  2340.             <else>
  2341.                 <var cmd="set CastingMode Normal" />
  2342.             </else>
  2343.  
  2344.             <addtochat>CastingMode=$CastingMode, Procelement=$ProcElement</addtochat>
  2345.             <return />
  2346.         </if>
  2347.         <!-- In Abyssea, do spell conversion -->
  2348.         <elseif BuffActive="Visitant">
  2349.             <if type="Trigger" skill="ElementalTrigger">
  2350.                 <if NotElement="None|Any|All" SpellTargetRaw="Proc">
  2351.                     <var cmd="set ProcElement %spellElement" />
  2352.                     <addtochat>CastingMode=$CastingMode, Procelement=$ProcElement</addtochat>
  2353.                     <cancelspell />
  2354.                     <return />
  2355.                 </if>
  2356.                 <elseif spell="AnyElementTrigger" advanced='"$CastingMode"="Proc"'>
  2357.                     <var cmd="set Procspell None" />
  2358.  
  2359.                     <if SpellTargetRaw="Proc-T3">
  2360.                         <var cmd="set Procspell $T3-$ProcElement" />
  2361.                     </if>
  2362.                     <elseif SpellTargetRaw="Proc-T4">
  2363.                         <var cmd="set Procspell $T4-$ProcElement" />
  2364.                     </elseif>
  2365.                     <elseif SpellTargetRaw="Proc-Ga3">
  2366.                         <var cmd="set Procspell $T-G3-$ProcElement" />
  2367.                     </elseif>
  2368.                     <elseif SpellTargetRaw="Proc-AM">
  2369.                         <var cmd="set Procspell $T-AM-$ProcElement" />
  2370.                     </elseif>
  2371.                     <elseif SpellTargetRaw="Proc-Brd">
  2372.                         <var cmd="set Procspell $T-Brd-$ProcElement" />
  2373.                     </elseif>
  2374.                     <else>
  2375.                         <addtochat>Unknown Proc: [%SpellTargetRaw]</addtochat>
  2376.                     </else>
  2377.  
  2378.                     <if advanced='"$Procspell" != "None"'>
  2379.                         <changespell spell="$Procspell" />
  2380.                         <changetarget target="&lt;t&gt;" />
  2381.                     </if>
  2382.                     <addtochat>Test spell ($Procspell): %spell &gt; %spellTarget</addtochat>
  2383.                 </elseif>
  2384.             </if>
  2385.         </elseif>
  2386.     </include>
  2387.    
  2388.     <!-- Experimental code for a universal trigger to activate a job's 2HR. -->
  2389.     <include name="Use2HR">
  2390.         <if type="Trigger" spell="ClassTrigger" SpellTargetRaw="2HR">
  2391.             <if mainjob="War">
  2392.                 <changespell spell="Mighty Strikes" />
  2393.                 <changetarget target="&lt;me&gt;" />
  2394.             </if>
  2395.             <elseif mainjob="Mnk">
  2396.             </elseif>
  2397.             <elseif mainjob="Whm">
  2398.             </elseif>
  2399.             <elseif mainjob="Blm">
  2400.             </elseif>
  2401.             <elseif mainjob="Rdm">
  2402.             </elseif>
  2403.             <elseif mainjob="Thf">
  2404.             </elseif>
  2405.             <elseif mainjob="Pld">
  2406.             </elseif>
  2407.             <elseif mainjob="Brd">
  2408.             </elseif>
  2409.             <elseif mainjob="Bst">
  2410.             </elseif>
  2411.             <elseif mainjob="Rng">
  2412.             </elseif>
  2413.             <elseif mainjob="Drk">
  2414.             </elseif>
  2415.             <elseif mainjob="Sam">
  2416.             </elseif>
  2417.             <elseif mainjob="Nin">
  2418.             </elseif>
  2419.             <elseif mainjob="Drg">
  2420.             </elseif>
  2421.             <elseif mainjob="Smn">
  2422.             </elseif>
  2423.             <elseif mainjob="Blu">
  2424.             </elseif>
  2425.             <elseif mainjob="Pup">
  2426.             </elseif>
  2427.             <elseif mainjob="Cor">
  2428.             </elseif>
  2429.             <elseif mainjob="Sch">
  2430.             </elseif>
  2431.             <elseif mainjob="Dnc">
  2432.             </elseif>
  2433.         </if>
  2434.     </include>
  2435.  
  2436.     <!-- Trigger to notify the user at a user-specified interval from the
  2437.         time the trigger is used.
  2438.         Use trigger77 for public /party notifications.
  2439.         Use trigger78 for private notifications that include the /tell chime.
  2440.  
  2441.         Syntax (for a 5 minute/300 second timer):
  2442.         /ma trigger77 300
  2443.     -->
  2444.     <include name="RespawnTimer">
  2445.         <if type="Trigger">
  2446.             <!-- Trigger 77 for /party notifications -->
  2447.             <if spell="Trigger77">
  2448.                 <!-- Validate input duration -->
  2449.                 <if advanced='Regex("%spellTargetRaw", "^\d+$")'>
  2450.                     <!-- Basic warning at full duration -->
  2451.                     <addtochat color="6">~~~~ Starting public respawn timer: %spellTargetRaw seconds.</addtochat>
  2452.                     <command>wait %spellTargetRaw;input /p Respawn time &lt;call12&gt;</command>
  2453.  
  2454.                     <!-- Additional warning when one minute remaining -->
  2455.                     <var cmd="setcalc Warn-Duration %spellTargetRaw - 60" />
  2456.                     <if advanced='$Warn-Duration &gt; 0'>
  2457.                         <command>wait $Warn-Duration;input /p One minute warning &lt;call14&gt;</command>
  2458.                     </if>
  2459.                 </if>
  2460.                 <else>
  2461.                     <addtochat>Invalid timer duration: %SpellTargetRaw</addtochat>
  2462.                 </else>
  2463.             </if>
  2464.             <!-- Trigger 78 for private notifications -->
  2465.             <elseif spell="Trigger78">
  2466.                 <!-- Validate input duration -->
  2467.                 <if advanced='Regex("%spellTargetRaw", "^\d+$")'>
  2468.                     <!-- Basic warning at full duration -->
  2469.                     <addtochat color="6">~~~~ Starting private respawn timer: %spellTargetRaw seconds.</addtochat>
  2470.                     <command>wait %spellTargetRaw;input /ma Trigger80 0</command>
  2471.  
  2472.                     <!-- Additional warning when one minute remaining -->
  2473.                     <var cmd="setcalc Warn-Duration %spellTargetRaw - 60" />
  2474.                     <if advanced='$Warn-Duration &gt; 0'>
  2475.                         <command>wait $Warn-Duration;input /ma Trigger80 60</command>
  2476.                     </if>
  2477.                 </if>
  2478.                 <else>
  2479.                     <addtochat>Invalid timer duration: %spellTargetRaw</addtochat>
  2480.                 </else>
  2481.             </elseif>
  2482.             <!-- Custom notification code for /tell chime messages. -->
  2483.             <elseif spell="Trigger80">
  2484.                 <if spelltargetraw="0">
  2485.                     <addtochat color="12">~~~~ Respawn timer is up.</addtochat>
  2486.                 </if>
  2487.                 <else>
  2488.                     <addtochat color="12">~~~~ One minute warning for respawn timer.</addtochat>
  2489.                 </else>
  2490.             </elseif>
  2491.         </if>
  2492.     </include>
  2493. </includes>
Add Comment
Please, Sign In to add comment