Took the base of this from Whitewing.
Most of my jobs use this to one extent or another. The Sleep timers are based off of the times on wiki and are for unresisted casts. The cancel times are based off my whm for whm spells and my nin for nin spells neither using fast cast So if you have fast cast or cast time reduction you might need to change them.
<?xml version="1.0" ?>
<includes>
<include name = "VarStaves">
<!--Variables for HQ Elemental Staves (not needed for NQ see Staff Set notes.)-->
<var name="IceStaff"/>
<var name="DarkStaff">Dark Staff</var>
<var name="ThunderStaff"/>
<var name="LightStaff">Light Staff</var>
<var name="WindStaff"/>
<var name="FireStaff"/>
<var name="EarthStaff">Earth Staff</var>
<var name="WaterStaff"/>
</include>
<include name = "VarObis">
<var name="DarkObi">0</var>
<var name="LightObi">1</var>
<var name="ThunderObi">0</var>
<var name="IceObi">0</var>
<var name="FireObi">0</var>
<var name="WindObi">0</var>
<var name="WaterObi">0</var>
<var name="EarthObi">0</var>
</include>
<include name = "DeadRules">
<if status = "Dead">
<action Type = "cancelspell"/>
<action Type = "return"/>
</if>
</include>
<include name = "SleeptoChat">
<if spell="Repose">
<cmd when="aftercast">spellcast var inc sleepid;wait 45;input /echo [$sleepid:%spell] <%SpellTargetName> Wearing off in 45s</cmd>
<cmd when="aftercast">wait 75;input /echo [$sleepid:%spell] <%SpellTargetName>Wearing off in 15s</cmd>
<cmd when="aftercast">wait 85;input /echo [$sleepid:%spell] <%SpellTargetName>Wearing off in 5s;spellcast var dec sleepid;</cmd>
</if>
<elseif spell="* Lullaby">
<cmd when="aftercast">spellcast var inc sleepid;wait 15;input /echo [$sleepid:%spell] <%SpellTargetName> Wearing off in 15s</cmd>
<cmd when="aftercast">wait 20;input /echo [$sleepid:%spell] <%SpellTargetName>Wearing off in 10s</cmd>
<cmd when="aftercast">wait 25;input /echo [$sleepid:%spell] <%SpellTargetName>Wearing off in 5s;spellcast var dec sleepid;</cmd>
</elseif>
<elseif spell="Sleep|Sleepga">
<cmd when="aftercast">spellcast var inc sleepid;wait 30;input /echo [$sleepid:%spell] <%SpellTargetName> Wearing off in 30s</cmd>
<cmd when="aftercast">wait 45;input /echo [$sleepid:%spell] <%SpellTargetName>Wearing off in 15s</cmd>
<cmd when="aftercast">wait 55;input /echo [$sleepid:%spell] <%SpellTargetName>Wearing off in 5s;spellcast var dec sleepid;</cmd>
</elseif>
<elseif spell="Sleep II|Sleepga II">
<cmd when="aftercast">spellcast var inc sleepid;wait 45;input /echo [$sleepid:%spell] <%SpellTargetName> Wearing off in 45s</cmd>
<cmd when="aftercast">wait 75;input /echo [$sleepid:%spell] <%SpellTargetName>Wearing off in 15s</cmd>
<cmd when="aftercast">wait 85;input /echo [$sleepid:%spell] <%SpellTargetName>Wearing off in 5s;spellcast var dec sleepid;</cmd>
</elseif>
</include>
<include name = "ObiRules">
<if advanced = '("%SpellElement" = "%WeatherElement" OR "%SpellElement" = "%DayElement") AND "$%SpellElementObi" = "1"'>
<if Element = "Dark">
<action type = "equip" when = "midcast">
<waist lock = "yes">Anrin Obi</waist>
</action>
</if>
<elseif Element = "Light">
<action type = "equip" when = "midcast">
<waist lock = "yes">Korin Obi</waist>
</action>
</elseif>
<elseif Element = "Thunder">
<action type = "equip" when = "midcast">
<waist lock = "yes">Rairin Obi</waist>
</action>
</elseif>
<elseif Element = "Ice">
<action type = "equip" when = "midcast">
<waist lock = "yes">Hyorin Obi</waist>
</action>
</elseif>
<elseif Element = "Fire">
<action type = "equip" when = "midcast">
<waist lock = "yes">Karin Obi</waist>
</action>
</elseif>
<elseif Element = "Wind">
<action type = "equip" when = "midcast">
<waist lock = "yes">Furin Obi</waist>
</action>
</elseif>
<elseif Element = "Water">
<action type = "equip" when = "midcast">
<waist lock = "yes">Suirin Obi</waist>
</action>
</elseif>
<elseif Element = "Earth">
<action type = "equip" when = "midcast">
<waist lock = "yes">Dorin Obi</waist>
</action>
</elseif>
</if>
</include>
<include name = "CancelRules">
<if spell="Spectral Jig">
<if BuffActive="Sneak">
<cmd when="precast">cancel 71</cmd>
</if>
</if>
<elseif Spell="Monomi*">
<if BuffActive="Sneak">
<midcastdelay delay="2.5" />
<cmd when="midcast">cancel 71</cmd>
</if>
</elseif>
<elseif spell="Sneak">
<if TargetType="NONE|NPC|SELF">
<ChangeTarget Target="<me>" />
</if>
<if TargetType="self|None|NPC">
<if BuffActive="Sneak">
<midcastdelay delay="2.5" />
<cmd when="midcast">cancel 71</cmd>
</if>
</if>
</elseif>
<elseif Spell = "Stoneskin" BuffActive = "Stoneskin">
<action type = "command" when = "midcast">cancel 37</action>
<action type = "midcastdelay" delay = "4"/>
</elseif>
<elseif spell="Reraise*">
<if BuffActive="Reraise">
<midcastdelay delay="5" />
<cmd when="midcast">cancel 113</cmd>
</if>
</elseif>
</include>
<include name = "WeaponSkillRule">
<elseif Type="WeaponSkill">
<if TPGT="99">
<if advanced="%SpellTargetDistance < 4">
<CastDelay Delay=".5"/>
<equip when="precast|midcast" set="%Spell"/>
</if>
<else>
<cancelspell/>
<addtochat>Target Too Far WS Canceled</addtochat>
</else>
</if>
<else>
<cancelspell/>
<addtochat>Not Enough TP WS Canceled</addtochat>
</else>
</elseif>
</include>
</includes>