private SpellCastResult ValidateShapeShift() { if (spellValue.CastFlags.HasTargetFlag(SpellCastFlags.IgnoreShapeShift)) { return(SpellCastResult.Success); } IReadOnlyList <AuraEffect> shapeShiftIgnoreEffects = Caster.Auras.GetAuraEffects(AuraEffectType.IgnoreShapeShift); if (shapeShiftIgnoreEffects != null) { for (int i = 0; i < shapeShiftIgnoreEffects.Count; i++) { if (shapeShiftIgnoreEffects[i].IsAffectingSpell(SpellInfo)) { return(SpellCastResult.Success); } } } return(SpellInfo.CheckShapeShift(Caster)); }