Esempio n. 1
0
 // var x = Damage.CalculateAll(1700, 60, WeaponExtendType.Rare, 950, 190, 50, 1.0, 2.0, 1.2, 100, 500, 100, 315, 414, 5.0, 1.13);
 public static Damage CalculateAll(double pAtk, double sAtk, WeaponExtendType wt, double weaponAtk, double grind, double elem, double totalm, double partm, double elemm, double pam, double myDex, double paDex, double enemDef, double enemDex, double crit = 5, double critm = 1.0, bool nazo = true)
 {
     var maxb = CalculateWeaponMax(weaponAtk, totalm * critm, partm, pam, nazo);
     var maxbnc = CalculateWeaponMax(weaponAtk, totalm, partm, pam, nazo);
     var minb = CalculateWeaponMin(wt, weaponAtk, totalm, partm, grind, myDex, paDex, enemDex, nazo);
     var max = CalculateBase(pAtk, sAtk, weaponAtk, totalm * critm, partm, elemm, pam, enemDef, elem, nazo);
     var maxnc = CalculateBase(pAtk, sAtk, weaponAtk, totalm, partm, elemm, pam, enemDef, elem, nazo);
     var min = CalculateBase(pAtk, sAtk, weaponAtk, totalm, partm, elemm, pam, enemDef, elem, nazo);
     var mid = ((critm > 1.0 ? maxnc + maxbnc : max + maxb) + min + minb) / 2;
     var exp = mid + (crit / 100) * (max + maxb - mid);
     return new Damage()
     {
         MaxDamage = max + maxb,
         MinDamage = min + minb,
         MaxBaseDamage = max,
         MinBaseDamage = min,
         ExpectedDamage = exp
     };
 }
Esempio n. 2
0
 public static double CalculateWeaponMin(WeaponExtendType wt, double weaponAtk, double totalm, double partm, double grind, double myDex, double paDex, double enemDex, bool nazo = true)
 {
     var wc =
         wt == WeaponExtendType.CommonOrExtended ? 50 * (grind / 100d - 1)
       : wt == WeaponExtendType.SliverExtendedLW ? 50 + 100 * (grind / 100d - 1)
       : wt == WeaponExtendType.SliverExtended ? 100 + 150 * (grind / 100d - 1)
       : 0;
     var lp = (myDex * paDex / 100 - enemDex + wc) * 2;
     var p90 = weaponAtk * (90d / 100d);
     var p10 = weaponAtk * (10d / 100d);
     var vAtk =
         wt == WeaponExtendType.Rare ? p90
       : lp > p90 ? p90
       : lp < p10 ? p10
       : lp;
     return (vAtk / 5) * partm * totalm * (nazo ? 1.05 : 1.0);
 }