using WingsEmu.Game._enum;
using WingsEmu.Packets.Enums;
using WingsEmu.Packets.Enums.Battle;
using WingsEmu.Packets.Enums.Character;
namespace WingsEmu.Game.Algorithm;
public interface IBattleEntityAlgorithmService
{
///
/// Returns the MaxHp based on basic algorithm
///
///
///
///
///
///
///
int GetBasicHp(int race, int level, int modifier, int additionalHp = 0, bool isMonster = true);
///
/// Returns the MaxMp based on basic algorithm
///
///
///
///
///
///
///
int GetBasicMp(int race, int level, int modifier, int additionalMp = 0, bool isMonster = true);
///
/// Returns the MaxHp based on ClassType
///
///
///
///
int GetBasicHpByClass(ClassType classType, int level);
///
/// Returns the MaxMp based on ClassType
///
///
///
///
int GetBasicMpByClass(ClassType classType, int level);
///
/// Get minimum/maximum attack damage
///
///
///
///
///
///
///
///
///
///
///
///
///
int GetAttack(bool isMin, int race, AttackType attackType, short weaponLevel, byte wInfo, short level, int modifier, int additional, bool isWild = true, short petLevel = 0,
MateType mateType = MateType.Pet);
///
/// Get hitrate
///
///
///
///
///
///
///
///
///
///
///
int GetHitrate(int race, AttackType attackType, short weaponLevel, short level, int modifier, int additional, bool isWild = true, short petLevel = 0, MateType mateType = MateType.Pet);
///
/// Get dodge
///
///
///
///
///
///
///
///
///
int GetDodge(int race, short armorLevel, short level, int modifier, int additional, bool isWild = true, short petLevel = 0, MateType mateType = MateType.Pet);
///
/// Get defense
///
///
///
///
///
///
///
///
///
///
///
int GetDefense(int race, AttackType attackType, short armorLevel, short level, int modifier, int additional, bool isWild = true, short petLevel = 0, MateType mateType = MateType.Pet);
///
/// Get Speed
///
///
byte GetSpeed(ClassType classType);
int GetBaseStatistic(int level, ClassType classType, StatisticType statisticType);
}