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)); } } }
private List <Npc> GetRandomTargets() { var npcs = TargetingHelper.GetNpcsInRadius(Target.transform.position, 3); npcs.Remove(Target); npcs.Shuffle(); return(npcs.Take(OtherTargetsCount).ToList()); }
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); }); }
private Npc AquireTargetInRange(float range) { var npcs = TargetingHelper.GetNpcsInRadius(transform.position, range); return(npcs.FirstOrDefault()); }