using System.Collections.Generic; namespace PKHeX.Core { public sealed class EncounterTrade3 : EncounterTrade, IContestStats { public override int Generation => 3; /// /// Fixed value the encounter must have. /// public readonly uint PID; internal IReadOnlyList Contest { init => this.SetContestStats(value); } public int CNT_Cool { get; set; } public int CNT_Beauty { get; set; } public int CNT_Cute { get; set; } public int CNT_Smart { get; set; } public int CNT_Tough { get; set; } public int CNT_Sheen { get; set; } public EncounterTrade3(uint pid) { PID = pid; Shiny = Shiny.FixedValue; } public override bool IsMatch(PKM pkm, DexLevel evo) { if (!base.IsMatch(pkm, evo)) return false; if (pkm is IContestStats s && s.IsContestBelow(this)) return false; return true; } protected override void ApplyDetails(ITrainerInfo sav, EncounterCriteria criteria, PKM pk) { base.ApplyDetails(sav, criteria, pk); this.CopyContestStatsTo((PK3)pk); } protected override void SetPINGA(PKM pk, EncounterCriteria criteria) { var pi = pk.PersonalInfo; int gender = criteria.GetGender(PKX.GetGenderFromPID(Species, PID), pi); int nature = (int)criteria.GetNature(Nature); int ability = criteria.GetAbilityFromNumber(Ability, pi); pk.PID = PID; pk.Nature = nature; pk.Gender = gender; pk.RefreshAbility(ability); SetIVs(pk); } protected override bool IsMatchNatureGenderShiny(PKM pkm) { return PID == pkm.EncryptionConstant; } } }