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); } }
public void ApplyBuff(TimedBuff tb) { if (!buffsToAdd.Contains(tb)) { buffsToAdd.Add(tb); } }
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; }
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; }
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); }
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; }
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); }
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); }
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); }
public void AddBuff(TimedBuff buff) { if (_buffs.ContainsKey(buff.Buff)) { _buffs[buff.Buff].Activate(); } else { _buffs.Add(buff.Buff, buff); buff.Activate(); } }
public void AddBuff(TimedBuff buff) { if (buffList.ContainsKey(buff.ScriptedBuff)) { buffList[buff.ScriptedBuff].Activate(); } else { buffList.Add(buff.ScriptedBuff, buff); buff.Activate(); } }
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); }
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); }
// 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(); }
protected override void Activate() { TimedBuff tb = RipperFrenzy.Instance; controlStats.ApplyBuff(tb); }
protected override void Activate() { TimedBuff tb = Mending.Instance; controlStats.ApplyBuff(tb); }