private static int ComputeSimpleDamage(int attack, int affinity, SharpnessType sharpness, WeaponClass weapon, int element, ElementType elementType, int[] monsterElemZones) { //var usedAffinity = 1.0f; var usedAffinity = 1.0f + (0.25f * affinity / 100.0f); var rawDamage = attack * usedAffinity * GetAttackTypeMultiplier(weapon) * GetRawSharpnessMultiplier(sharpness) / GetWeaponClassMultiplier(weapon); if (weapon == WeaponClass.Bow) { rawDamage *= 0.225f; } var elemDamage = 0.0f; if (elementType != ElementType.None) { elemDamage = element * GetElementalSharpnessMultiplier(sharpness) * (monsterElemZones[(int)elementType] / 100.0f) / 10.0f; } return((int)(rawDamage + elemDamage)); }
public static float GetElementalSharpnessMultiplier(SharpnessType sharpness) { switch (sharpness) { case SharpnessType.Red: return(SharpnessElementalMultipliers.Red); case SharpnessType.Orange: return(SharpnessElementalMultipliers.Orange); case SharpnessType.Yellow: return(SharpnessElementalMultipliers.Yellow); case SharpnessType.Green: return(SharpnessElementalMultipliers.Green); case SharpnessType.Blue: return(SharpnessElementalMultipliers.Blue); case SharpnessType.White: return(SharpnessElementalMultipliers.White); case SharpnessType.Purple: return(SharpnessElementalMultipliers.Purple); } return(1.0f); }