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

            if (cast.CasterChar != null)
            {
                // For Characters: Add the whole party
                if (targets.Cast.CasterChar.Group != null)
                {
                    foreach (var member in cast.CasterChar.Group)
                    {
                        var chr = member.Character;
                        if (chr != null)
                        {
                            targets.Add(chr);
                        }
                    }
                }
                else
                {
                    failReason = SpellFailedReason.TargetNotInParty;
                }
            }
            else
            {
                var radius = targets.FirstHandler.GetRadius();
                if (radius == 0)
                {
                    // For NPCs: Add all friendly minions around (radius 30 if no radius is set?)
                    radius = 30;
                }
                targets.AddAreaSource(cast.Spell.HasHarmfulEffects ? (TargetFilter)DefaultTargetFilters.IsFriendly : DefaultTargetFilters.IsHostile, ref failReason, radius);
            }
        }
        public static void AddAllParty(this SpellTargetCollection targets, TargetFilter filter,
                                       ref SpellFailedReason failReason)
        {
            SpellCast cast = targets.Cast;

            if (cast.CasterChar != null)
            {
                if (targets.Cast.CasterChar.Group != null)
                {
                    foreach (GroupMember groupMember in cast.CasterChar.Group)
                    {
                        Character character = groupMember.Character;
                        if (character != null)
                        {
                            targets.Add((WorldObject)character);
                        }
                    }
                }
                else
                {
                    failReason = SpellFailedReason.TargetNotInParty;
                }
            }
            else
            {
                float radius = targets.FirstHandler.GetRadius();
                if ((double)radius == 0.0)
                {
                    radius = 30f;
                }
                targets.AddAreaSource(
                    cast.Spell.HasHarmfulEffects
                        ? new TargetFilter(DefaultTargetFilters.IsFriendly)
                        : new TargetFilter(DefaultTargetFilters.IsHostile), ref failReason, radius);
            }
        }
 /// <summary>Adds targets around the caster</summary>
 public static void AddAreaSource(this SpellTargetCollection targets, TargetFilter filter,
                                  ref SpellFailedReason failReason)
 {
     targets.AddAreaSource(filter, ref failReason, targets.FirstHandler.GetRadius());
 }