Originally Posted by
Mrp
Anyone have a good FASTCAST spellcast scrypt for all jobs?
With all Fastcast gear , Cure spellcasting, Enhancing spellcasting, Elemental , song , blue mage , Tom Staves
IE: My Blm use Fastcast, Curespellcast, Elementalspellcast , enhancingspellcast ( belt )
This is an example of what i'm using right now , but i need to update it. I was thinking make 1 rule for all jobs , instead 1 rule for every jobs but dunno :E
Mrp: here is what you are looking for. I can't post links so I'll just post the code in the thread
Code:
<variables>
<!-- Element Cast Bonus -->
<!-- Benefits from elemental line of attack staves -->
<var name="Fire-CB">0</var>
<var name="Earth-CB">0</var>
<var name="Water-CB">0</var>
<var name="Wind-CB">0</var>
<var name="Ice-CB">14</var>
<var name="Thunder-CB">0</var>
<var name="Light-CB">0</var>
<var name="Dark-CB">0</var>
<!-- End Element Cast Bonus -->
<!-- Misc Cast Bonuses -->
<!-- Bonuses from job traits such as elemental cast speed bonus for blm -->
<var name="MainJob-CB">0</var>
<var name="SubJob-CB">0</var>
<var name="ElementalMagic-CB">30</var>
<var name="EnfeeblingMagic-CB">0</var>
<var name="EnhancingMagic-CB">0</var>
<var name="DarkMagic-CB">0</var>
<var name="HealingMagic-CB">0</var>
<var name="DivineMagic-CB">0</var>
<var name="Singing-CB">0</var>
<var name="Geomancy-CB">0</var>
<var name="WHM-DB">0</var>
<var name="Celerity-CB">0</var>
<!-- End Misc Cast Bonuses -->
<!-- Gear Bonuses -->
<var name="SetFastCast" clear="true">1</var>
<var name="ElementalMagic-GB">33</var>
<var name="EnfeeblingMagic-GB">30</var>
<var name="EnhancingMagic-GB">38</var>
<var name="DarkMagic-GB">30</var>
<var name="HealingMagic-GB">30</var>
<var name="DivineMagic-GB">30</var>
<var name="Singing-GB">30</var>
<var name="Geomancy-GB">30</var>
<!-- End Gear Bonuses -->
<!-- Variables used on each cast to calculate casting time -->
<var name="Total-CB"></var>
<var name="CastTime"></var>
<var name="AfterCastTime"></var>
<var name="MidCastTime"></var>
</variables>
For sets, I have fastcastbase with my default fast cast gear.... every other set is fast-%Skill (I.E. fast-elementalmagic or fast-healingmagic). Some spells, like cures with extra gear have specific names, like fast-cure. All fast-%Skill sets have fastcastbase as a baseset. The more specialized ones base off of their respective skill, so baseset for fast-cure is fast-healingmagic.
Here are the rules.
Code:
<if mode="OR" buffactive="Celerity|Alacrity" advanced='$SpeedFlag == 1'>
<var cmd='set Celerity-CB 50' />
<if mainjob="SCH">
<if element="%WeatherElement" advanced='$UseFastFeet != 0'>
<if advanced='$UseFastFeet == 1'>
<var cmd='set Celerity-CB 60' />
</if>
<else>
<var cmd='set Celerity-CB 65' />
</else>
</if>
</if>
</if>
<else>
<var cmd='set Celerity-CB 0' />
</else>
<!-- the following calculates the total cast bonus as an integer, then calculates the casting time of the spell based on the cast bonus. Near as I can tell, all fast cast bonuses are additive to each other based on my own testing. -->
<if skill="ElementalMagic|DarkMagic|EnhancingMagic|EnfeeblingMagic|HealingMagic|Singing">
<var cmd='setcalc Total-CB ($MainJob-CB + $SubJob-CB + $%Skill-CB + $%Skill-GB + $%SpellElement-CB + $Celerity-CB)' />
<!-- This line is only for my benefit, and I did not feel like removing it. -->
<if advanced='$Debug == 1'>
<addtochat>Total Cast Bonus : $Total-CB</addtochat>
<addtochat>Cast Bonus from Main Job : $MainJob-CB</addtochat>
<addtochat>Cast Bonus from Sub Job : $SubJob-CB</addtochat>
<addtochat>Cast Bonus from Job Traits : $%Skill-CB</addtochat>
<addtochat>Cast Bonus from %Skill Gear : $%Skill-GB</addtochat>
<addtochat>Cast Bonus from %SpellElement : $%SpellElement-CB</addtochat>
<addtochat>Cast Bonus from Celerity : $Celerity-CB</addtochat>
</if>
<!-- This line adjusts the cast bonus based on which arts you have active for enhancing and enfeebling magic. -->
<if skill="EnfeeblingMagic">
<if buffactive="Dark Arts|Addendum: Black">
<if type="BlackMagic">
<var cmd='setcalc Total-CB ($Total-CB + 10)' />
</if>
<else>
<var cmd='setcalc Total-CB ($Total-CB - 20)' />
</else>
</if>
<elseif buffactive="Light Arts|Addendum: White">
<if type="WhiteMagic">
<var cmd='setcalc Total-CB ($Total-CB + 10)' />
</if>
<else>
<var cmd='setcalc Total-CB ($Total-CB - 20)' />
</else>
</elseif>
</if>
<!-- Specifically for use with Heka's Kalasiris. I have this in an includes so my brother can use too and he doesn't have heka's so if you do you can remove the playername part. Adds 5 to total-cb cause I swap Anhur Robe for Heka's. if you don't have a fast cast body, change to + 15. -->
<if spell="Cure*|Cura*" playername="Shadowmeld">
<var cmd='setcalc Total-CB ($Total-CB + 5)' />
</if>
<if spell="Impact" playername="Shadowmeld">
<!-- This rule is specific to Shadowmeld because she is using Nares Cap + Anhur Robe for fast cast normally -->
<var cmd='setcalc Total-CB ($Total-CB - 20)' />
</if>
</if>
<if skill="ElementalMagic|DarkMagic|EnhancingMagic|EnfeeblingMagic|HealingMagic|Singing">
<if advanced='$Debug == 1'>
<addtochat>Total Cast Bonus : $Total-CB</addtochat>
</if>
<if advanced='$Total-CB > 80'>
<!-- If Total-CB exceeds 80, set to 80 for correct calcs -->
<var cmd='set Total-CB 80' />
</if>
<if advanced='$Debug == 1'>
<addtochat>Adjusted Cast Bonus : $Total-CB</addtochat>
</if>
<!-- This line actuall calculates the adjusted cast time -->
<var cmd='setcalc CastTime (%CastTime * (75/100.0) * ((100 - $Total-CB) / 100.0))' />
<var cmd='setcalc MidCastTime ($CastTime * 0.50)' />
<!-- I found that for base cast times less that 3 seconds, it was easier to add an aftercast delay to get it to equip aftercast set at the right time. -->
<if CastTimeLT="3.0">
<aftercastdelay delay="1.0" />
</if>
<!-- In between 3 and 7 seconds it just equips aftercast set at normal aftercast time. -->
<if CastTimeLT="7.0">
<equip when="aftercast" set="%Status" />
<addtochat>CT : Actual CT : MCT : ACT [%CastTime : $CastTime : $MidCastTime : %CastTime]</addtochat>
</if>
<else>
<!-- If the cast time is greater than 7 seconds, I actually calculate a good time to reequip my aftercast set. This prevents me of having 8.5 seconds of downtime when casting Blizzard V and stuff. -->
<!-- I don't really like my method of calculating this, but it has been okay for now -->
<var cmd='setcalc AfterCastTime ((%CastTime + $CastTime) / 3)' />
<cmd when="precast">wait $AfterCastTime; sc set %Status</cmd>
<addtochat>CT : Actual CT : MCT : ACT [%CastTime : $CastTime : $MidCastTime : $AfterCastTime]</addtochat>
</else>
</if>