Even more moves
This commit is contained in:
21
Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Pursuit.cs
Normal file
21
Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Pursuit.cs
Normal file
@@ -0,0 +1,21 @@
|
||||
using PkmnLib.Plugin.Gen7.Scripts.Pokemon;
|
||||
|
||||
namespace PkmnLib.Plugin.Gen7.Scripts.Moves;
|
||||
|
||||
[Script(ScriptCategory.Move, "pursuit")]
|
||||
public class Pursuit : Script
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public override void OnBeforeTurnStart(ITurnChoice choice)
|
||||
{
|
||||
if (choice is IMoveChoice moveChoice)
|
||||
choice.User.Volatile.Add(new PursuitEffect(moveChoice));
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) =>
|
||||
move.User.Volatile.Remove<PursuitEffect>();
|
||||
|
||||
/// <inheritdoc />
|
||||
public override void OnAfterMove(IExecutingMove move) => move.User.Volatile.Remove<PursuitEffect>();
|
||||
}
|
||||
18
Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Quash.cs
Normal file
18
Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Quash.cs
Normal file
@@ -0,0 +1,18 @@
|
||||
namespace PkmnLib.Plugin.Gen7.Scripts.Moves;
|
||||
|
||||
[Script(ScriptCategory.Move, "quash")]
|
||||
public class Quash : Script
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit)
|
||||
{
|
||||
var battleData = move.User.BattleData;
|
||||
if (battleData == null)
|
||||
return;
|
||||
|
||||
if (battleData.Battle.ChoiceQueue?.MovePokemonChoiceLast(target) == false)
|
||||
{
|
||||
move.GetHitData(target, hit).Fail();
|
||||
}
|
||||
}
|
||||
}
|
||||
13
Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/QuickGuard.cs
Normal file
13
Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/QuickGuard.cs
Normal file
@@ -0,0 +1,13 @@
|
||||
using PkmnLib.Plugin.Gen7.Scripts.Side;
|
||||
|
||||
namespace PkmnLib.Plugin.Gen7.Scripts.Moves;
|
||||
|
||||
[Script(ScriptCategory.Move, "quick_guard")]
|
||||
public class QuickGuard : Script
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit)
|
||||
{
|
||||
move.User.BattleData?.BattleSide.VolatileScripts.Add(new QuickGuardEffect());
|
||||
}
|
||||
}
|
||||
13
Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Rage.cs
Normal file
13
Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/Rage.cs
Normal file
@@ -0,0 +1,13 @@
|
||||
using PkmnLib.Plugin.Gen7.Scripts.Pokemon;
|
||||
|
||||
namespace PkmnLib.Plugin.Gen7.Scripts.Moves;
|
||||
|
||||
[Script(ScriptCategory.Move, "rage")]
|
||||
public class Rage : Script
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit)
|
||||
{
|
||||
move.User.Volatile.Add(new RageEffect());
|
||||
}
|
||||
}
|
||||
18
Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/RagePowder.cs
Normal file
18
Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/RagePowder.cs
Normal file
@@ -0,0 +1,18 @@
|
||||
using PkmnLib.Plugin.Gen7.Scripts.Side;
|
||||
|
||||
namespace PkmnLib.Plugin.Gen7.Scripts.Moves;
|
||||
|
||||
[Script(ScriptCategory.Move, "rage_powder")]
|
||||
public class RagePowder : Script
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit)
|
||||
{
|
||||
var battleData = move.User.BattleData;
|
||||
if (battleData == null)
|
||||
return;
|
||||
|
||||
var effect = battleData.BattleSide.VolatileScripts.Add(new RagePowderEffect(move.User));
|
||||
((RagePowderEffect)effect.Script!).User = move.User;
|
||||
}
|
||||
}
|
||||
16
Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/RainDance.cs
Normal file
16
Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/RainDance.cs
Normal file
@@ -0,0 +1,16 @@
|
||||
using PkmnLib.Plugin.Gen7.Scripts.Weather;
|
||||
|
||||
namespace PkmnLib.Plugin.Gen7.Scripts.Moves;
|
||||
|
||||
[Script(ScriptCategory.Move, "rain_dance")]
|
||||
public class RainDance : Script
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit)
|
||||
{
|
||||
var battleData = move.User.BattleData;
|
||||
if (battleData == null)
|
||||
return;
|
||||
battleData.Battle.SetWeather(ScriptUtils.ResolveName<Rain>(), 5);
|
||||
}
|
||||
}
|
||||
23
Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/RapidSpin.cs
Normal file
23
Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/RapidSpin.cs
Normal file
@@ -0,0 +1,23 @@
|
||||
using PkmnLib.Plugin.Gen7.Scripts.Pokemon;
|
||||
|
||||
namespace PkmnLib.Plugin.Gen7.Scripts.Moves;
|
||||
|
||||
[Script(ScriptCategory.Move, "rapid_spin")]
|
||||
public class RapidSpin : Script
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit)
|
||||
{
|
||||
move.User.Volatile.Remove<LeechSeedEffect>();
|
||||
move.User.Volatile.Remove<BindEffect>();
|
||||
move.User.Volatile.Remove<FireSpinEffect>();
|
||||
move.User.Volatile.Remove<MagmaStormEffect>();
|
||||
// TODO: Sand Tomb effect removal
|
||||
// TODO: Whirlpool effect removal
|
||||
// TODO: Wrap effect removal
|
||||
|
||||
// TODO: Remove Spikes
|
||||
// TODO: Remove Toxic Spikes
|
||||
// TODO: Remove Stealth Rock
|
||||
}
|
||||
}
|
||||
24
Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/RazorWind.cs
Normal file
24
Plugins/PkmnLib.Plugin.Gen7/Scripts/Moves/RazorWind.cs
Normal file
@@ -0,0 +1,24 @@
|
||||
using PkmnLib.Plugin.Gen7.Scripts.Pokemon;
|
||||
|
||||
namespace PkmnLib.Plugin.Gen7.Scripts.Moves;
|
||||
|
||||
[Script(ScriptCategory.Move, "razor_wind")]
|
||||
public class RazorWind : Script
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public override void PreventMove(IExecutingMove move, ref bool prevent)
|
||||
{
|
||||
var chargeMoveEffect = move.User.Volatile.Get<ChargeMoveEffect>();
|
||||
if (chargeMoveEffect != null && chargeMoveEffect.MoveName == move.UseMove.Name)
|
||||
return;
|
||||
prevent = true;
|
||||
move.User.Volatile.Add(new ChargeMoveEffect(move.UseMove.Name, move.User, move.MoveChoice.TargetSide,
|
||||
move.MoveChoice.TargetPosition));
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override void ChangeCriticalStage(IExecutingMove move, IPokemon target, byte hit, ref byte stage)
|
||||
{
|
||||
stage += 1;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user