This commit is contained in:
@@ -40,7 +40,7 @@ public class AuroraVeil : Script, IScriptOnSecondaryEffect
|
||||
var side = battle.Sides[move.User.BattleData!.SideIndex];
|
||||
|
||||
var args = new CustomTriggers.AuroraVeilDurationArgs(move, 5);
|
||||
move.User.RunScriptHook(x => x.CustomTrigger(CustomTriggers.AuroraVeilDuration, args));
|
||||
move.User.RunScriptHook<IScriptCustomTrigger>(x => x.CustomTrigger(CustomTriggers.AuroraVeilDuration, args));
|
||||
var numberOfTurns = args.Duration;
|
||||
|
||||
var script = side.VolatileScripts.StackOrAdd(ScriptUtils.ResolveName<AuroraVeilEffect>(), () =>
|
||||
|
||||
@@ -9,7 +9,7 @@ public class Bind : Script, IScriptOnSecondaryEffect
|
||||
public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit)
|
||||
{
|
||||
var args = new CustomTriggers.ModifyBindArgs(move);
|
||||
move.User.RunScriptHook(x => x.CustomTrigger(CustomTriggers.ModifyBind, args));
|
||||
move.User.RunScriptHook<IScriptCustomTrigger>(x => x.CustomTrigger(CustomTriggers.ModifyBind, args));
|
||||
|
||||
var bindTurns = args.Duration;
|
||||
var bindDamage = args.DamagePercent;
|
||||
|
||||
@@ -8,7 +8,7 @@ public class ChargeMove : Script, IScriptPreventMove
|
||||
public void PreventMove(IExecutingMove move, ref bool prevent)
|
||||
{
|
||||
var args = new CustomTriggers.BypassChargeMoveArgs(move, false);
|
||||
move.RunScriptHook(script => script.CustomTrigger(CustomTriggers.BypassChargeMove, args));
|
||||
move.RunScriptHook<IScriptCustomTrigger>(script => script.CustomTrigger(CustomTriggers.BypassChargeMove, args));
|
||||
if (args.Bypass)
|
||||
return;
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ public class Drain : Script, IScriptOnInitialize, IScriptOnSecondaryEffect
|
||||
var invert = false;
|
||||
|
||||
var args = new CustomTriggers.ModifyDrainArgs(move, target, hit, damage, healed, invert);
|
||||
target.RunScriptHook(x => x.CustomTrigger(CustomTriggers.ModifyDrain, args));
|
||||
target.RunScriptHook<IScriptCustomTrigger>(x => x.CustomTrigger(CustomTriggers.ModifyDrain, args));
|
||||
invert = args.Invert;
|
||||
healed = args.Healed;
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ public class DreamEater : Script, IScriptOnSecondaryEffect, IScriptBlockOutgoing
|
||||
healed = (uint)(healed * 1.3f);
|
||||
|
||||
var args = new CustomTriggers.ModifyDrainArgs(move, target, hit, damage, healed, false);
|
||||
target.RunScriptHook(x => x.CustomTrigger(CustomTriggers.ModifyDrain, args));
|
||||
target.RunScriptHook<IScriptCustomTrigger>(x => x.CustomTrigger(CustomTriggers.ModifyDrain, args));
|
||||
var invert = args.Invert;
|
||||
healed = args.Healed;
|
||||
|
||||
|
||||
@@ -3,10 +3,10 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon;
|
||||
namespace PkmnLib.Plugin.Gen7.Scripts.Moves;
|
||||
|
||||
[Script(ScriptCategory.Move, "feint")]
|
||||
public class Feint : Script
|
||||
public class Feint : Script, IScriptOnBeforeHit
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public override void OnBeforeHit(IExecutingMove move, IPokemon target, byte hitIndex)
|
||||
public void OnBeforeHit(IExecutingMove move, IPokemon target, byte hitIndex)
|
||||
{
|
||||
if (target.Volatile.Contains<ProtectionEffectScript>())
|
||||
{
|
||||
|
||||
@@ -14,7 +14,7 @@ public class FlareBlitz : Script, IScriptOnSecondaryEffect
|
||||
var recoilDamage = hitData.Damage * (1 / 3);
|
||||
|
||||
var triggerArgs = new CustomTriggers.ModifyRecoilArgs(move, target, hit, hitData.Damage, recoilDamage);
|
||||
move.RunScriptHook(x => x.CustomTrigger(CustomTriggers.ModifyRecoil, triggerArgs));
|
||||
move.RunScriptHook<IScriptCustomTrigger>(x => x.CustomTrigger(CustomTriggers.ModifyRecoil, triggerArgs));
|
||||
if (triggerArgs.Prevent)
|
||||
return;
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
namespace PkmnLib.Plugin.Gen7.Scripts.Moves;
|
||||
|
||||
[Script(ScriptCategory.Move, "flying_press")]
|
||||
public class FlyingPress : Script
|
||||
public class FlyingPress : Script, IScriptChangeTypesForMove
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public override void ChangeTypesForMove(IExecutingMove executingMove, IPokemon target, byte hitIndex,
|
||||
public void ChangeTypesForMove(IExecutingMove executingMove, IPokemon target, byte hitIndex,
|
||||
IList<TypeIdentifier> types)
|
||||
{
|
||||
var typeLibrary = executingMove.User.Library.StaticLibrary.Types;
|
||||
|
||||
@@ -18,7 +18,7 @@ public class HealPercent : Script, IScriptOnInitialize, IScriptOnSecondaryEffect
|
||||
public void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit)
|
||||
{
|
||||
var args = new CustomTriggers.ModifyHealPercentArgs(move, target, hit, _healPercent);
|
||||
move.RunScriptHook(x => x.CustomTrigger(CustomTriggers.ModifyHealPercent, args));
|
||||
move.RunScriptHook<IScriptCustomTrigger>(x => x.CustomTrigger(CustomTriggers.ModifyHealPercent, args));
|
||||
var healPercent = args.HealPercent;
|
||||
|
||||
target.Heal(target.BoostedStats.Hp.MultiplyOrMax(healPercent));
|
||||
|
||||
@@ -13,7 +13,7 @@ public class LightScreen : Script, IScriptOnSecondaryEffect
|
||||
return;
|
||||
|
||||
var args = new CustomTriggers.LightScreenNumberOfTurnsArgs(move, 5);
|
||||
move.RunScriptHook(x => x.CustomTrigger(CustomTriggers.LightScreenNumberOfTurns, args));
|
||||
move.RunScriptHook<IScriptCustomTrigger>(x => x.CustomTrigger(CustomTriggers.LightScreenNumberOfTurns, args));
|
||||
var turns = args.Duration;
|
||||
|
||||
battleData.BattleSide.VolatileScripts.StackOrAdd(ScriptUtils.ResolveName<LightScreenEffect>(),
|
||||
|
||||
@@ -20,7 +20,7 @@ public class MultiHitMove : Script, IScriptChangeNumberOfHits
|
||||
_ => 5,
|
||||
};
|
||||
var triggerArgs = new CustomTriggers.Modify2_5HitMoveArgs(choice, (byte)newHits);
|
||||
choice.RunScriptHook(x => x.CustomTrigger(CustomTriggers.Modify2_5HitMove, triggerArgs));
|
||||
choice.RunScriptHook<IScriptCustomTrigger>(x => x.CustomTrigger(CustomTriggers.Modify2_5HitMove, triggerArgs));
|
||||
newHits = triggerArgs.NumberOfHits;
|
||||
|
||||
numberOfHits = (byte)newHits;
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
namespace PkmnLib.Plugin.Gen7.Scripts.Moves;
|
||||
|
||||
[Script(ScriptCategory.Move, "one_hit_ko")]
|
||||
public class OneHitKo : Script, IScriptChangeMoveDamage
|
||||
public class OneHitKo : Script, IScriptChangeMoveDamage, IScriptChangeAccuracy
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public override void ChangeAccuracy(IExecutingMove executingMove, IPokemon target, byte hitIndex,
|
||||
ref int modifiedAccuracy)
|
||||
public void ChangeAccuracy(IExecutingMove executingMove, IPokemon target, byte hitIndex, ref int modifiedAccuracy)
|
||||
{
|
||||
var levelDifference = executingMove.User.Level - target.Level;
|
||||
if (levelDifference < 0)
|
||||
|
||||
@@ -3,11 +3,11 @@ using PkmnLib.Static.Moves;
|
||||
namespace PkmnLib.Plugin.Gen7.Scripts.Moves;
|
||||
|
||||
[Script(ScriptCategory.Move, "pollen_puff")]
|
||||
public class PollenPuff : Script, IScriptOnSecondaryEffect
|
||||
public class PollenPuff : Script, IScriptOnSecondaryEffect, IScriptChangeCategory
|
||||
{
|
||||
/// <inheritdoc />
|
||||
/// <inheritdoc />
|
||||
public override void ChangeCategory(IExecutingMove move, IPokemon target, byte hitIndex, ref MoveCategory category)
|
||||
public void ChangeCategory(IExecutingMove move, IPokemon target, byte hitIndex, ref MoveCategory category)
|
||||
{
|
||||
var battleData = move.User.BattleData;
|
||||
var targetBattleData = target.BattleData;
|
||||
|
||||
@@ -3,13 +3,14 @@ using PkmnLib.Static.Moves;
|
||||
namespace PkmnLib.Plugin.Gen7.Scripts.Moves;
|
||||
|
||||
[Script(ScriptCategory.Move, "present")]
|
||||
public class Present : Script, IScriptOnSecondaryEffect, IScriptChangeBasePower
|
||||
public class Present : Script, IScriptOnSecondaryEffect, IScriptChangeBasePower, IScriptChangeCategory,
|
||||
IScriptOnBeforeHit
|
||||
{
|
||||
private bool _isHealing;
|
||||
private byte _basePower;
|
||||
|
||||
/// <inheritdoc />
|
||||
public override void OnBeforeHit(IExecutingMove move, IPokemon target, byte hitIndex)
|
||||
public void OnBeforeHit(IExecutingMove move, IPokemon target, byte hitIndex)
|
||||
{
|
||||
var battleRandom = move.User.BattleData?.Battle.Random;
|
||||
if (battleRandom == null)
|
||||
@@ -33,7 +34,7 @@ public class Present : Script, IScriptOnSecondaryEffect, IScriptChangeBasePower
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override void ChangeCategory(IExecutingMove move, IPokemon target, byte hitIndex, ref MoveCategory category)
|
||||
public void ChangeCategory(IExecutingMove move, IPokemon target, byte hitIndex, ref MoveCategory category)
|
||||
{
|
||||
if (_isHealing)
|
||||
category = MoveCategory.Status;
|
||||
|
||||
@@ -23,7 +23,7 @@ public class Recoil : Script, IScriptOnInitialize, IScriptOnSecondaryEffect
|
||||
var recoilDamage = (uint)(hitData.Damage * _recoilPercentage);
|
||||
|
||||
var triggerArgs = new CustomTriggers.ModifyRecoilArgs(move, target, hit, hitData.Damage, recoilDamage);
|
||||
move.RunScriptHook(x => x.CustomTrigger(CustomTriggers.ModifyRecoil, triggerArgs));
|
||||
move.RunScriptHook<IScriptCustomTrigger>(x => x.CustomTrigger(CustomTriggers.ModifyRecoil, triggerArgs));
|
||||
if (triggerArgs.Prevent)
|
||||
return;
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ public class Reflect : Script, IScriptOnSecondaryEffect
|
||||
var numberOfTurns = 5;
|
||||
|
||||
var args = new CustomTriggers.ReflectNumberOfTurnsArgs(move, numberOfTurns);
|
||||
move.User.RunScriptHook(x => x.CustomTrigger(CustomTriggers.ReflectNumberOfTurns, args));
|
||||
move.User.RunScriptHook<IScriptCustomTrigger>(x => x.CustomTrigger(CustomTriggers.ReflectNumberOfTurns, args));
|
||||
numberOfTurns = args.Duration;
|
||||
|
||||
battleData.BattleSide.VolatileScripts.Add(new Side.ReflectEffect(numberOfTurns));
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
namespace PkmnLib.Plugin.Gen7.Scripts.Moves;
|
||||
|
||||
[Script(ScriptCategory.Move, "spectral_thief")]
|
||||
public class SpectralThief : Script
|
||||
public class SpectralThief : Script, IScriptOnBeforeHit
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public override void OnBeforeHit(IExecutingMove move, IPokemon target, byte hitIndex)
|
||||
public void OnBeforeHit(IExecutingMove move, IPokemon target, byte hitIndex)
|
||||
{
|
||||
var positiveStats = target.StatBoost.Where(x => x.value > 0).ToArray();
|
||||
if (positiveStats.Length > 0)
|
||||
|
||||
@@ -3,10 +3,10 @@ using PkmnLib.Static.Moves;
|
||||
namespace PkmnLib.Plugin.Gen7.Scripts.Moves;
|
||||
|
||||
[Script(ScriptCategory.Move, "sucker_punch")]
|
||||
public class SuckerPunch : Script
|
||||
public class SuckerPunch : Script, IScriptOnBeforeHit
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public override void OnBeforeHit(IExecutingMove move, IPokemon target, byte hitIndex)
|
||||
public void OnBeforeHit(IExecutingMove move, IPokemon target, byte hitIndex)
|
||||
{
|
||||
var targetChoice = move.Battle.ChoiceQueue?.Where(x => x.User == target).FirstOrDefault();
|
||||
if (targetChoice is not IMoveChoice moveChoice ||
|
||||
|
||||
@@ -14,7 +14,7 @@ public class Whirlpool : Script, IScriptOnSecondaryEffect
|
||||
var turns = move.Battle.Random.GetInt(4, 6);
|
||||
var damagePercent = 0.125f;
|
||||
var args = new CustomTriggers.WhirlpoolArgs(move, target, hit, turns, damagePercent);
|
||||
move.RunScriptHook(x => x.CustomTrigger(CustomTriggers.Whirlpool, args));
|
||||
move.RunScriptHook<IScriptCustomTrigger>(x => x.CustomTrigger(CustomTriggers.Whirlpool, args));
|
||||
turns = args.Turns;
|
||||
damagePercent = args.DamagePercent;
|
||||
whirlpoolEffect.AddTargetedPokemon(target, turns, damagePercent);
|
||||
|
||||
Reference in New Issue
Block a user