Implement basic AI check for whether a move would fail
This commit is contained in:
@@ -35,6 +35,9 @@ public abstract class ChangeUserStats : Script, IScriptOnInitialize, IScriptOnSe
|
||||
move.User.ChangeStatBoost(_stat, _amount, true, false);
|
||||
}
|
||||
|
||||
protected static bool WouldMoveFail(MoveOption option, Statistic stat) =>
|
||||
option.Move.User.StatBoost.GetStatistic(stat) == StatBoostStatisticSet.MaxStatBoost;
|
||||
|
||||
protected static void GetMoveEffectScore(MoveOption option, Statistic stat, ref int score)
|
||||
{
|
||||
if (option.Move.Move.SecondaryEffect == null ||
|
||||
@@ -56,6 +59,9 @@ public class ChangeUserAttack : ChangeUserStats
|
||||
{
|
||||
}
|
||||
|
||||
[AIMoveFailureFunction]
|
||||
public static bool AIMoveWillFail(MoveOption option) => WouldMoveFail(option, Statistic.Attack);
|
||||
|
||||
[AIMoveScoreFunction]
|
||||
public static void AIMoveEffectScore(MoveOption option, ref int score) =>
|
||||
GetMoveEffectScore(option, Statistic.Attack, ref score);
|
||||
@@ -68,6 +74,9 @@ public class ChangeUserDefense : ChangeUserStats
|
||||
{
|
||||
}
|
||||
|
||||
[AIMoveFailureFunction]
|
||||
public static bool AIMoveWillFail(MoveOption option) => WouldMoveFail(option, Statistic.Defense);
|
||||
|
||||
[AIMoveScoreFunction]
|
||||
public static void AIMoveEffectScore(MoveOption option, ref int score) =>
|
||||
GetMoveEffectScore(option, Statistic.Defense, ref score);
|
||||
@@ -80,6 +89,9 @@ public class ChangeUserSpecialAttack : ChangeUserStats
|
||||
{
|
||||
}
|
||||
|
||||
[AIMoveFailureFunction]
|
||||
public static bool AIMoveWillFail(MoveOption option) => WouldMoveFail(option, Statistic.SpecialAttack);
|
||||
|
||||
[AIMoveScoreFunction]
|
||||
public static void AIMoveEffectScore(MoveOption option, ref int score) =>
|
||||
GetMoveEffectScore(option, Statistic.SpecialAttack, ref score);
|
||||
@@ -92,6 +104,9 @@ public class ChangeUserSpecialDefense : ChangeUserStats
|
||||
{
|
||||
}
|
||||
|
||||
[AIMoveFailureFunction]
|
||||
public static bool AIMoveWillFail(MoveOption option) => WouldMoveFail(option, Statistic.SpecialDefense);
|
||||
|
||||
[AIMoveScoreFunction]
|
||||
public static void AIMoveEffectScore(MoveOption option, ref int score) =>
|
||||
GetMoveEffectScore(option, Statistic.SpecialDefense, ref score);
|
||||
@@ -104,6 +119,9 @@ public class ChangeUserSpeed : ChangeUserStats
|
||||
{
|
||||
}
|
||||
|
||||
[AIMoveFailureFunction]
|
||||
public static bool AIMoveWillFail(MoveOption option) => WouldMoveFail(option, Statistic.Speed);
|
||||
|
||||
[AIMoveScoreFunction]
|
||||
public static void AIMoveEffectScore(MoveOption option, ref int score) =>
|
||||
GetMoveEffectScore(option, Statistic.Speed, ref score);
|
||||
@@ -116,6 +134,9 @@ public class ChangeUserAccuracy : ChangeUserStats
|
||||
{
|
||||
}
|
||||
|
||||
[AIMoveFailureFunction]
|
||||
public static bool AIMoveWillFail(MoveOption option) => WouldMoveFail(option, Statistic.Accuracy);
|
||||
|
||||
[AIMoveScoreFunction]
|
||||
public static void AIMoveEffectScore(MoveOption option, ref int score) =>
|
||||
GetMoveEffectScore(option, Statistic.Accuracy, ref score);
|
||||
@@ -128,6 +149,9 @@ public class ChangeUserEvasion : ChangeUserStats
|
||||
{
|
||||
}
|
||||
|
||||
[AIMoveFailureFunction]
|
||||
public static bool AIMoveWillFail(MoveOption option) => WouldMoveFail(option, Statistic.Evasion);
|
||||
|
||||
[AIMoveScoreFunction]
|
||||
public static void AIMoveEffectScore(MoveOption option, ref int score) =>
|
||||
GetMoveEffectScore(option, Statistic.Evasion, ref score);
|
||||
|
||||
Reference in New Issue
Block a user