Exemplo n.º 1
0
        public override IEnumerable <AvoidInfo> OmenHandle(BattleCharacter spellCaster)
        {
            if (spellCaster.SpellCastInfo.SpellData.EffectRange > 45)
            {
                Logger.Info("Spell range is > 45. Does this require specific logic?");
            }
            //var loc = spellCaster.SpellCastInfo.CastLocation != Vector3.Zero ? spellCaster.SpellCastInfo.CastLocation : spellCaster.Location;

            Vector3 center;
            float   range = 0f;

            if (OmenOverrideManager.TryGetOverride(spellCaster.SpellCastInfo.ActionId, out var omenOverride))
            {
                range = Range(spellCaster, out center, omenOverride.MatrixOverride, omenOverride.RangeOverride);
            }
            else
            {
                range = Range(spellCaster, out center);
            }



            Logger.Info($"Avoid Cirlce: [{center}][Range: {range}]");
            var cached = spellCaster.CastingSpellId;

            return(new[] { AvoidanceManager.AddAvoidLocation(
                               () => spellCaster.IsValid && spellCaster.CastingSpellId == cached, //can run
                               () => center,                                                      //LeashPoint
                               50f,                                                               //Leash Radius
                               bc => range + 0.5f,                                                //radiusProducer
                               bc => center,                                                      //locationProducer
                               () => new[] { spellCaster } //collectionProducer
                               ) });
        }