2025-06-07 11:03:48 +02:00

41 lines
1.5 KiB
C#

using PkmnLib.Static.Utils;
namespace PkmnLib.Plugin.Gen7.Scripts.Abilities;
[Script(ScriptCategory.Ability, "speed_modifier_in_weather")]
public class SpeedModifierInWeather : Script
{
private StringKey _weather;
private float _modifier;
/// <inheritdoc />
public override void OnInitialize(IReadOnlyDictionary<StringKey, object?>? parameters)
{
if (parameters is null)
throw new ArgumentNullException(nameof(parameters));
if (!parameters.TryGetValue("weather", out var weatherObj) || weatherObj is not string weatherStr)
throw new ArgumentException("Parameter 'weather' is required and must be a string.", nameof(parameters));
if (!parameters.TryGetValue("modifier", out var modifierObj))
throw new ArgumentException("Parameter 'modifier' is required", nameof(parameters));
if (modifierObj is not float && modifierObj is not int)
throw new ArgumentException("Parameter 'modifier' must be a float or int.", nameof(parameters));
var weatherModifier = modifierObj is float modFloat ? modFloat : (int)modifierObj;
_weather = weatherStr;
_modifier = weatherModifier;
}
/// <inheritdoc />
public override void ChangeSpeed(ITurnChoice choice, ref uint speed)
{
var battle = choice.User.BattleData?.Battle;
if (battle is null)
return;
var weather = battle.WeatherName;
if (weather == _weather)
{
speed = speed.MultiplyOrMax(_modifier);
}
}
}