Пример #1
0
        public void UpdateAuraTargets()
        {
            ClearAuraTargets();

            if (!HasAttribute(AttributeName.AuraRange))
            {
                return;
            }

            var pos   = transform.position;
            var range = GetAttributeValue(AttributeName.AuraRange);

            foreach (var auraEffect in AuraEffects)
            {
                if (auraEffect.AffectsNpcs)
                {
                    var npcsInRange = TargetingHelper.GetNpcsInRadius(pos, range);
                    npcsInRange.ForEach(npc => ApplyAuraEffect(npc, auraEffect));
                }

                if (auraEffect.AffectsTowers)
                {
                    var towersInRange = TargetingHelper.GetTowersInRadius(pos, range);
                    towersInRange.ForEach(npc => ApplyAuraEffect(npc, auraEffect));
                }
            }
        }
Пример #2
0
        private List <Npc> GetRandomTargets()
        {
            var npcs = TargetingHelper.GetNpcsInRadius(Target.transform.position, 3);

            npcs.Remove(Target);
            npcs.Shuffle();

            return(npcs.Take(OtherTargetsCount).ToList());
        }
Пример #3
0
        protected override void Attack(bool triggering = true)
        {
            //Does not attack "regulary"
            var se = new ParticleEffectData("BlacksmithyExplosion", gameObject, new Vector3(0, WeaponHeight, 0), 5);

            GameManager.Instance.SpecialEffectManager.PlayParticleEffect(se);

            var r    = GetAttributeValue(AttributeName.AttackRange);
            var npcs = TargetingHelper.GetNpcsInRadius(transform.position, r);

            npcs.ForEach(npc => { npc.DealDamage(GetAttributeValue(AttributeName.AttackDamage), this); });
        }
Пример #4
0
        private Npc AquireTargetInRange(float range)
        {
            var npcs = TargetingHelper.GetNpcsInRadius(transform.position, range);

            return(npcs.FirstOrDefault());
        }