public static SpellCheckCastResult SPELL_EFFECT_SCHOOL_DAMAGE(SpellCast Spell, List <WorldObject> Targets, int Index, Item Item)
        {
            int damage  = 0;
            int current = 0;

            foreach (WorldObject t in Targets)
            {
                if (!t.IsTypeOf(ObjectTypes.TYPE_UNIT))
                {
                    continue;
                }

                Unit u = (Unit)t;
                damage = Spell.GetValue(u, Index);

                if (current > 0)
                {
                    damage *= 1 ^ current;
                }

                u.DealSpellDamage(Spell, damage, SpellDamageType.SPELL_TYPE_NONMELEE, Index);
            }

            return(SpellCheckCastResult.SPELL_CAST_OK);
        }
        public static SpellCheckCastResult SPELL_EFFECT_HEAL(SpellCast Spell, List <WorldObject> Targets, int Index, Item Item)
        {
            int damage  = 0;
            int current = 0;

            foreach (WorldObject obj in Targets)
            {
                if (!obj.IsTypeOf(ObjectTypes.TYPE_UNIT))
                {
                    continue;
                }

                damage = Spell.GetValue((Unit)obj, Index);
                if (current > 0)
                {
                    damage *= 1 ^ current;
                }

                ((Unit)obj).DealSpellDamage(Spell, damage, SpellDamageType.SPELL_TYPE_HEAL, Index);
            }

            return(SpellCheckCastResult.SPELL_CAST_OK);
        }