Getting started with implementing an explicit AI, based on the Essentials one.
All checks were successful
Build / Build (push) Successful in 1m2s

This commit is contained in:
2025-07-11 17:03:08 +02:00
parent 084ae84130
commit a3a4993407
56 changed files with 2687 additions and 1274 deletions

View File

@@ -0,0 +1,59 @@
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
{
/// <inheritdoc />
public bool IsCritical => false;
/// <inheritdoc />
public ushort BasePower { get; init; }
/// <inheritdoc />
public float Effectiveness { get; init; }
/// <inheritdoc />
public uint Damage => 0;
/// <inheritdoc />
public TypeIdentifier? Type { get; init; }
/// <inheritdoc />
public bool IsContact => false;
/// <inheritdoc />
public bool HasFailed => false;
/// <inheritdoc />
public void Fail()
{
}
/// <inheritdoc />
public void SetFlag(StringKey flag)
{
}
/// <inheritdoc />
public bool HasFlag(StringKey flag) => false;
}
}