public override Tuple<bool, Ability_Overlay> trigger() { // Grab All enemies in area var enemies = TeamLogic.enemyCombatsInRange(caster, areaOfEffect); var blockHeals = new Attribute_Filter(noOutlet_damage, (healing) => 0); if (enemies != null) { // Apply heal block to each foreach (var enemy in enemies) { enemy.stats.effects.recieveHealing.Add (blockHeals); } } // Grab all allies in area var allies = TeamLogic.allyCombatsInRange(caster, areaOfEffect); if (allies != null) { // Apply timed heal to each foreach (var ally in allies.Where (x=>x != null)) { Debug.Log (ally.name); ally.stats.effects.addTimedEffectFor (attribute.HP, noOutlet_heal, caster); } } PhotonNetwork.Instantiate ("NoOutlets_Graphic", caster.transform.position, caster.transform.rotation, 0); return new Tuple<bool, Ability_Overlay>(true, null); }
public override void passiveEffect() { var casterCombat = caster.GetComponent<Combat>(); var dodgeFilter = new Attribute_Filter(thisAbility, (a) => { attackCount++; return a; }); casterCombat.stats.effects.recieveDamage.Add(dodgeFilter); casterCombat.stats.effects.addLastingEffectFor(attribute.DO, thisAbility, caster); }
public override void passiveEffect() { var casterCombat = caster.GetComponent<Combat>(); // Take damage and convert into a timed status effect var damageDelayer = new Attribute_Filter(thisAbility, (damage) => { delayedDamage.Enqueue(damage); casterCombat.stats.effects.addTimedEffectFor(attribute.HP, delay_Damage, caster); return 0; }); // Take Healing and convert into a timed status effect var healingDelayer = new Attribute_Filter(thisAbility, (healing) => { delayedHealing.Enqueue(healing); casterCombat.stats.effects.addTimedEffectFor(attribute.HP, delay_Healing, caster); return 0; }); // Add the filters casterCombat.stats.effects.recieveDamage.Add(damageDelayer); casterCombat.stats.effects.recieveHealing.Add(healingDelayer); }
public override Tuple<bool, Ability_Overlay> trigger() { // Grab Target under mouse var selected = AbilityHelp.getSelectable_UnderMouse(); if (selected == null) return new Tuple<bool, Ability_Overlay> (false, null); if (TeamLogic.areAllies(caster, selected)) return new Tuple<bool, Ability_Overlay> (false, null); var enemy = selected.GetComponent<Combat>(); var backSheild = caster.GetComponent<Abilities>().e.GetComponent<TakeItBack>(); var sheild = new Attribute_Filter(thisAbility, (damage) => { backSheild.shieldAmount -= damage; if (backSheild.shieldAmount < 0) { enemy.stats.effects.recieveDamage.RemoveAll(filter => filter.name == thisAbility); backSheild.shieldAmount = backSheild.damage; return backSheild.damage * 2; } else return 0; } ); // Apply sheild enemy.stats.effects.recieveDamage.Add(sheild); enemy.stats.effects.addTimedEffectFor(attribute.HP, thisAbility, selected); // Apply sheild graphic var particles = selected.GetComponentInChildren<ParticlePre> (); particles.playEffect (Particle.Sheild, 5); selected.GetComponent<Character> ().graphics.addTimedEffectFor (graphic.Body, thisAbility, selected); return new Tuple<bool, Ability_Overlay>(true, null); }