This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user