mirror of
https://github.com/kwsch/pkNX.git
synced 2026-04-25 15:26:55 -05:00
Precompute gg banned moves
Fake Out isn't flagged with F18, so F18 isn't valid with respect to identifying allowed moves.
This commit is contained in:
parent
6ea0885de8
commit
49a656a901
|
|
@ -145,7 +145,7 @@ private void DetermineSpecies(IPokeData pk)
|
|||
{
|
||||
pk.Species = RandSpec.GetRandomSpeciesType(pk.Species, Type);
|
||||
pk.HeldItem = PossibleHeldItems[Util.Random.Next(PossibleHeldItems.Length)];
|
||||
pk.Form = Legal.GetRandomForme(pk.Species, Settings.AllowRandomMegaForms, true, Personal.Table);
|
||||
pk.Form = Legal.GetRandomForme(pk.Species, Settings.AllowRandomMegaForms, true, Personal);
|
||||
}
|
||||
|
||||
pk.Gender = 0; // random
|
||||
|
|
@ -157,7 +157,7 @@ private void DetermineSpecies(IPokeData pk)
|
|||
int randFinalEvo() => Util.Random.Next(FinalEvo.Count);
|
||||
if (FinalEvo.Count != 0)
|
||||
pk.Species = FinalEvo[randFinalEvo()];
|
||||
pk.Form = Legal.GetRandomForme(pk.Species, Settings.AllowRandomMegaForms, true, Personal.Table);
|
||||
pk.Form = Legal.GetRandomForme(pk.Species, Settings.AllowRandomMegaForms, true, Personal);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ namespace pkNX.Structures
|
|||
{
|
||||
public static partial class Legal
|
||||
{
|
||||
public static int GetRandomForme(int species, bool mega, bool alola, PersonalInfo[] stats = null)
|
||||
public static int GetRandomForme(int species, bool mega, bool alola, PersonalTable stats)
|
||||
{
|
||||
if (stats == null)
|
||||
return 0;
|
||||
|
|
@ -22,6 +22,8 @@ public static int GetRandomForme(int species, bool mega, bool alola, PersonalInf
|
|||
|
||||
if (alola && EvolveToAlolanForms.Contains(species))
|
||||
return Util.Rand.Next(2);
|
||||
if (stats.TableLength == 980 && species == 25) // gg tableB
|
||||
return Util.Rand.Next(2) == 1 ? 8 : 0; // Pikachu
|
||||
if (!BattleExclusiveForms.Contains(species) || mega)
|
||||
return Util.Rand.Next(stats[species].FormeCount); // Slot-Random
|
||||
return 0;
|
||||
|
|
@ -171,11 +173,34 @@ public static int[] GetBannedMoves(GameVersion infoGame, IEnumerable<Move> moves
|
|||
if (!GameVersion.GG.Contains(infoGame))
|
||||
return Array.Empty<int>();
|
||||
|
||||
var banned = moves
|
||||
.Select((z, i) => new { Index = i, Move = (Move7)z })
|
||||
.Where(z => (z.Move.Flags & MoveFlag7.F18) == 0) // no "allowed" flag
|
||||
.Select(z => z.Index).ToArray();
|
||||
return banned;
|
||||
return Enumerable.Range(0, moves.Count()).Except(AllowedMovesGG).ToArray();
|
||||
}
|
||||
|
||||
private static readonly int[] AllowedMovesGG =
|
||||
{
|
||||
000, 001, 002, 003, 004, 005, 006, 007, 008, 009,
|
||||
010, 011, 012, 013, 014, 015, 016, 017, 018, 019,
|
||||
020, 021, 022, 023, 024, 025, 026, 027, 028, 029,
|
||||
030, 031, 032, 033, 034, 035, 036, 037, 038, 039,
|
||||
040, 041, 042, 043, 044, 045, 046, 047, 048, 049,
|
||||
050, 051, 052, 053, 054, 055, 056, 057, 058, 059,
|
||||
060, 061, 062, 063, 064, 065, 066, 067, 068, 069,
|
||||
070, 071, 072, 073, 074, 075, 076, 077, 078, 079,
|
||||
080, 081, 082, 083, 084, 085, 086, 087, 088, 089,
|
||||
090, 091, 092, 093, 094, 095, 096, 097, 098, 099,
|
||||
100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
|
||||
110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
|
||||
120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
|
||||
130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
|
||||
140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
|
||||
150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
|
||||
160, 161, 162, 163, 164,
|
||||
|
||||
182, 188, 200, 224, 227, 231, 242, 243, 247, 252,
|
||||
257, 261, 263, 269, 270, 276, 280, 281, 339, 347,
|
||||
355, 364, 369, 389, 394, 398, 399, 403, 404, 405,
|
||||
406, 417, 420, 430, 438, 446, 453, 483, 492, 499,
|
||||
503, 504, 525, 529, 583, 585, 605, 742
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user