public static void AddSelf(this SpellTargetCollection targets, TargetFilter filter, ref SpellFailedReason failReason)
        {
            var self = targets.Cast.CasterObject;

            if (self == null)
            {
                // invalid trigger proc
                log.Warn("Invalid SpellCast tried to target self, but no Caster given: {0}", targets.Cast);
                failReason = SpellFailedReason.Error;
                return;
            }

            if ((failReason = targets.ValidateTargetForHandlers(self)) == SpellFailedReason.Ok)
            {
                targets.Add(self);
            }
        }
        public static void AddSelf(this SpellTargetCollection targets, TargetFilter filter,
                                   ref SpellFailedReason failReason)
        {
            WorldObject casterObject = targets.Cast.CasterObject;

            if (casterObject == null)
            {
                DefaultTargetAdders.log.Warn("Invalid SpellCast tried to target self, but no Caster given: {0}",
                                             (object)targets.Cast);
                failReason = SpellFailedReason.Error;
            }
            else
            {
                if ((sbyte)(failReason = targets.ValidateTargetForHandlers(casterObject)) != (sbyte)-1)
                {
                    return;
                }
                targets.Add(casterObject);
            }
        }