Code:
<?xml version="1.0"?>
<spellcast xmlns:xi="http://www.w3.org/2001/XInclude">
<config
RequireVersion="2.3"
showGearSwaps="true"
Debug="true"
ShowSpellInfo="true"
AutoLoadXMLOnJobChange="true"
/>
<!--
**********************************************************************
Thanks for trying out my spellcast! I have it set up to my current gear
as an example. Please change it out with your own gear.
Features: Auto Pianissimo, Singing skill on buffs, CHR + on debuffs,
melee set with TP lock, ToAU Ring support, Obi and
Twilight Cape support, Sleep Timer (pretty accurate),
auto-use echo drops when silenced (beta), auto sneak utsusemi
stoneskin removal opon recasting*
(Requres http://f orums.windower.net/files/file/30-cancel/ plugin),
and more~
Setup: All you have to do is set the variables and your gear sets.
Don't edit anything in the "Rules" area.
anything with a $ or % sign in front of it need not be edited.
for the variables 0 = off 1 = on. If you don't have every inst.
to use for var, just use Iron Ram Horn for that slot.
Reccomended Macros: //sc group melee (for easy switch between melee)
/ma "Mage's Ballad III" with "select target"
for auto pianissimo on mages!
-Emirii
***********************************************************************
-->
<variables>
<var name="LockTP">1</var>
<var name="Melee">0</var>
<var name="TwilightCape">1</var>
<var name="UseElementObi">0</var>
<var name="SleepTimers">1</var>
<var name="Main" nooverwrite="true">Joyeuse</var>
<var name="Sub" nooverwrite="true">Genbu's Shield</var>
<var name="ToAURing">Balrahn's Ring</var>
<var name="SetStaff">Apollo's Staff</var>
<var name="Light">Apollo's Staff</var>
<var name="Dark">Pluto's Staff</var>
<var name="Earth">Terra's Staff</var>
<var name="Water">Neptune's Staff</var>
<var name="Wind">Auster's Staff</var>
<var name="Fire">Vulcan's Staff</var>
<var name="Ice">Aquillo's Staff</var>
<var name="Thunder">Jupiter's Staff</var>
<var name="SleepHorn">Mary</var> <!--NONE, MARY, CRADLE, NURSEMAID, PAN -->
<var name="Minuet">Apollo's Flute</var>
<var name="Carol">Crumhorn +1</var>
<var name="March">Faerie Piccolo</var>
<var name="Etude">Rose Harp +1</var>
<var name="Paeon">Ebony Harp</var>
<var name="Minne">Syrinx</var>
<var name="Mambo">Vihuela</var>
<var name="Mazurka">Vihuela</var>
<var name="Madrigal">Traversiere +1</var>
<var name="Requiem">Requiem Flute</var>
<var name="Threnody">Piccolo +1</var>
<var name="Virelai">Iron Ram Horn</var>
<var name="Elegy">Syrinx</var>
<var name="Finale">Iron Ram Horn</var>
</variables>
<rules>
<if skill="Singing">
<equip when="precast" set="songfastcast"/>
</if>
<!--These are the scripting rules! Do not edit! All variables that need to be changed are above^^-->
<equip when="AfterCast" set="Idle" />
<equip when="resting" set="resting" />
<equip when="idle" set="Idle" />
<if status = "Dead">
<action Type = "cancelspell"/>
<action Type = "return"/>
</if>
<if status="Engaged">
<equip when="aftercast" set="engaged" />
</if>
<if notStatus="Engaged">
<equip when="aftercast" set="Idle" />
</if>
<if skill="*Magic|Ninjutsu">
<action type="CastDelay" delay=".3" />
<action type="equip" when="precast" set="FastCast" />
</if>
<if spell="Sneak">
<action type = "equip" when = "Precast" set="FastCast" />
<if TargetType = "self">
<action type = "Command" when = "Precast">cancel 71</action>
</if>
</if>
<if Spell="Stoneskin">
<action type = "equip" when = "Precast" set="FastCast" />
<equip when="midcast" set="Stoneskin" />
<if BuffActive="Stoneskin">
<command when="midcast">cancel 37</command>
</if>
</if>
<if mode="and" skill="*Magic|Ninjutsu|Singing" buffactive="Silence">
<cancelspell />
<command>input /item "Echo Drops" <me></command>
</if>
<if BuffActive="Sleep|Petrification|Stun|Terror|Charm">
<return/>
</if>
<elseif Type="*Magic|BardSong|Ninjutsu" BuffActive="Silence">
<return/>
</elseif>
<elseif Type="Weaponskill|JobAbility|PetCommand" BuffActive="Amnesia">
<cancelspell/>
<return/>
</elseif>
<if Advanced='"Melee" != "1"'>
<equip when="precast">
<main>$%spellelement</main>
<sub>$%SpellElementGrip</sub>
</equip>
</if>
<if Advanced='"Melee" == "1"'>
<if advanced='"LockTP" == "1"'>
<action type="Disable" slot="main|sub" />
</if>
</if>
<if area="*Remnants|Nyzul*">
<action type="equip" when="precast|midcast|aftercast|idle|resting|engaged">
<lring lock="t">Balrahn's Ring</lring>
</action>
</if>
<if Skill="Singing|HealingMagic|DarkMagic|EnfeeblingMagic|ElementalMagic" NotSpell="*na">
<action type="equip" when="midcast">
<main>$%SpellElement</main>
</action>
</if>
<if Advanced='("%SpellElement" = "%WeatherElement" OR "%SpellElement" = "%DayElement")'>
<if advanced='"$TwilightCape" == "1"'>
<equip when="midcast"><back lock="yes">Twilight Cape</back></equip>
</if>
</if>
<if Advanced='("%SpellElement" = "%WeatherElement" OR "%SpellElement" = "%DayElement")'>
<if advanced='"$UseElementObi" == "1"'>
<if Element="Dark"><equip when="midcast"><waist lock="yes">Anrin Obi</waist></equip></if>
<elseif Element="Light"><equip when="midcast"><waist lock="yes">Korin Obi</waist></equip></elseif>
<elseif Element="Thunder"><equip when="midcast"><waist lock="yes">Rairin Obi</waist></equip></elseif>
<elseif Element="Ice"><equip when="midcast"><waist lock="yes">Hyorin Obi</waist></equip></elseif>
<elseif Element="Fire"><equip when="midcast"><waist lock="yes">Karin Obi</waist></equip></elseif>
<elseif Element="Wind"><equip when="midcast"><waist lock="yes">Furin Obi</waist></equip></elseif>
<elseif Element="Water"><equip when="midcast"><waist lock="yes">Suirin Obi</waist></equip></elseif>
<elseif Element="Earth"><equip when="midcast"><waist lock="yes">Dorin Obi</waist></equip></elseif>
</if>
</if>
<if Skill="Healing*">
<if spell="Cure|Cure II|Cure III">
<equip when="midcast" set="Cure" />
</if>
<if spell="Cure IV">
<equip when="midcast" set="Cure4" />
</if>
</if>
<!--END DEFAULTS-->
<!--BRD SET SPECIFIC ACTIONS/SONGS/SPELL BEHAVIOR ** DO NOT EDIT-->
<if spell="Paralyze|Slow|Stoneskin">
<equip when="Precast" set="MaxMND" />
<if Spell="Stoneskin">
<equip when="Midcast">
<main>$Earth</main>
</equip>
</if>
</if>
<if spell="*Requiem*|*Elegy*|*Threnody*|*Virelai*|*Finale*">
<equip when="Midcast" set="MaxCHR" />
<if Spell="*Requiem*">
<equip when="Precast" set="SongFastCast">
<ranged>$Requiem</ranged>
</equip>
</if>
<elseif spell="*Elegy*">
<equip when="Precast" set="SongFastCast">
<ranged>$Elegy</ranged>
</equip>
</elseif>
<elseif spell="*Threnody*">
<equip when="Precast" set="SongFastCast">
<ranged>$Threnody</ranged>
</equip>
</elseif>
<elseif spell="*Virelai*">
<equip when="Precast" set="SongFastCast">
<ranged>$Virelai</ranged>
</equip>
</elseif>
<elseif spell="*Finale*" set="SongFastCast">
<equip when="Precast">
<ranged>$Finale</ranged>
</equip>
</elseif>
</if>
<if Spell="*Minuet*|*Carol*|*March*|*Etude*|*Paeon*|*Minne*|*Mambo*|*Madrigal*|*Mazurka">
<equip when="precast" set="songfastcast"/>
<equip when="Midcast" set="Singing" />
<if Spell="*Minuet*">
<equip when="Precast">
<ranged>$Minuet</ranged>
</equip>
</if>
<elseif spell="*Carol*">
<equip when="Precast">
<ranged>$Carol</ranged>
</equip>
</elseif>
<elseif spell="*March*">
<equip when="Precast">
<ranged>$March</ranged>
</equip>
</elseif>
<elseif spell="*Etude*">
<equip when="Precast" set="SongFastCast">
<ranged>$Etude</ranged>
</equip>
</elseif>
<elseif spell="*Paeon*">
<equip when="Precast" set="SongFastCast">
<ranged>$Paeon</ranged>
</equip>
</elseif>
<elseif spell="*Minne*">
<equip when="Precast" set="SongFastCast">
<ranged>$Minne</ranged>
</equip>
</elseif>
<elseif spell="*Mambo*">
<equip when="Precast" set="SongFastCast">
<ranged>$Mambo</ranged>
</equip>
</elseif>
<elseif spell="*Mazurka*">
<equip when="Precast" set="SongFastCast">
<ranged>$Mazurka</ranged>
</equip>
</elseif>
<elseif spell="*Madrigal*">
<equip when="Precast" set="SongFastCast">
<ranged>$Madrigal</ranged>
</equip>
</elseif>
</if>
<if type="BardSong">
<if SpellTargetType="PLAYER">
<castdelay delay="2" />
<command when="precast">input /raw /ja "Pianissimo" <me></command>
</if>
</if>
<if advanced='"$SleepTimers"="1"'>
<if advanced='"$SleepHorn"="None"'>
<if Spell="Foe Lullaby|Horde Lullaby">
<command when="aftercast">spellcast var inc sleepid;wait 15;input /echo [$sleepid:%spell] <%target> Wearing off in 15s</command>
<command when="aftercast">wait 25;input /echo [$sleepid:%spell] <%target> Wearing off in 5s;spellcast var dec sleepid;</command>
</if>
<elseif Spell="Foe Lullaby II">
<command when="aftercast">spellcast var inc sleepid;wait 30;input /echo [$sleepid:%spell] <%target> Wearing off in 30s</command>
<command when="aftercast">spellcast var inc sleepid;wait 45;input /echo [$sleepid:%spell] <%target> Wearing off in 15s</command>
<command when="aftercast">wait 55;input /echo [$sleepid:%spell] <%target> Wearing off in 5s;spellcast var dec sleepid;</command>
</elseif>
</if>
<elseif advanced='"$SleepHorn"="Mary"'>
<if Spell="Foe Lullaby|Horde Lullaby">
<command when="aftercast">spellcast var inc sleepid;wait 18;input /echo [$sleepid:%spell] <%target> Wearing off in 15s</command>
<command when="aftercast">wait 28;input /echo [$sleepid:%spell] <%target> Wearing off in 5s;spellcast var dec sleepid;</command>
</if>
<elseif Spell="Foe Lullaby II">
<command when="aftercast">spellcast var inc sleepid;wait 33;input /echo [$sleepid:%spell] <%target> Wearing off in 30s</command>
<command when="aftercast">spellcast var inc sleepid;wait 48;input /echo [$sleepid:%spell] <%target> Wearing off in 15s</command>
<command when="aftercast">wait 58;input /echo [$sleepid:%spell] <%target> Wearing off in 5s;spellcast var dec sleepid;</command>
</elseif>
</elseif>
<elseif advanced='"$SleepHorn"="Nursemaid"|"$SleepHorn"="Cradle"'>
<if Spell="Foe Lullaby|Horde Lullaby">
<command when="aftercast">spellcast var inc sleepid;wait 21;input /echo [$sleepid:%spell] <%target> Wearing off in 15s</command>
<command when="aftercast">wait 31;input /echo [$sleepid:%spell] <%target> Wearing off in 5s;spellcast var dec sleepid;</command>
</if>
<elseif Spell="Foe Lullaby II">
<command when="aftercast">spellcast var inc sleepid;wait 36;input /echo [$sleepid:%spell] <%target> Wearing off in 30s</command>
<command when="aftercast">spellcast var inc sleepid;wait 51;input /echo [$sleepid:%spell] <%target> Wearing off in 15s</command>
<command when="aftercast">wait 61;input /echo [$sleepid:%spell] <%target> Wearing off in 5s;spellcast var dec sleepid;</command>
</elseif>
</elseif>
<elseif advanced='"$SleepHorn"="Pan"'>
<if Spell="Foe Lullaby|Horde Lullaby">
<command when="aftercast">spellcast var inc sleepid;wait 24;input /echo [$sleepid:%spell] <%target> Wearing off in 15s</command>
<command when="aftercast">wait 34;input /echo [$sleepid:%spell] <%target> Wearing off in 5s;spellcast var dec sleepid;</command>
</if>
<elseif Spell="Foe Lullaby II">
<command when="aftercast">spellcast var inc sleepid;wait 39;input /echo [$sleepid:%spell] <%target> Wearing off in 30s</command>
<command when="aftercast">spellcast var inc sleepid;wait 57;input /echo [$sleepid:%spell] <%target> Wearing off in 15s</command>
<command when="aftercast">wait 67;input /echo [$sleepid:%spell] <%target> Wearing off in 5s;spellcast var dec sleepid;</command>
</elseif>
</elseif>
<elseif Spell="Soul Voice">
<command when="precast">wait 59;input /echo ==== Soul Voice off @ 2:00 ====</command>
<command when="precast">wait 119;input /echo ==== Soul Voice off @ 1:00 ====</command>
<command when="precast">wait 134;input /echo ==== Soul Voice off @ 0:45 ====</command>
<command when="precast">wait 149;input /echo ==== Soul Voice off @ 0:30 ====</command>
<command when="precast">wait 164;input /echo ==== Soul Voice off @ 0:15 ====</command>
<command when="precast">wait 174;input /echo ==== Soul Voice off @ 0:05 ====</command>
</elseif>
</if>
</rules>
</spellcast>
I tried to upgrade my brd's spellcast via copying one i saw on guildwork that had auto pianissimo but I cant seem to get it to put on instruments. I can handle everything else fairly simply. There wasn't any songfastcast in the xml so I snuck it up on top of the rules section(in italics for your convenience) but it's existence as far as i've tested doesn't have anything to do with the lack of instrument swapping. I'm going to add ws stuff later but that's secondary to this shit actually working atm.
Took out the groups and sets cause you guys dont need to skim through that crap.