A little late to the party i guess :x
About what Xnite was asking, I would say from memory that changing your current rule from:
Code
<if spell="*spirit|Carbuncle|Fenrir|Ifrit|Titan|Leviathan|Garuda|Shiva|Ramuh|Diabolos">
<equip when="precast" set="Skill" />
<equip when="Aftercast" set="Perp" />
<if Advanced='"%DayElement"="%petvalid"'>
<action Type="Equip">
<hands>$Perphand</hands>
</action>
<else>
<action type="equip">
<hands>Nashira Gages</hands>
</action>
</else>
</if>
</if>
To this one:
Code
<if spell="*spirit|Carbuncle|Fenrir|Ifrit|Titan|Leviathan|Garuda|Shiva|Ramuh|Diabolos">
<if advanced='"%DayElement"="%SpellElement"'>
<command when="precast">sc var set PerpHand Call. Bracers +2</command>
<equip when="precast" set="Skill" />
<equip when="Aftercast" set="Perp">
<hands>Call. Bracers +2</hands>
</equip>
</if>
<else>
<command when="precast">sc var set PerpHand Nashira Gages</command>
<equip when="precast" set="Skill" />
<equip when="Aftercast" set="Perp">
<hands>Nashira Gages</hands>
</equip>
</else>
</if>
should do what you wanted, put the hands in the aftercast and change the Perphands variable value for future aftercasts.
It doesn't support weather and it mess with carbuncle mitts if you still use them though.
I believe i had weather support on my newest xml but I can't access it currently from here, i can share it later if you did not find what you wanted yet.
About the PetTP thing, I'm not really familiar with it, but if it works like HP and MP it should be like this:
If Pet Tp is greater than:
Code
<if advanced='"%PetTPGT" = "115"'>
If Pet Tp is less than:
Code
<if advanced='"%PetTPLT" = "115"'>