Merge branch 'evolution-condition-refactor' of https://github.com/Wlowscha/pokerogue into evolution-condition-refactor
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 712 B After Width: | Height: | Size: 748 B |
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 29 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 29 KiB |
Before Width: | Height: | Size: 713 B After Width: | Height: | Size: 748 B |
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 29 KiB |
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 34 KiB |
@ -4,6 +4,8 @@
|
|||||||
"ffee52": "37d6de",
|
"ffee52": "37d6de",
|
||||||
"debd29": "078a8f",
|
"debd29": "078a8f",
|
||||||
"833100": "002112",
|
"833100": "002112",
|
||||||
|
"830009": "23033b",
|
||||||
|
"189d87": "c2247b",
|
||||||
"ff7b73": "712f8f",
|
"ff7b73": "712f8f",
|
||||||
"de4141": "3f1375",
|
"de4141": "3f1375",
|
||||||
"ffbdbd": "a266b0",
|
"ffbdbd": "a266b0",
|
||||||
@ -11,6 +13,7 @@
|
|||||||
"107b6a": "9e1976",
|
"107b6a": "9e1976",
|
||||||
"105241": "4f2800",
|
"105241": "4f2800",
|
||||||
"83de7b": "a37707",
|
"83de7b": "a37707",
|
||||||
|
"2e5529": "38001c",
|
||||||
"5a9c39": "705207",
|
"5a9c39": "705207",
|
||||||
"20b49c": "de3592",
|
"20b49c": "de3592",
|
||||||
"fdfdfd": "fdfdfd",
|
"fdfdfd": "fdfdfd",
|
||||||
@ -21,14 +24,17 @@
|
|||||||
"ffee52": "f75ea8",
|
"ffee52": "f75ea8",
|
||||||
"debd29": "a30a66",
|
"debd29": "a30a66",
|
||||||
"833100": "0b2e01",
|
"833100": "0b2e01",
|
||||||
|
"830009": "154205",
|
||||||
|
"189d87": "f17f05",
|
||||||
"ff7b73": "9db042",
|
"ff7b73": "9db042",
|
||||||
"de4141": "3c8227",
|
"de4141": "3c8227",
|
||||||
"ffbdbd": "e7e385",
|
"ffbdbd": "e7e385",
|
||||||
"101010": "101010",
|
"101010": "101010",
|
||||||
"107b6a": "d44300",
|
"107b6a": "d44300",
|
||||||
"105241": "030129",
|
"105241": "381601",
|
||||||
"83de7b": "433d99",
|
"83de7b": "80ced9",
|
||||||
"5a9c39": "19164f",
|
"2e5519": "011c38",
|
||||||
|
"5a9c39": "446b94",
|
||||||
"20b49c": "fa8405",
|
"20b49c": "fa8405",
|
||||||
"fdfdfd": "fdfdfd",
|
"fdfdfd": "fdfdfd",
|
||||||
"5ad5c5": "faa405"
|
"5ad5c5": "faa405"
|
||||||
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
"1": {
|
"1": {
|
||||||
"843100": "033b22",
|
"843100": "033b22",
|
||||||
|
"830009": "23033b",
|
||||||
"ff7b73": "712f8f",
|
"ff7b73": "712f8f",
|
||||||
"ffbdbd": "a266b0",
|
"ffbdbd": "a266b0",
|
||||||
"debd29": "078a8f",
|
"debd29": "078a8f",
|
||||||
@ -13,11 +14,13 @@
|
|||||||
"5a9c3a": "b34952",
|
"5a9c3a": "b34952",
|
||||||
"84de7b": "ff745e",
|
"84de7b": "ff745e",
|
||||||
"5ad6c5": "f062a4",
|
"5ad6c5": "f062a4",
|
||||||
|
"2e5519": "38001c",
|
||||||
"21b59c": "de3592",
|
"21b59c": "de3592",
|
||||||
"ffffff": "ffffff"
|
"ffffff": "ffffff"
|
||||||
},
|
},
|
||||||
"2": {
|
"2": {
|
||||||
"843100": "420514",
|
"843100": "420514",
|
||||||
|
"830009": "154205",
|
||||||
"ff7b73": "9db042",
|
"ff7b73": "9db042",
|
||||||
"ffbdbd": "e7e385",
|
"ffbdbd": "e7e385",
|
||||||
"debd29": "a30a66",
|
"debd29": "a30a66",
|
||||||
@ -30,6 +33,7 @@
|
|||||||
"5a9c3a": "446b94",
|
"5a9c3a": "446b94",
|
||||||
"84de7b": "80ced9",
|
"84de7b": "80ced9",
|
||||||
"5ad6c5": "faa405",
|
"5ad6c5": "faa405",
|
||||||
|
"2e5519": "011c38",
|
||||||
"21b59c": "fa8405",
|
"21b59c": "fa8405",
|
||||||
"ffffff": "ffffff"
|
"ffffff": "ffffff"
|
||||||
}
|
}
|
||||||
|
@ -835,7 +835,7 @@
|
|||||||
"6713": [0, 1, 1],
|
"6713": [0, 1, 1],
|
||||||
"8901": [1, 1, 1],
|
"8901": [1, 1, 1],
|
||||||
"female": {
|
"female": {
|
||||||
"3": [0, 2, 1],
|
"3": [0, 1, 1],
|
||||||
"19": [0, 1, 1],
|
"19": [0, 1, 1],
|
||||||
"20": [0, 1, 1],
|
"20": [0, 1, 1],
|
||||||
"25": [0, 1, 1],
|
"25": [0, 1, 1],
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
"1": {
|
"1": {
|
||||||
"833100": "180136",
|
"833100": "180136",
|
||||||
|
"830009": "23033b",
|
||||||
"bd6a31": "012729",
|
"bd6a31": "012729",
|
||||||
"ffee52": "37d6de",
|
"ffee52": "37d6de",
|
||||||
"debd29": "078a8f",
|
"debd29": "078a8f",
|
||||||
@ -8,15 +9,18 @@
|
|||||||
"de4141": "3f1375",
|
"de4141": "3f1375",
|
||||||
"ff7b73": "712f8f",
|
"ff7b73": "712f8f",
|
||||||
"ffbdbd": "a266b0",
|
"ffbdbd": "a266b0",
|
||||||
"5a9c39": "705207",
|
"e8a3a3": "91579e",
|
||||||
"105241": "4f2800",
|
"5a9c39": "b34952",
|
||||||
"83de7b": "a37707",
|
"105241": "190038",
|
||||||
|
"2e5519": "38001c",
|
||||||
|
"83de7b": "ff745e",
|
||||||
"107b6a": "b80479",
|
"107b6a": "b80479",
|
||||||
"20b49c": "de3592",
|
"20b49c": "de3592",
|
||||||
"fdfdfd": "fdfdfd"
|
"fdfdfd": "fdfdfd"
|
||||||
},
|
},
|
||||||
"2": {
|
"2": {
|
||||||
"833100": "0b2e01",
|
"833100": "0b2e01",
|
||||||
|
"830009": "154205",
|
||||||
"bd6a31": "420514",
|
"bd6a31": "420514",
|
||||||
"ffee52": "f75ea8",
|
"ffee52": "f75ea8",
|
||||||
"debd29": "a30a66",
|
"debd29": "a30a66",
|
||||||
@ -24,9 +28,11 @@
|
|||||||
"de4141": "3c8227",
|
"de4141": "3c8227",
|
||||||
"ff7b73": "9db042",
|
"ff7b73": "9db042",
|
||||||
"ffbdbd": "e7e385",
|
"ffbdbd": "e7e385",
|
||||||
"5a9c39": "19164f",
|
"e8a3a3": "ced76f",
|
||||||
"105241": "030129",
|
"5a9c39": "446b94",
|
||||||
"83de7b": "433d99",
|
"105241": "381601",
|
||||||
|
"2e5519": "011c38",
|
||||||
|
"83de7b": "80ced9",
|
||||||
"107b6a": "d15d04",
|
"107b6a": "d15d04",
|
||||||
"20b49c": "fa8405",
|
"20b49c": "fa8405",
|
||||||
"fdfdfd": "fdfdfd"
|
"fdfdfd": "fdfdfd"
|
||||||
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
"1": {
|
"1": {
|
||||||
"843100": "033b22",
|
"843100": "033b22",
|
||||||
|
"830009": "23033b",
|
||||||
"ffbdbd": "a266b0",
|
"ffbdbd": "a266b0",
|
||||||
"ff7b73": "712f8f",
|
"ff7b73": "712f8f",
|
||||||
"debd29": "078a8f",
|
"debd29": "078a8f",
|
||||||
@ -11,6 +12,7 @@
|
|||||||
"105242": "190038",
|
"105242": "190038",
|
||||||
"107b6b": "c21f7e",
|
"107b6b": "c21f7e",
|
||||||
"5a9c3a": "b34952",
|
"5a9c3a": "b34952",
|
||||||
|
"2e5519": "38001c",
|
||||||
"5ad6c5": "f062a4",
|
"5ad6c5": "f062a4",
|
||||||
"21b59c": "de3592",
|
"21b59c": "de3592",
|
||||||
"84de7b": "ff745e",
|
"84de7b": "ff745e",
|
||||||
@ -18,6 +20,7 @@
|
|||||||
},
|
},
|
||||||
"2": {
|
"2": {
|
||||||
"843100": "420514",
|
"843100": "420514",
|
||||||
|
"830009": "154205",
|
||||||
"ffbdbd": "e7e385",
|
"ffbdbd": "e7e385",
|
||||||
"ff7b73": "9db042",
|
"ff7b73": "9db042",
|
||||||
"debd29": "a30a66",
|
"debd29": "a30a66",
|
||||||
@ -25,7 +28,8 @@
|
|||||||
"de4242": "3c8227",
|
"de4242": "3c8227",
|
||||||
"101010": "101010",
|
"101010": "101010",
|
||||||
"ffef52": "f75ea8",
|
"ffef52": "f75ea8",
|
||||||
"105242": "001a33",
|
"105242": "381601",
|
||||||
|
"2e5519": "011c38",
|
||||||
"107b6b": "d15d04",
|
"107b6b": "d15d04",
|
||||||
"5a9c3a": "446b94",
|
"5a9c3a": "446b94",
|
||||||
"5ad6c5": "faa405",
|
"5ad6c5": "faa405",
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
"de62a4": "ffc668",
|
"de62a4": "ffc668",
|
||||||
"4a83a4": "387fa7",
|
"4a83a4": "387fa7",
|
||||||
"314a62": "244260",
|
"314a62": "244260",
|
||||||
"70bbb4": "f8d371",
|
"548e88": "2d60bb",
|
||||||
"a4295a": "cc762f"
|
"a4295a": "cc762f"
|
||||||
},
|
},
|
||||||
"1": {
|
"1": {
|
||||||
@ -22,7 +22,7 @@
|
|||||||
"de62a4": "ffdf90",
|
"de62a4": "ffdf90",
|
||||||
"4a83a4": "a1c8db",
|
"4a83a4": "a1c8db",
|
||||||
"314a62": "7396b4",
|
"314a62": "7396b4",
|
||||||
"70bbb4": "70bbb4",
|
"548e88": "a9c0c6",
|
||||||
"a4295a": "e28c27"
|
"a4295a": "e28c27"
|
||||||
},
|
},
|
||||||
"2": {
|
"2": {
|
||||||
@ -35,7 +35,7 @@
|
|||||||
"de62a4": "e25038",
|
"de62a4": "e25038",
|
||||||
"4a83a4": "e6aa47",
|
"4a83a4": "e6aa47",
|
||||||
"314a62": "b56f2a",
|
"314a62": "b56f2a",
|
||||||
"70bbb4": "f8d371",
|
"548e88": "e0b544",
|
||||||
"a4295a": "a62a21"
|
"a4295a": "a62a21"
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
"1": {
|
"1": {
|
||||||
"843100": "033b22",
|
"843100": "033b22",
|
||||||
|
"830009": "23033b",
|
||||||
"ffbdbd": "a266b0",
|
"ffbdbd": "a266b0",
|
||||||
"ffef52": "37d6de",
|
"ffef52": "37d6de",
|
||||||
"debd29": "078a8f",
|
"debd29": "078a8f",
|
||||||
@ -10,6 +11,7 @@
|
|||||||
"101010": "101010",
|
"101010": "101010",
|
||||||
"105242": "190038",
|
"105242": "190038",
|
||||||
"107b6b": "9e1976",
|
"107b6b": "9e1976",
|
||||||
|
"2e5519": "38001c",
|
||||||
"5a9c3a": "b34952",
|
"5a9c3a": "b34952",
|
||||||
"5ad6c5": "f062a4",
|
"5ad6c5": "f062a4",
|
||||||
"21b59c": "de3592",
|
"21b59c": "de3592",
|
||||||
@ -18,6 +20,7 @@
|
|||||||
},
|
},
|
||||||
"2": {
|
"2": {
|
||||||
"843100": "420514",
|
"843100": "420514",
|
||||||
|
"830009": "154205",
|
||||||
"ffbdbd": "e7e385",
|
"ffbdbd": "e7e385",
|
||||||
"ffef52": "f75ea8",
|
"ffef52": "f75ea8",
|
||||||
"debd29": "a30a66",
|
"debd29": "a30a66",
|
||||||
@ -27,6 +30,7 @@
|
|||||||
"101010": "101010",
|
"101010": "101010",
|
||||||
"105242": "381601",
|
"105242": "381601",
|
||||||
"107b6b": "d15d04",
|
"107b6b": "d15d04",
|
||||||
|
"2e5519": "011c38",
|
||||||
"5a9c3a": "446b94",
|
"5a9c3a": "446b94",
|
||||||
"5ad6c5": "faa405",
|
"5ad6c5": "faa405",
|
||||||
"21b59c": "fa8405",
|
"21b59c": "fa8405",
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
"0f0f0f": "0f0f0f",
|
"0f0f0f": "0f0f0f",
|
||||||
"314a62": "244260",
|
"314a62": "244260",
|
||||||
"621841": "71370f",
|
"621841": "71370f",
|
||||||
"70bbb4": "f8d371",
|
"548e88": "2d60bb",
|
||||||
"de62a4": "ffc668",
|
"de62a4": "ffc668",
|
||||||
"a4295a": "cc762f"
|
"a4295a": "cc762f"
|
||||||
},
|
},
|
||||||
@ -21,7 +21,7 @@
|
|||||||
"0f0f0f": "0f0f0f",
|
"0f0f0f": "0f0f0f",
|
||||||
"314a62": "7396b4",
|
"314a62": "7396b4",
|
||||||
"621841": "7b3c08",
|
"621841": "7b3c08",
|
||||||
"70bbb4": "70bbb4",
|
"548e88": "a9c0c6",
|
||||||
"de62a4": "ffdf90",
|
"de62a4": "ffdf90",
|
||||||
"a4295a": "e28c27"
|
"a4295a": "e28c27"
|
||||||
},
|
},
|
||||||
@ -34,7 +34,7 @@
|
|||||||
"0f0f0f": "0f0f0f",
|
"0f0f0f": "0f0f0f",
|
||||||
"314a62": "b56f2a",
|
"314a62": "b56f2a",
|
||||||
"621841": "5a0a05",
|
"621841": "5a0a05",
|
||||||
"70bbb4": "f8d371",
|
"548e88": "e0b544",
|
||||||
"de62a4": "e25038",
|
"de62a4": "e25038",
|
||||||
"a4295a": "a62a21"
|
"a4295a": "a62a21"
|
||||||
}
|
}
|
||||||
|
@ -1,19 +1,41 @@
|
|||||||
{
|
{
|
||||||
|
"1": {
|
||||||
|
"843100": "033b22",
|
||||||
|
"830009": "23033b",
|
||||||
|
"ffbdbd": "a266b0",
|
||||||
|
"ffef52": "37d6de",
|
||||||
|
"debd29": "078a8f",
|
||||||
|
"ff7b73": "712f8f",
|
||||||
|
"bd6b31": "168a69",
|
||||||
|
"de4242": "3f1375",
|
||||||
|
"101010": "101010",
|
||||||
|
"105242": "190038",
|
||||||
|
"107b6b": "9e1976",
|
||||||
|
"2e5519": "38001c",
|
||||||
|
"5a9c3a": "b34952",
|
||||||
|
"5ad6c5": "f062a4",
|
||||||
|
"21b59c": "de3592",
|
||||||
|
"84de7b": "ff745e",
|
||||||
|
"ffffff": "ffffff"
|
||||||
|
},
|
||||||
"2": {
|
"2": {
|
||||||
"843100": "420514",
|
"843100": "420514",
|
||||||
"ff7b73": "9db042",
|
"830009": "154205",
|
||||||
"ffbdbd": "e7e385",
|
"ffbdbd": "e7e385",
|
||||||
"ffef52": "f75ea8",
|
"ffef52": "f75ea8",
|
||||||
"debd29": "a30a66",
|
"debd29": "a30a66",
|
||||||
|
"ff7b73": "9db042",
|
||||||
"bd6b31": "852a41",
|
"bd6b31": "852a41",
|
||||||
"de4242": "3c8227",
|
"de4242": "3c8227",
|
||||||
"101010": "101010",
|
"101010": "101010",
|
||||||
"105242": "381601",
|
"105242": "381601",
|
||||||
"107b6b": "d44300",
|
"107b6b": "d15d04",
|
||||||
|
"2e5519": "011c38",
|
||||||
"5a9c3a": "446b94",
|
"5a9c3a": "446b94",
|
||||||
"84de7b": "80ced9",
|
|
||||||
"5ad6c5": "faa405",
|
"5ad6c5": "faa405",
|
||||||
"21b59c": "fa8405",
|
"21b59c": "fa8405",
|
||||||
"ffffff": "ffffff"
|
"84de7b": "80ced9",
|
||||||
|
"ffffff": "ffffff",
|
||||||
|
"2f561a": "011b34"
|
||||||
}
|
}
|
||||||
}
|
}
|
Before Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 865 B After Width: | Height: | Size: 985 B |
@ -145,13 +145,13 @@ class TimeOfDayEvolutionCondition extends SpeciesEvolutionCondition {
|
|||||||
public timesOfDay: TimeOfDay[];
|
public timesOfDay: TimeOfDay[];
|
||||||
constructor(tod: "day" | "night") {
|
constructor(tod: "day" | "night") {
|
||||||
if (tod === "day") {
|
if (tod === "day") {
|
||||||
super(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DAWN || globalScene.arena.getTimeOfDay() === TimeOfDay.DAY);
|
super(() => globalScene.arena.getTimeOfDay() === TimeOfDay.DAWN || globalScene.arena.getTimeOfDay() === TimeOfDay.DAY);
|
||||||
this.timesOfDay = [ TimeOfDay.DAWN, TimeOfDay.DAY ];
|
this.timesOfDay = [ TimeOfDay.DAWN, TimeOfDay.DAY ];
|
||||||
} else if (tod === "night") {
|
} else if (tod === "night") {
|
||||||
super(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DUSK || globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT);
|
super(() => globalScene.arena.getTimeOfDay() === TimeOfDay.DUSK || globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT);
|
||||||
this.timesOfDay = [ TimeOfDay.DUSK, TimeOfDay.NIGHT ];
|
this.timesOfDay = [ TimeOfDay.DUSK, TimeOfDay.NIGHT ];
|
||||||
} else {
|
} else {
|
||||||
super(p => false);
|
super(() => false);
|
||||||
this.timesOfDay = [];
|
this.timesOfDay = [];
|
||||||
}
|
}
|
||||||
this.description = i18next.t("pokemonEvolutions:timeOfDay", { tod: i18next.t(`pokemonEvolutions:${tod}`) });
|
this.description = i18next.t("pokemonEvolutions:timeOfDay", { tod: i18next.t(`pokemonEvolutions:${tod}`) });
|
||||||
@ -209,7 +209,7 @@ class FriendshipMoveTypeEvolutionCondition extends SpeciesEvolutionCondition {
|
|||||||
|
|
||||||
class ShedinjaEvolutionCondition extends SpeciesEvolutionCondition {
|
class ShedinjaEvolutionCondition extends SpeciesEvolutionCondition {
|
||||||
constructor() {
|
constructor() {
|
||||||
super(p => globalScene.getPlayerParty().length < 6 && globalScene.pokeballCounts[PokeballType.POKEBALL] > 0);
|
super(() => globalScene.getPlayerParty().length < 6 && globalScene.pokeballCounts[PokeballType.POKEBALL] > 0);
|
||||||
this.description = i18next.t("pokemonEvolutions:shedinja");
|
this.description = i18next.t("pokemonEvolutions:shedinja");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -217,7 +217,7 @@ class ShedinjaEvolutionCondition extends SpeciesEvolutionCondition {
|
|||||||
class PartyTypeEvolutionCondition extends SpeciesEvolutionCondition {
|
class PartyTypeEvolutionCondition extends SpeciesEvolutionCondition {
|
||||||
public type: Type;
|
public type: Type;
|
||||||
constructor(type: Type) {
|
constructor(type: Type) {
|
||||||
super(p => !!globalScene.getPlayerParty().find(p => p.getTypes(false, false, true).indexOf(type) > -1));
|
super(() => !!globalScene.getPlayerParty().find(p => p.getTypes(false, false, true).indexOf(type) > -1));
|
||||||
this.type = type;
|
this.type = type;
|
||||||
this.description = i18next.t("pokemonEvolutions:partyType", { type: i18next.t(`pokemonInfo:Type.${Type[this.type]}`) });
|
this.description = i18next.t("pokemonEvolutions:partyType", { type: i18next.t(`pokemonInfo:Type.${Type[this.type]}`) });
|
||||||
}
|
}
|
||||||
@ -226,7 +226,7 @@ class PartyTypeEvolutionCondition extends SpeciesEvolutionCondition {
|
|||||||
class CaughtEvolutionCondition extends SpeciesEvolutionCondition {
|
class CaughtEvolutionCondition extends SpeciesEvolutionCondition {
|
||||||
public species: Species;
|
public species: Species;
|
||||||
constructor(species: Species) {
|
constructor(species: Species) {
|
||||||
super(p => !!globalScene.gameData.dexData[species].caughtAttr);
|
super(() => !!globalScene.gameData.dexData[species].caughtAttr);
|
||||||
this.species = species;
|
this.species = species;
|
||||||
this.description = i18next.t("pokemonEvolutions:caught", { species: i18next.t(`pokemon:${Species[this.species].toLowerCase()}`) });
|
this.description = i18next.t("pokemonEvolutions:caught", { species: i18next.t(`pokemon:${Species[this.species].toLowerCase()}`) });
|
||||||
}
|
}
|
||||||
@ -235,7 +235,7 @@ class CaughtEvolutionCondition extends SpeciesEvolutionCondition {
|
|||||||
class WeatherEvolutionCondition extends SpeciesEvolutionCondition {
|
class WeatherEvolutionCondition extends SpeciesEvolutionCondition {
|
||||||
public weatherTypes: WeatherType[];
|
public weatherTypes: WeatherType[];
|
||||||
constructor(weatherTypes: WeatherType[]) {
|
constructor(weatherTypes: WeatherType[]) {
|
||||||
super(p => weatherTypes.indexOf(globalScene.arena.weather?.weatherType || WeatherType.NONE) > -1);
|
super(() => weatherTypes.indexOf(globalScene.arena.weather?.weatherType || WeatherType.NONE) > -1);
|
||||||
this.weatherTypes = weatherTypes;
|
this.weatherTypes = weatherTypes;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -292,7 +292,7 @@ class MoveTimeOfDayEvolutionCondition extends SpeciesEvolutionCondition {
|
|||||||
this.move = move;
|
this.move = move;
|
||||||
this.timesOfDay = [ TimeOfDay.DUSK, TimeOfDay.NIGHT ];
|
this.timesOfDay = [ TimeOfDay.DUSK, TimeOfDay.NIGHT ];
|
||||||
} else {
|
} else {
|
||||||
super(p => false);
|
super(() => false);
|
||||||
this.timesOfDay = [];
|
this.timesOfDay = [];
|
||||||
}
|
}
|
||||||
const moveKey = Moves[this.move].split("_").filter(f => f).map((f, i) => i ? `${f[0]}${f.slice(1).toLowerCase()}` : f.toLowerCase()).join("");
|
const moveKey = Moves[this.move].split("_").filter(f => f).map((f, i) => i ? `${f[0]}${f.slice(1).toLowerCase()}` : f.toLowerCase()).join("");
|
||||||
@ -303,7 +303,7 @@ class MoveTimeOfDayEvolutionCondition extends SpeciesEvolutionCondition {
|
|||||||
class BiomeEvolutionCondition extends SpeciesEvolutionCondition {
|
class BiomeEvolutionCondition extends SpeciesEvolutionCondition {
|
||||||
public biomes: Biome[];
|
public biomes: Biome[];
|
||||||
constructor(biomes: Biome[]) {
|
constructor(biomes: Biome[]) {
|
||||||
super(p => biomes.filter(b => b === globalScene.arena.biomeType).length > 0);
|
super(() => biomes.filter(b => b === globalScene.arena.biomeType).length > 0);
|
||||||
this.biomes = biomes;
|
this.biomes = biomes;
|
||||||
this.description = i18next.t("pokemonEvolutions:biome");
|
this.description = i18next.t("pokemonEvolutions:biome");
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,8 @@ import type { Nature } from "#enums/nature";
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Data that can customize a Pokemon in non-standard ways from its Species
|
* Data that can customize a Pokemon in non-standard ways from its Species
|
||||||
* Currently only used by Mystery Encounters and Mints.
|
* Used by Mystery Encounters and Mints
|
||||||
|
* Also used as a counter how often a Pokemon got hit until new arena encounter
|
||||||
*/
|
*/
|
||||||
export class CustomPokemonData {
|
export class CustomPokemonData {
|
||||||
public spriteScale: number;
|
public spriteScale: number;
|
||||||
@ -13,6 +14,8 @@ export class CustomPokemonData {
|
|||||||
public passive: Abilities | -1;
|
public passive: Abilities | -1;
|
||||||
public nature: Nature | -1;
|
public nature: Nature | -1;
|
||||||
public types: Type[];
|
public types: Type[];
|
||||||
|
/** `hitsReceivedCount` aka `hitsRecCount` saves how often the pokemon got hit until a new arena encounter (used for Rage Fist) */
|
||||||
|
public hitsRecCount: number;
|
||||||
|
|
||||||
constructor(data?: CustomPokemonData | Partial<CustomPokemonData>) {
|
constructor(data?: CustomPokemonData | Partial<CustomPokemonData>) {
|
||||||
if (!isNullOrUndefined(data)) {
|
if (!isNullOrUndefined(data)) {
|
||||||
@ -24,5 +27,10 @@ export class CustomPokemonData {
|
|||||||
this.passive = this.passive ?? -1;
|
this.passive = this.passive ?? -1;
|
||||||
this.nature = this.nature ?? -1;
|
this.nature = this.nature ?? -1;
|
||||||
this.types = this.types ?? [];
|
this.types = this.types ?? [];
|
||||||
|
this.hitsRecCount = this.hitsRecCount ?? 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
resetHitReceivedCount(): void {
|
||||||
|
this.hitsRecCount = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3993,12 +3993,32 @@ export class FriendshipPowerAttr extends VariablePowerAttr {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export class HitCountPowerAttr extends VariablePowerAttr {
|
/**
|
||||||
|
* This Attribute calculates the current power of {@linkcode Moves.RAGE_FIST}.
|
||||||
|
* The counter for power calculation does not reset on every wave but on every new arena encounter
|
||||||
|
*/
|
||||||
|
export class RageFistPowerAttr extends VariablePowerAttr {
|
||||||
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
|
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
|
||||||
(args[0] as Utils.NumberHolder).value += Math.min(user.battleData.hitCount, 6) * 50;
|
const { hitCount, prevHitCount } = user.battleData;
|
||||||
|
const basePower: Utils.NumberHolder = args[0];
|
||||||
|
|
||||||
|
this.updateHitReceivedCount(user, hitCount, prevHitCount);
|
||||||
|
|
||||||
|
basePower.value = 50 + (Math.min(user.customPokemonData.hitsRecCount, 6) * 50);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Updates the number of hits the Pokemon has taken in battle
|
||||||
|
* @param user Pokemon calling Rage Fist
|
||||||
|
* @param hitCount The number of received hits this battle
|
||||||
|
* @param previousHitCount The number of received hits this battle since last time Rage Fist was used
|
||||||
|
*/
|
||||||
|
protected updateHitReceivedCount(user: Pokemon, hitCount: number, previousHitCount: number): void {
|
||||||
|
user.customPokemonData.hitsRecCount += (hitCount - previousHitCount);
|
||||||
|
user.battleData.prevHitCount = hitCount;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -10991,8 +11011,8 @@ export function initMoves() {
|
|||||||
new AttackMove(Moves.TWIN_BEAM, Type.PSYCHIC, MoveCategory.SPECIAL, 40, 100, 10, -1, 0, 9)
|
new AttackMove(Moves.TWIN_BEAM, Type.PSYCHIC, MoveCategory.SPECIAL, 40, 100, 10, -1, 0, 9)
|
||||||
.attr(MultiHitAttr, MultiHitType._2),
|
.attr(MultiHitAttr, MultiHitType._2),
|
||||||
new AttackMove(Moves.RAGE_FIST, Type.GHOST, MoveCategory.PHYSICAL, 50, 100, 10, -1, 0, 9)
|
new AttackMove(Moves.RAGE_FIST, Type.GHOST, MoveCategory.PHYSICAL, 50, 100, 10, -1, 0, 9)
|
||||||
.partial() // Counter resets every wave instead of on arena reset
|
.edgeCase() // Counter incorrectly increases on confusion self-hits
|
||||||
.attr(HitCountPowerAttr)
|
.attr(RageFistPowerAttr)
|
||||||
.punchingMove(),
|
.punchingMove(),
|
||||||
new AttackMove(Moves.ARMOR_CANNON, Type.FIRE, MoveCategory.SPECIAL, 120, 100, 5, -1, 0, 9)
|
new AttackMove(Moves.ARMOR_CANNON, Type.FIRE, MoveCategory.SPECIAL, 120, 100, 5, -1, 0, 9)
|
||||||
.attr(StatStageChangeAttr, [ Stat.DEF, Stat.SPDEF ], -1, true),
|
.attr(StatStageChangeAttr, [ Stat.DEF, Stat.SPDEF ], -1, true),
|
||||||
|
@ -5282,7 +5282,10 @@ export class PokemonSummonData {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export class PokemonBattleData {
|
export class PokemonBattleData {
|
||||||
|
/** counts the hits the pokemon received */
|
||||||
public hitCount: number = 0;
|
public hitCount: number = 0;
|
||||||
|
/** used for {@linkcode Moves.RAGE_FIST} in order to save hit Counts received before Rage Fist is applied */
|
||||||
|
public prevHitCount: number = 0;
|
||||||
public endured: boolean = false;
|
public endured: boolean = false;
|
||||||
public berriesEaten: BerryType[] = [];
|
public berriesEaten: BerryType[] = [];
|
||||||
public abilitiesApplied: Abilities[] = [];
|
public abilitiesApplied: Abilities[] = [];
|
||||||
|
@ -1,19 +1,20 @@
|
|||||||
|
/* eslint-disable @typescript-eslint/consistent-type-imports */
|
||||||
import { type PokeballCounts } from "#app/battle-scene";
|
import { type PokeballCounts } from "#app/battle-scene";
|
||||||
import type { Gender } from "#app/data/gender";
|
import { Gender } from "#app/data/gender";
|
||||||
import type { Variant } from "#app/data/variant";
|
import { Variant } from "#app/data/variant";
|
||||||
import { type ModifierOverride } from "#app/modifier/modifier-type";
|
import { type ModifierOverride } from "#app/modifier/modifier-type";
|
||||||
import type { Unlockables } from "#app/system/unlockables";
|
import { Unlockables } from "#app/system/unlockables";
|
||||||
import { Abilities } from "#enums/abilities";
|
import { Abilities } from "#enums/abilities";
|
||||||
import { Biome } from "#enums/biome";
|
import { Biome } from "#enums/biome";
|
||||||
import type { EggTier } from "#enums/egg-type";
|
import { EggTier } from "#enums/egg-type";
|
||||||
import type { Moves } from "#enums/moves";
|
import { Moves } from "#enums/moves";
|
||||||
import type { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
|
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
|
||||||
import type { MysteryEncounterType } from "#enums/mystery-encounter-type";
|
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
|
||||||
import { PokeballType } from "#enums/pokeball";
|
import { PokeballType } from "#enums/pokeball";
|
||||||
import type { Species } from "#enums/species";
|
import { Species } from "#enums/species";
|
||||||
import { StatusEffect } from "#enums/status-effect";
|
import { StatusEffect } from "#enums/status-effect";
|
||||||
import type { TimeOfDay } from "#enums/time-of-day";
|
import { TimeOfDay } from "#enums/time-of-day";
|
||||||
import type { VariantTier } from "#enums/variant-tier";
|
import { VariantTier } from "#enums/variant-tier";
|
||||||
import { WeatherType } from "#enums/weather-type";
|
import { WeatherType } from "#enums/weather-type";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -104,6 +104,12 @@ export class EncounterPhase extends BattlePhase {
|
|||||||
}
|
}
|
||||||
if (!this.loaded) {
|
if (!this.loaded) {
|
||||||
if (battle.battleType === BattleType.TRAINER) {
|
if (battle.battleType === BattleType.TRAINER) {
|
||||||
|
//resets hitRecCount during Trainer ecnounter
|
||||||
|
for (const pokemon of globalScene.getPlayerParty()) {
|
||||||
|
if (pokemon) {
|
||||||
|
pokemon.customPokemonData.resetHitReceivedCount();
|
||||||
|
}
|
||||||
|
}
|
||||||
battle.enemyParty[e] = battle.trainer?.genPartyMember(e)!; // TODO:: is the bang correct here?
|
battle.enemyParty[e] = battle.trainer?.genPartyMember(e)!; // TODO:: is the bang correct here?
|
||||||
} else {
|
} else {
|
||||||
let enemySpecies = globalScene.randomSpecies(battle.waveIndex, level, true);
|
let enemySpecies = globalScene.randomSpecies(battle.waveIndex, level, true);
|
||||||
|
@ -14,6 +14,7 @@ export class NewBiomeEncounterPhase extends NextEncounterPhase {
|
|||||||
for (const pokemon of globalScene.getPlayerParty()) {
|
for (const pokemon of globalScene.getPlayerParty()) {
|
||||||
if (pokemon) {
|
if (pokemon) {
|
||||||
pokemon.resetBattleData();
|
pokemon.resetBattleData();
|
||||||
|
pokemon.customPokemonData.resetHitReceivedCount();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -292,7 +292,6 @@ export function getAchievementDescription(localizationKey: string): string {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
export const achvs = {
|
export const achvs = {
|
||||||
_10K_MONEY: new MoneyAchv("10K_MONEY", "", 10000, "nugget", 10),
|
_10K_MONEY: new MoneyAchv("10K_MONEY", "", 10000, "nugget", 10),
|
||||||
_100K_MONEY: new MoneyAchv("100K_MONEY", "", 100000, "big_nugget", 25).setSecret(true),
|
_100K_MONEY: new MoneyAchv("100K_MONEY", "", 100000, "big_nugget", 25).setSecret(true),
|
||||||
@ -365,7 +364,7 @@ export const achvs = {
|
|||||||
FRESH_START: new ChallengeAchv("FRESH_START", "", "FRESH_START.description", "reviver_seed", 100, (c) => c instanceof FreshStartChallenge && c.value > 0 && !globalScene.gameMode.challenges.some(c => [ Challenges.INVERSE_BATTLE, Challenges.FLIP_STAT ].includes(c.id) && c.value > 0)),
|
FRESH_START: new ChallengeAchv("FRESH_START", "", "FRESH_START.description", "reviver_seed", 100, (c) => c instanceof FreshStartChallenge && c.value > 0 && !globalScene.gameMode.challenges.some(c => [ Challenges.INVERSE_BATTLE, Challenges.FLIP_STAT ].includes(c.id) && c.value > 0)),
|
||||||
INVERSE_BATTLE: new ChallengeAchv("INVERSE_BATTLE", "", "INVERSE_BATTLE.description", "inverse", 100, (c) => c instanceof InverseBattleChallenge && c.value > 0),
|
INVERSE_BATTLE: new ChallengeAchv("INVERSE_BATTLE", "", "INVERSE_BATTLE.description", "inverse", 100, (c) => c instanceof InverseBattleChallenge && c.value > 0),
|
||||||
FLIP_STATS: new ChallengeAchv("FLIP_STATS", "", "FLIP_STATS.description", "dubious_disc", 100, (c) => c instanceof FlipStatChallenge && c.value > 0),
|
FLIP_STATS: new ChallengeAchv("FLIP_STATS", "", "FLIP_STATS.description", "dubious_disc", 100, (c) => c instanceof FlipStatChallenge && c.value > 0),
|
||||||
FLIP_INVERSE: new ChallengeAchv("FLIP_INVERSE", "", "FLIP_INVERSE.description", "cracked_pot", 100, (c) => c instanceof FlipStatChallenge && c.value > 0 && globalScene.gameMode.challenges.every(c => [ Challenges.INVERSE_BATTLE, Challenges.FLIP_STAT ].includes(c.id) && c.value > 0)).setSecret(),
|
FLIP_INVERSE: new ChallengeAchv("FLIP_INVERSE", "", "FLIP_INVERSE.description", "cracked_pot", 100, (c) => c instanceof FlipStatChallenge && c.value > 0 && globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)).setSecret(),
|
||||||
BREEDERS_IN_SPACE: new Achv("BREEDERS_IN_SPACE", "", "BREEDERS_IN_SPACE.description", "moon_stone", 50).setSecret(),
|
BREEDERS_IN_SPACE: new Achv("BREEDERS_IN_SPACE", "", "BREEDERS_IN_SPACE.description", "moon_stone", 50).setSecret(),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
143
src/test/moves/rage_fist.test.ts
Normal file
@ -0,0 +1,143 @@
|
|||||||
|
import { BattlerIndex } from "#app/battle";
|
||||||
|
import { Abilities } from "#enums/abilities";
|
||||||
|
import { Moves } from "#enums/moves";
|
||||||
|
import { Species } from "#enums/species";
|
||||||
|
import { allMoves } from "#app/data/move";
|
||||||
|
import GameManager from "#test/utils/gameManager";
|
||||||
|
import Phaser from "phaser";
|
||||||
|
import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
|
||||||
|
|
||||||
|
describe("Moves - Rage Fist", () => {
|
||||||
|
let phaserGame: Phaser.Game;
|
||||||
|
let game: GameManager;
|
||||||
|
const move = allMoves[Moves.RAGE_FIST];
|
||||||
|
|
||||||
|
beforeAll(() => {
|
||||||
|
phaserGame = new Phaser.Game({
|
||||||
|
type: Phaser.HEADLESS,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(() => {
|
||||||
|
game.phaseInterceptor.restoreOg();
|
||||||
|
});
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
game = new GameManager(phaserGame);
|
||||||
|
game.override
|
||||||
|
.battleType("single")
|
||||||
|
.moveset([ Moves.RAGE_FIST, Moves.SPLASH, Moves.SUBSTITUTE ])
|
||||||
|
.startingLevel(100)
|
||||||
|
.enemyLevel(1)
|
||||||
|
.enemyAbility(Abilities.BALL_FETCH)
|
||||||
|
.enemyMoveset(Moves.DOUBLE_KICK);
|
||||||
|
|
||||||
|
vi.spyOn(move, "calculateBattlePower");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should have 100 more power if hit twice before calling Rage Fist", async () => {
|
||||||
|
game.override
|
||||||
|
.enemySpecies(Species.MAGIKARP);
|
||||||
|
|
||||||
|
await game.classicMode.startBattle([ Species.MAGIKARP ]);
|
||||||
|
|
||||||
|
game.move.select(Moves.RAGE_FIST);
|
||||||
|
await game.setTurnOrder([ BattlerIndex.ENEMY, BattlerIndex.PLAYER ]);
|
||||||
|
await game.phaseInterceptor.to("TurnEndPhase");
|
||||||
|
|
||||||
|
expect(move.calculateBattlePower).toHaveLastReturnedWith(150);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should maintain its power during next battle if it is within the same arena encounter", async () => {
|
||||||
|
game.override
|
||||||
|
.enemySpecies(Species.MAGIKARP)
|
||||||
|
.startingWave(1);
|
||||||
|
|
||||||
|
await game.classicMode.startBattle([ Species.MAGIKARP ]);
|
||||||
|
|
||||||
|
game.move.select(Moves.RAGE_FIST);
|
||||||
|
await game.setTurnOrder([ BattlerIndex.ENEMY, BattlerIndex.PLAYER ]);
|
||||||
|
await game.toNextWave();
|
||||||
|
|
||||||
|
game.move.select(Moves.RAGE_FIST);
|
||||||
|
await game.setTurnOrder([ BattlerIndex.ENEMY, BattlerIndex.PLAYER ]);
|
||||||
|
await game.phaseInterceptor.to("BerryPhase", false);
|
||||||
|
|
||||||
|
expect(move.calculateBattlePower).toHaveLastReturnedWith(250);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should reset the hitRecCounter if we enter new trainer battle", async () => {
|
||||||
|
game.override
|
||||||
|
.enemySpecies(Species.MAGIKARP)
|
||||||
|
.startingWave(4);
|
||||||
|
|
||||||
|
await game.classicMode.startBattle([ Species.MAGIKARP ]);
|
||||||
|
|
||||||
|
game.move.select(Moves.RAGE_FIST);
|
||||||
|
await game.setTurnOrder([ BattlerIndex.ENEMY, BattlerIndex.PLAYER ]);
|
||||||
|
await game.toNextWave();
|
||||||
|
|
||||||
|
game.move.select(Moves.RAGE_FIST);
|
||||||
|
await game.setTurnOrder([ BattlerIndex.ENEMY, BattlerIndex.PLAYER ]);
|
||||||
|
await game.phaseInterceptor.to("BerryPhase", false);
|
||||||
|
|
||||||
|
expect(move.calculateBattlePower).toHaveLastReturnedWith(150);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should not increase the hitCounter if Substitute is hit", async () => {
|
||||||
|
game.override
|
||||||
|
.enemySpecies(Species.MAGIKARP)
|
||||||
|
.startingWave(4);
|
||||||
|
|
||||||
|
await game.classicMode.startBattle([ Species.MAGIKARP ]);
|
||||||
|
|
||||||
|
game.move.select(Moves.SUBSTITUTE);
|
||||||
|
await game.setTurnOrder([ BattlerIndex.PLAYER, BattlerIndex.ENEMY ]);
|
||||||
|
await game.phaseInterceptor.to("MoveEffectPhase");
|
||||||
|
|
||||||
|
expect(game.scene.getPlayerPokemon()?.customPokemonData.hitsRecCount).toBe(0);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should reset the hitRecCounter if we enter new biome", async () => {
|
||||||
|
game.override
|
||||||
|
.enemySpecies(Species.MAGIKARP)
|
||||||
|
.startingWave(10);
|
||||||
|
|
||||||
|
await game.classicMode.startBattle([ Species.MAGIKARP ]);
|
||||||
|
|
||||||
|
game.move.select(Moves.RAGE_FIST);
|
||||||
|
await game.setTurnOrder([ BattlerIndex.ENEMY, BattlerIndex.PLAYER ]);
|
||||||
|
await game.toNextTurn();
|
||||||
|
|
||||||
|
game.move.select(Moves.RAGE_FIST);
|
||||||
|
await game.setTurnOrder([ BattlerIndex.ENEMY, BattlerIndex.PLAYER ]);
|
||||||
|
await game.phaseInterceptor.to("BerryPhase", false);
|
||||||
|
|
||||||
|
expect(move.calculateBattlePower).toHaveLastReturnedWith(150);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should not reset the hitRecCounter if switched out", async () => {
|
||||||
|
game.override
|
||||||
|
.enemySpecies(Species.MAGIKARP)
|
||||||
|
.startingWave(1)
|
||||||
|
.enemyMoveset(Moves.TACKLE);
|
||||||
|
|
||||||
|
await game.classicMode.startBattle([ Species.CHARIZARD, Species.BLASTOISE ]);
|
||||||
|
|
||||||
|
game.move.select(Moves.SPLASH);
|
||||||
|
await game.setTurnOrder([ BattlerIndex.ENEMY, BattlerIndex.PLAYER ]);
|
||||||
|
await game.toNextTurn();
|
||||||
|
|
||||||
|
game.doSwitchPokemon(1);
|
||||||
|
await game.toNextTurn();
|
||||||
|
|
||||||
|
game.doSwitchPokemon(1);
|
||||||
|
await game.toNextTurn();
|
||||||
|
|
||||||
|
game.move.select(Moves.RAGE_FIST);
|
||||||
|
await game.phaseInterceptor.to("MoveEndPhase");
|
||||||
|
|
||||||
|
expect(game.scene.getPlayerParty()[0].species.speciesId).toBe(Species.CHARIZARD);
|
||||||
|
expect(move.calculateBattlePower).toHaveLastReturnedWith(150);
|
||||||
|
});
|
||||||
|
});
|