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

@@ -196,4 +196,12 @@ public class MoveDataImpl : IMoveData
/// <inheritdoc />
public bool HasFlag(StringKey key) => _flags.Contains(key);
}
public static class MoveTargetHelpers
{
public static bool TargetsFoe(this MoveTarget target) =>
target is MoveTarget.AdjacentOpponent or MoveTarget.RandomOpponent or MoveTarget.AllAdjacentOpponent
or MoveTarget.AllOpponent or MoveTarget.Adjacent or MoveTarget.AllAdjacent or MoveTarget.Any
or MoveTarget.All;
}

View File

@@ -139,7 +139,8 @@ public record StatisticSet<T> : ImmutableStatisticSet<T>, IEnumerable<(Statistic
Speed = value;
break;
default:
throw new ArgumentException("Invalid statistic.");
SetUnknownStat(stat, value);
break;
}
}
@@ -237,6 +238,9 @@ public record StatisticSet<T> : ImmutableStatisticSet<T>, IEnumerable<(Statistic
/// <inheritdoc />
IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
public bool IsEmpty => Hp.Equals(0) && Attack.Equals(0) && Defense.Equals(0) && SpecialAttack.Equals(0) &&
SpecialDefense.Equals(0) && Speed.Equals(0);
}
/// <summary>
@@ -320,6 +324,9 @@ public abstract record ClampedStatisticSet<T> : StatisticSet<T> where T : struct
/// </summary>
public record StatBoostStatisticSet : ClampedStatisticSet<sbyte>
{
public const sbyte MaxStatBoost = 6;
public const sbyte MinStatBoost = -6;
/// <inheritdoc />
protected override sbyte Min => -6;