public void calculateTimings() { CalculateSkillData(); float crittableInverseSum = 0; PetSkillInstance PrevSkill = null; foreach (PetSkillInstance S in skills) { S.CalculateTimings(PrevSkill); PrevSkill = S; crittableInverseSum += S.crittable_freq > 0 ? 1f / S.crittable_freq : 0; } petSpecialFrequency = crittableInverseSum > 0 ? 1f / crittableInverseSum : 0; }
public float kc_dps = 0; // T public void CalculateTimings(PetSkillInstance PrevSkill) { possible_freq = cooldown - (cooldown % PetGCD) + ((cooldown % PetGCD) > 0 ? PetGCD : 0); gcd_left = 1; if (PrevSkill != null) { gcd_left = PrevSkill.gcd_left - PrevSkill.gcd_used; } gcd_needed = cooldown >= 30 ? 0 : possible_freq > 0 ? PetGCD / possible_freq : 0; gcd_used = 1f - (gcd_left - gcd_needed); if (PrevSkill != null) { gcd_used = gcd_left > gcd_needed ? gcd_needed : gcd_left; } temp_frequency = gcd_used > 0 ? PetGCD / gcd_used : cooldown >= 30 ? cooldown : 0; fps_needed = (1f - priorityRotation.owlsFocus) * (temp_frequency > 0 ? focus / temp_frequency : 0); fps_available = priorityRotation.fpsGained; if (PrevSkill != null) { fps_available = PrevSkill.fps_available - PrevSkill.fps_needed; } frequency = 0; if (fps_available > 0) { frequency = temp_frequency * (fps_needed / fps_available); } if (fps_available > fps_needed) { frequency = temp_frequency; } crittable_freq = can_crit ? frequency : 0; }
public float kc_dps = 0; // T public void CalculateTimings(PetSkillInstance PrevSkill) { possible_freq = cooldown - (cooldown % PetGCD) + ((cooldown % PetGCD) > 0 ? PetGCD : 0); gcd_left = 1; if (PrevSkill != null) { gcd_left = PrevSkill.gcd_left - PrevSkill.gcd_used; } gcd_needed = cooldown >= 30 ? 0 : possible_freq > 0 ? PetGCD / possible_freq : 0; gcd_used = 1f - (gcd_left - gcd_needed); if (PrevSkill != null) { gcd_used = gcd_left > gcd_needed ? gcd_needed : gcd_left; } temp_frequency = gcd_used > 0 ? PetGCD / gcd_used : cooldown >= 30 ? cooldown : 0; fps_needed = (1f - priorityRotation.owlsFocus) * (temp_frequency > 0 ? focus / temp_frequency : 0); fps_available = priorityRotation.fpsGained; if (PrevSkill != null) { fps_available = PrevSkill.fps_available - PrevSkill.fps_needed; } frequency = 0; if (fps_available > 0) frequency = temp_frequency * (fps_needed / fps_available); if (fps_available > fps_needed) frequency = temp_frequency; crittable_freq = can_crit ? frequency : 0; }