Пример #1
0
    protected override void Activate()
    {
        GameObject obj = Instantiate(aoeObj, mpd.CalculateWorldPosition(), new Quaternion());

        obj.transform.localScale = new Vector3(size, 1f, size);
        AoeBehave ab = obj.GetComponent <AoeBehave>();

        ab.friendly = true;
        ab.ttl      = duration;
        ab.Friend   = new List <TimedBuff>();
        ab.Enemy    = new List <TimedBuff>();
        TimedBuff ignite = Ignite.Instance;
        Stat      stat   = ignite.Stats.Find(item => item.Name == Stat.HEALTH_REGEN);

        stat.Value = stats.RealDotDamage(stat.Value, igniteMult, false, true, false, false, true);
        ab.Enemy.Add(ignite);
        if (buffs)
        {
            ab.Friend.Add(Friendly.Instance);
        }
        if (debuffs)
        {
            ab.Enemy.Add(Enemy.Instance);
        }
    }
Пример #2
0
 public void ApplyBuff(TimedBuff tb)
 {
     if (!buffsToAdd.Contains(tb))
     {
         buffsToAdd.Add(tb);
     }
 }
Пример #3
0
    protected override void Activate()
    {
        GameObject      obj = Instantiate(projectile, gameObject.transform.position + new Vector3(0f, 2f, 0f), new Quaternion());
        HorizontalSwipe pbh = obj.GetComponent <HorizontalSwipe>();

        obj.transform.LookAt(mpd.CalculateWorldPosition());
        var lookPos = mpd.CalculateWorldPosition() - transform.position;

        lookPos.y = 0;
        var rotation = Quaternion.LookRotation(lookPos);

        obj.transform.localScale = new Vector3(5f, 5f, 5f);
        pbh.speed = projSpeed;
        Damage dmg = new Damage(0f, Random.Range(dmgMin, dmgMax), false, false, true);

        pbh.dmg = stats.RealDamage(dmg);
        TimedBuff tb   = slowdown.Instance;
        Stat      stat = tb.Stats.Find(item => item.Name == Stat.MOVE_SPEED_MULT);

        // Debug.Log("just like the white winged dove : " + stat.Name + stat.Value + slowdownMult);
        stat = new Stat(stat.Name, StatBlock.CalcMult(stat.Value, slowdownMult));
        tb.Stats.Remove(new Stat(Stat.MOVE_SPEED_MULT));
        tb.Stats.Add(stat);
        tb.Duration += slowdownDur;
        tb.IsUnique  = !slowdownStack;
        pbh.dmg.buffs.Add(tb);
        pbh.friendly = true;
        pbh.ttl      = 4000f;
        pbh.player   = gameObject;
    }
Пример #4
0
    protected override void Activate()
    {
        GameObject       obj = Instantiate(projectile, gameObject.transform.position + new Vector3(0, 2f, 0), new Quaternion());
        ProjectileBehave pbh = obj.GetComponent <ProjectileBehave>();
        //obj.transform.LookAt(mpd.CalculateWorldPosition());
        var lookPos = mpd.CalculateWorldPosition() - transform.position;

        lookPos.y = 0;
        var rotation = Quaternion.LookRotation(lookPos);

        obj.transform.rotation   = Quaternion.Slerp(transform.rotation, rotation, 1f);
        obj.transform.localScale = new Vector3(0.4f, 0.4f, 0.4f);
        pbh.speed = projSpeed;
        Damage dmg = new Damage(0f, Random.Range(dmgMin, dmgMax), false, false, true);

        pbh.dmg = stats.RealDamage(dmg);
        TimedBuff tb   = ignite.Instance;
        Stat      stat = tb.Stats.Find(item => item.Name == Stat.HEALTH_REGEN);

        stat.Value   = stats.RealDotDamage(stat.Value, igniteMult, false, true, false, false, true);
        tb.Duration += igniteDur;
        tb.IsUnique  = !igniteStack;
        pbh.dmg.buffs.Add(tb);
        pbh.friendly = true;
        pbh.ttl      = 2f;
    }
Пример #5
0
    protected override void Activate()
    {
        GameObject obj = Instantiate(effect, gameObject.transform.position + new Vector3(0, 2f, 0), new Quaternion());
        TimedBuff  tb  = AdrenalineBoost.Instance;

        controlStats.ApplyBuff(tb);
    }
Пример #6
0
    protected override void Activate()
    {
        TimedBuff tb   = Mend.Instance;
        Stat      stat = tb.Stats.Find(item => item.Name == Stat.HEALTH_REGEN);

        stat.Value = StatBlock.CalcMult(stats.HealthMax * 1.01f, stats.PhantomHpMult) * ratio / tb.Duration;
        controlStats.ApplyBuff(tb);
        stats.HealthCur = 1f;
    }
Пример #7
0
    public void SetBuff(Buff buff)
    {
        buffImage.sprite = buff.GetBuffSprite();

        TimedBuff timedBuff = buff as TimedBuff;

        if (null != timedBuff)
        {
            timedBuff.OnLagTimeChange += TimedBuff_OnLagTimeChange;
        }
    }
    protected override void Activate()
    {
        TimedBuff tb     = Block.Instance;
        Stat      stat   = tb.Stats.Find(item => item.Name == Stat.FLAT_DMG_REDUCTION);
        float     hplost = StatBlock.CalcMult(stats.HealthCur, stats.PhantomHpMult) * 0.5f;

        stats.HealthCur -= hplost;
        stat.Value       = hplost / 1000f * mult;
        Debug.Log("Cost player " + hplost + " hp; Dmg Reduction: " + stat.Value + ".");
        controlStats.ApplyBuff(tb);
    }
Пример #9
0
    protected override void Activate()
    {
        GameObject obj  = Instantiate(effect, gameObject.transform.position + new Vector3(0, 1f, 0), new Quaternion());
        TimedBuff  tb   = Infusion.Instance;
        Stat       stat = tb.Stats.Find(item => item.Name == Stat.CRIT_CHANCE);

        stat.Value += critDam;
        stat        = tb.Stats.Find(item => item.Name == Stat.CRIT_DMG);
        stat.Value += critChance;
        controlStats.ApplyBuff(tb);
    }
Пример #10
0
    protected override void Activate()
    {
        TimedBuff tb = Dash.Instance;

        tb.Duration += duration;
        Stat stat = tb.Stats.Find(item => item.Name == Stat.MOVE_SPEED_MULT);

        stat = new Stat(stat.Name, StatBlock.CalcMult(stat.Value, dashMult));
        tb.Stats.Remove(new Stat(Stat.MOVE_SPEED_MULT));
        tb.Stats.Add(stat);
        controlStats.ApplyBuff(tb);
    }
Пример #11
0
 public void AddBuff(TimedBuff buff)
 {
     if (_buffs.ContainsKey(buff.Buff))
     {
         _buffs[buff.Buff].Activate();
     }
     else
     {
         _buffs.Add(buff.Buff, buff);
         buff.Activate();
     }
 }
Пример #12
0
 public void AddBuff(TimedBuff buff)
 {
     if (buffList.ContainsKey(buff.ScriptedBuff))
     {
         buffList[buff.ScriptedBuff].Activate();
     }
     else
     {
         buffList.Add(buff.ScriptedBuff, buff);
         buff.Activate();
     }
 }
Пример #13
0
    override public void OnDeath()
    {
        GameObject obj = Instantiate(aoeObj, transform.position - new Vector3(0, 1.2f, 0), new Quaternion());

        obj.transform.localScale = new Vector3(5.5f, 1f, 5.5f);
        AoeBehave ab = obj.GetComponent <AoeBehave>();

        ab.friendly = false;
        ab.ttl      = -10;
        ab.Friend   = new List <TimedBuff>();
        ab.Enemy    = new List <TimedBuff>();
        TimedBuff ignite = Ignite.Instance;
        Stat      stat   = ignite.Stats.Find(item => item.Name == Stat.HEALTH_REGEN);

        stat.Value = realIgniteDmg;
        ab.Enemy.Add(ignite);
    }
Пример #14
0
    protected override void Activate()
    {
        GameObject obj = Instantiate(aoeEffect, gameObject.transform.position + new Vector3(0f, .50f, 0f), new Quaternion());

        obj.transform.localScale = new Vector3(size, 1f, size);
        AoeBehave ab = obj.GetComponent <AoeBehave>();

        ab.friendly = true;
        ab.ttl      = duration;
        ab.Friend   = new List <TimedBuff>();
        ab.Enemy    = new List <TimedBuff>();
        TimedBuff corrupt = Corruption.Instance;
        Stat      stat    = corrupt.Stats.Find(item => item.Name == Stat.HEALTH_REGEN);

        stat.Value = stats.RealDotDamage(stat.Value, corruption, true, false, false, false, true);
        ab.Enemy.Add(corrupt);
    }
Пример #15
0
    // Update is called once per frame
    void Update()
    {
        bool needsUpdate = false;

        foreach (TimedBuff tb in buffsToAdd)
        {
            if (tb.IsUnique && buffs.Contains(tb))
            {
                buffs.Remove(tb);
            }
            buffs.Add(tb);
            needsUpdate = true;
        }
        buffsToAdd.Clear();
        for (int i = buffs.Count - 1; i > -1; --i)
        {
            TimedBuff tb = buffs[i];
            if (tb.IsNegative)
            {
                tb.DurationLeft -= Time.deltaTime * (1 + StatBlock.CalcMult(stats.StatusRec, stats.StatusRecMult));
            }
            else
            {
                tb.DurationLeft -= Time.deltaTime;
            }

            //Debug.Log(tb.BuffName + " at " + i + " has " + tb.DurationLeft + " left.");
            if (tb.DurationLeft <= 0f)
            {
                buffs.RemoveAt(i);
                Debug.Log(tb.BuffName + " expired.");
                needsUpdate = true;
            }
        }
        if (needsUpdate)
        {
            StatsChanged();
        }
    }
 public void AddBuff(TimedBuff buff)
 {
     CurrentBuffs.Add(buff);
     buff.Activate();
 }
Пример #17
0
    protected override void Activate()
    {
        TimedBuff tb = RipperFrenzy.Instance;

        controlStats.ApplyBuff(tb);
    }
Пример #18
0
    protected override void Activate()
    {
        TimedBuff tb = Mending.Instance;

        controlStats.ApplyBuff(tb);
    }