private void AdjustRageOnHitToPlayerIf(NPC npc, Player target, int damage, bool crit) { if (!EnragedGlobalNPC.CanEnrage(npc)) { return; } if (!npc.HasPlayerTarget || npc.target != target.whoAmI) { return; } var config = EnragedConfig.Instance; this.TargetUnharmedByMe = 0; this.TargetDamageBuffer += crit ? damage * 2 : damage; while (this.TargetDamageBuffer > 10) { float ragePerc = config.Get <float>(nameof(EnragedConfig.RagePercentGainPerHitTaken)); this.TargetDamageBuffer -= 10; this.RecentRagePercentChangeChaser += this.AddRageIf("target hit", npc, ragePerc); } }
private void UpdateRageGeneralSourcesIf(NPC npc, Player targetPlr) { if (!EnragedGlobalNPC.CanEnrage(npc)) { return; } var config = EnragedConfig.Instance; this.TargetUnharmedByMe++; if (this.IsTargetUnharmedByMe) { string entryName = nameof(EnragedConfig.RagePercentGainPerTickFromUnharmedTarget); this.RecentRagePercentChangeChaser += this.AddRageIf("unharmed", npc, config.Get <float>(entryName)); } int distSqr = (int)Vector2.DistanceSquared(npc.Center, targetPlr.Center); int minSafeDistSqr = config.Get <int>(nameof(EnragedConfig.TileDistanceUntilTargetTooFar)) * 16; minSafeDistSqr *= minSafeDistSqr; int maxSafeDistSqr = config.Get <int>(nameof(EnragedConfig.TileDistanceUntilTargetTooClose)) * 16; maxSafeDistSqr *= maxSafeDistSqr; if (distSqr > minSafeDistSqr) { string entryName = nameof(EnragedConfig.RagePercentGainPerTickFromTargetTooFar); this.RecentRagePercentChangeChaser += this.AddRageIf("too far", npc, config.Get <float>(entryName)); } if (distSqr < maxSafeDistSqr) { string entryName = nameof(EnragedConfig.RagePercentGainPerTickFromTargetTooClose); this.RecentRagePercentChangeChaser += this.AddRageIf("too near", npc, config.Get <float>(entryName)); } // if (this.RecentRagePercentChangeChaser > 0f) { this.RecentRagePercentChangeChaser -= 1f / 7200f; if (this.RecentRagePercentChangeChaser < 0f) { this.RecentRagePercentChangeChaser = 0f; } else if (this.RecentRagePercentChangeChaser > (1f / 60f)) { this.RecentRagePercentChangeChaser = 1f / 60f; } } }
//////////////// private void AdjustRageOnHitIf(NPC npc) { if (!EnragedGlobalNPC.CanEnrage(npc)) { return; } string timerName = "EnragedNpcHitCooldown_" + npc.whoAmI; if (Timers.GetTimerTickDuration(timerName) > 0) { return; } var config = EnragedConfig.Instance; int cooldownTicks = config.Get <int>(nameof(EnragedConfig.CooldownTickDurationBetweenHits)); float ragePerc = config.Get <float>(nameof(EnragedConfig.RagePercentGainPerHitTaken)); Timers.SetTimer(timerName, cooldownTicks, false, () => false); this.RecentRagePercentChangeChaser += this.AddRageIf("on hit", npc, ragePerc); }