namespace PkmnLib.Plugin.Gen7.Scripts.Abilities; /// /// RKS System is an ability that changes the Pokémon's type based on its held Memory. /// /// Bulbapedia - RKS System /// [Script(ScriptCategory.Ability, "rks_system")] public class RKSSystem : Script, IScriptOnAfterHeldItemChange { /// public void OnAfterHeldItemChange(IPokemon pokemon, IItem? previous, IItem? item) { if (pokemon.Species.Name != "silvally") return; if (item is null && pokemon.Form.Name != "default") { pokemon.ChangeForm(pokemon.Species.GetDefaultForm()); } else if (item is not null && item.Name.ToString().EndsWith("_memory", StringComparison.OrdinalIgnoreCase)) { var memoryPrefix = item.Name.ToString().Replace("_memory", string.Empty, StringComparison.OrdinalIgnoreCase); var formName = $"silvally_{memoryPrefix}"; if (pokemon.Species.TryGetForm(formName, out var form)) { pokemon.ChangeForm(form); } } } }