public void AbilityDK_PlagueStrike_BP_Basic() { // Needs AP passed in Stats FFTestStats = new StatsDK(); FFTestStats.AttackPower = 100; Item i = new Item("Test", ItemQuality.Common, ItemType.Dagger, 1, "", ItemSlot.MainHand, "", false, new Stats(), new Stats(), ItemSlot.None, ItemSlot.None, ItemSlot.None, 10, 20, ItemDamageType.Physical, 2, ""); Rawr.TankDK.CalculationOptionsTankDK c = new Rawr.TankDK.CalculationOptionsTankDK(); //c.talents = new DeathKnightTalents(); //Weapon w = new Weapon(i, FFTestStats, c, 0f); CombatState combatState = new CombatState(); //combatState.m_Stats = FFTestStats; //combatState.MH = w; //combatState.m_Talents = c.talents; //AbilityDK_PlagueStrike PS = new AbilityDK_PlagueStrike(combatState); // Blood Plauge application. //AbilityDK_BloodPlague BP = new AbilityDK_BloodPlague(combatState); // A disease dealing [0 + AP * 0.055 * 1.15] Shadow damage every 3 sec . // Base damage 0 // Bonus from attack power [AP * 0.055 * 1.15] // Plague Strike Checking /* * Assert.IsTrue(PS.szName == "Plague Strike", "Name"); * Assert.AreEqual(PS.AbilityCost[(int)DKCostTypes.Blood], 0, "Blood Rune"); * Assert.AreEqual(PS.AbilityCost[(int)DKCostTypes.Frost], 0, "Frost Rune"); * Assert.AreEqual(PS.AbilityCost[(int)DKCostTypes.UnHoly], 1, "UnHoly Rune"); * Assert.AreEqual(PS.AbilityCost[(int)DKCostTypes.RunicPower], -10, "RP"); * Assert.AreEqual(Math.Floor((378 + PS.wMH.damage) / 2), PS.uBaseDamage, "BaseDamage"); * Assert.AreEqual(Math.Floor((378 + PS.wMH.damage) / 2), PS.uBaseDamage, "Total Damage"); * Assert.AreEqual(PS.uRange, AbilityDK_Base.MELEE_RANGE, "Range"); * Assert.AreEqual(PS.tDamageType, ItemDamageType.Physical, "Damage Type"); * Assert.AreEqual(PS.Cooldown, 1500u, "Cooldown"); * * // Blood Plague Checking * Assert.IsTrue(BP.szName == "Blood Plague", "Name"); * Assert.AreEqual(BP.AbilityCost[(int)DKCostTypes.Blood], 0, "Blood Rune"); * Assert.AreEqual(BP.AbilityCost[(int)DKCostTypes.Frost], 0, "Frost Rune"); * Assert.AreEqual(BP.AbilityCost[(int)DKCostTypes.UnHoly], 0, "UnHoly Rune"); * Assert.AreEqual(BP.AbilityCost[(int)DKCostTypes.RunicPower], 0, "Runic Power"); * Assert.AreEqual(BP.uBaseDamage, 0u, "Damage"); * Assert.AreEqual(BP.tDamageType, ItemDamageType.Shadow, "Damage Type"); * // Not sure if this actually needs a Cooldown. * // Assert.AreEqual(BP.Cooldown, 0u, "Cooldown"); * Assert.AreEqual(BP.uDuration, 15000u, "Duration"); * Assert.AreEqual(BP.uTickRate, 3000u, "TickRate"); * Assert.AreEqual((int)(FFTestStats.AttackPower * 0.055f * 1.15f), BP.GetTickDamage(), 0.1, "GetTickDamage"); * Assert.AreEqual((int)(BP.GetTickDamage() * (15 / 3)), BP.GetTotalDamage(), 0.1, "GetTotalDamage"); * */ }
/// <summary> /// With Triggers already setup, just pass into the Accumulate function and return the values /// </summary> /// <param name="effect"></param> /// <returns></returns> public StatsDK getSpecialEffects(SpecialEffect effect) { StatsDK statsAverage = new StatsDK(); triggerIntervals[Trigger.Use] = effect.Cooldown; if (float.IsInfinity(effect.Cooldown)) { triggerIntervals[Trigger.Use] = m_bo.BerserkTimer; } effect.AccumulateAverageStats(statsAverage, triggerIntervals, triggerChances, unhastedAttackSpeed, m_bo.BerserkTimer); return(statsAverage); }