Motenten

Mote-Rules-Include r4

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