Replace all raw string comparisons with StringKey, source generator that creates cache keys for all names for Gen7 plugin
All checks were successful
Build / Build (push) Successful in 2m21s
All checks were successful
Build / Build (push) Successful in 2m21s
This commit is contained in:
@@ -26,8 +26,6 @@ public static class AISwitchFunctions
|
||||
return effect.Turns <= 1;
|
||||
}
|
||||
|
||||
private static readonly StringKey PoisonHealAbilityName = "poison_heal";
|
||||
|
||||
/// <summary>
|
||||
/// Switch out if the Pokémon is expected to take significant end-of-turn damage.
|
||||
/// </summary>
|
||||
@@ -50,7 +48,7 @@ public static class AISwitchFunctions
|
||||
return true;
|
||||
var statusScript = pokemon.StatusScript.Script;
|
||||
if (statusScript is BadlyPoisoned { Turns: > 0 } badlyPoisoned &&
|
||||
pokemon.ActiveAbility?.Name != PoisonHealAbilityName)
|
||||
pokemon.ActiveAbility?.Name != AbilityNames.PoisonHeal)
|
||||
{
|
||||
var poisonDamage = pokemon.MaxHealth / 8;
|
||||
var nextToxicDamage = pokemon.MaxHealth * badlyPoisoned.GetPoisonMultiplier();
|
||||
@@ -92,28 +90,18 @@ public static class AISwitchFunctions
|
||||
return bigThreat;
|
||||
}
|
||||
|
||||
private static readonly StringKey ImmunityAbilityName = "immunity";
|
||||
private static readonly StringKey InsomniaAbilityName = "insomnia";
|
||||
private static readonly StringKey LimberAbilityName = "limber";
|
||||
private static readonly StringKey MagmaArmorAbilityName = "magma_armor";
|
||||
private static readonly StringKey VitalSpiritAbilityName = "vital_spirit";
|
||||
private static readonly StringKey WaterBubbleAbilityName = "water_bubble";
|
||||
private static readonly StringKey WaterVeilAbilityName = "water_veil";
|
||||
private static readonly StringKey NaturalCureAbilityName = "natural_cure";
|
||||
private static readonly StringKey RegeneratorAbilityName = "regenerator";
|
||||
|
||||
private static readonly Dictionary<StringKey, List<StringKey>> StatusCureAbilities = new()
|
||||
{
|
||||
{
|
||||
ImmunityAbilityName,
|
||||
AbilityNames.Immunity,
|
||||
[ScriptUtils.ResolveName<Poisoned>(), ScriptUtils.ResolveName<BadlyPoisoned>()]
|
||||
},
|
||||
{ InsomniaAbilityName, [ScriptUtils.ResolveName<Sleep>()] },
|
||||
{ LimberAbilityName, [ScriptUtils.ResolveName<Paralyzed>()] },
|
||||
{ MagmaArmorAbilityName, [ScriptUtils.ResolveName<Frozen>()] },
|
||||
{ VitalSpiritAbilityName, [ScriptUtils.ResolveName<Sleep>()] },
|
||||
{ WaterBubbleAbilityName, [ScriptUtils.ResolveName<Burned>()] },
|
||||
{ WaterVeilAbilityName, [ScriptUtils.ResolveName<Burned>()] },
|
||||
{ AbilityNames.Insomnia, [ScriptUtils.ResolveName<Sleep>()] },
|
||||
{ AbilityNames.Limber, [ScriptUtils.ResolveName<Paralyzed>()] },
|
||||
{ AbilityNames.MagmaArmor, [ScriptUtils.ResolveName<Frozen>()] },
|
||||
{ AbilityNames.VitalSpirit, [ScriptUtils.ResolveName<Sleep>()] },
|
||||
{ AbilityNames.WaterBubble, [ScriptUtils.ResolveName<Burned>()] },
|
||||
{ AbilityNames.WaterVeil, [ScriptUtils.ResolveName<Burned>()] },
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
@@ -138,7 +126,7 @@ public static class AISwitchFunctions
|
||||
|
||||
// Check abilities that cure specific status conditions
|
||||
var canCureStatus = false;
|
||||
if (abilityName == NaturalCureAbilityName)
|
||||
if (abilityName == AbilityNames.NaturalCure)
|
||||
{
|
||||
canCureStatus = true;
|
||||
}
|
||||
@@ -161,7 +149,7 @@ public static class AISwitchFunctions
|
||||
|
||||
// Don't bother curing a poisoning if Toxic Spikes will just re-poison
|
||||
if (pokemon.StatusScript.Script is Poisoned or BadlyPoisoned &&
|
||||
!reserves.Any(p => p.Types.Any(t => t.Name == "poison")))
|
||||
!reserves.Any(p => p.Types.Any(t => t.Name == TypeNames.Poison)))
|
||||
{
|
||||
if (pokemon.BattleData!.BattleSide.VolatileScripts.TryGet<ToxicSpikesEffect>(out _))
|
||||
{
|
||||
@@ -177,7 +165,7 @@ public static class AISwitchFunctions
|
||||
if (ai.Random.GetInt(100) < 70)
|
||||
return true;
|
||||
}
|
||||
else if (abilityName == RegeneratorAbilityName)
|
||||
else if (abilityName == AbilityNames.Regenerator)
|
||||
{
|
||||
// Not worth healing if battler would lose more HP from switching back in later
|
||||
if (entryHazardDamage >= pokemon.MaxHealth / 3)
|
||||
|
||||
Reference in New Issue
Block a user