mirror of
https://github.com/kwsch/PKHeX
synced 2024-11-10 06:34:19 +00:00
Update 23.09.16 - Teal Mask
Co-Authored-By: Matt <17801814+sora10pls@users.noreply.github.com> Co-Authored-By: SciresM <8676005+SciresM@users.noreply.github.com> Co-Authored-By: Lusamine <30205550+Lusamine@users.noreply.github.com>
This commit is contained in:
parent
c09a4646a1
commit
7703576088
657 changed files with 4874 additions and 2530 deletions
2
.github/README-de.md
vendored
2
.github/README-de.md
vendored
|
@ -24,7 +24,7 @@ PKHeX erwartet entschlüsselte Spielstände. Da diese konsolenspezifisch verschl
|
|||
|
||||
## Screenshots
|
||||
|
||||
![Main Window](https://i.imgur.com/f2oF00t.png)
|
||||
![Main Window](https://i.imgur.com/37SMQSr.png)
|
||||
|
||||
## Erstellen
|
||||
|
||||
|
|
2
.github/README-es.md
vendored
2
.github/README-es.md
vendored
|
@ -24,7 +24,7 @@ PKHeX espera archivos de guardado que no estén cifrados con las claves específ
|
|||
|
||||
## Capturas de Pantalla
|
||||
|
||||
![Pantalla principal](https://i.imgur.com/vQrE25t.png)
|
||||
![Pantalla principal](https://i.imgur.com/gREbXFH.png)
|
||||
|
||||
## Building
|
||||
|
||||
|
|
2
.github/README-fr.md
vendored
2
.github/README-fr.md
vendored
|
@ -23,7 +23,7 @@ PKHeX attend des fichiers de sauvegarde qui ne sont pas chiffrés avec des clés
|
|||
|
||||
## Captures d'écran
|
||||
|
||||
![Main Window](https://i.imgur.com/H3GKLtk.png)
|
||||
![Main Window](https://i.imgur.com/fk6IX2a.png)
|
||||
|
||||
## Construction
|
||||
|
||||
|
|
2
.github/README-it.md
vendored
2
.github/README-it.md
vendored
|
@ -24,7 +24,7 @@ PKHeX si aspetta file di salvataggio non criptati con le chiavi specifiche della
|
|||
|
||||
## Screenshots
|
||||
|
||||
![Main Window](https://i.imgur.com/18b86pC.png)
|
||||
![Main Window](https://i.imgur.com/epXOQ5M.png)
|
||||
|
||||
## Building
|
||||
|
||||
|
|
2
.github/README-zh.md
vendored
2
.github/README-zh.md
vendored
|
@ -24,7 +24,7 @@ PKHeX 所读取存档文件必须是未经主机唯一密钥加密,因此请
|
|||
|
||||
## 截图
|
||||
|
||||
![主介面](https://i.imgur.com/KjYhgj9.png)
|
||||
![主介面](https://i.imgur.com/hM8GJ4U.png)
|
||||
|
||||
## 构建
|
||||
|
||||
|
|
2
.github/README-zhHK.md
vendored
2
.github/README-zhHK.md
vendored
|
@ -24,7 +24,7 @@ PKHeX 所讀取檔案須未經主機唯一密鑰加密,因而請使用儲存
|
|||
|
||||
## 螢幕擷取截圖
|
||||
|
||||
![主介面](https://i.imgur.com/KNwURaM.png)
|
||||
![主介面](https://i.imgur.com/U5FKBIF.png)
|
||||
|
||||
## 構建
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<Project>
|
||||
<PropertyGroup>
|
||||
<Version>23.08.23</Version>
|
||||
<Version>23.09.16</Version>
|
||||
<LangVersion>11</LangVersion>
|
||||
<Nullable>enable</Nullable>
|
||||
<NeutralLanguage>en</NeutralLanguage>
|
||||
|
|
|
@ -102,6 +102,7 @@ public static class ShowdownParsing
|
|||
(int)Necrozma when form is "Dusk" => $"{form}-Mane",
|
||||
(int)Necrozma when form is "Dawn" => $"{form}-Wings",
|
||||
(int)Polteageist or (int)Sinistea => form == "Antique" ? form : string.Empty,
|
||||
(int)Sinistcha or (int)Poltchageist => form == "Antique" ? form : string.Empty,
|
||||
(int)Maushold when form is "Family of Four" => "Four",
|
||||
|
||||
(int)Greninja or (int)Rockruff or (int)Koraidon or (int)Miraidon => string.Empty,
|
||||
|
|
|
@ -304,5 +304,13 @@ public enum Ability : ushort
|
|||
ArmorTail,
|
||||
EarthEater,
|
||||
MyceliumMight,
|
||||
Hospitality,
|
||||
MindsEye,
|
||||
EmbodyAspect0,
|
||||
EmbodyAspect1,
|
||||
EmbodyAspect2,
|
||||
EmbodyAspect3,
|
||||
ToxicChain,
|
||||
SupersweetSyrup,
|
||||
MAX_COUNT,
|
||||
}
|
||||
|
|
|
@ -906,5 +906,9 @@ public enum Move : ushort
|
|||
NoxiousTorque,
|
||||
CombatTorque,
|
||||
MagicalTorque,
|
||||
BloodMoon,
|
||||
MatchaGotcha,
|
||||
SyrupBomb,
|
||||
IvyCudgel,
|
||||
MAX_COUNT,
|
||||
}
|
||||
|
|
|
@ -1016,5 +1016,12 @@ public enum Species : ushort
|
|||
Miraidon,
|
||||
WalkingWake,
|
||||
IronLeaves,
|
||||
Dipplin,
|
||||
Poltchageist,
|
||||
Sinistcha,
|
||||
Okidogi,
|
||||
Munkidori,
|
||||
Fezandipiti,
|
||||
Ogerpon,
|
||||
MAX_COUNT,
|
||||
}
|
||||
|
|
|
@ -188,6 +188,11 @@ public sealed class GameStrings : IBasicStrings
|
|||
// De-duplicate the Calyrex ability names
|
||||
abilitylist[(int)Core.Ability.AsOneI] += $" ({specieslist[(int)Core.Species.Glastrier]})";
|
||||
abilitylist[(int)Core.Ability.AsOneG] += $" ({specieslist[(int)Core.Species.Spectrier]})";
|
||||
// De-duplicate the Ogerpon ability names
|
||||
abilitylist[(int)Core.Ability.EmbodyAspect0] += $" ({forms[FormConverter.MaskTeal]})";
|
||||
abilitylist[(int)Core.Ability.EmbodyAspect1] += $" ({forms[FormConverter.MaskWellspring]})";
|
||||
abilitylist[(int)Core.Ability.EmbodyAspect2] += $" ({forms[FormConverter.MaskHearthflame]})";
|
||||
abilitylist[(int)Core.Ability.EmbodyAspect3] += $" ({forms[FormConverter.MaskCornerstone]})";
|
||||
|
||||
// Replace the Egg Name with ---; egg name already stored to eggname
|
||||
specieslist[0] = EmptyIndex;
|
||||
|
@ -290,6 +295,9 @@ public sealed class GameStrings : IBasicStrings
|
|||
items[2329] += " (1)"; // Academy Ball
|
||||
items[2330] += " (2)"; // Academy Ball
|
||||
items[0694] += " (G6-8)"; // TM100, not held.
|
||||
|
||||
items[2418] += " (SL)"; // Academy Chairs
|
||||
items[2419] += " (VL)"; // Academy Chairs
|
||||
}
|
||||
|
||||
private static void SanitizeItemsLA(string[] items)
|
||||
|
@ -592,6 +600,19 @@ public sealed class GameStrings : IBasicStrings
|
|||
m[120] += " (2)"; // Zero Lab
|
||||
m[122] += " (3)"; // Zero Lab
|
||||
|
||||
m[144] += " (1)"; // Oni Mountain
|
||||
m[147] += " (2)"; // Oni Mountain
|
||||
m[149] += " (3)"; // Oni Mountain
|
||||
m[150] += " (4)"; // Oni Mountain
|
||||
m[169] += " (5)"; // Oni Mountain
|
||||
|
||||
m[152] += " (1)"; // Crystal Pool
|
||||
m[154] += " (2)"; // Crystal Pool
|
||||
m[153] += " (1)"; // Oni Mountain Summit
|
||||
m[155] += " (2)"; // Oni Mountain Summit
|
||||
m[164] += " (1)"; // Kitakami Wilds
|
||||
m[167] += " (2)"; // Kitakami Wilds
|
||||
|
||||
set.Met3[1] += $" ({NPC})"; // Anything from an NPC
|
||||
set.Met3[2] += $" ({EggName})"; // Egg From Link Trade
|
||||
for (int i = 3; i <= 6; i++) // distinguish first set of regions (unused) from second (used)
|
||||
|
|
|
@ -4,6 +4,16 @@ namespace PKHeX.Core;
|
|||
|
||||
internal static class Locations9
|
||||
{
|
||||
/// <summary>
|
||||
/// Checks if the location is accessible in Paldea (without DLC).
|
||||
/// </summary>
|
||||
public static bool IsAccessiblePreDLC(ushort location) => !IsKitakami(location);
|
||||
|
||||
/// <summary>
|
||||
/// Checks if the location is accessible in Kitakami.
|
||||
/// </summary>
|
||||
public static bool IsKitakami(ushort location) => location is (>= 132 and <= 170);
|
||||
|
||||
public static ReadOnlySpan<byte> Met0 => new byte[]
|
||||
{
|
||||
002, 004, 006, 008,
|
||||
|
@ -23,7 +33,10 @@ internal static class Locations9
|
|||
067, 069,
|
||||
099, 101, 103, 105, 107, 109,
|
||||
111, 113, 115, 117,
|
||||
130, 131,
|
||||
130, 131, 132, 134, 136, 138,
|
||||
140, 142, 144, 146, 148, 150,
|
||||
152, 154, 156, 158, 160, 162,
|
||||
164, 166, 168, 170,
|
||||
};
|
||||
|
||||
public static ReadOnlySpan<ushort> Met3 => new ushort[]
|
||||
|
@ -45,5 +58,5 @@ internal static class Locations9
|
|||
40070, 40071, 40072, 40073, 40074, 40075, 40076, 40077, 40078,
|
||||
};
|
||||
|
||||
public static ReadOnlySpan<ushort> Met6 => new ushort[] {/* XY */ 60001, 60003, /* ORAS */ 60004 };
|
||||
public static ReadOnlySpan<ushort> Met6 => new ushort[] {/* XY */ 60001, 60003, /* ORAS */ 60004, /* SV */ 60005 };
|
||||
}
|
||||
|
|
|
@ -45,9 +45,9 @@ public static class HeldItemLumpUtil
|
|||
8 when item is (>= 0328 and <= 0427) => HeldItemLumpImage.TechnicalMachine, // BDSP TMs
|
||||
8 when item is (>= 1130 and <= 1229) => HeldItemLumpImage.TechnicalRecord, // Gen8 TR
|
||||
9 when item is (>= 0328 and <= 0419) // TM01-TM92
|
||||
or (>= 0618 and <= 0620) // TM93-TM95
|
||||
or (>= 0690 and <= 0693) // TM96-TM99
|
||||
or (>= 2160 and <= 2231) /* TM100-TM171 */ => HeldItemLumpImage.TechnicalMachine,
|
||||
or (>= 0618 and <= 0620) // TM093-TM095
|
||||
or (>= 0690 and <= 0693) // TM096-TM099
|
||||
or (>= 2160 and <= 2261) /* TM100-TM201 */ => HeldItemLumpImage.TechnicalMachine,
|
||||
_ => HeldItemLumpImage.NotLump,
|
||||
};
|
||||
}
|
||||
|
|
|
@ -47,19 +47,20 @@ public sealed class ItemStorage9SV : IItemStorage
|
|||
0279, 0280, 0281, 0282, 0283, 0284, 0285, 0286, 0287, 0288,
|
||||
0289, 0290, 0291, 0292, 0293, 0294, 0295, 0296, 0297, 0298,
|
||||
0299, 0300, 0301, 0302, 0303, 0304, 0305, 0306, 0307, 0308,
|
||||
0309, 0310, 0311, 0312, 0313, 0326, 0485, 0486, 0487, 0488,
|
||||
0489, 0490, 0491, 0538, 0539, 0540, 0541, 0542, 0543, 0544,
|
||||
0545, 0546, 0547, 0564, 0565, 0566, 0567, 0568, 0569, 0570,
|
||||
0639, 0640, 0644, 0645, 0648, 0649, 0650, 0795, 0796, 0846,
|
||||
0849, 0853, 0854, 0855, 0856, 0879, 0880, 0881, 0882, 0883,
|
||||
0884, 1103, 1104, 1116, 1117, 1118, 1119, 1120, 1121, 1122,
|
||||
1123, 1124, 1125, 1126, 1127, 1128, 1231, 1232, 1233, 1234,
|
||||
1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244,
|
||||
1245, 1246, 1247, 1248, 1249, 1250, 1251, 1253, 1254, 1582,
|
||||
1592, 1606, 1777, 1778, 1779, 1861, 1862, 1863, 1864, 1865,
|
||||
1866, 1867, 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1875,
|
||||
1876, 1877, 1878, 1879, 1880, 1881, 1882, 1883, 1884, 1885,
|
||||
1886, 2344, 2345,
|
||||
0309, 0310, 0311, 0312, 0313, 0325, 0326, 0327, 0485, 0486,
|
||||
0487, 0488, 0489, 0490, 0491, 0537, 0538, 0539, 0540, 0541,
|
||||
0542, 0543, 0544, 0545, 0546, 0547, 0564, 0565, 0566, 0567,
|
||||
0568, 0569, 0570, 0639, 0640, 0644, 0645, 0648, 0649, 0650,
|
||||
0795, 0796, 0846, 0849, 0853, 0854, 0855, 0856, 0879, 0880,
|
||||
0881, 0882, 0883, 0884, 1103, 1104, 1116, 1117, 1118, 1119,
|
||||
1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1231,
|
||||
1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241,
|
||||
1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251,
|
||||
1253, 1254, 1582, 1592, 1606, 1777, 1778, 1779, 1861, 1862,
|
||||
1863, 1864, 1865, 1866, 1867, 1868, 1869, 1870, 1871, 1872,
|
||||
1873, 1874, 1875, 1876, 1877, 1878, 1879, 1880, 1881, 1882,
|
||||
1883, 1884, 1885, 1886, 2344, 2345, 2401, 2402, 2403, 2404,
|
||||
2406, 2407, 2408, 2411, 2412, 2413, 2414, 2415, 2416, 2479,
|
||||
};
|
||||
|
||||
private static ReadOnlySpan<ushort> Pouch_TM_SV => new ushort[]
|
||||
|
@ -81,12 +82,10 @@ public sealed class ItemStorage9SV : IItemStorage
|
|||
2200, 2201, 2202, 2203, 2204, 2205, 2206, 2207, 2208, 2209,
|
||||
2210, 2211, 2212, 2213, 2214, 2215, 2216, 2217, 2218, 2219,
|
||||
2220, 2221, 2222, 2223, 2224, 2225, 2226, 2227, 2228, 2229,
|
||||
2230, 2231,
|
||||
|
||||
// DLC additions
|
||||
// 2232, 2233, 2234, 2235, 2236, 2237, 2238, 2239, 2240, 2241,
|
||||
// 2242, 2243, 2244, 2245, 2246, 2247, 2248, 2249, 2250, 2251,
|
||||
// 2252, 2253, 2254, 2255, 2256, 2257, 2258, 2259, 2260, 2261,
|
||||
2230, 2231, 2232, 2233, 2234, 2235, 2236, 2237, 2238, 2239,
|
||||
2240, 2241, 2242, 2243, 2244, 2245, 2246, 2247, 2248, 2249,
|
||||
2250, 2251, 2252, 2253, 2254, 2255, 2256, 2257, 2258, 2259,
|
||||
2260, 2261,
|
||||
};
|
||||
|
||||
private static ReadOnlySpan<ushort> Pouch_Treasure_SV => new ushort[]
|
||||
|
@ -102,29 +101,25 @@ public sealed class ItemStorage9SV : IItemStorage
|
|||
1908, 1909, 1910, 1911, 1912, 1913, 1914, 1915, 1916, 1917,
|
||||
1918, 1919, 1920, 1921, 1922, 1923, 1924, 1925, 1926, 1927,
|
||||
1928, 1929, 1930, 1931, 1932, 1933, 1934, 1935, 1936, 1937,
|
||||
1938, 1939, 1940, 1941, 1942, 1943, 1944, 1945, 1946,
|
||||
2311, 2313,
|
||||
2314, 2315, 2316, 2317, 2318, 2319, 2320, 2321, 2322, 2323,
|
||||
2324, 2325, 2326, 2327, 2329, 2330, 2331, 2332, 2333, 2334,
|
||||
2335, 2336, 2337, 2338, 2339, 2340, 2341, 2342, 2348, 2349,
|
||||
2350, 2351, 2352, 2353, 2354, 2355, 2356, 2357, 2358, 2359,
|
||||
2360, 2361, 2362, 2363, 2364, 2365, 2366, 2367, 2368, 2369,
|
||||
2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379,
|
||||
2380, 2381, 2382, 2383, 2384, 2385, 2386, 2387, 2388, 2389,
|
||||
2390, 2391, 2392, 2393, 2394, 2395, 2396, 2397, 2398, 2399,
|
||||
2400,
|
||||
|
||||
// Item data is present, but the items have no associated text or sprites, so they do not appear in the bag.
|
||||
// 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955,
|
||||
1938, 1939, 1940, 1941, 1942, 1943, 1944, 1945, 1946, 2311,
|
||||
2313, 2314, 2315, 2316, 2317, 2318, 2319, 2320, 2321, 2322,
|
||||
2323, 2324, 2325, 2326, 2327, 2329, 2330, 2331, 2332, 2333,
|
||||
2334, 2335, 2336, 2337, 2338, 2339, 2340, 2341, 2342, 2348,
|
||||
2349, 2350, 2351, 2352, 2353, 2354, 2355, 2356, 2357, 2358,
|
||||
2359, 2360, 2361, 2362, 2363, 2364, 2365, 2366, 2367, 2368,
|
||||
2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378,
|
||||
2379, 2380, 2381, 2382, 2383, 2384, 2385, 2386, 2387, 2388,
|
||||
2389, 2390, 2391, 2392, 2393, 2394, 2395, 2396, 2397, 2398,
|
||||
2399, 2400, 2417, 2418, 2419, 2420, 2421, 2422, 2423, 2424,
|
||||
2425, 2426, 2427, 2428, 2429, 2430, 2431, 2432, 2433, 2434,
|
||||
2435, 2436, 2437,
|
||||
};
|
||||
|
||||
private static ReadOnlySpan<ushort> Pouch_Event_SV => new ushort[]
|
||||
{
|
||||
0632, 0638, 0703, 0765, 1278, 1590, 1591, 1829, 1830, 1831,
|
||||
1832, 1833, 1834, 1835, 1836, 1857, 1858,
|
||||
|
||||
// Item data is present, but the items have no associated text or sprites, so they do not appear in the bag.
|
||||
// 0078, 0466, 0631, 1267, 1587, 1589, 1837, 1838, 1839, 1840, 1841,
|
||||
0078, 0466, 0631, 0632, 0638, 0703, 0765, 1267, 1278, 1587,
|
||||
1589, 1590, 1591, 1829, 1830, 1831, 1832, 1833, 1834, 1835,
|
||||
1836, 1857, 1858, 2405, 2409, 2410, 2480, 2481,
|
||||
};
|
||||
|
||||
private static ReadOnlySpan<ushort> Pouch_Material_SV => new ushort[]
|
||||
|
@ -143,18 +138,15 @@ public sealed class ItemStorage9SV : IItemStorage
|
|||
2066, 2067, 2068, 2069, 2070, 2071, 2072, 2073, 2074, 2075,
|
||||
2076, 2077, 2078, 2079, 2080, 2081, 2082, 2083, 2084, 2085,
|
||||
2086, 2087, 2088, 2089, 2090, 2091, 2092, 2093, 2094, 2095,
|
||||
2096, 2097, 2098, 2099, 2103, 2104, 2105,
|
||||
2106, 2107, 2108, 2109, 2110, 2111, 2112, 2113, 2114, 2115,
|
||||
2116, 2117, 2118, 2119, 2120, 2121, 2122, 2123, 2126, 2127,
|
||||
2128, 2129, 2130, 2131, 2132, 2133, 2134, 2135, 2136, 2137,
|
||||
|
||||
2156, 2157,
|
||||
2158, 2159,
|
||||
|
||||
// Item data is present, but the items have no associated text or sprites, so they do not appear in the bag.
|
||||
// 2100, 2101, 2102,
|
||||
// 2138, 2139, 2140, 2141, 2142, 2143, 2144, 2145, 2146, 2147,
|
||||
// 2148, 2149, 2150, 2151, 2152, 2153, 2154, 2155,
|
||||
2096, 2097, 2098, 2099, 2103, 2104, 2105, 2106, 2107, 2108,
|
||||
2109, 2110, 2111, 2112, 2113, 2114, 2115, 2116, 2117, 2118,
|
||||
2119, 2120, 2121, 2122, 2123, 2126, 2127, 2128, 2129, 2130,
|
||||
2131, 2132, 2133, 2134, 2135, 2136, 2137, 2156, 2157, 2158,
|
||||
2159, 2438, 2439, 2440, 2441, 2442, 2443, 2444, 2445, 2446,
|
||||
2447, 2448, 2449, 2450, 2451, 2452, 2453, 2454, 2455, 2456,
|
||||
2457, 2458, 2459, 2460, 2461, 2462, 2463, 2464, 2465, 2466,
|
||||
2467, 2468, 2469, 2470, 2471, 2472, 2473, 2474, 2475, 2476,
|
||||
2477, 2478,
|
||||
};
|
||||
|
||||
internal static ReadOnlySpan<InventoryType> ValidTypes => new[]
|
||||
|
@ -182,12 +174,6 @@ public sealed class ItemStorage9SV : IItemStorage
|
|||
|
||||
0111, // Odd Keystone
|
||||
|
||||
0208, // Enigma Berry
|
||||
0209, // Micle Berry
|
||||
0210, // Custap Berry
|
||||
0211, // Jaboca Berry
|
||||
0212, // Rowap Berry
|
||||
|
||||
0485, // Red Apricorn
|
||||
0486, // Blue Apricorn
|
||||
0487, // Yellow Apricorn
|
||||
|
|
|
@ -136,6 +136,7 @@ public static class Breeding
|
|||
(int)Floette when form == 5 => false, // can't get Eternal Flower from egg
|
||||
(int)Greninja when form == 1 => false, // can't get Battle Bond Greninja from egg
|
||||
(int)Sinistea or (int)Polteageist => false, // can't get Antique eggs
|
||||
(int)Poltchageist or (int)Sinistcha => false, // can't get Antique eggs
|
||||
_ => true,
|
||||
};
|
||||
|
||||
|
@ -204,6 +205,7 @@ public static class Breeding
|
|||
(int)RoaringMoon or (int)IronValiant => false,
|
||||
(int)Koraidon or (int)Miraidon => false,
|
||||
(int)WalkingWake or (int)IronLeaves => false,
|
||||
(int)Okidogi or (int)Munkidori or (int)Fezandipiti or (int)Ogerpon => false,
|
||||
|
||||
_ => true,
|
||||
};
|
||||
|
|
|
@ -114,10 +114,20 @@ public static class Legal
|
|||
//internal const int MaxGameID_8b = (int)GameVersion.SP;
|
||||
internal const int MaxAbilityID_8b = MaxAbilityID_8_R2;
|
||||
|
||||
internal const int MaxSpeciesID_9 = (int)Species.IronLeaves;
|
||||
internal const int MaxMoveID_9 = (int)Move.MagicalTorque;
|
||||
internal const int MaxItemID_9 = 2400; // Yellow Dish
|
||||
internal const int MaxAbilityID_9 = (int)Ability.MyceliumMight;
|
||||
internal const int MaxSpeciesID_9 = MaxSpeciesID_9_T1;
|
||||
internal const int MaxMoveID_9 = MaxMoveID_9_T1;
|
||||
internal const int MaxItemID_9 = MaxItemID_9_T1;
|
||||
internal const int MaxAbilityID_9 = MaxAbilityID_9_T1;
|
||||
|
||||
internal const int MaxSpeciesID_9_T0 = (int)Species.IronLeaves;
|
||||
internal const int MaxMoveID_9_T0 = (int)Move.MagicalTorque;
|
||||
internal const int MaxItemID_9_T0 = 2400; // Yellow Dish
|
||||
internal const int MaxAbilityID_9_T0 = (int)Ability.MyceliumMight;
|
||||
|
||||
internal const int MaxSpeciesID_9_T1 = (int)Species.Ogerpon;
|
||||
internal const int MaxMoveID_9_T1 = (int)Move.IvyCudgel;
|
||||
internal const int MaxItemID_9_T1 = 2481; // Glimmering Charm
|
||||
internal const int MaxAbilityID_9_T1 = (int)Ability.SupersweetSyrup;
|
||||
|
||||
internal const int MaxBallID_9 = (int)Ball.LAOrigin;
|
||||
internal const int MaxGameID_9 = (int)GameVersion.VL;
|
||||
|
|
|
@ -58,6 +58,22 @@ internal static class Encounters9
|
|||
new(SV) { Species = 0999, Shiny = Never, Level = 50, Location = 048 }, // Gimmighoul - North Province (Area Two)
|
||||
new(SV) { Species = 0999, Shiny = Never, Level = 50, Location = 109 }, // Gimmighoul - Socarrat Trail
|
||||
#endregion
|
||||
|
||||
#region Sudachi 1
|
||||
new(SV) { Species = 0168, Shiny = Never, Level = 65, Location = 166, Ability = OnlyFirst, Gender = 0, Nature = Nature.Hardy, TeraType = GemType.Bug, Size = 128, IVs = new(20,20,20,20,20,20) }, // Ariados
|
||||
new(SV) { Species = 0901, Shiny = Never, Level = 70, Location = 166, Ability = OnlyFirst, Gender = 0, Nature = Nature.Hardy, TeraType = GemType.Normal, Size = 128, FlawlessIVCount = 3, Moves = new(901,414,163,347), Form = 1 }, // Ursaluna-1
|
||||
new(SV) { Species = 1014, Shiny = Never, Level = 70, Location = 162, Ability = OnlyFirst, Gender = 0, TeraType = GemType.Poison, Size = 128, FlawlessIVCount = 3 }, // Okidogi
|
||||
new(SV) { Species = 1015, Shiny = Never, Level = 70, Location = 156, Ability = OnlyFirst, Gender = 0, TeraType = GemType.Poison, Size = 128, FlawlessIVCount = 3 }, // Munkidori
|
||||
new(SV) { Species = 1016, Shiny = Never, Level = 70, Location = 144, Ability = OnlyFirst, Gender = 0, TeraType = GemType.Poison, Size = 128, FlawlessIVCount = 3 }, // Fezandipiti
|
||||
new(SV) { Species = 1017, Shiny = Never, Level = 20, Location = 146, Ability = OnlyFirst, Gender = 1, Nature = Nature.Lonely, TeraType = GemType.Grass, Size = 128, IVs = new(31,31,20,31,20,20), Moves = new(904,021,074,022) }, // Ogerpon
|
||||
new(SV) { Species = 1017, Shiny = Never, Level = 70, Location = 146, Ability = OnlyFirst, Gender = 1, Nature = Nature.Lonely, TeraType = GemType.Grass, Size = 128, IVs = new(31,31,20,31,20,20), Moves = new(904,067,021,580) }, // Ogerpon
|
||||
|
||||
new(SV) { FixedBall = Ball.Poke, Species = 0446, Shiny = Always, Level = 01, Location = 142, Ability = OnlyHidden, Gender = 0, Nature = Nature.Impish, Size = 255 }, // Munchlax
|
||||
new(SV) { FixedBall = Ball.Poke, Species = 0058, Shiny = Never, Level = 15, Location = 134, Ability = OnlyHidden, Gender = 0, Nature = Nature.Jolly, TeraType = GemType.Rock, Size = 254, IVs = new(31,31,20,31,20,20), Form = 1 }, // Growlithe-1
|
||||
new(SV) { FixedBall = Ball.Poke, Species = 0387, Shiny = Never, Level = 01, Location = 000, Ability = OnlyFirst, Size = 128, EggLocation = 60005 }, // Turtwig
|
||||
new(SV) { FixedBall = Ball.Poke, Species = 0390, Shiny = Never, Level = 01, Location = 000, Ability = OnlyFirst, Size = 128, EggLocation = 60005 }, // Chimchar
|
||||
new(SV) { FixedBall = Ball.Poke, Species = 0393, Shiny = Never, Level = 01, Location = 000, Ability = OnlyFirst, Size = 128, EggLocation = 60005 }, // Piplup
|
||||
#endregion
|
||||
};
|
||||
|
||||
internal static readonly EncounterStatic9[] StaticSL =
|
||||
|
@ -101,7 +117,8 @@ internal static class Encounters9
|
|||
new(TradeNames, 02, SV, 0872,10) { ID32 = 050724, Ability = Any12, OTGender = 0, Gender = 1, Nature = Nature.Bashful, IVs = new(31,18,13,20,28,26) }, // Snom
|
||||
};
|
||||
|
||||
internal static readonly EncounterTera9[] Tera = EncounterTera9.GetArray(Get("gem_paldea"));
|
||||
internal static readonly EncounterTera9[] TeraBase = EncounterTera9.GetArray(Get("gem_paldea"), TeraRaidMapParent.Paldea);
|
||||
internal static readonly EncounterTera9[] TeraDLC1 = EncounterTera9.GetArray(Get("gem_kitakami"), TeraRaidMapParent.Kitakami);
|
||||
internal static readonly EncounterDist9[] Dist = EncounterDist9.GetArray(Get("dist_paldea"));
|
||||
internal static readonly EncounterMight9[] Might = EncounterMight9.GetArray(Get("might_paldea"));
|
||||
internal static readonly EncounterFixed9[] Fixed = EncounterFixed9.GetArray(Get("fixed_paldea"));
|
||||
|
|
|
@ -41,7 +41,8 @@ public record struct EncounterPossible9(EvoCriteria[] Chain, EncounterTypeGroup
|
|||
StaticVersionVL,
|
||||
StaticShared,
|
||||
StaticFixed,
|
||||
StaticTera,
|
||||
StaticTeraBase,
|
||||
StaticTeraDLC1,
|
||||
StaticDist,
|
||||
StaticMight,
|
||||
StaticEnd,
|
||||
|
@ -107,9 +108,13 @@ public record struct EncounterPossible9(EvoCriteria[] Chain, EncounterTypeGroup
|
|||
case YieldState.StaticFixed:
|
||||
if (TryGetNext(Encounters9.Fixed))
|
||||
return true;
|
||||
Index = 0; State = YieldState.StaticTera; goto case YieldState.StaticTera;
|
||||
case YieldState.StaticTera:
|
||||
if (TryGetNext(Encounters9.Tera))
|
||||
Index = 0; State = YieldState.StaticTeraBase; goto case YieldState.StaticTeraBase;
|
||||
case YieldState.StaticTeraBase:
|
||||
if (TryGetNext(Encounters9.TeraBase))
|
||||
return true;
|
||||
Index = 0; State = YieldState.StaticTeraDLC1; goto case YieldState.StaticTeraDLC1;
|
||||
case YieldState.StaticTeraDLC1:
|
||||
if (TryGetNext(Encounters9.TeraDLC1))
|
||||
return true;
|
||||
Index = 0; State = YieldState.StaticDist; goto case YieldState.StaticDist;
|
||||
case YieldState.StaticDist:
|
||||
|
|
|
@ -43,7 +43,8 @@ public record struct EncounterEnumerator9SWSH(PKM Entity, EvoCriteria[] Chain, G
|
|||
StaticVersionVL,
|
||||
StaticShared,
|
||||
StaticFixed,
|
||||
StaticTera,
|
||||
StaticTeraBase,
|
||||
StaticTeraDLC1,
|
||||
StaticDist,
|
||||
StaticMight,
|
||||
|
||||
|
@ -130,9 +131,13 @@ public record struct EncounterEnumerator9SWSH(PKM Entity, EvoCriteria[] Chain, G
|
|||
case YieldState.StaticFixed:
|
||||
if (TryGetNext(Encounters9.Fixed))
|
||||
return true;
|
||||
Index = 0; State = YieldState.StaticTera; goto case YieldState.StaticTera;
|
||||
case YieldState.StaticTera:
|
||||
if (TryGetNext(Encounters9.Tera))
|
||||
Index = 0; State = YieldState.StaticTeraBase; goto case YieldState.StaticTeraBase;
|
||||
case YieldState.StaticTeraBase:
|
||||
if (TryGetNext(Encounters9.TeraBase))
|
||||
return true;
|
||||
Index = 0; State = YieldState.StaticTeraDLC1; goto case YieldState.StaticTeraDLC1;
|
||||
case YieldState.StaticTeraDLC1:
|
||||
if (TryGetNext(Encounters9.TeraDLC1))
|
||||
return true;
|
||||
Index = 0; State = YieldState.StaticDist; goto case YieldState.StaticDist;
|
||||
case YieldState.StaticDist:
|
||||
|
|
|
@ -44,7 +44,8 @@ public record struct EncounterEnumerator9(PKM Entity, EvoCriteria[] Chain, GameV
|
|||
StaticVersionVL,
|
||||
StaticShared,
|
||||
StaticFixed,
|
||||
StaticTera,
|
||||
StaticTeraBase,
|
||||
StaticTeraDLC1,
|
||||
StaticDist,
|
||||
StaticMight,
|
||||
|
||||
|
@ -76,9 +77,11 @@ public record struct EncounterEnumerator9(PKM Entity, EvoCriteria[] Chain, GameV
|
|||
Index = 0; goto case YieldState.Bred;
|
||||
|
||||
case YieldState.Bred:
|
||||
State = YieldState.TradeStart;
|
||||
State = Entity.IsEgg ? YieldState.StaticShared : YieldState.TradeStart;
|
||||
if (Locations.IsEggLocationBred9(Entity.Egg_Location) && EncounterGenerator9.TryGetEgg(Entity, Chain, Version, out var egg))
|
||||
return SetCurrent(egg);
|
||||
if (Entity.IsEgg)
|
||||
goto case YieldState.StaticShared;
|
||||
goto case YieldState.TradeStart;
|
||||
|
||||
case YieldState.TradeStart:
|
||||
|
@ -135,9 +138,13 @@ public record struct EncounterEnumerator9(PKM Entity, EvoCriteria[] Chain, GameV
|
|||
case YieldState.StaticFixed:
|
||||
if (TryGetNext(Encounters9.Fixed))
|
||||
return true;
|
||||
Index = 0; State = YieldState.StaticTera; goto case YieldState.StaticTera;
|
||||
case YieldState.StaticTera:
|
||||
if (TryGetNext(Encounters9.Tera))
|
||||
Index = 0; State = YieldState.StaticTeraBase; goto case YieldState.StaticTeraBase;
|
||||
case YieldState.StaticTeraBase:
|
||||
if (TryGetNext(Encounters9.TeraBase))
|
||||
return true;
|
||||
Index = 0; State = YieldState.StaticTeraDLC1; goto case YieldState.StaticTeraDLC1;
|
||||
case YieldState.StaticTeraDLC1:
|
||||
if (TryGetNext(Encounters9.TeraDLC1))
|
||||
return true;
|
||||
Index = 0; State = YieldState.StaticDist; goto case YieldState.StaticDist;
|
||||
case YieldState.StaticDist:
|
||||
|
|
|
@ -10,13 +10,14 @@ public sealed record EncounterStatic9(GameVersion Version)
|
|||
{
|
||||
public int Generation => 9;
|
||||
public EntityContext Context => EntityContext.Gen9;
|
||||
public int EggLocation => 0;
|
||||
public bool IsShiny => Shiny == Shiny.Always;
|
||||
public bool EggEncounter => false;
|
||||
public bool EggEncounter => EggLocation != 0;
|
||||
int ILocation.Location => Location;
|
||||
int ILocation.EggLocation => EggLocation;
|
||||
|
||||
public Ball FixedBall { get; init; }
|
||||
public required ushort Location { get; init; }
|
||||
public ushort EggLocation { get; init; }
|
||||
public required ushort Species { get; init; }
|
||||
public required byte Level { get; init; }
|
||||
public byte Form { get; init; }
|
||||
|
@ -30,6 +31,7 @@ public sealed record EncounterStatic9(GameVersion Version)
|
|||
public GemType TeraType { get; init; }
|
||||
public byte Size { get; init; }
|
||||
public bool IsTitan { get; init; }
|
||||
public bool RibbonMarkCrafty => Species == (int)Core.Species.Munchlax; // Shiny etc
|
||||
|
||||
private bool Gift => FixedBall != Ball.None;
|
||||
|
||||
|
@ -73,12 +75,23 @@ public sealed record EncounterStatic9(GameVersion Version)
|
|||
ID32 = tr.ID32,
|
||||
};
|
||||
|
||||
if (EggEncounter)
|
||||
{
|
||||
// Fake as hatched.
|
||||
pk.Met_Location = Locations.HatchLocation9;
|
||||
pk.Met_Level = EggStateLegality.EggMetLevel;
|
||||
pk.Egg_Location = EggLocation;
|
||||
pk.EggMetDate = pk.MetDate;
|
||||
}
|
||||
|
||||
if (Gift && !ScriptedYungoos)
|
||||
pk.HT_Language = (byte)pk.Language;
|
||||
if (StarterBoxLegend)
|
||||
pk.FormArgument = 1; // Not Ride Form.
|
||||
if (IsTitan)
|
||||
pk.RibbonMarkTitan = true;
|
||||
else if (RibbonMarkCrafty)
|
||||
pk.RibbonMarkCrafty = true;
|
||||
|
||||
SetPINGA(pk, criteria, pi);
|
||||
if (Moves.HasMoves)
|
||||
|
@ -174,7 +187,12 @@ public sealed record EncounterStatic9(GameVersion Version)
|
|||
return IsMatchDeferred(pk);
|
||||
}
|
||||
|
||||
private bool IsMatchLocationExact(PKM pk) => pk.Met_Location == Location;
|
||||
private bool IsMatchLocationExact(PKM pk)
|
||||
{
|
||||
if (EggEncounter && !pk.IsEgg)
|
||||
return true;
|
||||
return pk.Met_Location == Location;
|
||||
}
|
||||
|
||||
private bool IsMatchLocationRemapped(PKM pk)
|
||||
{
|
||||
|
|
|
@ -37,19 +37,36 @@ public sealed record EncounterTera9
|
|||
public required short RandRateMinViolet { get; init; } // weight chance total of all lower index encounters, for Violet
|
||||
public bool IsAvailableHostScarlet => RandRateMinScarlet != -1;
|
||||
public bool IsAvailableHostViolet => RandRateMinViolet != -1;
|
||||
public required TeraRaidMapParent Map { get; init; }
|
||||
|
||||
public string Name => $"Tera Raid Encounter [{(Index == 0 ? "Base" : Index)}] {Stars}★";
|
||||
public string LongName => Name;
|
||||
public byte LevelMin => Level;
|
||||
public byte LevelMax => Level;
|
||||
|
||||
public bool CanBeEncountered(uint seed) => Tera9RNG.IsMatchStarChoice(seed, Stars, RandRate, RandRateMinScarlet, RandRateMinViolet);
|
||||
public bool CanBeEncountered(uint seed) => Tera9RNG.IsMatchStarChoice(seed, Stars, RandRate, RandRateMinScarlet, RandRateMinViolet, Map);
|
||||
|
||||
/// <summary>
|
||||
/// Fetches the rate sum for the base ROM raid, depending on star count.
|
||||
/// </summary>
|
||||
/// <param name="star">Raid Difficulty</param>
|
||||
/// <param name="map">Map the encounter originates on.</param>
|
||||
/// <returns>Total rate value the game uses to call rand(x) with.</returns>
|
||||
public static short GetRateTotalSL(int star, TeraRaidMapParent map) => map switch
|
||||
{
|
||||
TeraRaidMapParent.Paldea => GetRateTotalBaseSL(star),
|
||||
TeraRaidMapParent.Kitakami => GetRateTotalKitakamiSL(star),
|
||||
_ => 0,
|
||||
};
|
||||
|
||||
/// <inheritdoc cref="GetRateTotalSL(int, TeraRaidMapParent)"/>"/>
|
||||
public static short GetRateTotalVL(int star, TeraRaidMapParent map) => map switch
|
||||
{
|
||||
TeraRaidMapParent.Paldea => GetRateTotalBaseVL(star),
|
||||
TeraRaidMapParent.Kitakami => GetRateTotalKitakamiVL(star),
|
||||
_ => 0,
|
||||
};
|
||||
|
||||
public static short GetRateTotalBaseSL(int star) => star switch
|
||||
{
|
||||
1 => 5800,
|
||||
|
@ -72,17 +89,39 @@ public sealed record EncounterTera9
|
|||
_ => 0,
|
||||
};
|
||||
|
||||
public static EncounterTera9[] GetArray(ReadOnlySpan<byte> data)
|
||||
public static short GetRateTotalKitakamiSL(int star) => star switch
|
||||
{
|
||||
1 => 1500,
|
||||
2 => 1500,
|
||||
3 => 2500,
|
||||
4 => 2100,
|
||||
5 => 2250,
|
||||
6 => 2475, // -99
|
||||
_ => 0,
|
||||
};
|
||||
|
||||
public static short GetRateTotalKitakamiVL(int star) => star switch
|
||||
{
|
||||
1 => 1500,
|
||||
2 => 1500,
|
||||
3 => 2500,
|
||||
4 => 2100,
|
||||
5 => 2250,
|
||||
6 => 2574, // +99
|
||||
_ => 0,
|
||||
};
|
||||
|
||||
public static EncounterTera9[] GetArray(ReadOnlySpan<byte> data, TeraRaidMapParent map)
|
||||
{
|
||||
const int size = 0x18;
|
||||
var count = data.Length / size;
|
||||
var result = new EncounterTera9[count];
|
||||
for (int i = 0; i < result.Length; i++)
|
||||
result[i] = ReadEncounter(data.Slice(i * size, size));
|
||||
result[i] = ReadEncounter(data.Slice(i * size, size), map);
|
||||
return result;
|
||||
}
|
||||
|
||||
private static EncounterTera9 ReadEncounter(ReadOnlySpan<byte> data) => new()
|
||||
private static EncounterTera9 ReadEncounter(ReadOnlySpan<byte> data, TeraRaidMapParent map) => new()
|
||||
{
|
||||
Species = ReadUInt16LittleEndian(data),
|
||||
Form = data[0x02],
|
||||
|
@ -102,6 +141,8 @@ public sealed record EncounterTera9
|
|||
RandRate = data[0x13],
|
||||
RandRateMinScarlet = ReadInt16LittleEndian(data[0x14..]),
|
||||
RandRateMinViolet = ReadInt16LittleEndian(data[0x16..]),
|
||||
|
||||
Map = map,
|
||||
};
|
||||
|
||||
private static AbilityPermission GetAbility(byte b) => b switch
|
||||
|
@ -251,7 +292,7 @@ public sealed record EncounterTera9
|
|||
var seed = Tera9RNG.GetOriginalSeed(pk);
|
||||
if (pk is ITeraType t && !Tera9RNG.IsMatchTeraType(seed, TeraType, Species, Form, (byte)t.TeraTypeOriginal))
|
||||
return true;
|
||||
if (!Tera9RNG.IsMatchStarChoice(seed, Stars, RandRate, RandRateMinScarlet, RandRateMinViolet))
|
||||
if (!Tera9RNG.IsMatchStarChoice(seed, Stars, RandRate, RandRateMinScarlet, RandRateMinViolet, Map))
|
||||
return true;
|
||||
|
||||
var pi = PersonalTable.SV.GetFormEntry(Species, Form);
|
||||
|
@ -266,3 +307,9 @@ public sealed record EncounterTera9
|
|||
|
||||
#endregion
|
||||
}
|
||||
|
||||
public enum TeraRaidMapParent : byte
|
||||
{
|
||||
Paldea,
|
||||
Kitakami,
|
||||
}
|
||||
|
|
|
@ -34,6 +34,10 @@ public static class EggHatchLocation9
|
|||
0, 3, 0, 3, 0, 3, 0, 3, 0, 3,
|
||||
0, 3, 0, 3, 0, 3, 0, 3, 3, 0,
|
||||
0, 0, 0, 0, 3, 0, 0, 0, 0, 0,
|
||||
1, 2,
|
||||
1, 2, 3, 0, 3, 0, 3, 0, 3, 0,
|
||||
3, 0, 3, 0, 3, 0, 3, 0, 3, 0,
|
||||
0, 0, 3, 0, 0, 0, 3, 0, 3, 0,
|
||||
3, 0, 3, 0, 3, 0, 3, 0, 3, 0,
|
||||
3, 0,
|
||||
};
|
||||
}
|
||||
|
|
|
@ -85,6 +85,17 @@ public sealed class LearnSource9SV : ILearnSource<PersonalInfo9SV>, IEggSource,
|
|||
if (types.HasFlag(MoveSourceType.EnhancedTutor) && GetIsEnhancedTutor(evo, pk, move))
|
||||
return new(Tutor, Game);
|
||||
|
||||
// In 2.0.1, the following moves are no longer learned via Level Up.
|
||||
// Since they could have been learned via Level Up prior to 2.0.1, we need to check for them.
|
||||
// This is double-checked outside of this method -- this is a silly workaround.
|
||||
if (types.HasFlag(MoveSourceType.LevelUp))
|
||||
{
|
||||
if (move == (int)Move.BugBite && evo is { Species: (int)Species.Larvesta, Form: 0, LevelMax: >= 28 })
|
||||
return new(LevelUp, Game, 28);
|
||||
if (move == (int)Move.Spite && evo is { Species: (int)Species.Zorua , Form: 1, LevelMax: >= 24 })
|
||||
return new(LevelUp, Game, 28);
|
||||
}
|
||||
|
||||
return default;
|
||||
}
|
||||
|
||||
|
|
|
@ -27,7 +27,7 @@ public static class Encounter9RNG
|
|||
|
||||
var type = Tera9RNG.GetTeraType(seed, enc.TeraType, enc.Species, enc.Form);
|
||||
pk.TeraTypeOriginal = (MoveType)type;
|
||||
if (criteria.TeraType != -1 && type != criteria.TeraType)
|
||||
if (criteria.TeraType != -1 && type != criteria.TeraType && TeraTypeUtil.CanChangeTeraType(enc.Species))
|
||||
pk.SetTeraType((MoveType)criteria.TeraType); // sets the override type
|
||||
return true; // done.
|
||||
}
|
||||
|
@ -47,7 +47,7 @@ public static class Encounter9RNG
|
|||
|
||||
var type = Tera9RNG.GetTeraType(seed, enc.TeraType, enc.Species, enc.Form);
|
||||
pk.TeraTypeOriginal = (MoveType)type;
|
||||
if (criteria.TeraType != -1 && type != criteria.TeraType)
|
||||
if (criteria.TeraType != -1 && type != criteria.TeraType && TeraTypeUtil.CanChangeTeraType(enc.Species))
|
||||
pk.SetTeraType((MoveType)criteria.TeraType); // sets the override type
|
||||
return true; // done.
|
||||
}
|
||||
|
|
|
@ -174,8 +174,9 @@ public static class Tera9RNG
|
|||
/// <param name="raidRate">Random weight of the raid to be used in the comparison with the game specific min rates.</param>
|
||||
/// <param name="randRateMinScarlet">Total weight of all Scarlet raids prior to this encounter.</param>
|
||||
/// <param name="randRateMinViolet">Total weight of all Violet raids prior to this encounter.</param>
|
||||
/// <param name="map">Parent map the Raid can be obtained on.</param>
|
||||
/// <returns>True if the raid seed can generate the encounter.</returns>
|
||||
public static bool IsMatchStarChoice(in uint seed, in byte stars, in byte raidRate, in short randRateMinScarlet, in short randRateMinViolet)
|
||||
public static bool IsMatchStarChoice(in uint seed, in byte stars, in byte raidRate, in short randRateMinScarlet, in short randRateMinViolet, TeraRaidMapParent map)
|
||||
{
|
||||
// When determining a raid, the game takes the u32 seed and does two rand calls.
|
||||
// Rand 1: Star count of the raid (depends on game progress).
|
||||
|
@ -201,7 +202,7 @@ public static class Tera9RNG
|
|||
// The inputs to this function have pre-computed the total rate when the encounter is checked.
|
||||
|
||||
// If Scarlet...
|
||||
var maxScarlet = EncounterTera9.GetRateTotalBaseSL(stars);
|
||||
var maxScarlet = EncounterTera9.GetRateTotalSL(stars, map);
|
||||
{
|
||||
var xoro = rand; // copy
|
||||
var rateRand = (int)xoro.NextInt((uint)maxScarlet);
|
||||
|
@ -209,7 +210,7 @@ public static class Tera9RNG
|
|||
return true; // Seed can yield this encounter for Scarlet.
|
||||
}
|
||||
// If Violet..
|
||||
var maxViolet = EncounterTera9.GetRateTotalBaseVL(stars);
|
||||
var maxViolet = EncounterTera9.GetRateTotalVL(stars, map);
|
||||
{
|
||||
var xoro = rand; // copy
|
||||
var rateRand = (int)xoro.NextInt((uint)maxViolet);
|
||||
|
|
|
@ -31,6 +31,7 @@ public static class FormInfo
|
|||
case (int)Necrozma when form < 3: // Only mark Ultra Necrozma as Battle Only
|
||||
return false;
|
||||
case (int)Minior: return form < 7; // Minior Shields-Down
|
||||
case (int)Ogerpon: return form >= 4; // Embody Aspect
|
||||
|
||||
default:
|
||||
return form != 0;
|
||||
|
@ -50,6 +51,7 @@ public static class FormInfo
|
|||
(int)Darmanitan => (byte)(form & 2),
|
||||
(int)Zygarde when format > 6 => 3,
|
||||
(int)Minior => (byte)(form + 7),
|
||||
(int)Ogerpon => (byte)(form & 3),
|
||||
_ => 0,
|
||||
};
|
||||
|
||||
|
@ -157,6 +159,7 @@ public static class FormInfo
|
|||
(int)Necrozma,
|
||||
(int)Calyrex,
|
||||
(int)Enamorus,
|
||||
(int)Ogerpon,
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
|
@ -185,6 +188,7 @@ public static class FormInfo
|
|||
(int)Eternatus,
|
||||
|
||||
(int)Palafin,
|
||||
(int)Ogerpon,
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
|
|
|
@ -60,6 +60,7 @@ public static class SpeciesCategory
|
|||
(int)TypeNull, (int)Silvally, (int)TapuKoko, (int)TapuLele, (int)TapuBulu, (int)TapuFini,
|
||||
(int)Kubfu, (int)Urshifu, (int)Regieleki, (int)Regidrago, (int)Glastrier, (int)Spectrier, (int)Enamorus,
|
||||
(int)WoChien, (int)ChienPao, (int)TingLu, (int)ChiYu,
|
||||
(int)Okidogi, (int)Munkidori, (int)Fezandipiti, (int)Ogerpon,
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
|
|
|
@ -307,17 +307,9 @@ public sealed class BallVerifier : Verifier
|
|||
return GetInvalid(LBallSpecies);
|
||||
}
|
||||
if (ball is >= Dusk and <= Quick) // Dusk Heal Quick
|
||||
{
|
||||
if (!BallBreedLegality.Ban_Gen4Ball_7.Contains(species))
|
||||
return GetValid(LBallSpeciesPass);
|
||||
return GetInvalid(LBallSpecies);
|
||||
}
|
||||
return GetValid(LBallSpeciesPass);
|
||||
if (ball is >= Ultra and <= Premier) // Don't worry, Safari was already checked.
|
||||
{
|
||||
if (!BallBreedLegality.Ban_Gen3Ball_7.Contains(species))
|
||||
return GetValid(LBallSpeciesPass);
|
||||
return GetInvalid(LBallSpecies);
|
||||
}
|
||||
return GetValid(LBallSpeciesPass);
|
||||
|
||||
if (ball == Beast)
|
||||
{
|
||||
|
@ -477,7 +469,9 @@ public sealed class BallVerifier : Verifier
|
|||
|
||||
private static bool IsPaldeaCatchAndBreed(ushort species)
|
||||
{
|
||||
if (species is >= (int)Species.Sprigatito and <= (int)Species.Quaquaval) // starter
|
||||
if (species is >= (int)Species.Sprigatito and <= (int)Species.Quaquaval) // paldea starter
|
||||
return false;
|
||||
if (species is >= (int)Species.Turtwig and <= (int)Species.Empoleon) // sinnoh starter
|
||||
return false;
|
||||
var pt = PersonalTable.SV;
|
||||
var pi = pt.GetFormEntry(species, 0);
|
||||
|
|
|
@ -114,6 +114,7 @@ public static class EggStateLegality
|
|||
{
|
||||
EncounterStatic7 => false,
|
||||
WB8 or EncounterStatic8b when pk.IsUntraded => false,
|
||||
EncounterStatic9 { EggLocation: 60005 } => false, // Jacq Egg does not have flag set!
|
||||
{ Generation: 4 } => false,
|
||||
_ => true,
|
||||
};
|
||||
|
|
|
@ -161,6 +161,10 @@ public sealed class FormVerifier : Verifier
|
|||
break;
|
||||
}
|
||||
|
||||
// Ogerpon's form changes depending on its held mask
|
||||
case Ogerpon when (form & 3) != GetOgerponFormFromHeldItem(pk.HeldItem):
|
||||
return GetInvalid(LFormItemInvalid);
|
||||
|
||||
// Impossible Egg forms
|
||||
case Rotom when pk.IsEgg && form != 0:
|
||||
case Furfrou when pk.IsEgg && form != 0:
|
||||
|
@ -220,4 +224,12 @@ public sealed class FormVerifier : Verifier
|
|||
return (byte)(item - 115);
|
||||
return 0;
|
||||
}
|
||||
|
||||
private static byte GetOgerponFormFromHeldItem(int item) => item switch
|
||||
{
|
||||
2407 => 1, // Wellspring Mask
|
||||
2408 => 2, // Hearthflame Mask
|
||||
2406 => 3, // Cornerstone Mask
|
||||
_ => 0, // Teal Mask
|
||||
};
|
||||
}
|
||||
|
|
|
@ -24,8 +24,10 @@ public sealed class MarkVerifier : Verifier
|
|||
VerifyAffixedRibbonMark(data, m);
|
||||
|
||||
// temp logic to catch this case; in the future we will need more robust checks for encounters
|
||||
if (data.EncounterMatch is WC9 { RibbonMarkCharismatic: true} && pk is IRibbonSetMark8 { RibbonMarkCharismatic: false})
|
||||
if (data.EncounterMatch is WC9 { RibbonMarkCharismatic: true } && pk is IRibbonSetMark8 { RibbonMarkCharismatic: false })
|
||||
data.AddLine(GetInvalid(string.Format(LRibbonMarkingFInvalid_0, GetRibbonNameSafe(MarkCharismatic))));
|
||||
else if (data.EncounterMatch is EncounterStatic9 { RibbonMarkCrafty: true } && pk is IRibbonSetMark8 { RibbonMarkCrafty: false })
|
||||
data.AddLine(GetInvalid(string.Format(LRibbonMarkingFInvalid_0, GetRibbonNameSafe(MarkCrafty))));
|
||||
}
|
||||
|
||||
private void VerifyNoMarksPresent(LegalityAnalysis data, IRibbonIndex m)
|
||||
|
|
|
@ -171,8 +171,21 @@ public sealed class MiscVerifier : Verifier
|
|||
data.AddLine(GetInvalid(LStatBattleVersionInvalid));
|
||||
if (!IsObedienceLevelValid(pk9, pk9.Obedience_Level, pk9.Met_Level))
|
||||
data.AddLine(GetInvalid(LTransferObedienceLevel));
|
||||
if (pk9.IsEgg && pk9.TeraTypeOverride != (MoveType)TeraTypeUtil.OverrideNone)
|
||||
data.AddLine(GetInvalid(LTeraTypeIncorrect));
|
||||
if (pk9.IsEgg)
|
||||
{
|
||||
if (pk9.TeraTypeOverride != (MoveType)TeraTypeUtil.OverrideNone)
|
||||
data.AddLine(GetInvalid(LTeraTypeIncorrect));
|
||||
}
|
||||
else if (pk9.Species == (int)Species.Ogerpon)
|
||||
{
|
||||
if (!TeraTypeUtil.IsValidOgerpon((byte)pk9.TeraTypeOverride, pk9.Form))
|
||||
data.AddLine(GetInvalid(LTeraTypeIncorrect));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!TeraTypeUtil.IsValid((byte)pk9.TeraTypeOriginal))
|
||||
data.AddLine(GetInvalid(LTeraTypeIncorrect));
|
||||
}
|
||||
|
||||
var enc = data.EncounterOriginal;
|
||||
if (pk9 is { HeightScalar: 0, WeightScalar: 0 })
|
||||
|
@ -206,6 +219,33 @@ public sealed class MiscVerifier : Verifier
|
|||
if (pk9.CurrentHandler != 0 || pk9.Tracker != 0)
|
||||
data.AddLine(GetInvalid(LTransferBad));
|
||||
}
|
||||
|
||||
if (!Locations9.IsAccessiblePreDLC((ushort)pk9.Met_Location))
|
||||
{
|
||||
if (enc is { Species: (int)Species.Larvesta, Form: 0 } and not EncounterEgg)
|
||||
DisallowLevelUpMove(24, (ushort)Move.BugBite, pk9, data);
|
||||
if (enc is { Species: (int)Species.Zorua, Form: 1 } and not EncounterEgg)
|
||||
DisallowLevelUpMove(28, (ushort)Move.Spite, pk9, data);
|
||||
}
|
||||
}
|
||||
|
||||
private static void DisallowLevelUpMove(byte level, ushort move, PK9 pk, LegalityAnalysis data)
|
||||
{
|
||||
if (pk.Tracker != 0)
|
||||
return;
|
||||
int index = pk.GetMoveIndex(move);
|
||||
if (index == -1)
|
||||
return;
|
||||
|
||||
ref var m = ref data.Info.Moves[index];
|
||||
if (m.Info.Method != LearnMethod.LevelUp || m.Info.Argument != level)
|
||||
return;
|
||||
var flagIndex = pk.Permit.RecordPermitIndexes.IndexOf(move);
|
||||
if (flagIndex == -1)
|
||||
throw new ArgumentOutOfRangeException(nameof(move), move, "Expected a valid TM index.");
|
||||
if (pk.GetMoveRecordFlag(flagIndex))
|
||||
return;
|
||||
m = new MoveResult(LearnMethod.None);
|
||||
}
|
||||
|
||||
public static int GetTeraImportMatch(ReadOnlySpan<EvoCriteria> evos, MoveType actual, IEncounterTemplate enc)
|
||||
|
|
|
@ -34,6 +34,7 @@ public static class MarkRules
|
|||
{
|
||||
EncounterSlot8 or EncounterStatic8 { Gift: false, ScriptedNoMarks: false } => IsMarkAllowedSpecific8(mark, pk, enc),
|
||||
EncounterSlot9 s => IsMarkAllowedSpecific9(mark, s),
|
||||
EncounterStatic9 s => IsMarkAllowedSpecific9(mark, s),
|
||||
WC9 wc9 => wc9.GetRibbonIndex(mark),
|
||||
_ => false,
|
||||
};
|
||||
|
@ -66,6 +67,16 @@ public static class MarkRules
|
|||
_ => true,
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// Checks if a specific encounter mark is disallowed.
|
||||
/// </summary>
|
||||
/// <returns>False if mark is disallowed based on specific conditions.</returns>
|
||||
public static bool IsMarkAllowedSpecific9(RibbonIndex mark, EncounterStatic9 s) => mark switch
|
||||
{
|
||||
MarkCrafty => s.RibbonMarkCrafty,
|
||||
_ => false,
|
||||
};
|
||||
|
||||
// Encounter slots check location weather, while static encounters check weather per encounter.
|
||||
private static bool IsWeatherPermitted8(RibbonIndex mark, IEncounterTemplate enc) => enc switch
|
||||
{
|
||||
|
@ -209,7 +220,7 @@ public static class MarkRules
|
|||
/// <summary>
|
||||
/// Checks if the input should have the <see cref="IRibbonSetMark9.RibbonMarkItemfinder"/> mark.
|
||||
/// </summary>
|
||||
public static bool IsMarkValidItemFinder(EvolutionHistory evos) => false; // evos.HasVisitedGen9;
|
||||
public static bool IsMarkValidItemFinder(EvolutionHistory evos) => evos.HasVisitedGen9; // Obtainable starting in DLC1.
|
||||
|
||||
/// <summary>
|
||||
/// Checks if the input should have the <see cref="IRibbonSetMark9.RibbonMarkPartner"/> mark.
|
||||
|
|
|
@ -128,10 +128,19 @@ public static class RibbonRules
|
|||
var species = pk.Species;
|
||||
if (species is (int)WalkingWake or (int)IronLeaves)
|
||||
return false;
|
||||
if (species is (int)Greninja)
|
||||
return pk.Form == 0; // Disallow Ash-Greninja
|
||||
if (SpeciesCategory.IsLegendary(species))
|
||||
return false;
|
||||
if (SpeciesCategory.IsMythical(species))
|
||||
return false;
|
||||
|
||||
// DLC 1: Teal Mask Additions
|
||||
if (species is (>= (int)Turtwig and <= (int)Empoleon))
|
||||
return false;
|
||||
var pi = PersonalTable.SV.GetFormEntry(species, pk.Form);
|
||||
if (pi.DexPaldea == 0 && pi.DexKitakami != 0)
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -55,7 +55,7 @@ internal static class MoveInfo9
|
|||
10, 10, 10, 10, 15, 15, 10, 10, 10, 05, 15, 10, 10, 10, 10, 10, 10, 15, 15, 05,
|
||||
10, 15, 05, 01, 15, 10, 15, 10, 10, 10, 10, 10, 10, 10, 05, 15, 15, 10, 05, 05,
|
||||
10, 10, 10, 10, 20, 20, 20, 05, 10, 10, 05, 10, 05, 05, 10, 20, 10, 10, 10, 10,
|
||||
10,
|
||||
10, 05, 15, 10, 10,
|
||||
};
|
||||
|
||||
public static ReadOnlySpan<byte> MoveType_SV => new byte[]
|
||||
|
@ -105,7 +105,7 @@ internal static class MoveInfo9
|
|||
13, 07, 08, 01, 07, 16, 02, 12, 04, 13, 13, 00, 06, 01, 07, 13, 15, 10, 11, 08,
|
||||
00, 14, 15, 00, 05, 10, 03, 00, 00, 16, 11, 09, 10, 00, 08, 13, 10, 16, 01, 12,
|
||||
00, 14, 00, 14, 06, 11, 10, 00, 13, 07, 09, 09, 12, 08, 16, 10, 09, 16, 03, 01,
|
||||
17,
|
||||
17, 00, 11, 11, 11,
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
|
@ -118,24 +118,24 @@ internal static class MoveInfo9
|
|||
140, 142, 145, 146, 148, 149, 155, 158, 159, 160, 166,
|
||||
167, 169, 170, 171, 176, 177, 185, 190, 193, 216, 218,
|
||||
221, 222, 228, 233, 237, 258, 265, 267, 274, 277, 279,
|
||||
287, 288, 289, 290, 293, 294, 295, 296, 300, 301, 302,
|
||||
312, 316, 318, 320, 324, 327, 346, 353, 354, 357, 358,
|
||||
287, 288, 289, 290, 293, 295, 296, 300, 301, 302,
|
||||
312, 316, 318, 320, 324, 327, 346, 354, 357, 358,
|
||||
363, 373, 375, 376, 377, 378, 381, 382, 386, 426, 429,
|
||||
431, 439, 443, 445, 448, 456, 462, 464, 465, 466, 475,
|
||||
431, 439, 443, 445, 448, 456, 462, 466, 475,
|
||||
477, 480, 481, 485, 498, 507, 516, 530, 531, 536, 537,
|
||||
543, 544, 545, 546, 548, 549, 550, 551, 553, 554, 558,
|
||||
559, 561, 563, 567, 569, 571, 576, 578, 579, 582, 588,
|
||||
559, 561, 563, 567, 569, 576, 578, 579, 582, 588,
|
||||
599, 600, 601, 612, 613, 614, 615, 616, 617, 622, 623,
|
||||
624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634,
|
||||
635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645,
|
||||
646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656,
|
||||
657, 658, 664, 666, 671, 672, 673, 674, 677, 685, 687,
|
||||
690, 691, 692, 695, 696, 697, 698, 699, 700, 701, 702,
|
||||
657, 658, 664, 666, 671, 673, 674, 677, 685, 687,
|
||||
690, 692, 695, 696, 697, 698, 699, 700, 701, 702,
|
||||
703, 704, 708, 711, 712, 713, 714, 717, 718, 719, 720,
|
||||
721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731,
|
||||
732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742,
|
||||
743, 753, 754, 755, 757, 758, 759, 760, 761, 762, 763,
|
||||
764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774,
|
||||
775, 777, 779, 783, 790, 792, 794, 795, 850,
|
||||
777, 779, 792, 794, 795,
|
||||
};
|
||||
}
|
||||
|
|
|
@ -9,7 +9,7 @@ namespace PKHeX.Core;
|
|||
public sealed class GameDataPK9 : HomeOptional1, IGameDataSide<PK9>, IScaledSize3, IGameDataSplitAbility
|
||||
{
|
||||
private const HomeGameDataFormat ExpectFormat = HomeGameDataFormat.PK9;
|
||||
private const int SIZE = HomeCrypto.SIZE_2GAME_PK9;
|
||||
private const int SIZE = HomeCrypto.SIZE_3GAME_PK9;
|
||||
protected override HomeGameDataFormat Format => ExpectFormat;
|
||||
|
||||
public GameDataPK9() : base(SIZE) { }
|
||||
|
@ -44,33 +44,72 @@ public sealed class GameDataPK9 : HomeOptional1, IGameDataSide<PK9>, IScaledSize
|
|||
public int Egg_Location { get => ReadUInt16LittleEndian(Data[0x1C..]); set => WriteUInt16LittleEndian(Data[0x1C..], (ushort)value); }
|
||||
public int Met_Location { get => ReadUInt16LittleEndian(Data[0x1E..]); set => WriteUInt16LittleEndian(Data[0x1E..], (ushort)value); }
|
||||
|
||||
private const int RecordStart = 0x20;
|
||||
private const int RecordCount = PK9.COUNT_RECORD; // Up to 200 TM flags, but not all are used.
|
||||
private const int RecordLength = RecordCount / 8;
|
||||
private Span<byte> RecordFlags => Data.Slice(RecordStart, RecordLength);
|
||||
|
||||
public bool GetMoveRecordFlag(int index)
|
||||
{
|
||||
if ((uint)index > RecordCount) // 0x19 bytes, 8 bits
|
||||
throw new ArgumentOutOfRangeException(nameof(index));
|
||||
return FlagUtil.GetFlag(RecordFlags, index >> 3, index & 7);
|
||||
}
|
||||
|
||||
public void SetMoveRecordFlag(int index, bool value = true)
|
||||
{
|
||||
if ((uint)index > RecordCount) // 0x19 bytes, 8 bits
|
||||
throw new ArgumentOutOfRangeException(nameof(index));
|
||||
FlagUtil.SetFlag(RecordFlags, index >> 3, index & 7, value);
|
||||
}
|
||||
|
||||
public bool GetMoveRecordFlagAny() => RecordFlags.IndexOfAnyExcept<byte>(0) >= 0;
|
||||
public void ClearMoveRecordFlags() => RecordFlags.Clear();
|
||||
private const int RecordStartBase = 0x20;
|
||||
internal const int COUNT_RECORD_BASE = PK9.COUNT_RECORD_BASE; // Up to 200 TM flags, but not all are used.
|
||||
private const int RecordLengthBase = COUNT_RECORD_BASE / 8; // 0x19 bytes, 8 bits
|
||||
public Span<byte> RecordFlagsBase => Data.Slice(RecordStartBase, RecordLengthBase);
|
||||
|
||||
// Rev2 Additions
|
||||
public byte Obedience_Level { get => Data[0x39]; set => Data[0x39] = value; }
|
||||
public ushort Ability { get => ReadUInt16LittleEndian(Data[0x3A..]); set => WriteUInt16LittleEndian(Data[0x3A..], value); }
|
||||
public byte AbilityNumber { get => Data[0x3C]; set => Data[0x3C] = value; }
|
||||
|
||||
// Rev3 Additions
|
||||
private const int RecordStartDLC = 0x3D;
|
||||
internal const int COUNT_RECORD_DLC = PK9.COUNT_RECORD_DLC; // 13 additional bytes allocated for DLC1/2 TM Flags
|
||||
private const int RecordLengthDLC = COUNT_RECORD_DLC / 8;
|
||||
public Span<byte> RecordFlagsDLC => Data.Slice(RecordStartDLC, RecordLengthDLC);
|
||||
|
||||
#endregion
|
||||
|
||||
#region TM Flag Methods
|
||||
public bool GetMoveRecordFlag(int index)
|
||||
{
|
||||
if ((uint)index >= COUNT_RECORD_BASE)
|
||||
return GetMoveRecordFlagDLC(index - COUNT_RECORD_BASE);
|
||||
int ofs = index >> 3;
|
||||
return FlagUtil.GetFlag(Data, RecordStartBase + ofs, index & 7);
|
||||
}
|
||||
|
||||
private bool GetMoveRecordFlagDLC(int index)
|
||||
{
|
||||
if ((uint)index >= COUNT_RECORD_DLC)
|
||||
throw new ArgumentOutOfRangeException(nameof(index));
|
||||
int ofs = index >> 3;
|
||||
return FlagUtil.GetFlag(Data, RecordStartDLC + ofs, index & 7);
|
||||
}
|
||||
|
||||
public void SetMoveRecordFlag(int index, bool value = true)
|
||||
{
|
||||
if ((uint)index >= COUNT_RECORD_BASE)
|
||||
{
|
||||
SetMoveRecordFlagDLC(value, index - COUNT_RECORD_BASE);
|
||||
return;
|
||||
}
|
||||
int ofs = index >> 3;
|
||||
FlagUtil.SetFlag(Data, RecordStartBase + ofs, index & 7, value);
|
||||
}
|
||||
|
||||
private void SetMoveRecordFlagDLC(bool value, int index)
|
||||
{
|
||||
if ((uint)index >= COUNT_RECORD_DLC)
|
||||
throw new ArgumentOutOfRangeException(nameof(index));
|
||||
int ofs = index >> 3;
|
||||
FlagUtil.SetFlag(Data, RecordStartDLC + ofs, index & 7, value);
|
||||
}
|
||||
|
||||
public bool GetMoveRecordFlagAny() => GetMoveRecordFlagAnyBase() || GetMoveRecordFlagAnyDLC();
|
||||
private bool GetMoveRecordFlagAnyBase() => RecordFlagsBase.IndexOfAnyExcept<byte>(0) >= 0;
|
||||
private bool GetMoveRecordFlagAnyDLC() => RecordFlagsDLC.IndexOfAnyExcept<byte>(0) >= 0;
|
||||
|
||||
public void ClearMoveRecordFlags()
|
||||
{
|
||||
ClearMoveRecordFlagsBase();
|
||||
ClearMoveRecordFlagsDLC();
|
||||
}
|
||||
|
||||
private void ClearMoveRecordFlagsBase() => RecordFlagsBase.Clear();
|
||||
private void ClearMoveRecordFlagsDLC() => RecordFlagsDLC.Clear();
|
||||
#endregion
|
||||
|
||||
#region Conversion
|
||||
|
@ -83,7 +122,8 @@ public sealed class GameDataPK9 : HomeOptional1, IGameDataSide<PK9>, IScaledSize
|
|||
pk.Scale = Scale;
|
||||
pk.TeraTypeOriginal = TeraTypeOriginal;
|
||||
pk.TeraTypeOverride = TeraTypeOverride;
|
||||
RecordFlags.CopyTo(pk.RecordFlags);
|
||||
RecordFlagsBase.CopyTo(pk.RecordFlagsBase);
|
||||
RecordFlagsDLC.CopyTo(pk.RecordFlagsDLC);
|
||||
pk.Obedience_Level = Obedience_Level;
|
||||
pk.Ability = Ability;
|
||||
pk.AbilityNumber = AbilityNumber;
|
||||
|
@ -95,7 +135,8 @@ public sealed class GameDataPK9 : HomeOptional1, IGameDataSide<PK9>, IScaledSize
|
|||
pkh.HeightScalar = Scale = pk.Scale; // Overwrite Height
|
||||
TeraTypeOriginal = pk.TeraTypeOriginal;
|
||||
TeraTypeOverride = pk.TeraTypeOverride;
|
||||
pk.RecordFlags.CopyTo(RecordFlags);
|
||||
pk.RecordFlagsBase.CopyTo(RecordFlagsBase);
|
||||
pk.RecordFlagsDLC.CopyTo(RecordFlagsDLC);
|
||||
Obedience_Level = pk.Obedience_Level;
|
||||
Ability = (ushort)pk.Ability;
|
||||
AbilityNumber = (byte)pk.AbilityNumber;
|
||||
|
|
|
@ -13,6 +13,7 @@ public static class HomeCrypto
|
|||
{
|
||||
public const int Version1 = 1;
|
||||
public const int Version2 = 2;
|
||||
public const int Version3 = 3;
|
||||
|
||||
public const int SIZE_1HEADER = 0x10; // 16
|
||||
|
||||
|
@ -31,11 +32,14 @@ public static class HomeCrypto
|
|||
public const int SIZE_2GAME_PK9 = 0x3D; // 61
|
||||
public const int SIZE_2STORED = 0x23A; // 570
|
||||
|
||||
public const int SIZE_STORED = SIZE_2STORED;
|
||||
public const int SIZE_CORE = SIZE_2CORE;
|
||||
public const int VersionLatest = Version2;
|
||||
public const int SIZE_3GAME_PK9 = 0x3D + 0xD; // 61
|
||||
public const int SIZE_3STORED = 0x247; // 583
|
||||
|
||||
public static bool IsKnownVersion(ushort version) => version is Version1 or Version2;
|
||||
public const int SIZE_STORED = SIZE_3STORED;
|
||||
public const int SIZE_CORE = SIZE_2CORE;
|
||||
public const int VersionLatest = Version3;
|
||||
|
||||
public static bool IsKnownVersion(ushort version) => version is Version1 or Version2 or Version3;
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public static void SetEncryptionKey(Span<byte> key, ulong seed)
|
||||
|
@ -142,6 +146,7 @@ public static class HomeCrypto
|
|||
{
|
||||
Version1 => IsEncryptedCore1(data),
|
||||
Version2 => IsEncryptedCore2(data),
|
||||
Version3 => IsEncryptedCore3(data),
|
||||
_ => throw new ArgumentException($"Unrecognized format: {format}"),
|
||||
};
|
||||
|
||||
|
@ -178,6 +183,8 @@ public static class HomeCrypto
|
|||
return false; // 64 bits checked is enough to feel safe about this check.
|
||||
}
|
||||
|
||||
private static bool IsEncryptedCore3(ReadOnlySpan<byte> data) => IsEncryptedCore2(data); // Same struct as Core version 2.
|
||||
|
||||
/// <summary>
|
||||
/// Gets the checksum of an Pokémon's AES-encrypted data.
|
||||
/// </summary>
|
||||
|
|
|
@ -236,8 +236,8 @@ public sealed class PKH : PKM, IHandlerLanguage, IFormArgument, IHomeTrack, IBat
|
|||
|
||||
#endregion
|
||||
|
||||
public override int SIZE_PARTY => HomeCrypto.SIZE_2STORED;
|
||||
public override int SIZE_STORED => HomeCrypto.SIZE_2STORED;
|
||||
public override int SIZE_PARTY => HomeCrypto.SIZE_3STORED;
|
||||
public override int SIZE_STORED => HomeCrypto.SIZE_3STORED;
|
||||
public override bool Valid { get => true; set { } }
|
||||
public override PersonalInfo PersonalInfo => LatestGameData.GetPersonalInfo(Species, Form);
|
||||
public override void RefreshChecksum() => Checksum = 0;
|
||||
|
|
|
@ -46,6 +46,28 @@ public static class TeraTypeUtil
|
|||
return GetTeraType((byte)t.TeraTypeOriginal, (byte)t.TeraTypeOverride);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Indicates if the Tera Type value is valid (changed from anything to anything).
|
||||
/// </summary>
|
||||
/// <param name="override">Current override value</param>
|
||||
/// <returns>True if valid.</returns>
|
||||
public static bool IsValid(byte @override) => @override is <= MaxType or OverrideNone;
|
||||
|
||||
/// <summary>
|
||||
/// Checks if Ogerpon's Tera Type is valid.
|
||||
/// </summary>
|
||||
/// <param name="type">Tera Type to check</param>
|
||||
/// <param name="form">Ogerpon's form</param>
|
||||
/// <returns>True if the Tera Type is valid.</returns>
|
||||
public static bool IsValidOgerpon(byte type, byte form) => (form & 3) switch
|
||||
{
|
||||
0 => type is (byte)MoveType.Grass or OverrideNone,
|
||||
1 => type is (byte)MoveType.Water,
|
||||
2 => type is (byte)MoveType.Fire,
|
||||
3 => type is (byte)MoveType.Rock,
|
||||
_ => false,
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// Calculates the effective Tera Type based on the inputs.
|
||||
/// </summary>
|
||||
|
@ -111,4 +133,11 @@ public static class TeraTypeUtil
|
|||
_ => (MoveType)Tera9RNG.GetTeraTypeFromPersonal(enc.Species, enc.Form, Util.Rand.Rand64()),
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Checks if the given species can have its Tera Type changed.
|
||||
/// </summary>
|
||||
/// <param name="species">Species to check</param>
|
||||
/// <returns>True if the species can have its Tera Type changed.</returns>
|
||||
public static bool CanChangeTeraType(ushort species) => species != (int)Species.Ogerpon;
|
||||
}
|
||||
|
|
|
@ -381,7 +381,8 @@ public sealed class PK6 : G6PKM, IRibbonSetEvent3, IRibbonSetEvent4, IRibbonSetC
|
|||
public override int Stat_SPD { get => ReadUInt16LittleEndian(Data.AsSpan(0xFC)); set => WriteUInt16LittleEndian(Data.AsSpan(0xFC), (ushort)value); }
|
||||
#endregion
|
||||
|
||||
public int SuperTrainingMedalCount(int maxCount = 30) => BitOperations.PopCount(SuperTrainBitFlags >> 2);
|
||||
private const int MedalCount = 30;
|
||||
public int SuperTrainingMedalCount(int lowBitCount = MedalCount) => BitOperations.PopCount((SuperTrainBitFlags >> 2) & (uint.MaxValue >> (MedalCount - lowBitCount)));
|
||||
|
||||
public bool IsUntradedEvent6 => Geo1_Country == 0 && Geo1_Region == 0 && Met_Location / 10000 == 4 && Gen6;
|
||||
|
||||
|
|
|
@ -414,7 +414,8 @@ public sealed class PK7 : G6PKM, IRibbonSetEvent3, IRibbonSetEvent4, IRibbonSetC
|
|||
public override int Stat_SPD { get => ReadUInt16LittleEndian(Data.AsSpan(0xFC)); set => WriteUInt16LittleEndian(Data.AsSpan(0xFC), (ushort)value); }
|
||||
#endregion
|
||||
|
||||
public int SuperTrainingMedalCount(int maxCount = 30) => BitOperations.PopCount(SuperTrainBitFlags >> 2);
|
||||
private const int MedalCount = 30;
|
||||
public int SuperTrainingMedalCount(int lowBitCount = MedalCount) => BitOperations.PopCount((SuperTrainBitFlags >> 2) & (uint.MaxValue >> (MedalCount - lowBitCount)));
|
||||
|
||||
public bool IsUntradedEvent6 => Geo1_Country == 0 && Geo1_Region == 0 && Met_Location / 10000 == 4 && Gen6;
|
||||
|
||||
|
|
|
@ -16,7 +16,6 @@ public sealed class PK9 : PKM, ISanityChecksum, ITeraType, ITechRecord, IObedien
|
|||
0x23,
|
||||
0x33,
|
||||
0x3E, 0x3F,
|
||||
0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
|
||||
0x90, 0x91, 0x92, 0x93, // Status condition
|
||||
0x96, 0x97, 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F, 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7,
|
||||
0xC5,
|
||||
|
@ -325,7 +324,7 @@ public sealed class PK9 : PKM, ISanityChecksum, ITeraType, ITechRecord, IObedien
|
|||
public byte WeightScalar { get => Data[0x49]; set => Data[0x49] = value; }
|
||||
public byte Scale { get => Data[0x4A]; set => Data[0x4A] = value; }
|
||||
|
||||
// 0x52-0x57 unused
|
||||
// 0x4B-0x57 is DLC TM Record Flags, see TM flag handling below for details
|
||||
|
||||
#endregion
|
||||
#region Block B
|
||||
|
@ -443,29 +442,63 @@ public sealed class PK9 : PKM, ISanityChecksum, ITeraType, ITechRecord, IObedien
|
|||
set => WriteUInt64LittleEndian(Data.AsSpan(0x127), value);
|
||||
}
|
||||
|
||||
private const int RecordStart = 0x12F;
|
||||
internal const int COUNT_RECORD = 200; // Up to 200 TM flags, but not all are used.
|
||||
private const int RecordLength = COUNT_RECORD / 8;
|
||||
public Span<byte> RecordFlags => Data.AsSpan(RecordStart, RecordLength);
|
||||
private const int RecordStartBase = 0x12F;
|
||||
internal const int COUNT_RECORD_BASE = 200; // Up to 200 TM flags, but not all are used.
|
||||
private const int RecordLengthBase = COUNT_RECORD_BASE / 8; // 0x19 bytes, 8 bits
|
||||
public Span<byte> RecordFlagsBase => Data.AsSpan(RecordStartBase, RecordLengthBase);
|
||||
|
||||
private const int RecordStartDLC = 0x4B;
|
||||
internal const int COUNT_RECORD_DLC = 104; // 13 additional bytes allocated for DLC1/2 TM Flags
|
||||
private const int RecordLengthDLC = COUNT_RECORD_DLC / 8;
|
||||
public Span<byte> RecordFlagsDLC => Data.AsSpan(RecordStartDLC, RecordLengthDLC);
|
||||
|
||||
public bool GetMoveRecordFlag(int index)
|
||||
{
|
||||
if ((uint)index > COUNT_RECORD) // 0x19 bytes, 8 bits
|
||||
if ((uint)index >= COUNT_RECORD_BASE)
|
||||
return GetMoveRecordFlagDLC(index - COUNT_RECORD_BASE);
|
||||
int ofs = index >> 3;
|
||||
return FlagUtil.GetFlag(Data, RecordStartBase + ofs, index & 7);
|
||||
}
|
||||
|
||||
private bool GetMoveRecordFlagDLC(int index)
|
||||
{
|
||||
if ((uint)index >= COUNT_RECORD_DLC)
|
||||
throw new ArgumentOutOfRangeException(nameof(index));
|
||||
int ofs = index >> 3;
|
||||
return FlagUtil.GetFlag(Data, RecordStart + ofs, index & 7);
|
||||
return FlagUtil.GetFlag(Data, RecordStartDLC + ofs, index & 7);
|
||||
}
|
||||
|
||||
public void SetMoveRecordFlag(int index, bool value = true)
|
||||
{
|
||||
if ((uint)index > COUNT_RECORD) // 0x19 bytes, 8 bits
|
||||
throw new ArgumentOutOfRangeException(nameof(index));
|
||||
if ((uint)index >= COUNT_RECORD_BASE)
|
||||
{
|
||||
SetMoveRecordFlagDLC(value, index - COUNT_RECORD_BASE);
|
||||
return;
|
||||
}
|
||||
int ofs = index >> 3;
|
||||
FlagUtil.SetFlag(Data, RecordStart + ofs, index & 7, value);
|
||||
FlagUtil.SetFlag(Data, RecordStartBase + ofs, index & 7, value);
|
||||
}
|
||||
|
||||
public bool GetMoveRecordFlagAny() => RecordFlags.IndexOfAnyExcept<byte>(0) >= 0;
|
||||
public void ClearMoveRecordFlags() => RecordFlags.Clear();
|
||||
private void SetMoveRecordFlagDLC(bool value, int index)
|
||||
{
|
||||
if ((uint)index >= COUNT_RECORD_DLC)
|
||||
throw new ArgumentOutOfRangeException(nameof(index));
|
||||
int ofs = index >> 3;
|
||||
FlagUtil.SetFlag(Data, RecordStartDLC + ofs, index & 7, value);
|
||||
}
|
||||
|
||||
public bool GetMoveRecordFlagAny() => GetMoveRecordFlagAnyBase() || GetMoveRecordFlagAnyDLC();
|
||||
private bool GetMoveRecordFlagAnyBase() => RecordFlagsBase.IndexOfAnyExcept<byte>(0) >= 0;
|
||||
private bool GetMoveRecordFlagAnyDLC() => RecordFlagsDLC.IndexOfAnyExcept<byte>(0) >= 0;
|
||||
|
||||
public void ClearMoveRecordFlags()
|
||||
{
|
||||
ClearMoveRecordFlagsBase();
|
||||
ClearMoveRecordFlagsDLC();
|
||||
}
|
||||
|
||||
private void ClearMoveRecordFlagsBase() => RecordFlagsBase.Clear();
|
||||
private void ClearMoveRecordFlagsDLC() => RecordFlagsDLC.Clear();
|
||||
|
||||
#endregion
|
||||
#region Battle Stats
|
||||
|
@ -513,6 +546,9 @@ public sealed class PK9 : PKM, ISanityChecksum, ITeraType, ITechRecord, IObedien
|
|||
{
|
||||
if (IsEgg)
|
||||
{
|
||||
if (Egg_Location == 60005 && tr.Gender == OT_Gender && tr.Language == Language && tr.OT == OT_Name)
|
||||
return; // Jacq gift, don't change.
|
||||
|
||||
// Apply link trade data, only if it left the OT (ignore if dumped & imported, or cloned, etc)
|
||||
// If not matching the trainer details, mark as a traded egg.
|
||||
if (!IsTradedEgg && tr.Gender == OT_Gender && tr.Language == Language && tr.OT == OT_Name)
|
||||
|
|
|
@ -110,5 +110,5 @@ public interface ISuperTrain
|
|||
uint SuperTrainBitFlags { get; set; }
|
||||
bool SecretSuperTrainingUnlocked { get; set; }
|
||||
bool SecretSuperTrainingComplete { get; set; }
|
||||
int SuperTrainingMedalCount(int maxCount = 30);
|
||||
int SuperTrainingMedalCount(int lowBitCount = 30);
|
||||
}
|
||||
|
|
|
@ -429,6 +429,10 @@ public static class FormConverter
|
|||
types[0],
|
||||
forms[Lord],
|
||||
},
|
||||
Ursaluna when generation >= 9 => new[] {
|
||||
types[0],
|
||||
forms[Bloodmoon],
|
||||
},
|
||||
Enamorus => new[] {
|
||||
forms[641], // Incarnate
|
||||
forms[952], // Therian
|
||||
|
@ -486,6 +490,24 @@ public static class FormConverter
|
|||
forms[Aquatic],
|
||||
forms[Glide],
|
||||
},
|
||||
Ogerpon => new[] {
|
||||
forms[MaskTeal],
|
||||
forms[MaskWellspring],
|
||||
forms[MaskHearthflame],
|
||||
forms[MaskCornerstone],
|
||||
$"*{forms[MaskTeal]}",
|
||||
$"*{forms[MaskWellspring]}",
|
||||
$"*{forms[MaskHearthflame]}",
|
||||
$"*{forms[MaskCornerstone]}",
|
||||
},
|
||||
Poltchageist => new[] {
|
||||
forms[Counterfeit],
|
||||
forms[Artisan],
|
||||
},
|
||||
Sinistcha => new[] {
|
||||
forms[Unremarkable],
|
||||
forms[Masterpiece],
|
||||
},
|
||||
_ => EMPTY,
|
||||
};
|
||||
}
|
||||
|
@ -873,6 +895,15 @@ public static class FormConverter
|
|||
private const int PaldeanCombat = 1123;
|
||||
private const int PaldeanBlaze = 1124;
|
||||
private const int PaldeanAqua = 1125;
|
||||
internal const int MaskTeal = 1126;
|
||||
private const int Counterfeit = 1127;
|
||||
private const int Unremarkable = 1128;
|
||||
private const int Bloodmoon = 1129;
|
||||
internal const int MaskWellspring = 1130;
|
||||
internal const int MaskHearthflame = 1131;
|
||||
internal const int MaskCornerstone = 1132;
|
||||
private const int Artisan = 1133;
|
||||
private const int Masterpiece = 1134;
|
||||
|
||||
public static string GetGigantamaxName(IReadOnlyList<string> forms) => forms[Gigantamax];
|
||||
|
||||
|
|
|
@ -150,9 +150,12 @@ public static class SpeciesConverter
|
|||
029, -53, -65, 025, -06, -03, -07, -04, -04, -08,
|
||||
-04, 001, -03, -03, -06, -04, -47, -47, -47, -23,
|
||||
-23, -05, -07, -09, -07, -20, -13, -09, -09, -29,
|
||||
-23,
|
||||
-23, 001, 012, 012, 000, 000, 000, -06, UNK, UNK,
|
||||
UNK, UNK, UNK, UNK, UNK, UNK,
|
||||
};
|
||||
|
||||
private const sbyte UNK = 111;
|
||||
|
||||
/// <summary>
|
||||
/// Difference of Gen9 Species IDs (index) and the associated National Dex IDs (value)
|
||||
/// </summary>
|
||||
|
@ -168,6 +171,7 @@ public static class SpeciesConverter
|
|||
029, 008, 003, 004, 004, 020, 004, 023, 006, 003,
|
||||
003, 004, -01, 013, 009, 007, 005, 007, 009, 009,
|
||||
-43, -43, -43, -68, -68, -68, -58, -58, -25, -29,
|
||||
-31,
|
||||
-31, 006, -01, UNK, 000, 000, 000, UNK, UNK, UNK,
|
||||
UNK, UNK, UNK, UNK, -12, -12,
|
||||
};
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@ namespace PKHeX.Core;
|
|||
/// </summary>
|
||||
public sealed class PersonalInfo9SV : PersonalInfo, IPersonalAbility12H, IPersonalInfoTM, IPermitRecord
|
||||
{
|
||||
public const int SIZE = 0x44;
|
||||
public const int SIZE = 0x4C;
|
||||
private readonly byte[] Data;
|
||||
|
||||
public PersonalInfo9SV(byte[] data) => Data = data;
|
||||
|
@ -45,7 +45,7 @@ public sealed class PersonalInfo9SV : PersonalInfo, IPersonalAbility12H, IPerson
|
|||
public override int Color { get => Data[0x1B]; set => Data[0x1B] = (byte)value; }
|
||||
public bool IsPresentInGame { get => Data[0x1C] != 0; set => Data[0x1C] = value ? (byte)1 : (byte)0; }
|
||||
public byte DexGroup { get => Data[0x1D]; set => Data[0x1D] = value; }
|
||||
public ushort DexIndex { get => ReadUInt16LittleEndian(Data.AsSpan(0x1E)); set => WriteUInt16LittleEndian(Data.AsSpan(0x1E), value); }
|
||||
public ushort DexPaldea { get => ReadUInt16LittleEndian(Data.AsSpan(0x1E)); set => WriteUInt16LittleEndian(Data.AsSpan(0x1E), value); }
|
||||
public override int Height { get => ReadUInt16LittleEndian(Data.AsSpan(0x20)); set => WriteUInt16LittleEndian(Data.AsSpan(0x20), (ushort)value); }
|
||||
public override int Weight { get => ReadUInt16LittleEndian(Data.AsSpan(0x22)); set => WriteUInt16LittleEndian(Data.AsSpan(0x22), (ushort)value); }
|
||||
public ushort HatchSpecies { get => ReadUInt16LittleEndian(Data.AsSpan(0x24)); set => WriteUInt16LittleEndian(Data.AsSpan(0x24), value); }
|
||||
|
@ -65,7 +65,7 @@ public sealed class PersonalInfo9SV : PersonalInfo, IPersonalAbility12H, IPerson
|
|||
/// <summary>
|
||||
/// Checks if the entry shows up in any of the built-in Pokédex.
|
||||
/// </summary>
|
||||
public bool IsInDex => DexIndex != 0;
|
||||
public bool IsInDex => DexPaldea != 0 || DexKitakami != 0 || DexBlueberry != 0;
|
||||
|
||||
public override int AbilityCount => 3;
|
||||
public override int GetIndexOfAbility(int abilityID) => abilityID == Ability1 ? 0 : abilityID == Ability2 ? 1 : abilityID == AbilityH ? 2 : -1;
|
||||
|
@ -78,7 +78,7 @@ public sealed class PersonalInfo9SV : PersonalInfo, IPersonalAbility12H, IPerson
|
|||
};
|
||||
|
||||
private const int TM = 0x2C;
|
||||
private const int CountTM = 172;
|
||||
private const int CountTM = 202;
|
||||
private const int ByteCountTM = (CountTM + 7) / 8;
|
||||
|
||||
public bool GetIsLearnTM(int index)
|
||||
|
@ -112,7 +112,7 @@ public sealed class PersonalInfo9SV : PersonalInfo, IPersonalAbility12H, IPerson
|
|||
public bool IsRecordPermitted(int index) => GetIsLearnTM(index);
|
||||
|
||||
public ReadOnlySpan<ushort> RecordPermitIndexes => TM_SV;
|
||||
public int RecordCountTotal => 200;
|
||||
public int RecordCountTotal => 202;
|
||||
public int RecordCountUsed => CountTM;
|
||||
|
||||
private static ReadOnlySpan<ushort> TM_SV => new ushort[]
|
||||
|
@ -134,6 +134,12 @@ public sealed class PersonalInfo9SV : PersonalInfo, IPersonalAbility12H, IPerson
|
|||
417, 126, 056, 059, 519, 518, 520, 528, 188, 089,
|
||||
444, 566, 416, 307, 308, 338, 200, 315, 411, 437,
|
||||
542, 433, 405, 063, 413, 394, 087, 370, 076, 434,
|
||||
796, 851,
|
||||
796, 851, 046, 268, 114, 092, 328, 180, 356, 479,
|
||||
360, 282, 450, 162, 410, 679, 667, 333, 503, 535,
|
||||
669, 253, 264, 311, 803, 807, 812, 814, 809, 808,
|
||||
799, 802,
|
||||
};
|
||||
|
||||
public byte DexKitakami { get => Data[0x4A]; set => Data[0x4A] = value; }
|
||||
public byte DexBlueberry { get => Data[0x4B]; set => Data[0x4B] = value; }
|
||||
}
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -2230,64 +2230,64 @@ TM168
|
|||
TM169
|
||||
TM170
|
||||
TM171
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
TM172
|
||||
TM173
|
||||
TM174
|
||||
TM175
|
||||
TM176
|
||||
TM177
|
||||
TM178
|
||||
TM179
|
||||
TM180
|
||||
TM181
|
||||
TM182
|
||||
TM183
|
||||
TM184
|
||||
TM185
|
||||
TM186
|
||||
TM187
|
||||
TM188
|
||||
TM189
|
||||
TM190
|
||||
TM191
|
||||
TM192
|
||||
TM193
|
||||
TM194
|
||||
TM195
|
||||
TM196
|
||||
TM197
|
||||
TM198
|
||||
TM199
|
||||
TM200
|
||||
TM201
|
||||
TM202
|
||||
TM203
|
||||
TM204
|
||||
TM205
|
||||
TM206
|
||||
TM207
|
||||
TM208
|
||||
TM209
|
||||
TM210
|
||||
TM211
|
||||
TM212
|
||||
TM213
|
||||
TM214
|
||||
TM215
|
||||
TM216
|
||||
TM217
|
||||
TM218
|
||||
TM219
|
||||
TM220
|
||||
TM221
|
||||
TM222
|
||||
TM223
|
||||
TM224
|
||||
TM225
|
||||
TM226
|
||||
TM227
|
||||
TM228
|
||||
TM229
|
||||
|
||||
|
||||
|
||||
|
@ -2398,4 +2398,85 @@ Grüner Teller
|
|||
Oranger Teller
|
||||
Roter Teller
|
||||
Weißer Teller
|
||||
Gelber Teller
|
||||
Gelber Teller
|
||||
Feendaune
|
||||
Saftiger Apfel
|
||||
Simple Teeschale
|
||||
Edle Teeschale
|
||||
Türkisgrüne Maske
|
||||
Fundamentmaske
|
||||
Brunnenmaske
|
||||
Ofenmaske
|
||||
Grüne Style-Karte
|
||||
Kristallfragment
|
||||
Heil-Mochi
|
||||
Kraft-Mochi
|
||||
Abwehr-Mochi
|
||||
Genie-Mochi
|
||||
Esprit-Mochi
|
||||
Flink-Mochi
|
||||
Standard-Stühle
|
||||
Akademie-Stühle
|
||||
Akademie-Stühle
|
||||
Zauber-Stühle
|
||||
Natur-Stühle
|
||||
Groll-Stühle
|
||||
Gelbkaro-Stühle
|
||||
Blaukaro-Stühle
|
||||
Rotkaro-Stühle
|
||||
Retro-Gras-Stühle
|
||||
Action-Stühle
|
||||
Ungeheuer-Stühle
|
||||
Streifen-Stühle
|
||||
Rauten-Stühle
|
||||
Punkte-Stühle
|
||||
Violette Stühle
|
||||
Türkise Stühle
|
||||
Beige Stühle
|
||||
Gelbe Stühle
|
||||
Blaue Stühle
|
||||
Pinke Stühle
|
||||
Rettan-Zahn
|
||||
Sandan-Kralle
|
||||
Pii-Haar
|
||||
Vulpix-Haar
|
||||
Quapsel-Schleim
|
||||
Knofensa-Ranke
|
||||
Kleinstein-Splitter
|
||||
Smogon-Gas
|
||||
Mampfaxo-Zahn
|
||||
Wiesor-Haar
|
||||
Hoothoot-Feder
|
||||
Webarak-Faden
|
||||
Griffel-Haar
|
||||
Yanma-Stachel
|
||||
Skorgla-Zahn
|
||||
Schneckmag-Lava
|
||||
Quiekel-Haar
|
||||
Fiffyen-Zahn
|
||||
Loturzel-Blatt
|
||||
Samurzel-Zweig
|
||||
Nasgnet-Splitter
|
||||
Volbeat-Sekret
|
||||
Illumise-Sekret
|
||||
Krebscorps-Schale
|
||||
Barschwa-Schuppe
|
||||
Zwirrlicht-Splitter
|
||||
Klingplim-Splitter
|
||||
Praktibalk-Schweiß
|
||||
Strawickl-Blatt
|
||||
Piccolente-Feder
|
||||
Lichtel-Ruß
|
||||
Lin-Fu-Kralle
|
||||
Skallyk-Feder
|
||||
Rocara-Edelstein
|
||||
Paragoni-Zweig
|
||||
Mabula-Faden
|
||||
Wommel-Puder
|
||||
Miniras-Schuppe
|
||||
Urgl-Daune
|
||||
Morpeko-Samen
|
||||
Mortcha-Puder
|
||||
Neuanfangs-Mochi
|
||||
Rotom-Stick
|
||||
Glitzerpin
|
|
@ -2230,64 +2230,64 @@ TM168
|
|||
TM169
|
||||
TM170
|
||||
TM171
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
TM172
|
||||
TM173
|
||||
TM174
|
||||
TM175
|
||||
TM176
|
||||
TM177
|
||||
TM178
|
||||
TM179
|
||||
TM180
|
||||
TM181
|
||||
TM182
|
||||
TM183
|
||||
TM184
|
||||
TM185
|
||||
TM186
|
||||
TM187
|
||||
TM188
|
||||
TM189
|
||||
TM190
|
||||
TM191
|
||||
TM192
|
||||
TM193
|
||||
TM194
|
||||
TM195
|
||||
TM196
|
||||
TM197
|
||||
TM198
|
||||
TM199
|
||||
TM200
|
||||
TM201
|
||||
TM202
|
||||
TM203
|
||||
TM204
|
||||
TM205
|
||||
TM206
|
||||
TM207
|
||||
TM208
|
||||
TM209
|
||||
TM210
|
||||
TM211
|
||||
TM212
|
||||
TM213
|
||||
TM214
|
||||
TM215
|
||||
TM216
|
||||
TM217
|
||||
TM218
|
||||
TM219
|
||||
TM220
|
||||
TM221
|
||||
TM222
|
||||
TM223
|
||||
TM224
|
||||
TM225
|
||||
TM226
|
||||
TM227
|
||||
TM228
|
||||
TM229
|
||||
|
||||
|
||||
|
||||
|
@ -2398,4 +2398,85 @@ Green Dish
|
|||
Orange Dish
|
||||
Red Dish
|
||||
White Dish
|
||||
Yellow Dish
|
||||
Yellow Dish
|
||||
Fairy Feather
|
||||
Syrupy Apple
|
||||
Unremarkable Teacup
|
||||
Masterpiece Teacup
|
||||
Teal Mask
|
||||
Cornerstone Mask
|
||||
Wellspring Mask
|
||||
Hearthflame Mask
|
||||
Teal Style Card
|
||||
Crystal Cluster
|
||||
Health Mochi
|
||||
Muscle Mochi
|
||||
Resist Mochi
|
||||
Genius Mochi
|
||||
Clever Mochi
|
||||
Swift Mochi
|
||||
Simple Chairs
|
||||
Academy Chairs
|
||||
Academy Chairs
|
||||
Whimsical Chairs
|
||||
Leafy Chairs
|
||||
Spooky Chairs
|
||||
Plaid Chairs (Y)
|
||||
Plaid Chairs (B)
|
||||
Plaid Chairs (R)
|
||||
B&W Grass Chairs
|
||||
Battle Chairs
|
||||
Monstrous Chairs
|
||||
Striped Chairs
|
||||
Diamond Chairs
|
||||
Polka-Dot Chairs
|
||||
Lilac Chairs
|
||||
Mint Chairs
|
||||
Peach Chairs
|
||||
Yellow Chairs
|
||||
Blue Chairs
|
||||
Pink Chairs
|
||||
Ekans Fang
|
||||
Sandshrew Claw
|
||||
Cleffa Fur
|
||||
Vulpix Fur
|
||||
Poliwag Slime
|
||||
Bellsprout Vine
|
||||
Geodude Fragment
|
||||
Koffing Gas
|
||||
Munchlax Fang
|
||||
Sentret Fur
|
||||
Hoothoot Feather
|
||||
Spinarak Thread
|
||||
Aipom Hair
|
||||
Yanma Spike
|
||||
Gligar Fang
|
||||
Slugma Lava
|
||||
Swinub Hair
|
||||
Poochyena Fang
|
||||
Lotad Leaf
|
||||
Seedot Stem
|
||||
Nosepass Fragment
|
||||
Volbeat Fluid
|
||||
Illumise Fluid
|
||||
Corphish Shell
|
||||
Feebas Scales
|
||||
Duskull Fragment
|
||||
Chingling Fragment
|
||||
Timburr Sweat
|
||||
Sewaddle Leaf
|
||||
Ducklett Feather
|
||||
Litwick Soot
|
||||
Mienfoo Claw
|
||||
Vullaby Feather
|
||||
Carbink Jewel
|
||||
Phantump Twig
|
||||
Grubbin Thread
|
||||
Cutiefly Powder
|
||||
Jangmo-o Scales
|
||||
Cramorant Down
|
||||
Morpeko Snack
|
||||
Poltchageist Powder
|
||||
Fresh-Start Mochi
|
||||
Roto-Stick
|
||||
Glimmering Charm
|
|
@ -2230,64 +2230,64 @@ MT168
|
|||
MT169
|
||||
MT170
|
||||
MT171
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
MT172
|
||||
MT173
|
||||
MT174
|
||||
MT175
|
||||
MT176
|
||||
MT177
|
||||
MT178
|
||||
MT179
|
||||
MT180
|
||||
MT181
|
||||
MT182
|
||||
MT183
|
||||
MT184
|
||||
MT185
|
||||
MT186
|
||||
MT187
|
||||
MT188
|
||||
MT189
|
||||
MT190
|
||||
MT191
|
||||
MT192
|
||||
MT193
|
||||
MT194
|
||||
MT195
|
||||
MT196
|
||||
MT197
|
||||
MT198
|
||||
MT199
|
||||
MT200
|
||||
MT201
|
||||
MT202
|
||||
MT203
|
||||
MT204
|
||||
MT205
|
||||
MT206
|
||||
MT207
|
||||
MT208
|
||||
MT209
|
||||
MT210
|
||||
MT211
|
||||
MT212
|
||||
MT213
|
||||
MT214
|
||||
MT215
|
||||
MT216
|
||||
MT217
|
||||
MT218
|
||||
MT219
|
||||
MT220
|
||||
MT221
|
||||
MT222
|
||||
MT223
|
||||
MT224
|
||||
MT225
|
||||
MT226
|
||||
MT227
|
||||
MT228
|
||||
MT229
|
||||
|
||||
|
||||
|
||||
|
@ -2398,4 +2398,85 @@ Plato Verde
|
|||
Plato Naranja
|
||||
Plato Rojo
|
||||
Plato Blanco
|
||||
Plato Amarillo
|
||||
Plato Amarillo
|
||||
Pluma Feérica
|
||||
Manzana Melosa
|
||||
Cuenco Mediocre
|
||||
Cuenco Exquisito
|
||||
Máscara Turquesa
|
||||
Máscara Cimiento
|
||||
Máscara Fuente
|
||||
Máscara Horno
|
||||
Tarjeta Chic Verde
|
||||
Fragmento de Cristal
|
||||
Mochi Vigor
|
||||
Mochi Músculo
|
||||
Mochi Aguante
|
||||
Mochi Intelecto
|
||||
Mochi Mente
|
||||
Mochi Ímpetu
|
||||
Sillas Simples
|
||||
Sillas Academia
|
||||
Sillas Academia
|
||||
Sillas Cucas
|
||||
Sillas Naturaleza
|
||||
Sillas Espectrales
|
||||
Sillas Cuadros Ámbares
|
||||
Sillas Cuadros Azules
|
||||
Sillas Cuadros Rojas
|
||||
Sillas Hierba Alta
|
||||
Sillas Combate
|
||||
Sillas Monstruosas
|
||||
Sillas Rayas
|
||||
Sillas Rombos
|
||||
Sillas Lunares
|
||||
Sillas Malvas
|
||||
Sillas Menta
|
||||
Sillas Beis
|
||||
Sillas Amarillas
|
||||
Sillas Azules
|
||||
Sillas Rosas
|
||||
Colmillo de Ekans
|
||||
Garra de Sandshrew
|
||||
Pelo de Cleffa
|
||||
Pelo de Vulpix
|
||||
Secreción de Poliwag
|
||||
Liana de Bellsprout
|
||||
Fragmento de Geodude
|
||||
Gas de Koffing
|
||||
Colmillo de Munchlax
|
||||
Pelo de Sentret
|
||||
Pluma de Hoothoot
|
||||
Hilo de Spinarak
|
||||
Pelo de Aipom
|
||||
Aguijón de Yanma
|
||||
Colmillo de Gligar
|
||||
Lava de Slugma
|
||||
Pelo de Swinub
|
||||
Colmillo de Poochyena
|
||||
Hoja de Lotad
|
||||
Tallo de Seedot
|
||||
Fragmento de Nosepass
|
||||
Fluido de Volbeat
|
||||
Fluido de Illumise
|
||||
Cáscara de Corphish
|
||||
Escama de Feebas
|
||||
Fragmento de Duskull
|
||||
Fragmento de Chingling
|
||||
Sudor de Timburr
|
||||
Hoja de Sewaddle
|
||||
Pluma de Ducklett
|
||||
Hollín de Litwick
|
||||
Garra de Mienfoo
|
||||
Pluma de Vullaby
|
||||
Gema de Carbink
|
||||
Rama de Phantump
|
||||
Hilo de Grubbin
|
||||
Polvo de Cutiefly
|
||||
Escama de Jangmo-o
|
||||
Plumón de Cramorant
|
||||
Semilla de Morpeko
|
||||
Polvo de Poltchageist
|
||||
Mochi Reinicio
|
||||
Paloselfi Rotom
|
||||
Amuleto Cristalino
|
|
@ -2230,64 +2230,64 @@ CT168
|
|||
CT169
|
||||
CT170
|
||||
CT171
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
CT172
|
||||
CT173
|
||||
CT174
|
||||
CT175
|
||||
CT176
|
||||
CT177
|
||||
CT178
|
||||
CT179
|
||||
CT180
|
||||
CT181
|
||||
CT182
|
||||
CT183
|
||||
CT184
|
||||
CT185
|
||||
CT186
|
||||
CT187
|
||||
CT188
|
||||
CT189
|
||||
CT190
|
||||
CT191
|
||||
CT192
|
||||
CT193
|
||||
CT194
|
||||
CT195
|
||||
CT196
|
||||
CT197
|
||||
CT198
|
||||
CT199
|
||||
CT200
|
||||
CT201
|
||||
CT202
|
||||
CT203
|
||||
CT204
|
||||
CT205
|
||||
CT206
|
||||
CT207
|
||||
CT208
|
||||
CT209
|
||||
CT210
|
||||
CT211
|
||||
CT212
|
||||
CT213
|
||||
CT214
|
||||
CT215
|
||||
CT216
|
||||
CT217
|
||||
CT218
|
||||
CT219
|
||||
CT220
|
||||
CT221
|
||||
CT222
|
||||
CT223
|
||||
CT224
|
||||
CT225
|
||||
CT226
|
||||
CT227
|
||||
CT228
|
||||
CT229
|
||||
|
||||
|
||||
|
||||
|
@ -2398,4 +2398,85 @@ Assiette Verte
|
|||
Assiette Orange
|
||||
Assiette Rouge
|
||||
Assiette Blanche
|
||||
Assiette Jaune
|
||||
Assiette Jaune
|
||||
Plume Enchantée
|
||||
Pomme Nectar
|
||||
Bol Médiocre
|
||||
Bol Exceptionnel
|
||||
Masque Turquoise
|
||||
Masque de la Pierre
|
||||
Masque du Puits
|
||||
Masque du Fourneau
|
||||
Carte Élégance Verte
|
||||
Morceau de Cristal
|
||||
Mochi Santé
|
||||
Mochi Force
|
||||
Mochi Armure
|
||||
Mochi Esprit
|
||||
Mochi Mental
|
||||
Mochi Sprint
|
||||
Sièges Simples
|
||||
Sièges de l’Académie
|
||||
Sièges de l’Académie
|
||||
Sièges Fantaisie
|
||||
Sièges Verdoyants
|
||||
Sièges Hantés
|
||||
Sièges Tartan Jaunes
|
||||
Sièges Tartan Bleus
|
||||
Sièges Tartan Rouges
|
||||
Sièges Hautes Herbes
|
||||
Sièges Combat Pokémon
|
||||
Sièges Kaiju
|
||||
Sièges à Rayures
|
||||
Sièges à Losanges
|
||||
Sièges à Pois
|
||||
Sièges Mauves
|
||||
Sièges Menthe
|
||||
Sièges Beiges
|
||||
Sièges Jaunes
|
||||
Sièges Bleus
|
||||
Sièges Roses
|
||||
Croc d’Abo
|
||||
Griffe de Sabelette
|
||||
Poils de Mélo
|
||||
Poils de Goupix
|
||||
Mucus de Ptitard
|
||||
Liane de Chétiflor
|
||||
Fragment de Racaillou
|
||||
Gaz de Smogo
|
||||
Croc de Goinfrex
|
||||
Poils de Fouinette
|
||||
Plume de Hoothoot
|
||||
Fil de Mimigal
|
||||
Poils de Capumain
|
||||
Dard de Yanma
|
||||
Croc de Scorplane
|
||||
Lave de Limagma
|
||||
Poils de Marcacrin
|
||||
Croc de Medhyèna
|
||||
Feuille de Nénupiot
|
||||
Tige de Grainipiot
|
||||
Fragment de Tarinor
|
||||
Fluide de Muciole
|
||||
Fluide de Lumivole
|
||||
Carapace d’Écrapince
|
||||
Écaille de Barpau
|
||||
Fragment de Skelénox
|
||||
Fragment de Korillon
|
||||
Sueur de Charpenti
|
||||
Feuille de Larveyette
|
||||
Plume de Couaneton
|
||||
Suie de Funécire
|
||||
Griffe de Kungfouine
|
||||
Plume de Vostourno
|
||||
Joyau de Strassie
|
||||
Branche de Brocélôme
|
||||
Fil de Larvibule
|
||||
Poudre de Bombydou
|
||||
Écaille de Bébécaille
|
||||
Duvet de Nigosier
|
||||
Graine de Morpeko
|
||||
Poudre de Poltchageist
|
||||
Mochi Renouveau
|
||||
Perche à Motismart
|
||||
Charme Éclatant
|
|
@ -2230,64 +2230,64 @@ MT168
|
|||
MT169
|
||||
MT170
|
||||
MT171
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
MT172
|
||||
MT173
|
||||
MT174
|
||||
MT175
|
||||
MT176
|
||||
MT177
|
||||
MT178
|
||||
MT179
|
||||
MT180
|
||||
MT181
|
||||
MT182
|
||||
MT183
|
||||
MT184
|
||||
MT185
|
||||
MT186
|
||||
MT187
|
||||
MT188
|
||||
MT189
|
||||
MT190
|
||||
MT191
|
||||
MT192
|
||||
MT193
|
||||
MT194
|
||||
MT195
|
||||
MT196
|
||||
MT197
|
||||
MT198
|
||||
MT199
|
||||
MT200
|
||||
MT201
|
||||
MT202
|
||||
MT203
|
||||
MT204
|
||||
MT205
|
||||
MT206
|
||||
MT207
|
||||
MT208
|
||||
MT209
|
||||
MT210
|
||||
MT211
|
||||
MT212
|
||||
MT213
|
||||
MT214
|
||||
MT215
|
||||
MT216
|
||||
MT217
|
||||
MT218
|
||||
MT219
|
||||
MT220
|
||||
MT221
|
||||
MT222
|
||||
MT223
|
||||
MT224
|
||||
MT225
|
||||
MT226
|
||||
MT227
|
||||
MT228
|
||||
MT229
|
||||
|
||||
|
||||
|
||||
|
@ -2398,4 +2398,85 @@ Piatto verde
|
|||
Piatto arancione
|
||||
Piatto rosso
|
||||
Piatto bianco
|
||||
Piatto giallo
|
||||
Piatto giallo
|
||||
Piuma fatata
|
||||
Sciroppomo
|
||||
Tazza dozzinale
|
||||
Tazza eccezionale
|
||||
Maschera Turchese
|
||||
Maschera Fondamenta
|
||||
Maschera Pozzo
|
||||
Maschera Focolare
|
||||
Tessera chic verde
|
||||
Pezzo di cristallo
|
||||
Mochi della salute
|
||||
Mochi della potenza
|
||||
Mochi della tutela
|
||||
Mochi dell’ingegno
|
||||
Mochi dell’intuito
|
||||
Mochi della reazione
|
||||
Sedie semplici
|
||||
Sedie accademia
|
||||
Sedie accademia
|
||||
Sedie carine
|
||||
Sedie natura
|
||||
Sedie dispetto
|
||||
Sedie a quadri gialle
|
||||
Sedie a quadri viola
|
||||
Sedie a quadri rosse
|
||||
Sedie erba alta
|
||||
Sedie sfida
|
||||
Sedie mostruose
|
||||
Sedie a righe
|
||||
Sedie a rombi
|
||||
Sedie a pois
|
||||
Sedie lilla
|
||||
Sedie menta
|
||||
Sedie pesca
|
||||
Sedie gialle
|
||||
Sedie blu
|
||||
Sedie rosa
|
||||
Zanna di Ekans
|
||||
Artiglio di Sandshrew
|
||||
Pelo di Cleffa
|
||||
Pelo di Vulpix
|
||||
Muco di Poliwag
|
||||
Viticcio di Bellsprout
|
||||
Frammento di Geodude
|
||||
Gas di Koffing
|
||||
Zanna di Munchlax
|
||||
Pelo di Sentret
|
||||
Penna di Hoothoot
|
||||
Filo di Spinarak
|
||||
Pelo di Aipom
|
||||
Aculeo di Yanma
|
||||
Zanna di Gligar
|
||||
Lava di Slugma
|
||||
Pelo di Swinub
|
||||
Zanna di Poochyena
|
||||
Foglia di Lotad
|
||||
Picciolo di Seedot
|
||||
Frammento di Nosepass
|
||||
Fluido di Volbeat
|
||||
Fluido di Illumise
|
||||
Carapace di Corphish
|
||||
Squama di Feebas
|
||||
Frammento di Duskull
|
||||
Frammento di Chingling
|
||||
Sudore di Timburr
|
||||
Foglia di Sewaddle
|
||||
Penna di Ducklett
|
||||
Fuliggine di Litwick
|
||||
Artiglio di Mienfoo
|
||||
Penna di Vullaby
|
||||
Gemma di Carbink
|
||||
Ramo di Phantump
|
||||
Filo di Grubbin
|
||||
Polvere di Cutiefly
|
||||
Squama di Jangmo-o
|
||||
Piuma di Cramorant
|
||||
Seme di Morpeko
|
||||
Polvere di Poltchageist
|
||||
Mochi del ripristino
|
||||
Bastone Rotoselfie
|
||||
Brillamuleto
|
|
@ -2230,64 +2230,64 @@
|
|||
わざマシン169
|
||||
わざマシン170
|
||||
わざマシン171
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
わざマシン172
|
||||
わざマシン173
|
||||
わざマシン174
|
||||
わざマシン175
|
||||
わざマシン176
|
||||
わざマシン177
|
||||
わざマシン178
|
||||
わざマシン179
|
||||
わざマシン180
|
||||
わざマシン181
|
||||
わざマシン182
|
||||
わざマシン183
|
||||
わざマシン184
|
||||
わざマシン185
|
||||
わざマシン186
|
||||
わざマシン187
|
||||
わざマシン188
|
||||
わざマシン189
|
||||
わざマシン190
|
||||
わざマシン191
|
||||
わざマシン192
|
||||
わざマシン193
|
||||
わざマシン194
|
||||
わざマシン195
|
||||
わざマシン196
|
||||
わざマシン197
|
||||
わざマシン198
|
||||
わざマシン199
|
||||
わざマシン200
|
||||
わざマシン201
|
||||
わざマシン202
|
||||
わざマシン203
|
||||
わざマシン204
|
||||
わざマシン205
|
||||
わざマシン206
|
||||
わざマシン207
|
||||
わざマシン208
|
||||
わざマシン209
|
||||
わざマシン210
|
||||
わざマシン211
|
||||
わざマシン212
|
||||
わざマシン213
|
||||
わざマシン214
|
||||
わざマシン215
|
||||
わざマシン216
|
||||
わざマシン217
|
||||
わざマシン218
|
||||
わざマシン219
|
||||
わざマシン220
|
||||
わざマシン221
|
||||
わざマシン222
|
||||
わざマシン223
|
||||
わざマシン224
|
||||
わざマシン225
|
||||
わざマシン226
|
||||
わざマシン227
|
||||
わざマシン228
|
||||
わざマシン229
|
||||
|
||||
|
||||
|
||||
|
@ -2398,4 +2398,85 @@ Bステンレスボトル
|
|||
オレンジプレート
|
||||
レッドプレート
|
||||
ホワイトプレート
|
||||
イエロープレート
|
||||
イエロープレート
|
||||
ようせいのハネ
|
||||
みついりりんご
|
||||
ボンサクのちゃわん
|
||||
ケッサクのちゃわん
|
||||
みどりのめん
|
||||
いしずえのめん
|
||||
いどのめん
|
||||
かまどのめん
|
||||
おしゃれカードみどり
|
||||
けっしょうのかけら
|
||||
たいりょくのもち
|
||||
きんりょくのもち
|
||||
ていこうのもち
|
||||
ちりょくのもち
|
||||
せいしんのもち
|
||||
しゅんぱつのもち
|
||||
シンプルチェア
|
||||
スクールチェア
|
||||
スクールチェア
|
||||
ファンシーチェア
|
||||
ネイチャーチェア
|
||||
うらめしチェア
|
||||
きいろチェックチェア
|
||||
あおチェックチェア
|
||||
あかチェックチェア
|
||||
くさむらチェア
|
||||
しょうぶチェア
|
||||
かいじゅうチェア
|
||||
ストライプチェア
|
||||
ダイヤチェア
|
||||
みずたまチェア
|
||||
パープルチェア
|
||||
ミントチェア
|
||||
ベージュチェア
|
||||
イエローチェア
|
||||
ブルーチェア
|
||||
ピンクチェア
|
||||
アーボのキバ
|
||||
サンドのツメ
|
||||
ピィのけ
|
||||
ロコンのけ
|
||||
ニョロモのねんえき
|
||||
マダツボミのツル
|
||||
イシツブテのかけら
|
||||
ドガースのガス
|
||||
ゴンベのキバ
|
||||
オタチのけ
|
||||
ホーホーのはね
|
||||
イトマルのいと
|
||||
エイパムのけ
|
||||
ヤンヤンマのトゲ
|
||||
グライガーのキバ
|
||||
マグマッグのようがん
|
||||
ウリムーのけ
|
||||
ポチエナのキバ
|
||||
ハスボーのはっぱ
|
||||
タネボーのえだ
|
||||
ノズパスのかけら
|
||||
バルビートのしる
|
||||
イルミーゼのしる
|
||||
ヘイガニのから
|
||||
ヒンバスのうろこ
|
||||
ヨマワルのかけら
|
||||
リーシャンのかけら
|
||||
ドッコラーのあせ
|
||||
クルミルのはっぱ
|
||||
コアルヒーのはね
|
||||
ヒトモシのすす
|
||||
コジョフーのツメ
|
||||
バルチャイのはね
|
||||
メレシーのほうせき
|
||||
ボクレーのえだ
|
||||
アゴジムシのいと
|
||||
アブリーのこな
|
||||
ジャラコのウロコ
|
||||
ウッウのうもう
|
||||
モルペコのたね
|
||||
チャデスのこな
|
||||
まっさらもち
|
||||
ロトりぼう
|
||||
きらめくおまもり
|
|
@ -2230,64 +2230,64 @@ DS플레이어
|
|||
기술머신169
|
||||
기술머신170
|
||||
기술머신171
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
기술머신172
|
||||
기술머신173
|
||||
기술머신174
|
||||
기술머신175
|
||||
기술머신176
|
||||
기술머신177
|
||||
기술머신178
|
||||
기술머신179
|
||||
기술머신180
|
||||
기술머신181
|
||||
기술머신182
|
||||
기술머신183
|
||||
기술머신184
|
||||
기술머신185
|
||||
기술머신186
|
||||
기술머신187
|
||||
기술머신188
|
||||
기술머신189
|
||||
기술머신190
|
||||
기술머신191
|
||||
기술머신192
|
||||
기술머신193
|
||||
기술머신194
|
||||
기술머신195
|
||||
기술머신196
|
||||
기술머신197
|
||||
기술머신198
|
||||
기술머신199
|
||||
기술머신200
|
||||
기술머신201
|
||||
기술머신202
|
||||
기술머신203
|
||||
기술머신204
|
||||
기술머신205
|
||||
기술머신206
|
||||
기술머신207
|
||||
기술머신208
|
||||
기술머신209
|
||||
기술머신210
|
||||
기술머신211
|
||||
기술머신212
|
||||
기술머신213
|
||||
기술머신214
|
||||
기술머신215
|
||||
기술머신216
|
||||
기술머신217
|
||||
기술머신218
|
||||
기술머신219
|
||||
기술머신220
|
||||
기술머신221
|
||||
기술머신222
|
||||
기술머신223
|
||||
기술머신224
|
||||
기술머신225
|
||||
기술머신226
|
||||
기술머신227
|
||||
기술머신228
|
||||
기술머신229
|
||||
|
||||
|
||||
|
||||
|
@ -2398,4 +2398,85 @@ B 스테인리스 보틀
|
|||
오렌지 플레이트
|
||||
레드 플레이트
|
||||
화이트 플레이트
|
||||
옐로 플레이트
|
||||
옐로 플레이트
|
||||
요정의깃털
|
||||
꿀맛사과
|
||||
범작찻잔
|
||||
걸작찻잔
|
||||
벽록의가면
|
||||
주춧돌의가면
|
||||
우물의가면
|
||||
화덕의가면
|
||||
멋쟁이카드 그린
|
||||
결정조각
|
||||
체력떡
|
||||
근력떡
|
||||
저항력떡
|
||||
지력떡
|
||||
정신력떡
|
||||
순발력떡
|
||||
심플 체어
|
||||
스쿨 체어
|
||||
스쿨 체어
|
||||
팬시 체어
|
||||
네이처 체어
|
||||
원망 체어
|
||||
옐로 체크 체어
|
||||
블루 체크 체어
|
||||
레드 체크 체어
|
||||
풀숲 체어
|
||||
배틀 체어
|
||||
괴수 체어
|
||||
줄무늬 체어
|
||||
다이아 체어
|
||||
물방울 체어
|
||||
퍼플 체어
|
||||
민트 체어
|
||||
베이지 체어
|
||||
옐로 체어
|
||||
블루 체어
|
||||
핑크 체어
|
||||
아보의이빨
|
||||
모래두지의발톱
|
||||
삐의털
|
||||
식스테일의털
|
||||
발챙이의점액
|
||||
모다피의덩굴
|
||||
꼬마돌의조각
|
||||
또가스의가스
|
||||
먹고자의이빨
|
||||
꼬리선의털
|
||||
부우부의깃털
|
||||
페이검의실
|
||||
에이팜의털
|
||||
왕자리의가시
|
||||
글라이거의이빨
|
||||
마그마그의용암
|
||||
꾸꾸리의털
|
||||
포챠나의이빨
|
||||
연꽃몬의잎
|
||||
도토링의가지
|
||||
코코파스의조각
|
||||
볼비트의체액
|
||||
네오비트의체액
|
||||
가재군의껍데기
|
||||
빈티나의비늘
|
||||
해골몽의조각
|
||||
랑딸랑의조각
|
||||
으랏차의땀
|
||||
두르보의잎
|
||||
꼬지보리의깃털
|
||||
불켜미의검댕
|
||||
비조푸의손톱
|
||||
벌차이의깃털
|
||||
멜리시의보석
|
||||
나목령의가지
|
||||
턱지충이의실
|
||||
에블리의가루
|
||||
짜랑꼬의비늘
|
||||
윽우지의솜털
|
||||
모르페코의씨앗
|
||||
차데스의가루
|
||||
순백떡
|
||||
로토무셀카봉
|
||||
반짝이는부적
|
|
@ -2230,64 +2230,64 @@
|
|||
招式学习器169
|
||||
招式学习器170
|
||||
招式学习器171
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
招式学习器172
|
||||
招式学习器173
|
||||
招式学习器174
|
||||
招式学习器175
|
||||
招式学习器176
|
||||
招式学习器177
|
||||
招式学习器178
|
||||
招式学习器179
|
||||
招式学习器180
|
||||
招式学习器181
|
||||
招式学习器182
|
||||
招式学习器183
|
||||
招式学习器184
|
||||
招式学习器185
|
||||
招式学习器186
|
||||
招式学习器187
|
||||
招式学习器188
|
||||
招式学习器189
|
||||
招式学习器190
|
||||
招式学习器191
|
||||
招式学习器192
|
||||
招式学习器193
|
||||
招式学习器194
|
||||
招式学习器195
|
||||
招式学习器196
|
||||
招式学习器197
|
||||
招式学习器198
|
||||
招式学习器199
|
||||
招式学习器200
|
||||
招式学习器201
|
||||
招式学习器202
|
||||
招式学习器203
|
||||
招式学习器204
|
||||
招式学习器205
|
||||
招式学习器206
|
||||
招式学习器207
|
||||
招式学习器208
|
||||
招式学习器209
|
||||
招式学习器210
|
||||
招式学习器211
|
||||
招式学习器212
|
||||
招式学习器213
|
||||
招式学习器214
|
||||
招式学习器215
|
||||
招式学习器216
|
||||
招式学习器217
|
||||
招式学习器218
|
||||
招式学习器219
|
||||
招式学习器220
|
||||
招式学习器221
|
||||
招式学习器222
|
||||
招式学习器223
|
||||
招式学习器224
|
||||
招式学习器225
|
||||
招式学习器226
|
||||
招式学习器227
|
||||
招式学习器228
|
||||
招式学习器229
|
||||
|
||||
|
||||
|
||||
|
@ -2398,4 +2398,85 @@
|
|||
橘色盘子
|
||||
红色盘子
|
||||
白色盘子
|
||||
黄色盘子
|
||||
黄色盘子
|
||||
妖精之羽
|
||||
蜜汁苹果
|
||||
凡作茶碗
|
||||
杰作茶碗
|
||||
碧草面具
|
||||
础石面具
|
||||
水井面具
|
||||
火灶面具
|
||||
碧之时尚名人卡
|
||||
结晶碎片
|
||||
体力粘糕
|
||||
肌力粘糕
|
||||
抵抗粘糕
|
||||
智力粘糕
|
||||
精神粘糕
|
||||
瞬发粘糕
|
||||
简约椅子
|
||||
校园椅子
|
||||
校园椅子
|
||||
幻彩椅子
|
||||
大自然椅子
|
||||
鬼祟椅子
|
||||
黄色格子椅子
|
||||
蓝色格子椅子
|
||||
红色格子椅子
|
||||
草丛椅子
|
||||
对决椅子
|
||||
怪兽椅子
|
||||
条纹椅子
|
||||
菱纹椅子
|
||||
圆点椅子
|
||||
紫色椅子
|
||||
浅绿椅子
|
||||
米色椅子
|
||||
黄色椅子
|
||||
蓝色椅子
|
||||
粉红椅子
|
||||
阿柏蛇的牙
|
||||
穿山鼠的爪子
|
||||
皮宝宝的毛
|
||||
六尾的毛
|
||||
蚊香蝌蚪的黏液
|
||||
喇叭芽的藤蔓
|
||||
小拳石的碎片
|
||||
瓦斯弹的气体
|
||||
小卡比兽的牙
|
||||
尾立的毛
|
||||
咕咕的羽毛
|
||||
圆丝蛛的丝
|
||||
长尾怪手的毛
|
||||
蜻蜻蜓的刺
|
||||
天蝎的牙
|
||||
熔岩虫的熔岩
|
||||
小山猪的毛
|
||||
土狼犬的牙
|
||||
莲叶童子的叶片
|
||||
橡实果的枝条
|
||||
朝北鼻的碎片
|
||||
电萤虫的汁液
|
||||
甜甜萤的汁液
|
||||
龙虾小兵的壳
|
||||
丑丑鱼的鳞片
|
||||
夜巡灵的碎片
|
||||
铃铛响的碎片
|
||||
搬运小匠的汗
|
||||
虫宝包的叶片
|
||||
鸭宝宝的羽毛
|
||||
烛光灵的煤灰
|
||||
功夫鼬的爪子
|
||||
秃鹰丫头的羽毛
|
||||
小碎钻的宝石
|
||||
小木灵的枝条
|
||||
强颚鸡母虫的丝
|
||||
萌虻的粉
|
||||
心鳞宝的鳞片
|
||||
古月鸟的羽绒
|
||||
莫鲁贝可的种子
|
||||
斯魔茶的粉
|
||||
净空粘糕
|
||||
洛拍棒
|
||||
晶耀护符
|
|
@ -2230,64 +2230,64 @@
|
|||
招式學習器169
|
||||
招式學習器170
|
||||
招式學習器171
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
招式學習器172
|
||||
招式學習器173
|
||||
招式學習器174
|
||||
招式學習器175
|
||||
招式學習器176
|
||||
招式學習器177
|
||||
招式學習器178
|
||||
招式學習器179
|
||||
招式學習器180
|
||||
招式學習器181
|
||||
招式學習器182
|
||||
招式學習器183
|
||||
招式學習器184
|
||||
招式學習器185
|
||||
招式學習器186
|
||||
招式學習器187
|
||||
招式學習器188
|
||||
招式學習器189
|
||||
招式學習器190
|
||||
招式學習器191
|
||||
招式學習器192
|
||||
招式學習器193
|
||||
招式學習器194
|
||||
招式學習器195
|
||||
招式學習器196
|
||||
招式學習器197
|
||||
招式學習器198
|
||||
招式學習器199
|
||||
招式學習器200
|
||||
招式學習器201
|
||||
招式學習器202
|
||||
招式學習器203
|
||||
招式學習器204
|
||||
招式學習器205
|
||||
招式學習器206
|
||||
招式學習器207
|
||||
招式學習器208
|
||||
招式學習器209
|
||||
招式學習器210
|
||||
招式學習器211
|
||||
招式學習器212
|
||||
招式學習器213
|
||||
招式學習器214
|
||||
招式學習器215
|
||||
招式學習器216
|
||||
招式學習器217
|
||||
招式學習器218
|
||||
招式學習器219
|
||||
招式學習器220
|
||||
招式學習器221
|
||||
招式學習器222
|
||||
招式學習器223
|
||||
招式學習器224
|
||||
招式學習器225
|
||||
招式學習器226
|
||||
招式學習器227
|
||||
招式學習器228
|
||||
招式學習器229
|
||||
|
||||
|
||||
|
||||
|
@ -2398,4 +2398,85 @@
|
|||
橘色盤子
|
||||
紅色盤子
|
||||
白色盤子
|
||||
黃色盤子
|
||||
黃色盤子
|
||||
妖精之羽
|
||||
蜜汁蘋果
|
||||
凡作茶碗
|
||||
傑作茶碗
|
||||
碧草面具
|
||||
礎石面具
|
||||
水井面具
|
||||
火灶面具
|
||||
碧之時尚名人卡
|
||||
結晶碎片
|
||||
體力糬
|
||||
肌力糬
|
||||
抵抗糬
|
||||
智力糬
|
||||
精神糬
|
||||
瞬發糬
|
||||
簡約椅子
|
||||
校園椅子
|
||||
校園椅子
|
||||
幻彩椅子
|
||||
大自然椅子
|
||||
鬼祟椅子
|
||||
黃色格子椅子
|
||||
藍色格子椅子
|
||||
紅色格子椅子
|
||||
草叢椅子
|
||||
對決椅子
|
||||
怪獸椅子
|
||||
條紋椅子
|
||||
菱紋椅子
|
||||
圓點椅子
|
||||
紫色椅子
|
||||
淺綠椅子
|
||||
米色椅子
|
||||
黃色椅子
|
||||
藍色椅子
|
||||
粉紅椅子
|
||||
阿柏蛇的牙
|
||||
穿山鼠的爪子
|
||||
皮寶寶的毛
|
||||
六尾的毛
|
||||
蚊香蝌蚪的黏液
|
||||
喇叭芽的藤蔓
|
||||
小拳石的碎片
|
||||
瓦斯彈的氣體
|
||||
小卡比獸的牙
|
||||
尾立的毛
|
||||
咕咕的羽毛
|
||||
圓絲蛛的絲
|
||||
長尾怪手的毛
|
||||
蜻蜻蜓的刺
|
||||
天蠍的牙
|
||||
熔岩蟲的熔岩
|
||||
小山豬的毛
|
||||
土狼犬的牙
|
||||
蓮葉童子的葉片
|
||||
橡實果的枝條
|
||||
朝北鼻的碎片
|
||||
電螢蟲的汁液
|
||||
甜甜螢的汁液
|
||||
龍蝦小兵的殼
|
||||
醜醜魚的鱗片
|
||||
夜巡靈的碎片
|
||||
鈴鐺響的碎片
|
||||
搬運小匠的汗
|
||||
蟲寶包的葉片
|
||||
鴨寶寶的羽毛
|
||||
燭光靈的煤灰
|
||||
功夫鼬的爪子
|
||||
禿鷹丫頭的羽毛
|
||||
小碎鑽的寶石
|
||||
小木靈的枝條
|
||||
強顎雞母蟲的絲
|
||||
萌虻的粉
|
||||
心鱗寶的鱗片
|
||||
古月鳥的羽絨
|
||||
莫魯貝可的種子
|
||||
斯魔茶的粉
|
||||
淨空糬
|
||||
洛拍棒
|
||||
晶耀護符
|
|
@ -129,4 +129,43 @@ Zone Null
|
|||
Zone Null
|
||||
|
||||
Orangen-Akademie
|
||||
Trauben-Akademie
|
||||
Trauben-Akademie
|
||||
Kitakami-Straße
|
||||
|
||||
Midoriya
|
||||
|
||||
Apfelhügel
|
||||
|
||||
Gefährten-Platz
|
||||
|
||||
Pfad des Tanzes
|
||||
|
||||
Kitakami-Kulturzentrum
|
||||
|
||||
Oniyama
|
||||
|
||||
Schreckenshöhle
|
||||
Oniyama
|
||||
Rachen des Oni
|
||||
Oniyama
|
||||
Oniyama
|
||||
|
||||
Kristallsee
|
||||
Gipfel des Oniyama
|
||||
Kristallsee
|
||||
Gipfel des Oniyama
|
||||
Wisterienfelder
|
||||
|
||||
Mündungsufer
|
||||
|
||||
Hornschlucht
|
||||
|
||||
Paradiesebene
|
||||
|
||||
Wildnis von Kitakami
|
||||
|
||||
Immerwald
|
||||
Wildnis von Kitakami
|
||||
Infernopass
|
||||
Oniyama
|
||||
Kaltwasserkarst
|
|
@ -129,4 +129,43 @@ Area Zero
|
|||
Area Zero
|
||||
|
||||
Naranja Academy
|
||||
Uva Academy
|
||||
Uva Academy
|
||||
Kitakami Road
|
||||
|
||||
Mossui Town
|
||||
|
||||
Apple Hills
|
||||
|
||||
Loyalty Plaza
|
||||
|
||||
Reveler’s Road
|
||||
|
||||
Kitakami Hall
|
||||
|
||||
Oni Mountain
|
||||
|
||||
Dreaded Den
|
||||
Oni Mountain
|
||||
Oni’s Maw
|
||||
Oni Mountain
|
||||
Oni Mountain
|
||||
|
||||
Crystal Pool
|
||||
Oni Mountain Summit
|
||||
Crystal Pool
|
||||
Oni Mountain Summit
|
||||
Wistful Fields
|
||||
|
||||
Mossfell Confluence
|
||||
|
||||
Fellhorn Gorge
|
||||
|
||||
Paradise Barrens
|
||||
|
||||
Kitakami Wilds
|
||||
|
||||
Timeless Woods
|
||||
Kitakami Wilds
|
||||
Infernal Pass
|
||||
Oni Mountain
|
||||
Chilling Waterhead
|
|
@ -129,4 +129,43 @@ Laboratorio Cero
|
|||
Área Cero
|
||||
|
||||
Academia Naranja
|
||||
Academia Uva
|
||||
Academia Uva
|
||||
Carretera de Noroteo
|
||||
|
||||
Villa Versui
|
||||
|
||||
Colina Manzanar
|
||||
|
||||
Parque de los compatrones
|
||||
|
||||
Senda Jarana
|
||||
|
||||
centro cultural de Noroteo
|
||||
|
||||
Monte Ogro
|
||||
|
||||
Gruta del Pavor
|
||||
Monte Ogro
|
||||
Fauces del Ogro
|
||||
Monte Ogro
|
||||
Monte Ogro
|
||||
|
||||
Lago Cristalino
|
||||
cima del Monte Ogro
|
||||
Lago Cristalino
|
||||
cima del Monte Ogro
|
||||
Pradera Glicina
|
||||
|
||||
Ribera Confluencia
|
||||
|
||||
Desfiladero del Cuerno
|
||||
|
||||
Elíseo Baldío
|
||||
|
||||
Campos Prístinos de Noroteo
|
||||
|
||||
Soto Sempiterno
|
||||
Campos Prístinos de Noroteo
|
||||
Paso del Averno
|
||||
Monte Ogro
|
||||
Cueva Aguafría
|
|
@ -129,4 +129,43 @@ Zone Zéro
|
|||
Zone Zéro
|
||||
|
||||
Académie Orange
|
||||
Académie Raisin
|
||||
Académie Raisin
|
||||
Route de Septentria
|
||||
|
||||
Jaderaude
|
||||
|
||||
Coteau Pommes
|
||||
|
||||
Parc Adorami
|
||||
|
||||
Sentier de la Liesse
|
||||
|
||||
Septemplion
|
||||
|
||||
Mont Strueux
|
||||
|
||||
Antre Interdit
|
||||
Mont Strueux
|
||||
Gueule du Monstre
|
||||
Mont Strueux
|
||||
Mont Strueux
|
||||
|
||||
Lac Cristallin
|
||||
Sommet du Mont Strueux
|
||||
Lac Cristallin
|
||||
Sommet du Mont Strueux
|
||||
Plaine des Glycines
|
||||
|
||||
Rives du Confluent
|
||||
|
||||
Gorge de la Corne
|
||||
|
||||
Lande de la Quiétude
|
||||
|
||||
Terres Vierges de Septentria
|
||||
|
||||
Forêt Ternelle
|
||||
Terres Vierges de Septentria
|
||||
Val Infernal
|
||||
Mont Strueux
|
||||
Grotte Douche Froide
|
|
@ -129,4 +129,43 @@ Area Zero
|
|||
Area Zero
|
||||
|
||||
Accademia Arancia
|
||||
Accademia Uva
|
||||
Accademia Uva
|
||||
Via Nordivia
|
||||
|
||||
Verdegiada
|
||||
|
||||
Colle Mele
|
||||
|
||||
Parco dei beniamici
|
||||
|
||||
Sentiero del Tripudio
|
||||
|
||||
Centro Nordivia
|
||||
|
||||
Monte Orco
|
||||
|
||||
Antro del Terrore
|
||||
Monte Orco
|
||||
Bocca dell’Orco
|
||||
Monte Orco
|
||||
Monte Orco
|
||||
|
||||
Lago Cristallìo
|
||||
Vetta del Monte Orco
|
||||
Lago Cristallìo
|
||||
Vetta del Monte Orco
|
||||
Piana dei Glicini
|
||||
|
||||
Piana Duefiumi
|
||||
|
||||
Canyon del Corno
|
||||
|
||||
Landa Paradisiaca
|
||||
|
||||
Terre Primeve di Nordivia
|
||||
|
||||
Foresta Perpetua
|
||||
Terre Primeve di Nordivia
|
||||
Pendio Infernale
|
||||
Monte Orco
|
||||
Grotta Doccia Fredda
|
|
@ -129,4 +129,43 @@
|
|||
エリアゼロ
|
||||
|
||||
オレンジアカデミー
|
||||
グレープアカデミー
|
||||
グレープアカデミー
|
||||
キタカミ街道
|
||||
|
||||
スイリョクタウン
|
||||
|
||||
アップルヒルズ
|
||||
|
||||
ともっこプラザ
|
||||
|
||||
舞出山道
|
||||
|
||||
キタカミセンター
|
||||
|
||||
鬼が山
|
||||
|
||||
恐れ穴
|
||||
鬼が山
|
||||
鬼歯空洞
|
||||
鬼が山
|
||||
鬼が山
|
||||
|
||||
てらす池
|
||||
鬼が山 山頂
|
||||
てらす池
|
||||
鬼が山 山頂
|
||||
フジが原
|
||||
|
||||
落合川原
|
||||
|
||||
鬼角峡谷
|
||||
|
||||
楽土の荒地
|
||||
|
||||
キタカミ原生地域
|
||||
|
||||
とこしえの森
|
||||
キタカミ原生地域
|
||||
地獄谷
|
||||
鬼が山
|
||||
ひやみず洞
|
|
@ -129,4 +129,43 @@
|
|||
에리어 제로
|
||||
|
||||
오렌지 아카데미
|
||||
그레이프 아카데미
|
||||
그레이프 아카데미
|
||||
북신 가도
|
||||
|
||||
스이록마을
|
||||
|
||||
애플 힐스
|
||||
|
||||
세벗 플라자
|
||||
|
||||
신명 산길
|
||||
|
||||
북신센터
|
||||
|
||||
도깨비산
|
||||
|
||||
공포의 굴
|
||||
도깨비산
|
||||
도깨비이빨 공동
|
||||
도깨비산
|
||||
도깨비산
|
||||
|
||||
태라수호
|
||||
도깨비산 정상
|
||||
태라수호
|
||||
도깨비산 정상
|
||||
등꽃 들판
|
||||
|
||||
북신 합류지
|
||||
|
||||
도깨비뿔 협곡
|
||||
|
||||
낙원의 황무지
|
||||
|
||||
북신 원생지
|
||||
|
||||
영겁의 숲
|
||||
북신 원생지
|
||||
지옥골
|
||||
도깨비산
|
||||
찬물 동굴
|
|
@ -129,4 +129,43 @@
|
|||
第零区
|
||||
|
||||
橘子学院
|
||||
葡萄学院
|
||||
葡萄学院
|
||||
北上街道
|
||||
|
||||
翠绿镇
|
||||
|
||||
苹果之丘
|
||||
|
||||
宝伴广场
|
||||
|
||||
起舞山道
|
||||
|
||||
北上中心
|
||||
|
||||
鬼山
|
||||
|
||||
恐洞
|
||||
鬼山
|
||||
鬼齿洞
|
||||
鬼山
|
||||
鬼山
|
||||
|
||||
晶光池
|
||||
鬼山山顶
|
||||
晶光池
|
||||
鬼山山顶
|
||||
藤花原
|
||||
|
||||
汇流河滩
|
||||
|
||||
鬼角峡谷
|
||||
|
||||
乐土荒地
|
||||
|
||||
北上原生区
|
||||
|
||||
永久森林
|
||||
北上原生区
|
||||
地狱谷
|
||||
鬼山
|
||||
冷水洞
|
|
@ -129,4 +129,43 @@
|
|||
第零區
|
||||
|
||||
橘子學院
|
||||
葡萄學院
|
||||
葡萄學院
|
||||
北上街道
|
||||
|
||||
翠綠鎮
|
||||
|
||||
蘋果之丘
|
||||
|
||||
寶伴廣場
|
||||
|
||||
起舞山道
|
||||
|
||||
北上中心
|
||||
|
||||
鬼山
|
||||
|
||||
恐洞
|
||||
鬼山
|
||||
鬼齒洞
|
||||
鬼山
|
||||
鬼山
|
||||
|
||||
晶光池
|
||||
鬼山山頂
|
||||
晶光池
|
||||
鬼山山頂
|
||||
藤花原
|
||||
|
||||
匯流河灘
|
||||
|
||||
鬼角峽谷
|
||||
|
||||
樂土荒地
|
||||
|
||||
北上原生區
|
||||
|
||||
永久森林
|
||||
北上原生區
|
||||
地獄谷
|
||||
鬼山
|
||||
冷水洞
|
|
@ -77,70 +77,70 @@ Pokémon-Geschäft
|
|||
Demoversion
|
||||
Pokéball Plus
|
||||
Pokémon HOME
|
||||
[~ 78]
|
||||
[~ 79]
|
||||
[~ 80]
|
||||
[~ 81]
|
||||
[~ 82]
|
||||
[~ 83]
|
||||
[~ 84]
|
||||
[~ 85]
|
||||
[~ 86]
|
||||
[~ 87]
|
||||
[~ 88]
|
||||
[~ 89]
|
||||
[~ 90]
|
||||
[~ 91]
|
||||
[~ 92]
|
||||
[~ 93]
|
||||
[~ 94]
|
||||
[~ 95]
|
||||
[~ 96]
|
||||
[~ 97]
|
||||
[~ 98]
|
||||
[~ 99]
|
||||
[~ 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]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -2,4 +2,5 @@
|
|||
Ferne Person
|
||||
Hortleiterinnen
|
||||
Schatzsucher
|
||||
Dame der Heißen Quellen
|
||||
Dame der Heißen Quellen
|
||||
Jim
|
||||
|
|
|
@ -2,4 +2,5 @@
|
|||
someone far away
|
||||
a Nursery worker
|
||||
a treasure hunter
|
||||
an old hot-springs visitor
|
||||
an old hot-springs visitor
|
||||
Jacq
|
|
@ -2,4 +2,5 @@
|
|||
Persona lejana
|
||||
Cuidados Pokémon
|
||||
Buscatesoros
|
||||
Anciana del Balneario
|
||||
Anciana del Balneario
|
||||
Cinio
|
|
@ -2,4 +2,5 @@
|
|||
Personne lointaine
|
||||
Responsable de la Garderie
|
||||
Chercheur de Trésors
|
||||
Dame des Eaux Thermales
|
||||
Dame des Eaux Thermales
|
||||
Jacq
|
|
@ -2,4 +2,5 @@
|
|||
da una persona lontana
|
||||
all’Ostello Pokémon
|
||||
da un Cercatesori
|
||||
dalla vecchina delle terme
|
||||
dalla vecchina delle terme
|
||||
(regalo di Zim)
|
|
@ -2,4 +2,5 @@
|
|||
遠くにいる人
|
||||
あずかり屋さん
|
||||
トレジャーハンター
|
||||
おんせんばあさん
|
||||
おんせんばあさん
|
||||
ジニア
|
|
@ -2,4 +2,5 @@
|
|||
멀리 있는 사람
|
||||
맡기미집
|
||||
트레져헌터
|
||||
온천 할머니
|
||||
온천 할머니
|
||||
지니어
|
|
@ -2,4 +2,5 @@
|
|||
远处的人
|
||||
寄放屋
|
||||
寻宝猎人
|
||||
温泉婆婆
|
||||
温泉婆婆
|
||||
吉尼亚
|
|
@ -2,4 +2,5 @@
|
|||
遠方的人
|
||||
寄放屋
|
||||
尋寶獵人
|
||||
溫泉婆婆
|
||||
溫泉婆婆
|
||||
吉尼亞
|
|
@ -296,4 +296,12 @@ Synchronauftritt
|
|||
Giftbelag
|
||||
Schweifrüstung
|
||||
Bodenschmaus
|
||||
Myzelienkraft
|
||||
Myzelienkraft
|
||||
Gastlichkeit
|
||||
Geistiges Auge
|
||||
Erinnerungskraft
|
||||
Erinnerungskraft
|
||||
Erinnerungskraft
|
||||
Erinnerungskraft
|
||||
Giftkette
|
||||
Süßer Nektar
|
|
@ -1123,4 +1123,13 @@ Wasser
|
|||
Gleit
|
||||
Gefecht
|
||||
Flammen
|
||||
Fluten
|
||||
Fluten
|
||||
Türkisgrüne
|
||||
Imitations
|
||||
Simple
|
||||
Blutmond
|
||||
Brunnen
|
||||
Ofen
|
||||
Fundament
|
||||
Kostbarkeits
|
||||
Edle
|
|
@ -898,4 +898,8 @@ Hitzeturbo
|
|||
Finsterturbo
|
||||
Toxiturbo
|
||||
Raufturbo
|
||||
Zauberturbo
|
||||
Zauberturbo
|
||||
Blutmond
|
||||
Quirlschuss
|
||||
Sirupbombe
|
||||
Rankenkeule
|
|
@ -1008,4 +1008,11 @@ Eisenkrieger
|
|||
Koraidon
|
||||
Miraidon
|
||||
Windewoge
|
||||
Eisenblatt
|
||||
Eisenblatt
|
||||
Sirapfel
|
||||
Mortcha
|
||||
Fatalitcha
|
||||
Boninu
|
||||
Benesaru
|
||||
Beatori
|
||||
Ogerpon
|
|
@ -296,4 +296,12 @@ Costar
|
|||
Toxic Debris
|
||||
Armor Tail
|
||||
Earth Eater
|
||||
Mycelium Might
|
||||
Mycelium Might
|
||||
Hospitality
|
||||
Mind’s Eye
|
||||
Embody Aspect
|
||||
Embody Aspect
|
||||
Embody Aspect
|
||||
Embody Aspect
|
||||
Toxic Chain
|
||||
Supersweet Syrup
|
|
@ -1123,4 +1123,13 @@ Aquatic
|
|||
Glide
|
||||
Combat
|
||||
Blaze
|
||||
Aqua
|
||||
Aqua
|
||||
Teal
|
||||
Counterfeit
|
||||
Unremarkable
|
||||
Bloodmoon
|
||||
Wellspring
|
||||
Hearthflame
|
||||
Cornerstone
|
||||
Artisan
|
||||
Masterpiece
|
|
@ -898,4 +898,8 @@ Blazing Torque
|
|||
Wicked Torque
|
||||
Noxious Torque
|
||||
Combat Torque
|
||||
Magical Torque
|
||||
Magical Torque
|
||||
Blood Moon
|
||||
Matcha Gotcha
|
||||
Syrup Bomb
|
||||
Ivy Cudgel
|
|
@ -1008,4 +1008,11 @@ Iron Valiant
|
|||
Koraidon
|
||||
Miraidon
|
||||
Walking Wake
|
||||
Iron Leaves
|
||||
Iron Leaves
|
||||
Dipplin
|
||||
Poltchageist
|
||||
Sinistcha
|
||||
Okidogi
|
||||
Munkidori
|
||||
Fezandipiti
|
||||
Ogerpon
|
|
@ -296,4 +296,12 @@ Unísono
|
|||
Capa Tóxica
|
||||
Cola Armadura
|
||||
Geofagia
|
||||
Poder Fúngico
|
||||
Poder Fúngico
|
||||
Hospitalidad
|
||||
Ojo Mental
|
||||
Evocarrecuerdos
|
||||
Evocarrecuerdos
|
||||
Evocarrecuerdos
|
||||
Evocarrecuerdos
|
||||
Cadena Tóxica
|
||||
Néctar Dulce
|
|
@ -1123,4 +1123,13 @@ Flote
|
|||
Planeo
|
||||
Combatiente
|
||||
Ardiente
|
||||
Acuática
|
||||
Acuática
|
||||
Turquesa
|
||||
Fraudulenta
|
||||
Mediocre
|
||||
Luna Carmesí
|
||||
Fuente
|
||||
Horno
|
||||
Cimiento
|
||||
Opulenta
|
||||
Exquisita
|
|
@ -898,4 +898,8 @@ Pirochoque
|
|||
Ominochoque
|
||||
Ponzochoque
|
||||
Pugnachoque
|
||||
Feerichoque
|
||||
Feerichoque
|
||||
Luna Roja
|
||||
Cañón Batidor
|
||||
Bomba Caramelo
|
||||
Garrote Liana
|
|
@ -1008,4 +1008,11 @@ Ferropaladín
|
|||
Koraidon
|
||||
Miraidon
|
||||
Ondulagua
|
||||
Ferroverdor
|
||||
Ferroverdor
|
||||
Dipplin
|
||||
Poltchageist
|
||||
Sinistcha
|
||||
Okidogi
|
||||
Munkidori
|
||||
Fezandipiti
|
||||
Ogerpon
|
|
@ -296,4 +296,12 @@ Collab
|
|||
Dépôt Toxique
|
||||
Armure Caudale
|
||||
Absorbe-Terre
|
||||
Force Fongique
|
||||
Force Fongique
|
||||
Aux Petits Soins
|
||||
Œil Révélateur
|
||||
Force Mémorielle
|
||||
Force Mémorielle
|
||||
Force Mémorielle
|
||||
Force Mémorielle
|
||||
Chaîne Toxique
|
||||
Nectar Mielleux
|
|
@ -1123,4 +1123,13 @@ Aquatique
|
|||
Aérien
|
||||
Combative
|
||||
Flamboyante
|
||||
Aquatique
|
||||
Aquatique
|
||||
Turquoise
|
||||
Imitation
|
||||
Médiocre
|
||||
Lune Vermeille
|
||||
Puits
|
||||
Fourneau
|
||||
Pierre
|
||||
Onéreuse
|
||||
Exceptionnelle
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue