namespace PkmnLib.Plugin.Gen7.Scripts.Moves;

[Script(ScriptCategory.Move, "heart_swap")]
public class HeartSwap : Script, IScriptOnSecondaryEffect
{
    /// <inheritdoc />
    public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit)
    {
        EventBatchId eventBatchId = new();
        var userStats = move.User.StatBoost;
        var targetStats = target.StatBoost;

        foreach (Statistic stat in Enum.GetValues(typeof(Statistic)))
        {
            var userStat = userStats.GetStatistic(stat);
            var targetStat = targetStats.GetStatistic(stat);
            if (userStat == targetStat)
                continue;
            move.User.ChangeStatBoost(stat, (sbyte)(userStat - targetStat), true, true, eventBatchId);
            target.ChangeStatBoost(stat, (sbyte)(targetStat - userStat), false, true, eventBatchId);
        }
    }
}