46 lines
2.0 KiB
C#
46 lines
2.0 KiB
C#
using PkmnLib.Plugin.Gen7.Scripts.Pokemon;
|
|
using PkmnLib.Plugin.Gen7.Scripts.Utils;
|
|
|
|
namespace PkmnLib.Plugin.Gen7.Scripts.Moves;
|
|
|
|
[Script(ScriptCategory.Move, "secret_power")]
|
|
public class SecretPower : Script, IScriptOnSecondaryEffect
|
|
{
|
|
/// <inheritdoc />
|
|
public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit)
|
|
{
|
|
var environmentCategory = move.Battle.GetEnvironmentCategory();
|
|
switch (environmentCategory)
|
|
{
|
|
case EnvironmentHelper.EnvironmentCategory.Electric:
|
|
case EnvironmentHelper.EnvironmentCategory.Normal:
|
|
target.SetStatus(ScriptUtils.ResolveName<Status.Paralyzed>(), move.User);
|
|
break;
|
|
case EnvironmentHelper.EnvironmentCategory.Rock:
|
|
target.Volatile.Add(new FlinchEffect());
|
|
break;
|
|
case EnvironmentHelper.EnvironmentCategory.Ground:
|
|
target.ChangeStatBoost(Statistic.Accuracy, -1, false, false);
|
|
break;
|
|
case EnvironmentHelper.EnvironmentCategory.Water:
|
|
target.ChangeStatBoost(Statistic.Attack, -1, false, false);
|
|
break;
|
|
case EnvironmentHelper.EnvironmentCategory.Ice:
|
|
target.SetStatus(ScriptUtils.ResolveName<Status.Frozen>(), move.User);
|
|
break;
|
|
case EnvironmentHelper.EnvironmentCategory.Grass:
|
|
target.SetStatus(ScriptUtils.ResolveName<Status.Sleep>(), move.User);
|
|
break;
|
|
case EnvironmentHelper.EnvironmentCategory.Fairy:
|
|
target.ChangeStatBoost(Statistic.SpecialAttack, -1, false, false);
|
|
break;
|
|
case EnvironmentHelper.EnvironmentCategory.Psychic:
|
|
target.ChangeStatBoost(Statistic.Speed, -1, false, false);
|
|
break;
|
|
// ReSharper disable once RedundantEmptySwitchSection
|
|
default:
|
|
// No effect for unrecognized environments
|
|
break;
|
|
}
|
|
}
|
|
} |