protected void SetIVs(PKM pk) { if (IVs.Count != 0) { pk.SetRandomIVs(IVs, FlawlessIVCount); } else if (FlawlessIVCount > 0) { pk.SetRandomIVs(flawless: FlawlessIVCount); } }
private static void SetPINGA(PKM pk, EncounterCriteria criteria) { pk.SetRandomIVs(flawless: 3); if (pk.Format <= 2) { return; } int gender = criteria.GetGender(-1, pk.PersonalInfo); int nature = (int)criteria.GetNature(Nature.Random); if (pk.Format <= 5) { pk.SetPIDGender(gender); pk.Gender = gender; pk.SetPIDNature(nature); pk.Nature = nature; pk.RefreshAbility(pk.PIDAbility); } else { pk.PID = Util.Rand32(); pk.Nature = nature; pk.Gender = gender; pk.RefreshAbility(Util.Rand.Next(2)); } }
/// <summary> /// Sets the <see cref="PKM"/> IV(s) to a random value. /// </summary> /// <param name="pkm">Pokémon to modify.</param> /// <param name="cmd">Modification</param> private static void SetRandomIVs(PKM pkm, StringInstruction cmd) { if (cmd.PropertyName == nameof(pkm.IVs)) { pkm.SetRandomIVs(); return; } if (TryGetHasProperty(pkm, cmd.PropertyName, out var pi)) { ReflectUtil.SetValue(pi, pkm, Util.Rand32() & pkm.MaxIV); } }
/// <summary> /// Sets the <see cref="PKM"/> IV(s) to a random value. /// </summary> /// <param name="pk">Pokémon to modify.</param> /// <param name="cmd">Modification</param> private static void SetRandomIVs(PKM pk, StringInstruction cmd) { if (cmd.PropertyName == nameof(PKM.IVs)) { pk.SetRandomIVs(); return; } if (TryGetHasProperty(pk, cmd.PropertyName, out var pi)) { ReflectUtil.SetValue(pi, pk, Util.Rand.Next(pk.MaxIV + 1)); } }
/// <summary> /// Sets the <see cref="PKM.AltForm"/> value, with special consideration for <see cref="PKM.Format"/> values which derive the <see cref="PKM.AltForm"/> value. /// </summary> /// <param name="pk">Pokémon to modify.</param> /// <param name="form">Desired <see cref="PKM.AltForm"/> value to set.</param> public static void SetAltForm(this PKM pk, int form) { switch (pk.Format) { case 2: while (pk.AltForm != form) { pk.SetRandomIVs(); } break; case 3: pk.SetPIDUnown3(form); break; default: pk.AltForm = form; break; } }
public static void SetRandomPokeSpotPID(PKM pk, int nature, int gender, int ability, int slot) { while (true) { var seed = Util.Rand32(); if (!MethodFinder.IsPokeSpotActivation(slot, seed, out var _)) { continue; } var rng = RNG.XDRNG; var D = rng.Next(seed); // PID var E = rng.Next(D); // PID pk.PID = (D & 0xFFFF0000) | E >> 16; if (!IsValidCriteria4(pk, nature, ability, gender)) { continue; } pk.SetRandomIVs(); return; } }
private static void SetRandomIVs(PKM pk) { pk.IVs = pk.SetRandomIVs(); }