Пример #1
0
    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);
    }
Пример #2
0
    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);
    }
Пример #3
0
    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);
    }
Пример #4
0
    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);
    }