Been a while since I have updated these, but I noticed (after about 5 years) that there are some items I never find. This is because I was missing some specific combinations, and also the mod struct for +5^50 and +5wEnch were
:mad: So perfect wands were never really found since 20/20 is so unbelievably rare.
I have also added more combinations of focus to keep (+30 20% +1 20/10 etc) since on skins like Paper Lanterns and Paper Fans this can be a pretty expensive item.
I actually think the 10% mods were wrong too, I have modified them, but they require further testing. Its hard to find these mods on weapons to test! I also added the high energy mods quickly, so it should save these on wands and foci. Again, if any issues, please comment!
Code:
Func IsPerfectCaster($aItem)
Local $ModStruct = GetModStruct($aItem)
Local $A = GetItemAttribute($aItem)
; Universal mods
Local $PlusFive = StringInStr($ModStruct, "05320823", 0, 1) ; Mod struct for +5^50
Local $PlusFiveEnch = StringInStr($ModStruct, "0500F822", 0, 1)
Local $EnergyAlways15 = StringInStr($ModStruct, "0F00D822", 0 ,1) ; Energy +15
Local $EnergyRegen = StringInStr($ModStruct, "0100C820", 0 ,1) ; Energy regeneration -1
Local $10Cast = StringInStr($ModStruct, "000A0822", 0, 1) ; Mod struct for 10% cast
Local $10Recharge = StringInStr($ModStruct, "000AA823", 0, 1) ; Mod struct for 10% recharge
Local $Plus30 = StringInStr($ModStruct, "1E4823", 0, 1) ; Mod struct for +30 (shield only?)
; Plus 1 Mods
Local $PlusIllusion = StringInStr($ModStruct, "0118240", 0, 1) ; +1 Illu 20%
Local $PlusDomination = StringInStr($ModStruct, "0218240", 0, 1) ; +1 Dom 20%
Local $PlusInspiration = StringInStr($ModStruct, "0318240", 0, 1) ; +1 Insp 20%
Local $PlusBlood = StringInStr($ModStruct, "0418240", 0, 1) ; +1 Blood 20%
Local $PlusDeath = StringInStr($ModStruct, "0518240", 0, 1) ; +1 Death 20%
Local $PlusSoulReap = StringInStr($ModStruct, "0618240", 0, 1) ; +1 SoulR 20%
Local $PlusCurses = StringInStr($ModStruct, "0718240", 0, 1) ; +1 Curses 20%
Local $PlusAir = StringInStr($ModStruct, "0818240", 0, 1) ; +1 Air 20%
Local $PlusEarth = StringInStr($ModStruct, "0918240", 0, 1) ; +1 Earth 20%
Local $PlusFire = StringInStr($ModStruct, "0A18240", 0, 1) ; +1 Fire 20%
Local $PlusWater = StringInStr($ModStruct, "0B18240", 0, 1) ; +1 Water 20%
Local $PlusHealing = StringInStr($ModStruct, "0D18240", 0, 1) ; +1 Heal 20%
Local $PlusSmite = StringInStr($ModStruct, "0E18240", 0, 1) ; +1 Smite 20%
Local $PlusProt = StringInStr($ModStruct, "0F18240", 0, 1) ; +1 Prot 20%
Local $PlusDivine = StringInStr($ModStruct, "1018240", 0, 1) ; +1 Divine 20%
; Ele mods
Local $Fire20Casting = StringInStr($ModStruct, "0A141822", 0, 1) ; Mod struct for 20% fire
Local $Fire20Recharge = StringInStr($ModStruct, "0A149823", 0, 1)
Local $Water20Casting = StringInStr($ModStruct, "0B141822", 0, 1) ; Mod struct for 20% water
Local $Water20Recharge = StringInStr($ModStruct, "0B149823", 0, 1)
Local $Air20Casting = StringInStr($ModStruct, "08141822", 0, 1) ; Mod struct for 20% air
Local $Air20Recharge = StringInStr($ModStruct, "08149823", 0, 1)
Local $Earth20Casting = StringInStr($ModStruct, "09141822", 0, 1)
Local $Earth20Recharge = StringInStr($ModStruct, "09149823", 0, 1)
Local $Energy20Casting = StringInStr($ModStruct, "0C141822", 0, 1)
Local $Energy20Recharge = StringInStr($ModStruct, "0C149823", 0, 1)
; Monk mods
Local $Smiting20Casting = StringInStr($ModStruct, "0E141822", 0, 1) ; Mod struct for 20% smite
Local $Smiting20Recharge = StringInStr($ModStruct, "0E149823", 0, 1)
Local $Divine20Casting = StringInStr($ModStruct, "10141822", 0, 1) ; Mod struct for 20% divine
Local $Divine20Recharge = StringInStr($ModStruct, "10149823", 0, 1)
Local $Healing20Casting = StringInStr($ModStruct, "0D141822", 0, 1) ; Mod struct for 20% healing
Local $Healing20Recharge = StringInStr($ModStruct, "0D149823", 0, 1)
Local $Protection20Casting = StringInStr($ModStruct, "0F141822", 0, 1) ; Mod struct for 20% protection
Local $Protection20Recharge = StringInStr($ModStruct, "0F149823", 0, 1)
; Rit mods
Local $Channeling20Casting = StringInStr($ModStruct, "22141822", 0, 1) ; Mod struct for 20% channeling
Local $Channeling20Recharge = StringInStr($ModStruct, "22149823", 0, 1)
Local $Restoration20Casting = StringInStr($ModStruct, "21141822", 0, 1)
Local $Restoration20Recharge = StringInStr($ModStruct, "21149823", 0, 1)
Local $Communing20Casting = StringInStr($ModStruct, "20141822", 0, 1)
Local $Communing20Recharge = StringInStr($ModStruct, "20149823", 0, 1)
Local $Spawning20Casting = StringInStr($ModStruct, "24141822", 0, 1) ; Spawning - Unconfirmed
Local $Spawning20Recharge = StringInStr($ModStruct, "24149823", 0, 1) ; Spawning - Unconfirmed
; Mes mods
Local $Illusion20Recharge = StringInStr($ModStruct, "01149823", 0, 1)
Local $Illusion20Casting = StringInStr($ModStruct, "01141822", 0, 1)
Local $Domination20Casting = StringInStr($ModStruct, "02141822", 0, 1) ; Mod struct for 20% domination
Local $Domination20Recharge = StringInStr($ModStruct, "02149823", 0, 1) ; Mod struct for 20% domination recharge
Local $Inspiration20Recharge = StringInStr($ModStruct, "03149823", 0, 1)
Local $Inspiration20Casting = StringInStr($ModStruct, "03141822", 0, 1)
; Necro mods
Local $Death20Casting = StringInStr($ModStruct, "05141822", 0, 1) ; Mod struct for 20% death
Local $Death20Recharge = StringInStr($ModStruct, "05149823", 0, 1)
Local $Blood20Recharge = StringInStr($ModStruct, "04149823", 0, 1)
Local $Blood20Casting = StringInStr($ModStruct, "04141822", 0, 1)
Local $SoulReap20Recharge = StringInStr($ModStruct, "06149823", 0, 1)
Local $SoulReap20Casting = StringInStr($ModStruct, "06141822", 0, 1)
Local $Curses20Recharge = StringInStr($ModStruct, "07149823", 0, 1)
Local $Curses20Casting = StringInStr($ModStruct, "07141822", 0, 1)
Switch $A
Case 1 ; Illusion
If $PlusFive > 0 Or $PlusFiveEnch > 0 Then
If $Illusion20Casting > 0 Or $Illusion20Recharge > 0 Then
Return True
EndIf
EndIf
If $Illusion20Recharge > 0 Or $Illusion20Casting > 0 Then
If $10Cast > 0 Or $10Recharge > 0 Or ($EnergyAlways15 > 0 And $EnergyRegen > 0) Then
Return True
EndIf
EndIf
If $Illusion20Recharge > 0 Then
If $Illusion20Casting > 0 Then
Return True
EndIf
EndIf
If $Plus30 > 0 Then
If $Illusion20Casting > 0 Or $Illusion20Recharge > 0 Or $PlusIllusion > 0 Or $10Recharge > 0 Then
Return True
EndIf
EndIf
Return False
Case 2 ; Domination
If $PlusFive > 0 Or $PlusFiveEnch > 0 Then
If $Domination20Casting > 0 Or $Domination20Recharge > 0 Then
Return True
EndIf
EndIf
If $Domination20Recharge > 0 Or $Domination20Casting > 0 Then
If $10Cast > 0 Or $10Recharge > 0 Or ($EnergyAlways15 > 0 And $EnergyRegen > 0) Then
Return True
EndIf
EndIf
If $Domination20Recharge > 0 Then
If $Domination20Casting > 0 Then
Return True
EndIf
EndIf
If $Plus30 > 0 Then
If $Domination20Casting > 0 Or $Domination20Recharge > 0 Or $PlusDomination > 0 Or $10Recharge > 0 Then
Return True
EndIf
EndIf
Return False
Case 3 ; Inspiration
If $PlusFive > 0 Or $PlusFiveEnch > 0 Then
If $Inspiration20Casting > 0 Or $Inspiration20Recharge > 0 Then
Return True
EndIf
EndIf
If $Inspiration20Recharge > 0 Or $Inspiration20Casting > 0 Then
If $10Cast > 0 Or $10Recharge > 0 Or ($EnergyAlways15 > 0 And $EnergyRegen > 0) Then
Return True
EndIf
EndIf
If $Inspiration20Recharge > 0 Then
If $Inspiration20Casting > 0 Then
Return True
EndIf
EndIf
If $Plus30 > 0 Then
If $Inspiration20Casting > 0 Or $Inspiration20Recharge > 0 Or $PlusInspiration > 0 Or $10Recharge > 0 Then
Return True
EndIf
EndIf
Return False
Case 4 ; Blood
If $PlusFive > 0 Or $PlusFiveEnch > 0 Then
If $Blood20Casting > 0 Or $Blood20Recharge > 0 Then
Return True
EndIf
EndIf
If $Blood20Recharge > 0 Or $Blood20Casting > 0 Then
If $10Cast > 0 Or $10Recharge > 0 Or ($EnergyAlways15 > 0 And $EnergyRegen > 0) Then
Return True
EndIf
EndIf
If $Blood20Recharge > 0 Then
If $Blood20Casting > 0 Then
Return True
EndIf
EndIf
If $Plus30 > 0 Then
If $Blood20Casting > 0 Or $Blood20Recharge > 0 Or $PlusBlood > 0 Or $10Recharge > 0 Then
Return True
EndIf
EndIf
Return False
Case 5 ; Death
If $PlusFive > 0 Or $PlusFiveEnch > 0 Then
If $Death20Casting > 0 Or $Death20Recharge > 0 Then
Return True
EndIf
EndIf
If $Death20Recharge > 0 Or $Death20Casting > 0 Then
If $10Cast > 0 Or $10Recharge > 0 Or ($EnergyAlways15 > 0 And $EnergyRegen > 0) Then
Return True
EndIf
EndIf
If $Death20Recharge > 0 Then
If $Death20Casting > 0 Then
Return True
EndIf
EndIf
If $Plus30 > 0 Then
If $Death20Casting > 0 Or $Death20Recharge > 0 Or $PlusDeath > 0 Or $10Recharge > 0 Then
Return True
EndIf
EndIf
Return False
Case 6 ; SoulReap - Doesnt drop?
If $PlusFive > 0 Or $PlusFiveEnch > 0 Then
If $SoulReap20Casting > 0 Or $SoulReap20Recharge > 0 Then
Return True
EndIf
EndIf
If $SoulReap20Recharge > 0 Or $SoulReap20Casting > 0 Then
If $10Cast > 0 Or $10Recharge > 0 Or ($EnergyAlways15 > 0 And $EnergyRegen > 0) Then
Return True
EndIf
EndIf
If $SoulReap20Recharge > 0 Then
If $SoulReap20Casting > 0 Then
Return True
EndIf
EndIf
If $Plus30 > 0 Then
If $SoulReap20Casting > 0 Or $SoulReap20Recharge > 0 Or $PlusSoulReap > 0 Or $10Recharge > 0 Then
Return True
EndIf
EndIf
If ($EnergyAlways15 > 0 And $EnergyRegen > 0) Then
If $Blood20Casting > 0 Or $Blood20Recharge > 0 Or $Death20Casting > 0 Or $Death20Recharge > 0 Or $Curses20Casting > 0 Or $Curses20Recharge > 0 Or $SoulReap20Casting > 0 Or $SoulReap20Recharge > 0 Then
Return True
EndIf
EndIf
Return False
Case 7 ; Curses
If $PlusFive > 0 Or $PlusFiveEnch > 0 Then
If $Curses20Casting > 0 Or $Curses20Recharge > 0 Then
Return True
EndIf
EndIf
If $Curses20Recharge > 0 Or $Curses20Casting > 0 Then
If $10Cast > 0 Or $10Recharge > 0 Or ($EnergyAlways15 > 0 And $EnergyRegen > 0) Then
Return True
EndIf
EndIf
If $Curses20Recharge > 0 Then
If $Curses20Casting > 0 Then
Return True
EndIf
EndIf
If $Plus30 > 0 Then
If $Curses20Casting > 0 Or $Curses20Recharge > 0 Or $PlusCurses > 0 Or $10Recharge > 0 Then
Return True
EndIf
EndIf
Return False
Case 8 ; Air
If $PlusFive > 0 Or $PlusFiveEnch > 0 Then
If $Air20Casting > 0 Or $Air20Recharge > 0 Then
Return True
EndIf
EndIf
If $Air20Recharge > 0 Or $Air20Casting > 0 Then
If $10Cast > 0 Or $10Recharge > 0 Or ($EnergyAlways15 > 0 And $EnergyRegen > 0) Then
Return True
EndIf
EndIf
If $Air20Recharge > 0 Then
If $Air20Casting > 0 Then
Return True
EndIf
EndIf
If $Plus30 > 0 Then
If $Air20Casting > 0 Or $Air20Recharge > 0 Or $PlusAir > 0 Or $10Recharge > 0 Then
Return True
EndIf
EndIf
Return False
Case 9 ; Earth
If $PlusFive > 0 Or $PlusFiveEnch > 0 Then
If $Earth20Casting > 0 Or $Earth20Recharge > 0 Then
Return True
EndIf
EndIf
If $Earth20Recharge > 0 Or $Earth20Casting > 0 Then
If $10Cast > 0 Or $10Recharge > 0 Or ($EnergyAlways15 > 0 And $EnergyRegen > 0) Then
Return True
EndIf
EndIf
If $Earth20Recharge > 0 Then
If $Earth20Casting > 0 Then
Return True
EndIf
EndIf
If $Plus30 > 0 Then
If $Earth20Casting > 0 Or $Earth20Recharge > 0 Or $PlusEarth > 0 Or $10Recharge > 0 Then
Return True
EndIf
EndIf
Return False
Case 10 ; Fire
If $PlusFive > 0 Or $PlusFiveEnch > 0 Then
If $Fire20Casting > 0 Or $Fire20Recharge > 0 Then
Return True
EndIf
EndIf
If $Fire20Recharge > 0 Or $Fire20Casting > 0 Then
If $10Cast > 0 Or $10Recharge > 0 Or ($EnergyAlways15 > 0 And $EnergyRegen > 0) Then
Return True
EndIf
EndIf
If $Fire20Recharge > 0 Then
If $Fire20Casting > 0 Then
Return True
EndIf
EndIf
If $Plus30 > 0 Then
If $Fire20Casting > 0 Or $Fire20Recharge > 0 Or $PlusFire > 0 Or $10Recharge > 0 Then
Return True
EndIf
EndIf
Return False
Case 11 ; Water
If $PlusFive > 0 Or $PlusFiveEnch > 0 Then
If $Water20Casting > 0 Or $Water20Recharge > 0 Then
Return True
EndIf
EndIf
If $Water20Recharge > 0 Or $Water20Casting > 0 Then
If $10Cast > 0 Or $10Recharge > 0 Or ($EnergyAlways15 > 0 And $EnergyRegen > 0) Then
Return True
EndIf
EndIf
If $Water20Recharge > 0 Then
If $Water20Casting > 0 Then
Return True
EndIf
EndIf
If $Plus30 > 0 Then
If $Water20Casting > 0 Or $Water20Recharge > 0 Or $PlusWater > 0 Or $10Recharge > 0 Then
Return True
EndIf
EndIf
Return False
Case 12 ; Energy Storage
If $PlusFive > 0 Or $PlusFiveEnch > 0 Then
If $Energy20Casting > 0 Or $Energy20Recharge > 0 Or $Water20Casting > 0 Or $Water20Recharge > 0 Or $Fire20Casting > 0 Or $Fire20Recharge > 0 Or $Earth20Casting > 0 Or $Earth20Recharge > 0 Or $Air20Casting > 0 Or $Air20Recharge > 0 Then
Return True
EndIf
EndIf
If $Energy20Recharge > 0 Or $Energy20Casting > 0 Then
If $10Cast > 0 Or $10Recharge > 0 Or $Water20Casting > 0 Or $Water20Recharge > 0 Or $Fire20Casting > 0 Or $Fire20Recharge > 0 Or $Earth20Casting > 0 Or $Earth20Recharge > 0 Or $Air20Casting > 0 Or $Air20Recharge > 0 Then
Return True
EndIf
EndIf
If $Energy20Recharge > 0 Then
If $Energy20Casting > 0 Then
Return True
EndIf
EndIf
If $10Cast > 0 Or $10Recharge > 0 Then
If $Water20Casting > 0 Or $Water20Recharge > 0 Or $Fire20Casting > 0 Or $Fire20Recharge > 0 Or $Earth20Casting > 0 Or $Earth20Recharge > 0 Or $Air20Casting > 0 Or $Air20Recharge > 0 Then
Return True
EndIf
EndIf
If $Plus30 > 0 Then
If $Water20Casting > 0 Or $Water20Recharge > 0 Or $Fire20Casting > 0 Or $Fire20Recharge > 0 Or $Earth20Casting > 0 Or $Earth20Recharge > 0 Or $Air20Casting > 0 Or $Air20Recharge > 0 Or $10Recharge > 0 Then
Return True
EndIf
EndIf
If ($EnergyAlways15 > 0 And $EnergyRegen > 0) Then
If $Water20Casting > 0 Or $Water20Recharge > 0 Or $Fire20Casting > 0 Or $Fire20Recharge > 0 Or $Earth20Casting > 0 Or $Earth20Recharge > 0 Or $Air20Casting > 0 Or $Air20Recharge > 0 Or $10Recharge > 0 Then
Return True
EndIf
EndIf
Return False
Case 13 ; Healing
If $PlusFive > 0 Or $PlusFiveEnch > 0 Then
If $Healing20Casting > 0 Or $Healing20Recharge > 0 Then
Return True
EndIf
EndIf
If $Healing20Recharge > 0 Or $Healing20Casting > 0 Then
If $10Cast > 0 Or $10Recharge > 0 Or ($EnergyAlways15 > 0 And $EnergyRegen > 0) Then
Return True
EndIf
EndIf
If $Healing20Recharge > 0 Then
If $Healing20Casting > 0 Then
Return True
EndIf
EndIf
If $Plus30 > 0 Then
If $Healing20Casting > 0 Or $Healing20Recharge > 0 Or $PlusHealing > 0 Or $10Recharge > 0 Then
Return True
EndIf
EndIf
Return False
Case 14 ; Smiting
If $PlusFive > 0 Or $PlusFiveEnch > 0 Then
If $Smiting20Casting > 0 Or $Smiting20Recharge > 0 Then
Return True
EndIf
EndIf
If $Smiting20Recharge > 0 Or $Smiting20Casting > 0 Then
If $10Cast > 0 Or $10Recharge > 0 Or ($EnergyAlways15 > 0 And $EnergyRegen > 0) Then
Return True
EndIf
EndIf
If $Smiting20Recharge > 0 Then
If $Smiting20Casting > 0 Then
Return True
EndIf
EndIf
If $Plus30 > 0 Then
If $Smiting20Casting > 0 Or $Smiting20Recharge > 0 Or $PlusSmite > 0 Or $10Recharge > 0 Then
Return True
EndIf
EndIf
Return False
Case 15 ; Protection
If $PlusFive > 0 Or $PlusFiveEnch > 0 Then
If $Protection20Casting > 0 Or $Protection20Recharge > 0 Then
Return True
EndIf
EndIf
If $Protection20Recharge > 0 Or $Protection20Casting > 0 Then
If $10Cast > 0 Or $10Recharge > 0 Or ($EnergyAlways15 > 0 And $EnergyRegen > 0) Then
Return True
EndIf
EndIf
If $Protection20Recharge > 0 Then
If $Protection20Casting > 0 Then
Return True
EndIf
EndIf
If $Plus30 > 0 Then
If $Protection20Casting > 0 Or $Protection20Recharge > 0 Or $PlusProt > 0 Or $10Recharge > 0 Then
Return True
EndIf
EndIf
Return False
Case 16 ; Divine
If $PlusFive > 0 Or $PlusFiveEnch > 0 Then
If $Divine20Casting > 0 Or $Divine20Recharge > 0 Or $Healing20Casting > 0 Or $Healing20Recharge > 0 Or $Smiting20Casting > 0 Or $Smiting20Recharge > 0 Or $Protection20Casting > 0 Or $Protection20Recharge > 0 Then
Return True
EndIf
EndIf
If $Divine20Recharge > 0 Or $Divine20Casting > 0 Then
If $10Cast > 0 Or $10Recharge > 0 Or $Healing20Casting > 0 Or $Healing20Recharge > 0 Or $Smiting20Casting > 0 Or $Smiting20Recharge > 0 Or $Protection20Casting > 0 Or $Protection20Recharge > 0 Then
Return True
EndIf
EndIf
If $Divine20Recharge > 0 Then
If $Divine20Casting > 0 Then
Return True
EndIf
EndIf
If $10Cast > 0 Or $10Recharge > 0 Then
If $Healing20Casting > 0 Or $Healing20Recharge > 0 Or $Smiting20Casting > 0 Or $Smiting20Recharge > 0 Or $Protection20Casting > 0 Or $Protection20Recharge > 0 Then
Return True
EndIf
EndIf
If $Plus30 > 0 Then
If $Healing20Casting > 0 Or $Healing20Recharge > 0 Or $Smiting20Casting > 0 Or $Smiting20Recharge > 0 Or $Protection20Casting > 0 Or $Protection20Recharge > 0 Then
Return True
EndIf
EndIf
If ($EnergyAlways15 > 0 And $EnergyRegen > 0) Then
If $Healing20Casting > 0 Or $Healing20Recharge > 0 Or $Smiting20Casting > 0 Or $Smiting20Recharge > 0 Or $Protection20Casting > 0 Or $Protection20Recharge > 0 Then
Return True
EndIf
EndIf
Return False
Case 32 ; Communing
If $PlusFive > 0 Or $PlusFiveEnch > 0 Then
If $Communing20Casting > 0 Or $Communing20Recharge > 0 Then
Return True
EndIf
EndIf
If $Communing20Recharge > 0 Or $Communing20Casting > 0 Then
If $10Cast > 0 Or $10Recharge > 0 Or ($EnergyAlways15 > 0 And $EnergyRegen > 0) Then
Return True
EndIf
EndIf
If $Communing20Recharge > 0 Then
If $Communing20Casting > 0 Then
Return True
EndIf
EndIf
If $Plus30 > 0 Then
If $Communing20Casting > 0 Or $Communing20Recharge > 0 Or $10Recharge > 0 Then
Return True
EndIf
EndIf
Return False
Case 33 ; Restoration
If $PlusFive > 0 Or $PlusFiveEnch > 0 Then
If $Restoration20Casting > 0 Or $Restoration20Recharge > 0 Then
Return True
EndIf
EndIf
If $Restoration20Recharge > 0 Or $Restoration20Casting > 0 Then
If $10Cast > 0 Or $10Recharge > 0 Or ($EnergyAlways15 > 0 And $EnergyRegen > 0) Then
Return True
EndIf
EndIf
If $Restoration20Recharge > 0 Then
If $Restoration20Casting > 0 Then
Return True
EndIf
EndIf
If $Plus30 > 0 Then
If $Restoration20Casting > 0 Or $Restoration20Recharge > 0 Or $10Recharge > 0 Then
Return True
EndIf
EndIf
Return False
Case 34 ; Channeling
If $PlusFive > 0 Or $PlusFiveEnch > 0 Then
If $Channeling20Casting > 0 Or $Channeling20Recharge > 0 Then
Return True
EndIf
EndIf
If $Channeling20Recharge > 0 Or $Channeling20Casting > 0 Then
If $10Cast > 0 Or $10Recharge > 0 Or ($EnergyAlways15 > 0 And $EnergyRegen > 0) Then
Return True
EndIf
EndIf
If $Channeling20Recharge > 0 Then
If $Channeling20Casting > 0 Then
Return True
EndIf
EndIf
If $Plus30 > 0 Then
If $Channeling20Casting > 0 Or $Channeling20Recharge > 0 Or $10Recharge > 0 Then
Return True
EndIf
EndIf
Return False
Case 36 ; Spawning - Unconfirmed
If $PlusFive > 0 Or $PlusFiveEnch > 0 Then
If $Spawning20Casting > 0 Or $Spawning20Recharge > 0 Then
Return True
EndIf
EndIf
If $Spawning20Recharge > 0 Or $Spawning20Casting > 0 Then
If $10Cast > 0 Or $10Recharge > 0 Or ($EnergyAlways15 > 0 And $EnergyRegen > 0) Then
Return True
EndIf
EndIf
If $Spawning20Recharge > 0 Then
If $Spawning20Casting > 0 Then
Return True
EndIf
EndIf
If $Plus30 > 0 Then
If $Spawning20Casting > 0 Or $Spawning20Recharge > 0 Or $10Recharge > 0 Then
Return True
EndIf
EndIf
Return False
EndSwitch
Return False
EndFunc