Files
PkmnLib.NET/Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/BeatUp.cs

34 lines
1.3 KiB
C#

namespace PkmnLib.Plugin.Gen7.Scripts.Moves;
[Script(ScriptCategory.Move, "beat_up")]
public class BeatUp : Script, IScriptChangeNumberOfHits, IScriptChangeBasePower
{
private IBattlePokemon[]? _relevantPartyMembers;
private static IEnumerable<IBattlePokemon> GetRelevantPartyMembers(IBattlePokemon user)
{
var party = user.Battle.Parties.FirstOrDefault(x => x.BattlePokemon.Contains(user));
return party?.BattlePokemon.WhereNotNull().Where(x => x.IsUsable && x.StatusScript.IsEmpty) ?? [];
}
/// <inheritdoc />
public void ChangeNumberOfHits(IMoveChoice choice, ref byte numberOfHits)
{
var relevantPartyMembers = _relevantPartyMembers ??= GetRelevantPartyMembers(choice.User).ToArray();
numberOfHits = (byte)relevantPartyMembers.Count();
if (numberOfHits == 0)
numberOfHits = 1;
}
/// <inheritdoc />
public void ChangeBasePower(IExecutingMove move, IBattlePokemon target, byte hit, ref ushort basePower)
{
var relevantPartyMembers = _relevantPartyMembers ??= GetRelevantPartyMembers(move.User).ToArray();
var hittingPokemon = relevantPartyMembers.ElementAtOrDefault(hit);
if (hittingPokemon == null)
return;
basePower = (byte)(hittingPokemon.Form.BaseStats.Attack / 10 + 5);
}
}