public SelfEmpowerHitProc CalculateProcAmount(IClassDefinition classInfo) { var baseProcRate = DecimalHelper.RoundToDecimals((classInfo.ClassType == Enums.ClassTypeEnum.Barbarian ? 10 : 6) / 100, 3); var bonusProcRate = DecimalHelper.RoundToDecimals(0.66 * classInfo.DemonicPower * (classInfo.ClassType == Enums.ClassTypeEnum.Barbarian ? 0.6 : 0.5), 3); var procAmount = DecimalHelper.RoundToDecimals(Convert.ToDouble(baseProcRate + bonusProcRate), 2); var resourceReturnProc = new SelfEmpowerHitProc { ProcPercentage = 1, ProcAmount = procAmount, Duration = 0 }; return(resourceReturnProc); }
public SelfEmpowerHitProc CalculateProcAmount(IClassDefinition classInfo) { var baseProcPerc = classInfo.ClassType == Enums.ClassTypeEnum.Barbarian ? 0.05m : 0.03m; var procPercAdditives = classInfo.AncestralPower * 0.55 + classInfo.AngelicPower * 0.11; var bonusMultiplier = 0.45 * (Math.Pow(1.04, procPercAdditives)); var bonusProcPerc = DecimalHelper.RoundToDecimals(bonusMultiplier * procPercAdditives / 100, 3); var baseProcRate = classInfo.ClassType == Enums.ClassTypeEnum.Barbarian ? 0.10m : 0.08m; var rateMultiplier = (Math.Pow(1.04, classInfo.DemonicPower / 4)); var bonusProcRate = DecimalHelper.RoundToDecimals((rateMultiplier * classInfo.AngelicPower * 1.25) / 4, 2); var basicDuration = 1; var bonusDuration = (classInfo.AngelicPower * 6.5) / 100; var procAmount = DecimalHelper.RoundToDecimals(Convert.ToDouble(baseProcRate + bonusProcRate), 2); var procPerc = Math.Min(0.45m, DecimalHelper.RoundToDecimals(Convert.ToDouble((baseProcPerc + bonusProcPerc)), 2)); var resourceReturnProc = new SelfEmpowerHitProc { ProcPercentage = procPerc * 100, ProcAmount = procAmount, Duration = DecimalHelper.RoundToDecimals(basicDuration * (1 + bonusDuration), 2) }; return(resourceReturnProc); }