namespace PkmnLib.Plugin.Gen7.Scripts.Weather; /// /// HarshSunlight is a weather condition that intensifies the effects of sunlight. /// /// Bulbapedia - Harsh Sunlight /// [Script(ScriptCategory.Weather, "harsh_sunlight")] public class HarshSunlight : Script { /// public override void ChangeBasePower(IExecutingMove move, IPokemon target, byte hit, ref ushort basePower) { var hitType = move.GetHitData(target, hit).Type; if (hitType?.Name == "fire" || move.UseMove.Name == "hydro_steam") { // Increase Fire-type move power by 50% in harsh sunlight basePower = (ushort)(basePower * 1.5); } else if (hitType?.Name == "water") { basePower = (ushort)(basePower * 0.5); } } /// public override void CustomTrigger(StringKey eventName, IDictionary? parameters) { if (eventName == CustomTriggers.BypassChargeMove) { if (parameters == null || !parameters.TryGetValue("move", out var moveObj) || moveObj is not IExecutingMove move) return; if (move.UseMove.Name == "solar_beam" || move.UseMove.Name == "solar_blade") { parameters["bypassCharge"] = true; } } } /// public override void PreventStatusChange(IPokemon pokemonImpl, StringKey status, ref bool preventStatus) { if (status == ScriptUtils.ResolveName()) { preventStatus = true; } } /// public override void ChangeAccuracy(IExecutingMove executingMove, IPokemon target, byte hitIndex, ref int modifiedAccuracy) { if (executingMove.UseMove.Name == "thunder" || executingMove.UseMove.Name == "hurricane") { modifiedAccuracy = (int)(modifiedAccuracy * 0.5); } } }