using PkmnLib.Dynamic.Libraries; using PkmnLib.Dynamic.Models; using PkmnLib.Static; using PkmnLib.Static.Moves; using PkmnLib.Static.Utils; namespace PkmnLib.Dynamic.AI; public static class AIHelpers { public static uint CalculateDamageEstimation(IMoveData move, IPokemon user, IPokemon target, IDynamicLibrary library) { var hitData = new CustomHitData { BasePower = move.BasePower, Effectiveness = library.StaticLibrary.Types.GetEffectiveness(move.MoveType, target.Types), Type = move.MoveType, }; return library.DamageCalculator.GetDamage(null, move.Category, user, target, 1, 0, hitData); } private class CustomHitData : IHitData { /// public bool IsCritical => false; /// public ushort BasePower { get; init; } /// public float Effectiveness { get; init; } /// public uint Damage => 0; /// public TypeIdentifier? Type { get; init; } /// public bool IsContact => false; /// public bool HasFailed => false; /// public void Fail() { } /// public void SetFlag(StringKey flag) { } /// public bool HasFlag(StringKey flag) => false; } }