31 lines
929 B
C#
31 lines
929 B
C#
namespace PkmnLib.Plugin.Gen7.Scripts.Items.Pokeballs;
|
|
|
|
[ItemScript("level_ball")]
|
|
public class LevelBall : PokeballScript
|
|
{
|
|
/// <inheritdoc />
|
|
public LevelBall(IItem item) : base(item)
|
|
{
|
|
}
|
|
|
|
/// <inheritdoc />
|
|
public override void ChangeCatchRate(IPokemon target, ref byte catchRate)
|
|
{
|
|
if (target.BattleData is null)
|
|
return;
|
|
var opponentSide = target.BattleData.SideIndex == 0 ? 1 : 0;
|
|
var opponent = target.BattleData.Battle.Sides[opponentSide].Pokemon.FirstOrDefault(x => x is not null);
|
|
if (opponent is null)
|
|
return;
|
|
|
|
var levelDifferenceModifier = (float)target.Level / opponent.Level;
|
|
var catchModifier = levelDifferenceModifier switch
|
|
{
|
|
>= 1f => 1f,
|
|
>= 0.5f => 2f,
|
|
>= 0.25f => 4f,
|
|
_ => 8f,
|
|
};
|
|
catchRate = catchRate.MultiplyOrMax(catchModifier);
|
|
}
|
|
} |