ACR_CreatureBehavior.CreatureObject._IsFriendlyFire C# (CSharp) Method

_IsFriendlyFire() private method

This function attempts to determine if the spell just cast on this creature was plausibly friendly fire, based on the locations of nearby enemies.
private _IsFriendlyFire ( int nTargetArea ) : bool
nTargetArea int Spell Target AOE as defined in spells.2da in the targeting UI
return bool
        private bool _IsFriendlyFire(int nTargetArea)
        {
            // Check for friendly fire.
            switch ((SpellTargetAOE)nTargetArea)
            {
                case SpellTargetAOE.SPELL_TARGET_COLOSSAL_AOE:
                    // With a colossal AOE, no sense in checking. That as probably friendly fire.
                    return true;
                case SpellTargetAOE.SPELL_TARGET_HUGE_AOE:
                case SpellTargetAOE.SPELL_TARGET_HUGE_AOE_A:
                case SpellTargetAOE.SPELL_TARGET_HUGE_AOE_B:
                    {
                        foreach (uint TargetId in Script.GetObjectsInShape(CLRScriptBase.SHAPE_SPHERE, CLRScriptBase.RADIUS_SIZE_HUGE * 2.0f, Script.GetLocation(this.ObjectId), false, CLRScriptBase.OBJECT_TYPE_CREATURE, Script.Vector(0.0f, 0.0f, 0.0f)))
                        {
                            // We found an enemy in sight; this is probably friendly fire.
                            if (Script.GetReputation(this.ObjectId, TargetId) < 11)
                                return true;
                        }
                    }
                    break;
                case SpellTargetAOE.SPELL_TARGET_LARGE_AOE:
                case SpellTargetAOE.SPELL_TARGET_PURPLE_LARGE:
                case SpellTargetAOE.SPELL_TARGET_LINE:
                    {
                        foreach (uint TargetId in Script.GetObjectsInShape(CLRScriptBase.SHAPE_SPHERE, CLRScriptBase.RADIUS_SIZE_LARGE * 2.0f, Script.GetLocation(this.ObjectId), false, CLRScriptBase.OBJECT_TYPE_CREATURE, Script.Vector(0.0f, 0.0f, 0.0f)))
                        {
                            // We found an enemy nearby; this is probably friendly fire.
                            if (Script.GetReputation(this.ObjectId, TargetId) < 11)
                                return true;
                        }
                    }
                    break;
                case SpellTargetAOE.SPELL_TARGET_PURPLE_MEDIUM:
                case SpellTargetAOE.SPELL_TARGET_RECTANGLE_A:
                case SpellTargetAOE.SPELL_TARGET_RECTANGLE_B:
                    {
                        foreach (uint TargetId in Script.GetObjectsInShape(CLRScriptBase.SHAPE_SPHERE, CLRScriptBase.RADIUS_SIZE_MEDIUM * 2.0f, Script.GetLocation(this.ObjectId), false, CLRScriptBase.OBJECT_TYPE_CREATURE, Script.Vector(0.0f, 0.0f, 0.0f)))
                        {
                            // We found an enemy nearby; this is probably friendly fire.
                            if (Script.GetReputation(this.ObjectId, TargetId) < 11)
                                return true;
                        }
                    }
                    break;
                case SpellTargetAOE.SPELL_TARGET_PURPLE_SMALL:
                case SpellTargetAOE.SPELL_TARGET_SHORT_CONE_A:
                case SpellTargetAOE.SPELL_TARGET_SHORT_CONE_B:
                case SpellTargetAOE.SPELL_TARGET_SHORT_CONE_C:
                case SpellTargetAOE.SPELL_TARGET_SHORT_CONE_D:
                    {
                        foreach (uint TargetId in Script.GetObjectsInShape(CLRScriptBase.SHAPE_SPHERE, CLRScriptBase.RADIUS_SIZE_SMALL * 2.0f, Script.GetLocation(this.ObjectId), false, CLRScriptBase.OBJECT_TYPE_CREATURE, Script.Vector(0.0f, 0.0f, 0.0f)))
                        {
                            // We found an enemy nearby; this is probably friendly fire.
                            if (Script.GetReputation(this.ObjectId, TargetId) < 11)
                                return true;
                        }
                    }
                    break;
            }
            return false;
        }