private IEnumerator HandleDamageDrainCoroutine(PlayerController coroutineTarget) { float multiplier = 3.5f; float scaleMult = 2f; float realTime = 3f; float elapsed = 0f; while (elapsed < realTime) { elapsed += BraveTime.DeltaTime; float t = Mathf.Clamp01(elapsed / realTime); float damagemodifier = Mathf.Lerp(multiplier, 1, t); float scaleMod = Mathf.Lerp(scaleMult, 1, t); AlterItemStats.RemoveStatFromActive(this, PlayerStats.StatType.Damage); AlterItemStats.RemoveStatFromActive(this, PlayerStats.StatType.PlayerBulletScale); AlterItemStats.AddStatToActive(this, PlayerStats.StatType.Damage, damagemodifier, StatModifier.ModifyMethod.MULTIPLICATIVE); AlterItemStats.AddStatToActive(this, PlayerStats.StatType.PlayerBulletScale, scaleMod, StatModifier.ModifyMethod.MULTIPLICATIVE); coroutineTarget.stats.RecalculateStats(coroutineTarget, false, false); yield return(null); } yield break; }
private void RemoveBuff() { Owner.stats.AdditionalVolleyModifiers -= this.ModifyVolley; AlterItemStats.RemoveStatFromPassive(this, PlayerStats.StatType.Damage); Owner.stats.RecalculateStats(Owner, false, false); buffActive = false; }
private void AddBuff() { Owner.stats.AdditionalVolleyModifiers += this.ModifyVolley; AlterItemStats.AddStatToPassive(this, PlayerStats.StatType.Damage, 2, StatModifier.ModifyMethod.MULTIPLICATIVE); Owner.stats.RecalculateStats(Owner, false, false); buffActive = true; }
private void Recalc() { AlterItemStats.RemoveStatFromPassive(this, PlayerStats.StatType.Damage); float multiplier = 1; float amtPerMod = 0.05f; if (Owner.PlayerHasActiveSynergy("ShellllehS llehSShell")) { amtPerMod = 0.07f; } if (Owner.PlayerHasActiveSynergy("Shoot Your Shot")) { amtPerMod *= 3; } if (Owner && Owner.CurrentGun) { if (Owner.CurrentGun.Volley && (Owner.CurrentGun.Volley.projectiles != null)) { multiplier += (Owner.CurrentGun.Volley.projectiles.Count * amtPerMod); } else if (Owner.CurrentGun.DefaultModule != null) { multiplier += amtPerMod; } multiplier = Mathf.Min(multiplier, 3); } AlterItemStats.AddStatToPassive(this, PlayerStats.StatType.Damage, multiplier, StatModifier.ModifyMethod.MULTIPLICATIVE); Owner.stats.RecalculateStats(Owner, false, false); }
private void EnteredCombat() { if (Owner) { Owner.StopCoroutine(HandleDamageDrainCoroutine(Owner)); AlterItemStats.RemoveStatFromPassive(this, PlayerStats.StatType.Damage); AlterItemStats.RemoveStatFromPassive(this, PlayerStats.StatType.PlayerBulletScale); Owner.StartCoroutine(HandleDamageDrainCoroutine(Owner)); } }
public override void Pickup(PlayerController player) { if (!m_pickedUpThisRun) { float deaths = GameStatsManager.Instance.GetPlayerStatValue(TrackedStats.NUMBER_DEATHS); if (deaths > 0) { float multiplier = (0.005f * deaths) + 1; float finalMult = Mathf.Min(multiplier, 6); AlterItemStats.AddStatToPassive(this, PlayerStats.StatType.Damage, finalMult, StatModifier.ModifyMethod.MULTIPLICATIVE); AlterItemStats.AddStatToPassive(this, PlayerStats.StatType.RateOfFire, finalMult, StatModifier.ModifyMethod.MULTIPLICATIVE); } } base.Pickup(player); }
private void RecalculateShit() { bool atMaxHP; if (Owner.healthHaver.GetCurrentHealthPercentage() == 1f) { atMaxHP = true; } else { atMaxHP = false; } AlterItemStats.RemoveStatFromPassive(this, PlayerStats.StatType.Coolness); Owner.stats.RecalculateStats(Owner, false, false); float amountToMod = GetModifierAmount(Owner, atMaxHP); AlterItemStats.AddStatToPassive(this, PlayerStats.StatType.Coolness, amountToMod, StatModifier.ModifyMethod.ADDITIVE); Owner.stats.RecalculateStats(Owner, false, false); }
protected override void Update() { if (Owner) { if (Owner.PlayerHasActiveSynergy("Spun") != spunSynergyLastChecked) { AlterItemStats.RemoveStatFromPassive(this, PlayerStats.StatType.Damage); Owner.stats.RecalculateStats(Owner, false, false); if (Owner.PlayerHasActiveSynergy("Spun")) { AlterItemStats.AddStatToPassive(this, PlayerStats.StatType.Damage, 2, StatModifier.ModifyMethod.MULTIPLICATIVE); Owner.stats.RecalculateStats(Owner, false, false); } spunSynergyLastChecked = Owner.PlayerHasActiveSynergy("Spun"); } } base.Update(); }