Merge branch 'main' into nuzlocke-mode
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 49 KiB |
After Width: | Height: | Size: 303 B |
After Width: | Height: | Size: 303 B |
After Width: | Height: | Size: 303 B |
After Width: | Height: | Size: 303 B |
After Width: | Height: | Size: 526 B |
Before Width: | Height: | Size: 491 B After Width: | Height: | Size: 557 B |
Before Width: | Height: | Size: 491 B After Width: | Height: | Size: 561 B |
Before Width: | Height: | Size: 651 B After Width: | Height: | Size: 649 B |
Before Width: | Height: | Size: 646 B After Width: | Height: | Size: 645 B |
Before Width: | Height: | Size: 771 B After Width: | Height: | Size: 721 B |
Before Width: | Height: | Size: 728 B After Width: | Height: | Size: 704 B |
After Width: | Height: | Size: 476 B |
After Width: | Height: | Size: 488 B |
After Width: | Height: | Size: 481 B |
After Width: | Height: | Size: 3.3 KiB |
After Width: | Height: | Size: 3.3 KiB |
After Width: | Height: | Size: 3.3 KiB |
After Width: | Height: | Size: 543 B |
After Width: | Height: | Size: 524 B |
After Width: | Height: | Size: 597 B |
After Width: | Height: | Size: 595 B |
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 3.2 KiB |
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 3.2 KiB |
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.3 KiB |
After Width: | Height: | Size: 324 B |
After Width: | Height: | Size: 828 B |
Before Width: | Height: | Size: 717 B After Width: | Height: | Size: 747 B |
Before Width: | Height: | Size: 711 B After Width: | Height: | Size: 3.3 KiB |
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 451 B |
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 3.3 KiB |
After Width: | Height: | Size: 3.3 KiB |
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 571 B |
After Width: | Height: | Size: 644 B |
After Width: | Height: | Size: 577 B |
After Width: | Height: | Size: 565 B |
After Width: | Height: | Size: 609 B |
After Width: | Height: | Size: 625 B |
After Width: | Height: | Size: 393 B |
After Width: | Height: | Size: 390 B |
After Width: | Height: | Size: 922 B |
After Width: | Height: | Size: 926 B |
After Width: | Height: | Size: 391 B |
After Width: | Height: | Size: 396 B |
Before Width: | Height: | Size: 392 B After Width: | Height: | Size: 386 B |
After Width: | Height: | Size: 491 B |
After Width: | Height: | Size: 486 B |
Before Width: | Height: | Size: 485 B After Width: | Height: | Size: 485 B |
After Width: | Height: | Size: 502 B |
After Width: | Height: | Size: 495 B |
After Width: | Height: | Size: 518 B |
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"0": {
|
"1": {
|
||||||
"424284": "6b1524",
|
"424284": "6b1524",
|
||||||
"7384ad": "a53038",
|
"7384ad": "a53038",
|
||||||
"d6d6ff": "f28566",
|
"d6d6ff": "f28566",
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"29": [
|
"29": [
|
||||||
1,
|
|
||||||
0,
|
0,
|
||||||
|
1,
|
||||||
1
|
1
|
||||||
],
|
],
|
||||||
"30": [
|
"30": [
|
||||||
|
@ -2991,6 +2991,16 @@
|
||||||
1,
|
1,
|
||||||
1
|
1
|
||||||
],
|
],
|
||||||
|
"306-mega": [
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"308-mega": [
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
"310-mega": [
|
"310-mega": [
|
||||||
0,
|
0,
|
||||||
1,
|
1,
|
||||||
|
@ -3116,6 +3126,11 @@
|
||||||
1,
|
1,
|
||||||
1
|
1
|
||||||
],
|
],
|
||||||
|
"747": [
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
"748": [
|
"748": [
|
||||||
0,
|
0,
|
||||||
1,
|
1,
|
||||||
|
@ -3196,6 +3211,16 @@
|
||||||
1,
|
1,
|
||||||
1
|
1
|
||||||
],
|
],
|
||||||
|
"850": [
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"851": [
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
"856": [
|
"856": [
|
||||||
0,
|
0,
|
||||||
1,
|
1,
|
||||||
|
@ -3453,6 +3478,16 @@
|
||||||
1,
|
1,
|
||||||
1
|
1
|
||||||
],
|
],
|
||||||
|
"306-mega": [
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"308-mega": [
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
"310-mega": [
|
"310-mega": [
|
||||||
0,
|
0,
|
||||||
1,
|
1,
|
||||||
|
@ -3578,6 +3613,11 @@
|
||||||
1,
|
1,
|
||||||
1
|
1
|
||||||
],
|
],
|
||||||
|
"747": [
|
||||||
|
0,
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
"748": [
|
"748": [
|
||||||
0,
|
0,
|
||||||
1,
|
1,
|
||||||
|
@ -3658,6 +3698,16 @@
|
||||||
1,
|
1,
|
||||||
1
|
1
|
||||||
],
|
],
|
||||||
|
"850": [
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"851": [
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
"856": [
|
"856": [
|
||||||
0,
|
0,
|
||||||
1,
|
1,
|
||||||
|
|
|
@ -0,0 +1,47 @@
|
||||||
|
{
|
||||||
|
"0": {
|
||||||
|
"000000": "101010",
|
||||||
|
"5a5a62": "4b382a",
|
||||||
|
"ffffff": "fff2e5",
|
||||||
|
"cdcdcd": "cbc4a2",
|
||||||
|
"6a6a6a": "224228",
|
||||||
|
"52524a": "15321e",
|
||||||
|
"8b8b8b": "3e6244",
|
||||||
|
"838394": "a48d76",
|
||||||
|
"a4a4ac": "bca88c",
|
||||||
|
"6abdff": "ff78fa",
|
||||||
|
"acacac": "69ad6c",
|
||||||
|
"9c3141": "9c3141",
|
||||||
|
"de5252": "de5252"
|
||||||
|
},
|
||||||
|
"1": {
|
||||||
|
"000000": "101010",
|
||||||
|
"5a5a62": "2b265d",
|
||||||
|
"ffffff": "cdd9fa",
|
||||||
|
"cdcdcd": "91a1e3",
|
||||||
|
"6a6a6a": "6e1e26",
|
||||||
|
"52524a": "47121b",
|
||||||
|
"8b8b8b": "8b312e",
|
||||||
|
"838394": "3d3c8c",
|
||||||
|
"a4a4ac": "686dc0",
|
||||||
|
"6abdff": "ffcf47",
|
||||||
|
"acacac": "d4857c",
|
||||||
|
"9c3141": "bc2d51",
|
||||||
|
"de5252": "de5291"
|
||||||
|
},
|
||||||
|
"2": {
|
||||||
|
"000000": "101010",
|
||||||
|
"5a5a62": "722f15",
|
||||||
|
"ffffff": "ffcc7d",
|
||||||
|
"cdcdcd": "d48e3c",
|
||||||
|
"6a6a6a": "1d365e",
|
||||||
|
"52524a": "0e213a",
|
||||||
|
"8b8b8b": "385594",
|
||||||
|
"838394": "833d19",
|
||||||
|
"a4a4ac": "a45f34",
|
||||||
|
"6abdff": "2aebcf",
|
||||||
|
"acacac": "7d95bf",
|
||||||
|
"9c3141": "9c3141",
|
||||||
|
"de5252": "de5252"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,36 @@
|
||||||
|
{
|
||||||
|
"1": {
|
||||||
|
"aca4ac": "a58291",
|
||||||
|
"52414a": "432641",
|
||||||
|
"ffffff": "fff4db",
|
||||||
|
"000000": "101010",
|
||||||
|
"83414a": "59141d",
|
||||||
|
"e6738b": "a53835",
|
||||||
|
"ee9ca4": "a53835",
|
||||||
|
"b44a5a": "83272c",
|
||||||
|
"c5c5c5": "b5969a",
|
||||||
|
"a47329": "722966",
|
||||||
|
"f6de83": "ee9bd5",
|
||||||
|
"eebd5a": "ce5cb6",
|
||||||
|
"dedede": "e0cdd9",
|
||||||
|
"0a7ba2": "efa360",
|
||||||
|
"45bade": "efa360"
|
||||||
|
},
|
||||||
|
"2": {
|
||||||
|
"aca4ac": "6c7d9e",
|
||||||
|
"52414a": "1f344a",
|
||||||
|
"ffffff": "c4dff1",
|
||||||
|
"000000": "101010",
|
||||||
|
"83414a": "461f5d",
|
||||||
|
"e6738b": "7d5187",
|
||||||
|
"ee9ca4": "7d5187",
|
||||||
|
"b44a5a": "633971",
|
||||||
|
"c5c5c5": "8aacd2",
|
||||||
|
"a47329": "205a9e",
|
||||||
|
"f6de83": "5abbef",
|
||||||
|
"eebd5a": "3a8dca",
|
||||||
|
"dedede": "c4dff1",
|
||||||
|
"0a7ba2": "3dc7b6",
|
||||||
|
"45bade": "3dc7b6"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,30 @@
|
||||||
|
{
|
||||||
|
"1": {
|
||||||
|
"b67e32": "614da4",
|
||||||
|
"6f3878": "9b6459",
|
||||||
|
"f3e07c": "e3e2ff",
|
||||||
|
"b687bc": "edd5ca",
|
||||||
|
"d1ac1b": "aca5f3",
|
||||||
|
"8d5b9e": "d29784",
|
||||||
|
"070707": "101010",
|
||||||
|
"394f7e": "490a26",
|
||||||
|
"d7a8d3": "a21f90",
|
||||||
|
"6291b3": "b24b34",
|
||||||
|
"9fd5d2": "e07b53",
|
||||||
|
"ffffff": "fdfdfd"
|
||||||
|
},
|
||||||
|
"2": {
|
||||||
|
"b67e32": "9f4354",
|
||||||
|
"6f3878": "113c3a",
|
||||||
|
"f3e07c": "ffebed",
|
||||||
|
"b687bc": "2b6157",
|
||||||
|
"d1ac1b": "efa2ad",
|
||||||
|
"8d5b9e": "1c524b",
|
||||||
|
"070707": "101010",
|
||||||
|
"394f7e": "186443",
|
||||||
|
"d7a8d3": "ff3f5a",
|
||||||
|
"6291b3": "359d5d",
|
||||||
|
"9fd5d2": "5bd97f",
|
||||||
|
"ffffff": "fdfdfd"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
{
|
||||||
|
"1": {
|
||||||
|
"2f1610": "2f1610",
|
||||||
|
"804a3e": "59365d",
|
||||||
|
"bf3922": "117956",
|
||||||
|
"101010": "101010",
|
||||||
|
"ff5839": "35c36c",
|
||||||
|
"5b2f26": "36203c",
|
||||||
|
"681607": "024f2d",
|
||||||
|
"f77c42": "89fbad",
|
||||||
|
"f89e08": "67ef9c",
|
||||||
|
"ff836c": "5ff58e",
|
||||||
|
"ffd901": "c8ffcc",
|
||||||
|
"be5409": "117956",
|
||||||
|
"fbfbfb": "fbfbfb"
|
||||||
|
},
|
||||||
|
"2": {
|
||||||
|
"2f1610": "2f1610",
|
||||||
|
"804a3e": "475294",
|
||||||
|
"bf3922": "ae1165",
|
||||||
|
"101010": "101010",
|
||||||
|
"ff5839": "d73981",
|
||||||
|
"5b2f26": "36426c",
|
||||||
|
"681607": "68063c",
|
||||||
|
"f77c42": "f77c42",
|
||||||
|
"f89e08": "f89e08",
|
||||||
|
"ff836c": "ff836c",
|
||||||
|
"ffd901": "ffc143",
|
||||||
|
"be5409": "be5409",
|
||||||
|
"fbfbfb": "fbfbfb"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,36 @@
|
||||||
|
{
|
||||||
|
"1": {
|
||||||
|
"be5409": "017336",
|
||||||
|
"f89e08": "67ef9c",
|
||||||
|
"ffd901": "c8ffcc",
|
||||||
|
"bf3922": "1a8987",
|
||||||
|
"101010": "101010",
|
||||||
|
"2f1610": "24122b",
|
||||||
|
"5b2f26": "503154",
|
||||||
|
"804a3e": "714272",
|
||||||
|
"681607": "0a5660",
|
||||||
|
"ff5839": "35c3a8",
|
||||||
|
"b96f5d": "ad58ab",
|
||||||
|
"941528": "005f35",
|
||||||
|
"fbfbfb": "fbfbfb",
|
||||||
|
"42221c": "36203c",
|
||||||
|
"000000": "101010"
|
||||||
|
},
|
||||||
|
"2": {
|
||||||
|
"be5409": "890f52",
|
||||||
|
"f89e08": "f36d73",
|
||||||
|
"ffd901": "ffc143",
|
||||||
|
"bf3922": "ae1165",
|
||||||
|
"101010": "101010",
|
||||||
|
"2f1610": "121439",
|
||||||
|
"5b2f26": "36426c",
|
||||||
|
"804a3e": "475294",
|
||||||
|
"681607": "6e0442",
|
||||||
|
"ff5839": "d73981",
|
||||||
|
"b96f5d": "7866cb",
|
||||||
|
"941528": "941528",
|
||||||
|
"fbfbfb": "fbfbfb",
|
||||||
|
"42221c": "222957",
|
||||||
|
"000000": "101010"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,38 @@
|
||||||
|
{
|
||||||
|
"0": {
|
||||||
|
"393939": "132c1b",
|
||||||
|
"000000": "101010",
|
||||||
|
"838394": "a48d76",
|
||||||
|
"6a6a6a": "325537",
|
||||||
|
"202029": "131d17",
|
||||||
|
"5a5a62": "735c4a",
|
||||||
|
"ffffff": "fff2e5",
|
||||||
|
"52524a": "224228",
|
||||||
|
"cdcdcd": "cbc4a2",
|
||||||
|
"a4a4ac": "b8a88a"
|
||||||
|
},
|
||||||
|
"1": {
|
||||||
|
"393939": "47121b",
|
||||||
|
"000000": "101010",
|
||||||
|
"838394": "686dc0",
|
||||||
|
"6a6a6a": "8b312e",
|
||||||
|
"202029": "350a13",
|
||||||
|
"5a5a62": "374186",
|
||||||
|
"ffffff": "cdd9fa",
|
||||||
|
"52524a": "6e1e26",
|
||||||
|
"cdcdcd": "a5b7ed",
|
||||||
|
"a4a4ac": "91a1e3"
|
||||||
|
},
|
||||||
|
"2": {
|
||||||
|
"393939": "1d365e",
|
||||||
|
"000000": "101010",
|
||||||
|
"838394": "a45f34",
|
||||||
|
"6a6a6a": "385594",
|
||||||
|
"202029": "0e213a",
|
||||||
|
"5a5a62": "7a3a1a",
|
||||||
|
"ffffff": "f1b25e",
|
||||||
|
"52524a": "385594",
|
||||||
|
"cdcdcd": "dd9f57",
|
||||||
|
"a4a4ac": "c18239"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,34 @@
|
||||||
|
{
|
||||||
|
"1": {
|
||||||
|
"101010": "101010",
|
||||||
|
"83414a": "59141d",
|
||||||
|
"e6738b": "a53835",
|
||||||
|
"b44a5a": "83272c",
|
||||||
|
"8b838b": "5a4357",
|
||||||
|
"bdafad": "a5829d",
|
||||||
|
"52414a": "432641",
|
||||||
|
"e7e3e7": "e0cdd9",
|
||||||
|
"f9f8f7": "f9f8f7",
|
||||||
|
"a47329": "722966",
|
||||||
|
"eebd5a": "a25793",
|
||||||
|
"f6de83": "ee9bd5",
|
||||||
|
"164b5d": "a6571b",
|
||||||
|
"42a2bd": "efa360"
|
||||||
|
},
|
||||||
|
"2": {
|
||||||
|
"101010": "101010",
|
||||||
|
"83414a": "461f5d",
|
||||||
|
"e6738b": "7d5187",
|
||||||
|
"b44a5a": "633971",
|
||||||
|
"8b838b": "445a7e",
|
||||||
|
"bdafad": "7988a6",
|
||||||
|
"52414a": "1f344a",
|
||||||
|
"e7e3e7": "abb7c6",
|
||||||
|
"f9f8f7": "c4dff1",
|
||||||
|
"a47329": "285181",
|
||||||
|
"eebd5a": "4983ad",
|
||||||
|
"f6de83": "5abbef",
|
||||||
|
"164b5d": "107270",
|
||||||
|
"42a2bd": "3dc7b6"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,230 @@
|
||||||
|
{
|
||||||
|
"textures": [
|
||||||
|
{
|
||||||
|
"image": "747_2.png",
|
||||||
|
"format": "RGBA8888",
|
||||||
|
"size": {
|
||||||
|
"w": 147,
|
||||||
|
"h": 147
|
||||||
|
},
|
||||||
|
"scale": 1,
|
||||||
|
"frames": [
|
||||||
|
{
|
||||||
|
"filename": "0005.png",
|
||||||
|
"rotated": false,
|
||||||
|
"trimmed": false,
|
||||||
|
"sourceSize": {
|
||||||
|
"w": 62,
|
||||||
|
"h": 49
|
||||||
|
},
|
||||||
|
"spriteSourceSize": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"w": 62,
|
||||||
|
"h": 49
|
||||||
|
},
|
||||||
|
"frame": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"w": 62,
|
||||||
|
"h": 49
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "0007.png",
|
||||||
|
"rotated": false,
|
||||||
|
"trimmed": false,
|
||||||
|
"sourceSize": {
|
||||||
|
"w": 62,
|
||||||
|
"h": 49
|
||||||
|
},
|
||||||
|
"spriteSourceSize": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"w": 62,
|
||||||
|
"h": 49
|
||||||
|
},
|
||||||
|
"frame": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"w": 62,
|
||||||
|
"h": 49
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "0006.png",
|
||||||
|
"rotated": false,
|
||||||
|
"trimmed": false,
|
||||||
|
"sourceSize": {
|
||||||
|
"w": 62,
|
||||||
|
"h": 49
|
||||||
|
},
|
||||||
|
"spriteSourceSize": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"w": 62,
|
||||||
|
"h": 49
|
||||||
|
},
|
||||||
|
"frame": {
|
||||||
|
"x": 62,
|
||||||
|
"y": 0,
|
||||||
|
"w": 62,
|
||||||
|
"h": 49
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "0004.png",
|
||||||
|
"rotated": false,
|
||||||
|
"trimmed": true,
|
||||||
|
"sourceSize": {
|
||||||
|
"w": 62,
|
||||||
|
"h": 49
|
||||||
|
},
|
||||||
|
"spriteSourceSize": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"w": 61,
|
||||||
|
"h": 49
|
||||||
|
},
|
||||||
|
"frame": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 49,
|
||||||
|
"w": 61,
|
||||||
|
"h": 49
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "0008.png",
|
||||||
|
"rotated": false,
|
||||||
|
"trimmed": true,
|
||||||
|
"sourceSize": {
|
||||||
|
"w": 62,
|
||||||
|
"h": 49
|
||||||
|
},
|
||||||
|
"spriteSourceSize": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"w": 61,
|
||||||
|
"h": 49
|
||||||
|
},
|
||||||
|
"frame": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 49,
|
||||||
|
"w": 61,
|
||||||
|
"h": 49
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "0003.png",
|
||||||
|
"rotated": false,
|
||||||
|
"trimmed": true,
|
||||||
|
"sourceSize": {
|
||||||
|
"w": 62,
|
||||||
|
"h": 49
|
||||||
|
},
|
||||||
|
"spriteSourceSize": {
|
||||||
|
"x": 1,
|
||||||
|
"y": 0,
|
||||||
|
"w": 59,
|
||||||
|
"h": 49
|
||||||
|
},
|
||||||
|
"frame": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 98,
|
||||||
|
"w": 59,
|
||||||
|
"h": 49
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "0009.png",
|
||||||
|
"rotated": false,
|
||||||
|
"trimmed": true,
|
||||||
|
"sourceSize": {
|
||||||
|
"w": 62,
|
||||||
|
"h": 49
|
||||||
|
},
|
||||||
|
"spriteSourceSize": {
|
||||||
|
"x": 1,
|
||||||
|
"y": 0,
|
||||||
|
"w": 59,
|
||||||
|
"h": 49
|
||||||
|
},
|
||||||
|
"frame": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 98,
|
||||||
|
"w": 59,
|
||||||
|
"h": 49
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "0002.png",
|
||||||
|
"rotated": false,
|
||||||
|
"trimmed": true,
|
||||||
|
"sourceSize": {
|
||||||
|
"w": 62,
|
||||||
|
"h": 49
|
||||||
|
},
|
||||||
|
"spriteSourceSize": {
|
||||||
|
"x": 2,
|
||||||
|
"y": 0,
|
||||||
|
"w": 57,
|
||||||
|
"h": 49
|
||||||
|
},
|
||||||
|
"frame": {
|
||||||
|
"x": 59,
|
||||||
|
"y": 98,
|
||||||
|
"w": 57,
|
||||||
|
"h": 49
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "0010.png",
|
||||||
|
"rotated": false,
|
||||||
|
"trimmed": true,
|
||||||
|
"sourceSize": {
|
||||||
|
"w": 62,
|
||||||
|
"h": 49
|
||||||
|
},
|
||||||
|
"spriteSourceSize": {
|
||||||
|
"x": 2,
|
||||||
|
"y": 0,
|
||||||
|
"w": 57,
|
||||||
|
"h": 49
|
||||||
|
},
|
||||||
|
"frame": {
|
||||||
|
"x": 59,
|
||||||
|
"y": 98,
|
||||||
|
"w": 57,
|
||||||
|
"h": 49
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "0001.png",
|
||||||
|
"rotated": false,
|
||||||
|
"trimmed": true,
|
||||||
|
"sourceSize": {
|
||||||
|
"w": 62,
|
||||||
|
"h": 49
|
||||||
|
},
|
||||||
|
"spriteSourceSize": {
|
||||||
|
"x": 3,
|
||||||
|
"y": 0,
|
||||||
|
"w": 55,
|
||||||
|
"h": 49
|
||||||
|
},
|
||||||
|
"frame": {
|
||||||
|
"x": 61,
|
||||||
|
"y": 49,
|
||||||
|
"w": 55,
|
||||||
|
"h": 49
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"meta": {
|
||||||
|
"app": "https://www.codeandweb.com/texturepacker",
|
||||||
|
"version": "3.0",
|
||||||
|
"smartupdate": "$TexturePacker:SmartUpdate:4319e2c59a85fcb72ddcdb0b4089ac8b:29cb568870b0231298c87d5d39f7b933:b26f7254994561969f00f765318acf1c$"
|
||||||
|
}
|
||||||
|
}
|
After Width: | Height: | Size: 5.9 KiB |
|
@ -0,0 +1,230 @@
|
||||||
|
{
|
||||||
|
"textures": [
|
||||||
|
{
|
||||||
|
"image": "747_3.png",
|
||||||
|
"format": "RGBA8888",
|
||||||
|
"size": {
|
||||||
|
"w": 147,
|
||||||
|
"h": 147
|
||||||
|
},
|
||||||
|
"scale": 1,
|
||||||
|
"frames": [
|
||||||
|
{
|
||||||
|
"filename": "0005.png",
|
||||||
|
"rotated": false,
|
||||||
|
"trimmed": false,
|
||||||
|
"sourceSize": {
|
||||||
|
"w": 62,
|
||||||
|
"h": 49
|
||||||
|
},
|
||||||
|
"spriteSourceSize": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"w": 62,
|
||||||
|
"h": 49
|
||||||
|
},
|
||||||
|
"frame": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"w": 62,
|
||||||
|
"h": 49
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "0007.png",
|
||||||
|
"rotated": false,
|
||||||
|
"trimmed": false,
|
||||||
|
"sourceSize": {
|
||||||
|
"w": 62,
|
||||||
|
"h": 49
|
||||||
|
},
|
||||||
|
"spriteSourceSize": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"w": 62,
|
||||||
|
"h": 49
|
||||||
|
},
|
||||||
|
"frame": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"w": 62,
|
||||||
|
"h": 49
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "0006.png",
|
||||||
|
"rotated": false,
|
||||||
|
"trimmed": false,
|
||||||
|
"sourceSize": {
|
||||||
|
"w": 62,
|
||||||
|
"h": 49
|
||||||
|
},
|
||||||
|
"spriteSourceSize": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"w": 62,
|
||||||
|
"h": 49
|
||||||
|
},
|
||||||
|
"frame": {
|
||||||
|
"x": 62,
|
||||||
|
"y": 0,
|
||||||
|
"w": 62,
|
||||||
|
"h": 49
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "0004.png",
|
||||||
|
"rotated": false,
|
||||||
|
"trimmed": true,
|
||||||
|
"sourceSize": {
|
||||||
|
"w": 62,
|
||||||
|
"h": 49
|
||||||
|
},
|
||||||
|
"spriteSourceSize": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"w": 61,
|
||||||
|
"h": 49
|
||||||
|
},
|
||||||
|
"frame": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 49,
|
||||||
|
"w": 61,
|
||||||
|
"h": 49
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "0008.png",
|
||||||
|
"rotated": false,
|
||||||
|
"trimmed": true,
|
||||||
|
"sourceSize": {
|
||||||
|
"w": 62,
|
||||||
|
"h": 49
|
||||||
|
},
|
||||||
|
"spriteSourceSize": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"w": 61,
|
||||||
|
"h": 49
|
||||||
|
},
|
||||||
|
"frame": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 49,
|
||||||
|
"w": 61,
|
||||||
|
"h": 49
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "0003.png",
|
||||||
|
"rotated": false,
|
||||||
|
"trimmed": true,
|
||||||
|
"sourceSize": {
|
||||||
|
"w": 62,
|
||||||
|
"h": 49
|
||||||
|
},
|
||||||
|
"spriteSourceSize": {
|
||||||
|
"x": 1,
|
||||||
|
"y": 0,
|
||||||
|
"w": 59,
|
||||||
|
"h": 49
|
||||||
|
},
|
||||||
|
"frame": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 98,
|
||||||
|
"w": 59,
|
||||||
|
"h": 49
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "0009.png",
|
||||||
|
"rotated": false,
|
||||||
|
"trimmed": true,
|
||||||
|
"sourceSize": {
|
||||||
|
"w": 62,
|
||||||
|
"h": 49
|
||||||
|
},
|
||||||
|
"spriteSourceSize": {
|
||||||
|
"x": 1,
|
||||||
|
"y": 0,
|
||||||
|
"w": 59,
|
||||||
|
"h": 49
|
||||||
|
},
|
||||||
|
"frame": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 98,
|
||||||
|
"w": 59,
|
||||||
|
"h": 49
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "0002.png",
|
||||||
|
"rotated": false,
|
||||||
|
"trimmed": true,
|
||||||
|
"sourceSize": {
|
||||||
|
"w": 62,
|
||||||
|
"h": 49
|
||||||
|
},
|
||||||
|
"spriteSourceSize": {
|
||||||
|
"x": 2,
|
||||||
|
"y": 0,
|
||||||
|
"w": 57,
|
||||||
|
"h": 49
|
||||||
|
},
|
||||||
|
"frame": {
|
||||||
|
"x": 59,
|
||||||
|
"y": 98,
|
||||||
|
"w": 57,
|
||||||
|
"h": 49
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "0010.png",
|
||||||
|
"rotated": false,
|
||||||
|
"trimmed": true,
|
||||||
|
"sourceSize": {
|
||||||
|
"w": 62,
|
||||||
|
"h": 49
|
||||||
|
},
|
||||||
|
"spriteSourceSize": {
|
||||||
|
"x": 2,
|
||||||
|
"y": 0,
|
||||||
|
"w": 57,
|
||||||
|
"h": 49
|
||||||
|
},
|
||||||
|
"frame": {
|
||||||
|
"x": 59,
|
||||||
|
"y": 98,
|
||||||
|
"w": 57,
|
||||||
|
"h": 49
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "0001.png",
|
||||||
|
"rotated": false,
|
||||||
|
"trimmed": true,
|
||||||
|
"sourceSize": {
|
||||||
|
"w": 62,
|
||||||
|
"h": 49
|
||||||
|
},
|
||||||
|
"spriteSourceSize": {
|
||||||
|
"x": 3,
|
||||||
|
"y": 0,
|
||||||
|
"w": 55,
|
||||||
|
"h": 49
|
||||||
|
},
|
||||||
|
"frame": {
|
||||||
|
"x": 61,
|
||||||
|
"y": 49,
|
||||||
|
"w": 55,
|
||||||
|
"h": 49
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"meta": {
|
||||||
|
"app": "https://www.codeandweb.com/texturepacker",
|
||||||
|
"version": "3.0",
|
||||||
|
"smartupdate": "$TexturePacker:SmartUpdate:4319e2c59a85fcb72ddcdb0b4089ac8b:29cb568870b0231298c87d5d39f7b933:b26f7254994561969f00f765318acf1c$"
|
||||||
|
}
|
||||||
|
}
|
After Width: | Height: | Size: 5.9 KiB |
|
@ -1,11 +1,11 @@
|
||||||
{
|
{
|
||||||
"1": {
|
"1": {
|
||||||
"943732": "490a3c",
|
"943732": "5c075b",
|
||||||
"101010": "101010",
|
"101010": "101010",
|
||||||
"f28c4f": "a21f90",
|
"f28c4f": "c639bd",
|
||||||
"e25025": "91138c",
|
"e25025": "a21f90",
|
||||||
"93d1d7": "df7b52",
|
"93d1d7": "df7b52",
|
||||||
"3a3f6d": "462952",
|
"3a3f6d": "171539",
|
||||||
"6f97c4": "be583d",
|
"6f97c4": "be583d",
|
||||||
"711a6a": "81463e",
|
"711a6a": "81463e",
|
||||||
"455b85": "892e20",
|
"455b85": "892e20",
|
||||||
|
@ -15,12 +15,12 @@
|
||||||
"171539": "171539"
|
"171539": "171539"
|
||||||
},
|
},
|
||||||
"2": {
|
"2": {
|
||||||
"943732": "c30e49",
|
"943732": "ac063c",
|
||||||
"101010": "101010",
|
"101010": "101010",
|
||||||
"f28c4f": "ff3f5a",
|
"f28c4f": "ff3f5a",
|
||||||
"e25025": "e12350",
|
"e25025": "e12350",
|
||||||
"93d1d7": "5bd97f",
|
"93d1d7": "5bd97f",
|
||||||
"3a3f6d": "862916",
|
"3a3f6d": "490c06",
|
||||||
"6f97c4": "359d5d",
|
"6f97c4": "359d5d",
|
||||||
"711a6a": "082b29",
|
"711a6a": "082b29",
|
||||||
"455b85": "186443",
|
"455b85": "186443",
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
{
|
||||||
|
"1": {
|
||||||
|
"bf3922": "35c3a8",
|
||||||
|
"8d3123": "178573",
|
||||||
|
"5b2f26": "59365d",
|
||||||
|
"ff5839": "79f1d2",
|
||||||
|
"804a3e": "8f4b94",
|
||||||
|
"681607": "065b58",
|
||||||
|
"42221c": "36203c",
|
||||||
|
"2f1610": "24122b",
|
||||||
|
"101010": "101010",
|
||||||
|
"be5409": "25a96a",
|
||||||
|
"f89e08": "a3ffb9"
|
||||||
|
},
|
||||||
|
"2": {
|
||||||
|
"bf3922": "d73981",
|
||||||
|
"8d3123": "902962",
|
||||||
|
"5b2f26": "36426c",
|
||||||
|
"ff5839": "f360a3",
|
||||||
|
"804a3e": "7866cb",
|
||||||
|
"681607": "4a1036",
|
||||||
|
"42221c": "222957",
|
||||||
|
"2f1610": "121439",
|
||||||
|
"101010": "101010",
|
||||||
|
"be5409": "be5409",
|
||||||
|
"f89e08": "f89e08"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,34 @@
|
||||||
|
{
|
||||||
|
"1": {
|
||||||
|
"be5409": "017336",
|
||||||
|
"f89e08": "67ef9c",
|
||||||
|
"ffd901": "c8ffcc",
|
||||||
|
"5b2f26": "59365d",
|
||||||
|
"b96f5d": "d695d5",
|
||||||
|
"804a3e": "924a91",
|
||||||
|
"8d3123": "056a3b",
|
||||||
|
"bf3922": "0c8c48",
|
||||||
|
"ff5839": "35c36c",
|
||||||
|
"42221c": "36203c",
|
||||||
|
"2f1610": "24122b",
|
||||||
|
"681607": "024f2d",
|
||||||
|
"101010": "101010",
|
||||||
|
"941528": "005f35"
|
||||||
|
},
|
||||||
|
"2": {
|
||||||
|
"be5409": "be5409",
|
||||||
|
"f89e08": "f36d73",
|
||||||
|
"ffd901": "ffc143",
|
||||||
|
"5b2f26": "36426c",
|
||||||
|
"b96f5d": "7866cb",
|
||||||
|
"804a3e": "475294",
|
||||||
|
"8d3123": "ae1165",
|
||||||
|
"bf3922": "d73981",
|
||||||
|
"ff5839": "ff6970",
|
||||||
|
"42221c": "222957",
|
||||||
|
"2f1610": "121439",
|
||||||
|
"681607": "6e0442",
|
||||||
|
"101010": "101010",
|
||||||
|
"941528": "941528"
|
||||||
|
}
|
||||||
|
}
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 415 B |
After Width: | Height: | Size: 211 B |
After Width: | Height: | Size: 415 B |
After Width: | Height: | Size: 211 B |
|
@ -3,7 +3,7 @@
|
||||||
"short_name": "PokéRogue",
|
"short_name": "PokéRogue",
|
||||||
"description": "A Pokémon fangame heavily inspired by the roguelite genre. Battle endlessly while gathering stacking items, exploring many different biomes, and reaching Pokémon stats you never thought possible.",
|
"description": "A Pokémon fangame heavily inspired by the roguelite genre. Battle endlessly while gathering stacking items, exploring many different biomes, and reaching Pokémon stats you never thought possible.",
|
||||||
"scope": "/",
|
"scope": "/",
|
||||||
"start_url": "https://pokerogue.net",
|
"start_url": "/",
|
||||||
"display": "fullscreen",
|
"display": "fullscreen",
|
||||||
"background_color": "#8c8c8c",
|
"background_color": "#8c8c8c",
|
||||||
"theme_color": "#8c8c8c",
|
"theme_color": "#8c8c8c",
|
||||||
|
|
|
@ -2104,6 +2104,13 @@ export class StatChangeMultiplierAbAttr extends AbAttr {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export class StatChangeCopyAbAttr extends AbAttr {
|
||||||
|
apply(pokemon: Pokemon, passive: boolean, cancelled: Utils.BooleanHolder, args: any[]): boolean | Promise<boolean> {
|
||||||
|
pokemon.scene.unshiftPhase(new StatChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, (args[0] as BattleStat[]), (args[1] as integer), true, false, false));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export class BypassBurnDamageReductionAbAttr extends AbAttr {
|
export class BypassBurnDamageReductionAbAttr extends AbAttr {
|
||||||
constructor() {
|
constructor() {
|
||||||
super(false);
|
super(false);
|
||||||
|
@ -3217,8 +3224,7 @@ export function initAbilities() {
|
||||||
.attr(UncopiableAbilityAbAttr)
|
.attr(UncopiableAbilityAbAttr)
|
||||||
.attr(UnswappableAbilityAbAttr)
|
.attr(UnswappableAbilityAbAttr)
|
||||||
.attr(UnsuppressableAbilityAbAttr)
|
.attr(UnsuppressableAbilityAbAttr)
|
||||||
.attr(NoFusionAbilityAbAttr)
|
.attr(NoFusionAbilityAbAttr),
|
||||||
.partial(),
|
|
||||||
new Ability(Abilities.POWER_CONSTRUCT, 7) // TODO: 10% Power Construct Zygarde isn't accounted for yet. If changed, update Zygarde's getSpeciesFormIndex entry accordingly
|
new Ability(Abilities.POWER_CONSTRUCT, 7) // TODO: 10% Power Construct Zygarde isn't accounted for yet. If changed, update Zygarde's getSpeciesFormIndex entry accordingly
|
||||||
.attr(PostBattleInitFormChangeAbAttr, p => p.getHpRatio() <= 0.5 ? 4 : 2)
|
.attr(PostBattleInitFormChangeAbAttr, p => p.getHpRatio() <= 0.5 ? 4 : 2)
|
||||||
.attr(PostSummonFormChangeAbAttr, p => p.getHpRatio() <= 0.5 ? 4 : 2)
|
.attr(PostSummonFormChangeAbAttr, p => p.getHpRatio() <= 0.5 ? 4 : 2)
|
||||||
|
@ -3484,7 +3490,7 @@ export function initAbilities() {
|
||||||
.attr(PostBiomeChangeTerrainChangeAbAttr, TerrainType.ELECTRIC)
|
.attr(PostBiomeChangeTerrainChangeAbAttr, TerrainType.ELECTRIC)
|
||||||
.conditionalAttr(getTerrainCondition(TerrainType.ELECTRIC), BattleStatMultiplierAbAttr, BattleStat.SPATK, 4 / 3),
|
.conditionalAttr(getTerrainCondition(TerrainType.ELECTRIC), BattleStatMultiplierAbAttr, BattleStat.SPATK, 4 / 3),
|
||||||
new Ability(Abilities.OPPORTUNIST, 9)
|
new Ability(Abilities.OPPORTUNIST, 9)
|
||||||
.unimplemented(),
|
.attr(StatChangeCopyAbAttr),
|
||||||
new Ability(Abilities.CUD_CHEW, 9)
|
new Ability(Abilities.CUD_CHEW, 9)
|
||||||
.unimplemented(),
|
.unimplemented(),
|
||||||
new Ability(Abilities.SHARPNESS, 9)
|
new Ability(Abilities.SHARPNESS, 9)
|
||||||
|
|
|
@ -115,7 +115,7 @@ export const speciesEggMoves = {
|
||||||
[Species.PHANPY]: [ Moves.SHORE_UP, Moves.HEAD_SMASH, Moves.MOUNTAIN_GALE, Moves.VOLT_TACKLE ],
|
[Species.PHANPY]: [ Moves.SHORE_UP, Moves.HEAD_SMASH, Moves.MOUNTAIN_GALE, Moves.VOLT_TACKLE ],
|
||||||
[Species.STANTLER]: [ Moves.HORN_LEECH, Moves.HIGH_JUMP_KICK, Moves.BULK_UP, Moves.HEAD_CHARGE ],
|
[Species.STANTLER]: [ Moves.HORN_LEECH, Moves.HIGH_JUMP_KICK, Moves.BULK_UP, Moves.HEAD_CHARGE ],
|
||||||
[Species.SMEARGLE]: [ Moves.BATON_PASS, Moves.BURNING_BULWARK, Moves.SALT_CURE, Moves.SPORE ],
|
[Species.SMEARGLE]: [ Moves.BATON_PASS, Moves.BURNING_BULWARK, Moves.SALT_CURE, Moves.SPORE ],
|
||||||
[Species.TYROGUE]: [ Moves.MACH_PUNCH, Moves.WICKED_TORQUE, Moves.METEOR_MASH, Moves.COLLISION_COURSE ],
|
[Species.TYROGUE]: [ Moves.VICTORY_DANCE, Moves.WICKED_TORQUE, Moves.METEOR_MASH, Moves.COLLISION_COURSE ],
|
||||||
[Species.SMOOCHUM]: [ Moves.EXPANDING_FORCE, Moves.AURA_SPHERE, Moves.FREEZY_FROST, Moves.TAKE_HEART ],
|
[Species.SMOOCHUM]: [ Moves.EXPANDING_FORCE, Moves.AURA_SPHERE, Moves.FREEZY_FROST, Moves.TAKE_HEART ],
|
||||||
[Species.ELEKID]: [ Moves.DRAIN_PUNCH, Moves.TIDY_UP, Moves.ICE_HAMMER, Moves.PLASMA_FISTS ],
|
[Species.ELEKID]: [ Moves.DRAIN_PUNCH, Moves.TIDY_UP, Moves.ICE_HAMMER, Moves.PLASMA_FISTS ],
|
||||||
[Species.MAGBY]: [ Moves.STORED_POWER, Moves.EARTH_POWER, Moves.ARMOR_CANNON, Moves.FLEUR_CANNON ],
|
[Species.MAGBY]: [ Moves.STORED_POWER, Moves.EARTH_POWER, Moves.ARMOR_CANNON, Moves.FLEUR_CANNON ],
|
||||||
|
|
|
@ -756,7 +756,7 @@ export enum MultiHitType {
|
||||||
_2_TO_5,
|
_2_TO_5,
|
||||||
_3,
|
_3,
|
||||||
_3_INCR,
|
_3_INCR,
|
||||||
_1_TO_10
|
_1_TO_10,
|
||||||
}
|
}
|
||||||
|
|
||||||
export class HealAttr extends MoveEffectAttr {
|
export class HealAttr extends MoveEffectAttr {
|
||||||
|
@ -912,7 +912,9 @@ export class MultiHitAttr extends MoveAttr {
|
||||||
|
|
||||||
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
|
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
|
||||||
let hitTimes: integer;
|
let hitTimes: integer;
|
||||||
switch (this.multiHitType) {
|
const hitType = new Utils.IntegerHolder(this.multiHitType)
|
||||||
|
applyMoveAttrs(ChangeMultiHitTypeAttr, user, target, move, hitType)
|
||||||
|
switch (hitType.value) {
|
||||||
case MultiHitType._2_TO_5:
|
case MultiHitType._2_TO_5:
|
||||||
{
|
{
|
||||||
const rand = user.randSeedInt(16);
|
const rand = user.randSeedInt(16);
|
||||||
|
@ -975,6 +977,23 @@ export class MultiHitAttr extends MoveAttr {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export class ChangeMultiHitTypeAttr extends MoveAttr {
|
||||||
|
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
|
||||||
|
//const hitType = args[0] as Utils.NumberHolder;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export class WaterShurikenMultiHitTypeAttr extends ChangeMultiHitTypeAttr {
|
||||||
|
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
|
||||||
|
if (user.species.speciesId == Species.GRENINJA && user.hasAbility(Abilities.BATTLE_BOND) && user.formIndex == 2) {
|
||||||
|
(args[0] as Utils.IntegerHolder).value = MultiHitType._3
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export class StatusEffectAttr extends MoveEffectAttr {
|
export class StatusEffectAttr extends MoveEffectAttr {
|
||||||
public effect: StatusEffect;
|
public effect: StatusEffect;
|
||||||
public cureTurn: integer;
|
public cureTurn: integer;
|
||||||
|
@ -2049,6 +2068,16 @@ export class KnockOffPowerAttr extends VariablePowerAttr {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export class WaterShurikenPowerAttr extends VariablePowerAttr {
|
||||||
|
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
|
||||||
|
if (user.species.speciesId == Species.GRENINJA && user.hasAbility(Abilities.BATTLE_BOND) && user.formIndex == 2) {
|
||||||
|
(args[0] as Utils.IntegerHolder).value = 20
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export class VariableAtkAttr extends MoveAttr {
|
export class VariableAtkAttr extends MoveAttr {
|
||||||
constructor() {
|
constructor() {
|
||||||
super();
|
super();
|
||||||
|
@ -2216,6 +2245,36 @@ export class VariableMoveTypeAttr extends MoveAttr {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export class TechnoBlastTypeAttr extends VariableMoveTypeAttr {
|
||||||
|
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
|
||||||
|
if ([user.species.speciesId, user.fusionSpecies?.speciesId].includes(Species.GENESECT)) {
|
||||||
|
const form = user.species.speciesId === Species.GENESECT ? user.formIndex : user.fusionSpecies.formIndex;
|
||||||
|
const type = (args[0] as Utils.IntegerHolder);
|
||||||
|
|
||||||
|
switch (form) {
|
||||||
|
case 1: // Shock Drive
|
||||||
|
type.value = Type.ELECTRIC;
|
||||||
|
break;
|
||||||
|
case 2: // Burn Drive
|
||||||
|
type.value = Type.FIRE;
|
||||||
|
break;
|
||||||
|
case 3: // Chill Drive
|
||||||
|
type.value = Type.ICE;
|
||||||
|
break;
|
||||||
|
case 4: // Douse Drive
|
||||||
|
type.value = Type.WATER;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
type.value = Type.NORMAL;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export class AuraWheelTypeAttr extends VariableMoveTypeAttr {
|
export class AuraWheelTypeAttr extends VariableMoveTypeAttr {
|
||||||
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
|
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
|
||||||
if ([user.species.speciesId, user.fusionSpecies?.speciesId].includes(Species.MORPEKO)) {
|
if ([user.species.speciesId, user.fusionSpecies?.speciesId].includes(Species.MORPEKO)) {
|
||||||
|
@ -4736,8 +4795,7 @@ export function initMoves() {
|
||||||
.attr(StatusEffectAttr, StatusEffect.SLEEP)
|
.attr(StatusEffectAttr, StatusEffect.SLEEP)
|
||||||
.soundBased(),
|
.soundBased(),
|
||||||
new StatusMove(Moves.TICKLE, Type.NORMAL, 100, 20, -1, 0, 3)
|
new StatusMove(Moves.TICKLE, Type.NORMAL, 100, 20, -1, 0, 3)
|
||||||
.attr(StatChangeAttr, BattleStat.ATK, -1)
|
.attr(StatChangeAttr, [ BattleStat.ATK, BattleStat.DEF ], -1),
|
||||||
.attr(StatChangeAttr, BattleStat.DEF, -1),
|
|
||||||
new SelfStatusMove(Moves.COSMIC_POWER, Type.PSYCHIC, -1, 20, -1, 0, 3)
|
new SelfStatusMove(Moves.COSMIC_POWER, Type.PSYCHIC, -1, 20, -1, 0, 3)
|
||||||
.attr(StatChangeAttr, [ BattleStat.DEF, BattleStat.SPDEF ], 1, true),
|
.attr(StatChangeAttr, [ BattleStat.DEF, BattleStat.SPDEF ], 1, true),
|
||||||
new AttackMove(Moves.WATER_SPOUT, Type.WATER, MoveCategory.SPECIAL, 150, 100, 5, -1, 0, 3)
|
new AttackMove(Moves.WATER_SPOUT, Type.WATER, MoveCategory.SPECIAL, 150, 100, 5, -1, 0, 3)
|
||||||
|
@ -5334,7 +5392,7 @@ export function initMoves() {
|
||||||
.ballBombMove()
|
.ballBombMove()
|
||||||
.target(MoveTarget.ALL_NEAR_OTHERS),
|
.target(MoveTarget.ALL_NEAR_OTHERS),
|
||||||
new AttackMove(Moves.TECHNO_BLAST, Type.NORMAL, MoveCategory.SPECIAL, 120, 100, 5, -1, 0, 5)
|
new AttackMove(Moves.TECHNO_BLAST, Type.NORMAL, MoveCategory.SPECIAL, 120, 100, 5, -1, 0, 5)
|
||||||
.partial(),
|
.attr(TechnoBlastTypeAttr),
|
||||||
new AttackMove(Moves.RELIC_SONG, Type.NORMAL, MoveCategory.SPECIAL, 75, 100, 10, 10, 0, 5)
|
new AttackMove(Moves.RELIC_SONG, Type.NORMAL, MoveCategory.SPECIAL, 75, 100, 10, 10, 0, 5)
|
||||||
.attr(StatusEffectAttr, StatusEffect.SLEEP)
|
.attr(StatusEffectAttr, StatusEffect.SLEEP)
|
||||||
.soundBased()
|
.soundBased()
|
||||||
|
@ -5473,7 +5531,9 @@ export function initMoves() {
|
||||||
new AttackMove(Moves.HYPERSPACE_HOLE, Type.PSYCHIC, MoveCategory.SPECIAL, 80, -1, 5, -1, 0, 6)
|
new AttackMove(Moves.HYPERSPACE_HOLE, Type.PSYCHIC, MoveCategory.SPECIAL, 80, -1, 5, -1, 0, 6)
|
||||||
.ignoresProtect(),
|
.ignoresProtect(),
|
||||||
new AttackMove(Moves.WATER_SHURIKEN, Type.WATER, MoveCategory.SPECIAL, 15, 100, 20, -1, 1, 6)
|
new AttackMove(Moves.WATER_SHURIKEN, Type.WATER, MoveCategory.SPECIAL, 15, 100, 20, -1, 1, 6)
|
||||||
.attr(MultiHitAttr),
|
.attr(MultiHitAttr)
|
||||||
|
.attr(WaterShurikenPowerAttr)
|
||||||
|
.attr(WaterShurikenMultiHitTypeAttr),
|
||||||
new AttackMove(Moves.MYSTICAL_FIRE, Type.FIRE, MoveCategory.SPECIAL, 75, 100, 10, 100, 0, 6)
|
new AttackMove(Moves.MYSTICAL_FIRE, Type.FIRE, MoveCategory.SPECIAL, 75, 100, 10, 100, 0, 6)
|
||||||
.attr(StatChangeAttr, BattleStat.SPATK, -1),
|
.attr(StatChangeAttr, BattleStat.SPATK, -1),
|
||||||
new SelfStatusMove(Moves.SPIKY_SHIELD, Type.GRASS, -1, 10, -1, 4, 6)
|
new SelfStatusMove(Moves.SPIKY_SHIELD, Type.GRASS, -1, 10, -1, 4, 6)
|
||||||
|
@ -5777,8 +5837,7 @@ export function initMoves() {
|
||||||
.ignoresAbilities()
|
.ignoresAbilities()
|
||||||
.partial(),
|
.partial(),
|
||||||
new StatusMove(Moves.TEARFUL_LOOK, Type.NORMAL, -1, 20, 100, 0, 7)
|
new StatusMove(Moves.TEARFUL_LOOK, Type.NORMAL, -1, 20, 100, 0, 7)
|
||||||
.attr(StatChangeAttr, BattleStat.ATK, -1)
|
.attr(StatChangeAttr, [ BattleStat.ATK, BattleStat.SPATK ], -1),
|
||||||
.attr(StatChangeAttr, BattleStat.SPATK, -1),
|
|
||||||
new AttackMove(Moves.ZING_ZAP, Type.ELECTRIC, MoveCategory.PHYSICAL, 80, 100, 10, 30, 0, 7)
|
new AttackMove(Moves.ZING_ZAP, Type.ELECTRIC, MoveCategory.PHYSICAL, 80, 100, 10, 30, 0, 7)
|
||||||
.attr(FlinchAttr),
|
.attr(FlinchAttr),
|
||||||
new AttackMove(Moves.NATURES_MADNESS, Type.FAIRY, MoveCategory.SPECIAL, -1, 90, 10, -1, 0, 7)
|
new AttackMove(Moves.NATURES_MADNESS, Type.FAIRY, MoveCategory.SPECIAL, -1, 90, 10, -1, 0, 7)
|
||||||
|
@ -5957,8 +6016,7 @@ export function initMoves() {
|
||||||
new AttackMove(Moves.BODY_PRESS, Type.FIGHTING, MoveCategory.PHYSICAL, 80, 100, 10, -1, 0, 8)
|
new AttackMove(Moves.BODY_PRESS, Type.FIGHTING, MoveCategory.PHYSICAL, 80, 100, 10, -1, 0, 8)
|
||||||
.attr(DefAtkAttr),
|
.attr(DefAtkAttr),
|
||||||
new StatusMove(Moves.DECORATE, Type.FAIRY, -1, 15, 100, 0, 8)
|
new StatusMove(Moves.DECORATE, Type.FAIRY, -1, 15, 100, 0, 8)
|
||||||
.attr(StatChangeAttr, BattleStat.ATK, 2)
|
.attr(StatChangeAttr, [ BattleStat.ATK, BattleStat.SPATK ], 2),
|
||||||
.attr(StatChangeAttr, BattleStat.SPATK, 2),
|
|
||||||
new AttackMove(Moves.DRUM_BEATING, Type.GRASS, MoveCategory.PHYSICAL, 80, 100, 10, 100, 0, 8)
|
new AttackMove(Moves.DRUM_BEATING, Type.GRASS, MoveCategory.PHYSICAL, 80, 100, 10, 100, 0, 8)
|
||||||
.attr(StatChangeAttr, BattleStat.SPD, -1)
|
.attr(StatChangeAttr, BattleStat.SPD, -1)
|
||||||
.makesContact(false),
|
.makesContact(false),
|
||||||
|
|
|
@ -82,7 +82,11 @@ export enum FormChangeItem {
|
||||||
SHADOW_REINS_OF_UNITY,
|
SHADOW_REINS_OF_UNITY,
|
||||||
WELLSPRING_MASK,
|
WELLSPRING_MASK,
|
||||||
HEARTHFLAME_MASK,
|
HEARTHFLAME_MASK,
|
||||||
CORNERSTONE_MASK
|
CORNERSTONE_MASK,
|
||||||
|
SHOCK_DRIVE,
|
||||||
|
BURN_DRIVE,
|
||||||
|
CHILL_DRIVE,
|
||||||
|
DOUSE_DRIVE
|
||||||
}
|
}
|
||||||
|
|
||||||
export type SpeciesFormChangeConditionPredicate = (p: Pokemon) => boolean;
|
export type SpeciesFormChangeConditionPredicate = (p: Pokemon) => boolean;
|
||||||
|
@ -542,6 +546,12 @@ export const pokemonFormChanges: PokemonFormChanges = {
|
||||||
new SpeciesFormChange(Species.MELOETTA, 'pirouette', 'aria', new SpeciesFormChangePostMoveTrigger(Moves.RELIC_SONG), true),
|
new SpeciesFormChange(Species.MELOETTA, 'pirouette', 'aria', new SpeciesFormChangePostMoveTrigger(Moves.RELIC_SONG), true),
|
||||||
new SpeciesFormChange(Species.MELOETTA, 'pirouette', 'aria', new SpeciesFormChangeActiveTrigger(false), true)
|
new SpeciesFormChange(Species.MELOETTA, 'pirouette', 'aria', new SpeciesFormChangeActiveTrigger(false), true)
|
||||||
],
|
],
|
||||||
|
[Species.GENESECT]: [
|
||||||
|
new SpeciesFormChange(Species.GENESECT, '', 'shock', new SpeciesFormChangeItemTrigger(FormChangeItem.SHOCK_DRIVE)),
|
||||||
|
new SpeciesFormChange(Species.GENESECT, '', 'burn', new SpeciesFormChangeItemTrigger(FormChangeItem.BURN_DRIVE)),
|
||||||
|
new SpeciesFormChange(Species.GENESECT, '', 'chill', new SpeciesFormChangeItemTrigger(FormChangeItem.CHILL_DRIVE)),
|
||||||
|
new SpeciesFormChange(Species.GENESECT, '', 'douse', new SpeciesFormChangeItemTrigger(FormChangeItem.DOUSE_DRIVE))
|
||||||
|
],
|
||||||
[Species.GRENINJA]: [
|
[Species.GRENINJA]: [
|
||||||
new SpeciesFormChange(Species.GRENINJA, 'battle-bond', 'ash', new SpeciesFormChangeManualTrigger(), true),
|
new SpeciesFormChange(Species.GRENINJA, 'battle-bond', 'ash', new SpeciesFormChangeManualTrigger(), true),
|
||||||
new SpeciesFormChange(Species.GRENINJA, 'ash', 'battle-bond', new SpeciesFormChangeManualTrigger(), true)
|
new SpeciesFormChange(Species.GRENINJA, 'ash', 'battle-bond', new SpeciesFormChangeManualTrigger(), true)
|
||||||
|
|
|
@ -30,7 +30,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
||||||
[ 24, Moves.SWEET_SCENT ],
|
[ 24, Moves.SWEET_SCENT ],
|
||||||
[ 27, Moves.SYNTHESIS ],
|
[ 27, Moves.SYNTHESIS ],
|
||||||
[ 30, Moves.WORRY_SEED ],
|
[ 30, Moves.WORRY_SEED ],
|
||||||
[ 33, Moves.DOUBLE_EDGE ],
|
[ 33, Moves.POWER_WHIP ],
|
||||||
[ 36, Moves.SOLAR_BEAM ],
|
[ 36, Moves.SOLAR_BEAM ],
|
||||||
],
|
],
|
||||||
[Species.IVYSAUR]: [
|
[Species.IVYSAUR]: [
|
||||||
|
@ -47,16 +47,16 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
||||||
[ 30, Moves.SWEET_SCENT ],
|
[ 30, Moves.SWEET_SCENT ],
|
||||||
[ 35, Moves.SYNTHESIS ],
|
[ 35, Moves.SYNTHESIS ],
|
||||||
[ 40, Moves.WORRY_SEED ],
|
[ 40, Moves.WORRY_SEED ],
|
||||||
[ 45, Moves.DOUBLE_EDGE ],
|
[ 45, Moves.POWER_WHIP ],
|
||||||
[ 50, Moves.SOLAR_BEAM ],
|
[ 50, Moves.SOLAR_BEAM ],
|
||||||
],
|
],
|
||||||
[Species.VENUSAUR]: [
|
[Species.VENUSAUR]: [
|
||||||
[ 0, Moves.PETAL_BLIZZARD ],
|
[ 0, Moves.PETAL_BLIZZARD ],
|
||||||
|
[ 1, Moves.GROWTH ],
|
||||||
|
[ 1, Moves.PETAL_DANCE ],
|
||||||
[ 1, Moves.VINE_WHIP ],
|
[ 1, Moves.VINE_WHIP ],
|
||||||
[ 1, Moves.TACKLE ],
|
[ 1, Moves.TACKLE ],
|
||||||
[ 1, Moves.GROWL ],
|
[ 1, Moves.GROWL ],
|
||||||
[ 1, Moves.GROWTH ],
|
|
||||||
[ 1, Moves.PETAL_DANCE ],
|
|
||||||
[ 9, Moves.LEECH_SEED ],
|
[ 9, Moves.LEECH_SEED ],
|
||||||
[ 12, Moves.RAZOR_LEAF ],
|
[ 12, Moves.RAZOR_LEAF ],
|
||||||
[ 15, Moves.POISON_POWDER ],
|
[ 15, Moves.POISON_POWDER ],
|
||||||
|
@ -66,7 +66,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
||||||
[ 30, Moves.SWEET_SCENT ],
|
[ 30, Moves.SWEET_SCENT ],
|
||||||
[ 37, Moves.SYNTHESIS ],
|
[ 37, Moves.SYNTHESIS ],
|
||||||
[ 44, Moves.WORRY_SEED ],
|
[ 44, Moves.WORRY_SEED ],
|
||||||
[ 51, Moves.DOUBLE_EDGE ],
|
[ 51, Moves.POWER_WHIP ],
|
||||||
[ 58, Moves.SOLAR_BEAM ],
|
[ 58, Moves.SOLAR_BEAM ],
|
||||||
],
|
],
|
||||||
[Species.CHARMANDER]: [
|
[Species.CHARMANDER]: [
|
||||||
|
@ -127,7 +127,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
||||||
[ 27, Moves.SHELL_SMASH ],
|
[ 27, Moves.SHELL_SMASH ],
|
||||||
[ 30, Moves.IRON_DEFENSE ],
|
[ 30, Moves.IRON_DEFENSE ],
|
||||||
[ 33, Moves.HYDRO_PUMP ],
|
[ 33, Moves.HYDRO_PUMP ],
|
||||||
[ 36, Moves.SKULL_BASH ],
|
[ 36, Moves.WAVE_CRASH ],
|
||||||
],
|
],
|
||||||
[Species.WARTORTLE]: [
|
[Species.WARTORTLE]: [
|
||||||
[ 1, Moves.TACKLE ],
|
[ 1, Moves.TACKLE ],
|
||||||
|
@ -143,7 +143,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
||||||
[ 35, Moves.SHELL_SMASH ],
|
[ 35, Moves.SHELL_SMASH ],
|
||||||
[ 40, Moves.IRON_DEFENSE ],
|
[ 40, Moves.IRON_DEFENSE ],
|
||||||
[ 45, Moves.HYDRO_PUMP ],
|
[ 45, Moves.HYDRO_PUMP ],
|
||||||
[ 50, Moves.SKULL_BASH ],
|
[ 50, Moves.WAVE_CRASH ],
|
||||||
],
|
],
|
||||||
[Species.BLASTOISE]: [
|
[Species.BLASTOISE]: [
|
||||||
[ 0, Moves.FLASH_CANNON ],
|
[ 0, Moves.FLASH_CANNON ],
|
||||||
|
@ -160,7 +160,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
||||||
[ 35, Moves.SHELL_SMASH ],
|
[ 35, Moves.SHELL_SMASH ],
|
||||||
[ 42, Moves.IRON_DEFENSE ],
|
[ 42, Moves.IRON_DEFENSE ],
|
||||||
[ 49, Moves.HYDRO_PUMP ],
|
[ 49, Moves.HYDRO_PUMP ],
|
||||||
[ 56, Moves.SKULL_BASH ],
|
[ 56, Moves.WAVE_CRASH ],
|
||||||
],
|
],
|
||||||
[Species.CATERPIE]: [
|
[Species.CATERPIE]: [
|
||||||
[ 1, Moves.TACKLE ],
|
[ 1, Moves.TACKLE ],
|
||||||
|
@ -341,9 +341,9 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
||||||
[ 12, Moves.GLARE ],
|
[ 12, Moves.GLARE ],
|
||||||
[ 17, Moves.SCREECH ],
|
[ 17, Moves.SCREECH ],
|
||||||
[ 20, Moves.ACID ],
|
[ 20, Moves.ACID ],
|
||||||
|
[ 25, Moves.SWALLOW ],
|
||||||
[ 25, Moves.STOCKPILE ],
|
[ 25, Moves.STOCKPILE ],
|
||||||
[ 25, Moves.SPIT_UP ],
|
[ 25, Moves.SPIT_UP ],
|
||||||
[ 25, Moves.SWALLOW ],
|
|
||||||
[ 28, Moves.ACID_SPRAY ],
|
[ 28, Moves.ACID_SPRAY ],
|
||||||
[ 33, Moves.SLUDGE_BOMB ],
|
[ 33, Moves.SLUDGE_BOMB ],
|
||||||
[ 36, Moves.GASTRO_ACID ],
|
[ 36, Moves.GASTRO_ACID ],
|
||||||
|
@ -1780,14 +1780,15 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
||||||
[ 4, Moves.DOUBLE_KICK ],
|
[ 4, Moves.DOUBLE_KICK ],
|
||||||
[ 8, Moves.LOW_KICK ],
|
[ 8, Moves.LOW_KICK ],
|
||||||
[ 12, Moves.ENDURE ],
|
[ 12, Moves.ENDURE ],
|
||||||
[ 16, Moves.REVENGE ],
|
[ 16, Moves.SUCKER_PUNCH ],
|
||||||
[ 21, Moves.WIDE_GUARD ],
|
[ 21, Moves.WIDE_GUARD ],
|
||||||
[ 24, Moves.BLAZE_KICK ],
|
[ 24, Moves.BLAZE_KICK ],
|
||||||
[ 28, Moves.MIND_READER ],
|
[ 28, Moves.FEINT ],
|
||||||
[ 32, Moves.MEGA_KICK ],
|
[ 32, Moves.MEGA_KICK ],
|
||||||
[ 36, Moves.CLOSE_COMBAT ],
|
[ 36, Moves.CLOSE_COMBAT ],
|
||||||
[ 40, Moves.REVERSAL ],
|
[ 40, Moves.REVERSAL ],
|
||||||
[ 44, Moves.HIGH_JUMP_KICK ],
|
[ 44, Moves.HIGH_JUMP_KICK ],
|
||||||
|
[ 50, Moves.AXE_KICK ],
|
||||||
],
|
],
|
||||||
[Species.HITMONCHAN]: [
|
[Species.HITMONCHAN]: [
|
||||||
[ 0, Moves.DRAIN_PUNCH ],
|
[ 0, Moves.DRAIN_PUNCH ],
|
||||||
|
@ -1796,16 +1797,14 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
||||||
[ 1, Moves.FAKE_OUT ],
|
[ 1, Moves.FAKE_OUT ],
|
||||||
[ 1, Moves.HELPING_HAND ],
|
[ 1, Moves.HELPING_HAND ],
|
||||||
[ 1, Moves.FEINT ],
|
[ 1, Moves.FEINT ],
|
||||||
[ 1, Moves.VACUUM_WAVE ],
|
|
||||||
[ 1, Moves.BULLET_PUNCH ],
|
|
||||||
[ 4, Moves.MACH_PUNCH ],
|
[ 4, Moves.MACH_PUNCH ],
|
||||||
[ 8, Moves.POWER_UP_PUNCH ],
|
[ 8, Moves.VACUUM_WAVE ],
|
||||||
[ 12, Moves.DETECT ],
|
[ 12, Moves.DETECT ],
|
||||||
[ 16, Moves.REVENGE ],
|
[ 16, Moves.BULLET_PUNCH ],
|
||||||
[ 21, Moves.QUICK_GUARD ],
|
[ 21, Moves.QUICK_GUARD ],
|
||||||
[ 24, Moves.FIRE_PUNCH ],
|
|
||||||
[ 24, Moves.ICE_PUNCH ],
|
|
||||||
[ 24, Moves.THUNDER_PUNCH ],
|
[ 24, Moves.THUNDER_PUNCH ],
|
||||||
|
[ 24, Moves.ICE_PUNCH ],
|
||||||
|
[ 24, Moves.FIRE_PUNCH ],
|
||||||
[ 28, Moves.AGILITY ],
|
[ 28, Moves.AGILITY ],
|
||||||
[ 32, Moves.MEGA_PUNCH ],
|
[ 32, Moves.MEGA_PUNCH ],
|
||||||
[ 36, Moves.CLOSE_COMBAT ],
|
[ 36, Moves.CLOSE_COMBAT ],
|
||||||
|
@ -2598,7 +2597,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
||||||
[ 31, Moves.LIGHT_SCREEN ],
|
[ 31, Moves.LIGHT_SCREEN ],
|
||||||
[ 34, Moves.BODY_SLAM ],
|
[ 34, Moves.BODY_SLAM ],
|
||||||
[ 39, Moves.SAFEGUARD ],
|
[ 39, Moves.SAFEGUARD ],
|
||||||
[ 42, Moves.AROMATHERAPY ],
|
[ 42, Moves.GIGA_DRAIN ],
|
||||||
[ 45, Moves.SOLAR_BEAM ],
|
[ 45, Moves.SOLAR_BEAM ],
|
||||||
],
|
],
|
||||||
[Species.BAYLEEF]: [
|
[Species.BAYLEEF]: [
|
||||||
|
@ -2614,7 +2613,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
||||||
[ 36, Moves.LIGHT_SCREEN ],
|
[ 36, Moves.LIGHT_SCREEN ],
|
||||||
[ 40, Moves.BODY_SLAM ],
|
[ 40, Moves.BODY_SLAM ],
|
||||||
[ 46, Moves.SAFEGUARD ],
|
[ 46, Moves.SAFEGUARD ],
|
||||||
[ 50, Moves.AROMATHERAPY ],
|
[ 50, Moves.GIGA_DRAIN ],
|
||||||
[ 54, Moves.SOLAR_BEAM ],
|
[ 54, Moves.SOLAR_BEAM ],
|
||||||
],
|
],
|
||||||
[Species.MEGANIUM]: [
|
[Species.MEGANIUM]: [
|
||||||
|
@ -2632,7 +2631,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
||||||
[ 40, Moves.LIGHT_SCREEN ],
|
[ 40, Moves.LIGHT_SCREEN ],
|
||||||
[ 46, Moves.BODY_SLAM ],
|
[ 46, Moves.BODY_SLAM ],
|
||||||
[ 54, Moves.SAFEGUARD ],
|
[ 54, Moves.SAFEGUARD ],
|
||||||
[ 60, Moves.AROMATHERAPY ],
|
[ 60, Moves.GIGA_DRAIN ],
|
||||||
[ 65, Moves.SOLAR_BEAM ],
|
[ 65, Moves.SOLAR_BEAM ],
|
||||||
],
|
],
|
||||||
[Species.CYNDAQUIL]: [
|
[Species.CYNDAQUIL]: [
|
||||||
|
@ -2796,6 +2795,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
||||||
[ 1, Moves.ECHOED_VOICE ],
|
[ 1, Moves.ECHOED_VOICE ],
|
||||||
[ 9, Moves.CONFUSION ],
|
[ 9, Moves.CONFUSION ],
|
||||||
[ 12, Moves.REFLECT ],
|
[ 12, Moves.REFLECT ],
|
||||||
|
[ 15, Moves.DEFOG ],
|
||||||
[ 18, Moves.AIR_SLASH ],
|
[ 18, Moves.AIR_SLASH ],
|
||||||
[ 23, Moves.EXTRASENSORY ],
|
[ 23, Moves.EXTRASENSORY ],
|
||||||
[ 28, Moves.TAKE_DOWN ],
|
[ 28, Moves.TAKE_DOWN ],
|
||||||
|
@ -3574,7 +3574,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
||||||
[ 13, Moves.LICK ],
|
[ 13, Moves.LICK ],
|
||||||
[ 19, Moves.HEADBUTT ],
|
[ 19, Moves.HEADBUTT ],
|
||||||
[ 25, Moves.ROAR ],
|
[ 25, Moves.ROAR ],
|
||||||
[ 31, Moves.RAGE ],
|
[ 31, Moves.LAST_RESORT ],
|
||||||
[ 37, Moves.PLAY_ROUGH ],
|
[ 37, Moves.PLAY_ROUGH ],
|
||||||
[ 43, Moves.PAYBACK ],
|
[ 43, Moves.PAYBACK ],
|
||||||
[ 49, Moves.CRUNCH ],
|
[ 49, Moves.CRUNCH ],
|
||||||
|
@ -3592,7 +3592,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
||||||
[ 13, Moves.LICK ],
|
[ 13, Moves.LICK ],
|
||||||
[ 19, Moves.HEADBUTT ],
|
[ 19, Moves.HEADBUTT ],
|
||||||
[ 27, Moves.ROAR ],
|
[ 27, Moves.ROAR ],
|
||||||
[ 35, Moves.RAGE ],
|
[ 35, Moves.LAST_RESORT ],
|
||||||
[ 43, Moves.PLAY_ROUGH ],
|
[ 43, Moves.PLAY_ROUGH ],
|
||||||
[ 51, Moves.PAYBACK ],
|
[ 51, Moves.PAYBACK ],
|
||||||
[ 59, Moves.CRUNCH ],
|
[ 59, Moves.CRUNCH ],
|
||||||
|
@ -3868,7 +3868,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
||||||
[ 20, Moves.WING_ATTACK ],
|
[ 20, Moves.WING_ATTACK ],
|
||||||
[ 24, Moves.SLASH ],
|
[ 24, Moves.SLASH ],
|
||||||
[ 28, Moves.STEEL_WING ],
|
[ 28, Moves.STEEL_WING ],
|
||||||
[ 32, Moves.AUTOTOMIZE ],
|
[ 32, Moves.PAYBACK ],
|
||||||
[ 36, Moves.DRILL_PECK ],
|
[ 36, Moves.DRILL_PECK ],
|
||||||
[ 40, Moves.METAL_SOUND ],
|
[ 40, Moves.METAL_SOUND ],
|
||||||
[ 44, Moves.SPIKES ],
|
[ 44, Moves.SPIKES ],
|
||||||
|
@ -3923,11 +3923,12 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
||||||
[ 20, Moves.DRAGON_BREATH ],
|
[ 20, Moves.DRAGON_BREATH ],
|
||||||
[ 25, Moves.BUBBLE_BEAM ],
|
[ 25, Moves.BUBBLE_BEAM ],
|
||||||
[ 30, Moves.AGILITY ],
|
[ 30, Moves.AGILITY ],
|
||||||
[ 37, Moves.LASER_FOCUS ],
|
[ 37, Moves.WATER_PULSE ],
|
||||||
[ 44, Moves.DRAGON_PULSE ],
|
[ 44, Moves.DRAGON_PULSE ],
|
||||||
[ 51, Moves.HYDRO_PUMP ],
|
[ 51, Moves.HYDRO_PUMP ],
|
||||||
[ 58, Moves.DRAGON_DANCE ],
|
[ 58, Moves.DRAGON_DANCE ],
|
||||||
[ 65, Moves.RAIN_DANCE ],
|
[ 65, Moves.RAIN_DANCE ],
|
||||||
|
[ 72, Moves.WAVE_CRASH ],
|
||||||
],
|
],
|
||||||
[Species.PHANPY]: [
|
[Species.PHANPY]: [
|
||||||
[ 1, Moves.TACKLE ],
|
[ 1, Moves.TACKLE ],
|
||||||
|
@ -3974,10 +3975,9 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
||||||
[ 35, Moves.RECOVER ],
|
[ 35, Moves.RECOVER ],
|
||||||
[ 40, Moves.DISCHARGE ],
|
[ 40, Moves.DISCHARGE ],
|
||||||
[ 45, Moves.TRI_ATTACK ],
|
[ 45, Moves.TRI_ATTACK ],
|
||||||
[ 50, Moves.MAGIC_COAT ],
|
[ 50, Moves.LOCK_ON ],
|
||||||
[ 55, Moves.LOCK_ON ],
|
[ 55, Moves.ZAP_CANNON ],
|
||||||
[ 60, Moves.ZAP_CANNON ],
|
[ 60, Moves.HYPER_BEAM ],
|
||||||
[ 65, Moves.HYPER_BEAM ],
|
|
||||||
],
|
],
|
||||||
[Species.STANTLER]: [
|
[Species.STANTLER]: [
|
||||||
[ 1, Moves.TACKLE ],
|
[ 1, Moves.TACKLE ],
|
||||||
|
@ -4268,7 +4268,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
||||||
[ 72, Moves.FIRE_BLAST ],
|
[ 72, Moves.FIRE_BLAST ],
|
||||||
[ 81, Moves.FUTURE_SIGHT ],
|
[ 81, Moves.FUTURE_SIGHT ],
|
||||||
[ 90, Moves.SKY_ATTACK ],
|
[ 90, Moves.SKY_ATTACK ],
|
||||||
[ 99, Moves.BURN_UP ],
|
[ 99, Moves.OVERHEAT ],
|
||||||
],
|
],
|
||||||
[Species.CELEBI]: [
|
[Species.CELEBI]: [
|
||||||
[ 1, Moves.CONFUSION ],
|
[ 1, Moves.CONFUSION ],
|
||||||
|
|
|
@ -135,3 +135,43 @@ export function getStatusEffectCatchRateMultiplier(statusEffect: StatusEffect):
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a random non-volatile StatusEffect
|
||||||
|
*/
|
||||||
|
export function generateRandomStatusEffect(): StatusEffect {
|
||||||
|
return Utils.randIntRange(1, 6);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a random non-volatile StatusEffect between the two provided
|
||||||
|
* @param statusEffectA The first StatusEffect
|
||||||
|
* @param statusEffectA The second StatusEffect
|
||||||
|
*/
|
||||||
|
export function getRandomStatusEffect(statusEffectA: StatusEffect, statusEffectB: StatusEffect): StatusEffect {
|
||||||
|
if (statusEffectA === StatusEffect.NONE || statusEffectA === StatusEffect.FAINT) {
|
||||||
|
return statusEffectB;
|
||||||
|
}
|
||||||
|
if (statusEffectB === StatusEffect.NONE || statusEffectB === StatusEffect.FAINT) {
|
||||||
|
return statusEffectA;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Utils.randIntRange(0, 2) ? statusEffectA : statusEffectB;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a random non-volatile StatusEffect between the two provided
|
||||||
|
* @param statusA The first Status
|
||||||
|
* @param statusB The second Status
|
||||||
|
*/
|
||||||
|
export function getRandomStatus(statusA: Status, statusB: Status): Status {
|
||||||
|
if (statusA === undefined || statusA.effect === StatusEffect.NONE || statusA.effect === StatusEffect.FAINT) {
|
||||||
|
return statusB;
|
||||||
|
}
|
||||||
|
if (statusB === undefined || statusB.effect === StatusEffect.NONE || statusB.effect === StatusEffect.FAINT) {
|
||||||
|
return statusA;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return Utils.randIntRange(0, 2) ? statusA : statusB;
|
||||||
|
}
|
|
@ -4,6 +4,7 @@ import { Type } from "./type";
|
||||||
import * as Utils from "../utils";
|
import * as Utils from "../utils";
|
||||||
import { IncrementMovePriorityAbAttr, applyAbAttrs } from "./ability";
|
import { IncrementMovePriorityAbAttr, applyAbAttrs } from "./ability";
|
||||||
import { ProtectAttr } from "./move";
|
import { ProtectAttr } from "./move";
|
||||||
|
import { BattlerIndex } from "#app/battle.js";
|
||||||
|
|
||||||
export enum TerrainType {
|
export enum TerrainType {
|
||||||
NONE,
|
NONE,
|
||||||
|
@ -48,13 +49,13 @@ export class Terrain {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
isMoveTerrainCancelled(user: Pokemon, move: Move): boolean {
|
isMoveTerrainCancelled(user: Pokemon, targets: BattlerIndex[], move: Move): boolean {
|
||||||
switch (this.terrainType) {
|
switch (this.terrainType) {
|
||||||
case TerrainType.PSYCHIC:
|
case TerrainType.PSYCHIC:
|
||||||
if (!move.getAttrs(ProtectAttr).length) {
|
if (!move.getAttrs(ProtectAttr).length) {
|
||||||
const priority = new Utils.IntegerHolder(move.priority);
|
const priority = new Utils.IntegerHolder(move.priority);
|
||||||
applyAbAttrs(IncrementMovePriorityAbAttr, user, null, move, priority);
|
applyAbAttrs(IncrementMovePriorityAbAttr, user, null, move, priority);
|
||||||
return priority.value > 0;
|
return priority.value > 0 && user.getOpponents().filter(o => targets.includes(o.getBattlerIndex())).length > 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -336,8 +336,8 @@ export class Arena {
|
||||||
return this.weather && !this.weather.isEffectSuppressed(this.scene) && this.weather.isMoveWeatherCancelled(move);
|
return this.weather && !this.weather.isEffectSuppressed(this.scene) && this.weather.isMoveWeatherCancelled(move);
|
||||||
}
|
}
|
||||||
|
|
||||||
isMoveTerrainCancelled(user: Pokemon, move: Move) {
|
isMoveTerrainCancelled(user: Pokemon, targets: BattlerIndex[], move: Move) {
|
||||||
return this.terrain && this.terrain.isMoveTerrainCancelled(user, move);
|
return this.terrain && this.terrain.isMoveTerrainCancelled(user, targets, move);
|
||||||
}
|
}
|
||||||
|
|
||||||
getTerrainType() : TerrainType {
|
getTerrainType() : TerrainType {
|
||||||
|
|
|
@ -14,7 +14,7 @@ import { AttackTypeBoosterModifier, DamageMoneyRewardModifier, EnemyDamageBooste
|
||||||
import { PokeballType } from '../data/pokeball';
|
import { PokeballType } from '../data/pokeball';
|
||||||
import { Gender } from '../data/gender';
|
import { Gender } from '../data/gender';
|
||||||
import { initMoveAnim, loadMoveAnimAssets } from '../data/battle-anims';
|
import { initMoveAnim, loadMoveAnimAssets } from '../data/battle-anims';
|
||||||
import { Status, StatusEffect } from '../data/status-effect';
|
import { Status, StatusEffect, getRandomStatus } from '../data/status-effect';
|
||||||
import { pokemonEvolutions, pokemonPrevolutions, SpeciesFormEvolution, SpeciesEvolutionCondition, FusionSpeciesFormEvolution } from '../data/pokemon-evolutions';
|
import { pokemonEvolutions, pokemonPrevolutions, SpeciesFormEvolution, SpeciesEvolutionCondition, FusionSpeciesFormEvolution } from '../data/pokemon-evolutions';
|
||||||
import { reverseCompatibleTms, tmSpecies } from '../data/tms';
|
import { reverseCompatibleTms, tmSpecies } from '../data/tms';
|
||||||
import { DamagePhase, FaintPhase, LearnMovePhase, ObtainStatusEffectPhase, StatChangePhase, SwitchSummonPhase } from '../phases';
|
import { DamagePhase, FaintPhase, LearnMovePhase, ObtainStatusEffectPhase, StatChangePhase, SwitchSummonPhase } from '../phases';
|
||||||
|
@ -2551,6 +2551,10 @@ export class PlayerPokemon extends Pokemon {
|
||||||
this.generateCompatibleTms();
|
this.generateCompatibleTms();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a Promise to fuse two PlayerPokemon together
|
||||||
|
* @param pokemon The PlayerPokemon to fuse to this one
|
||||||
|
*/
|
||||||
fuse(pokemon: PlayerPokemon): Promise<void> {
|
fuse(pokemon: PlayerPokemon): Promise<void> {
|
||||||
return new Promise(resolve => {
|
return new Promise(resolve => {
|
||||||
this.fusionSpecies = pokemon.species;
|
this.fusionSpecies = pokemon.species;
|
||||||
|
@ -2564,8 +2568,25 @@ export class PlayerPokemon extends Pokemon {
|
||||||
this.scene.validateAchv(achvs.SPLICE);
|
this.scene.validateAchv(achvs.SPLICE);
|
||||||
this.scene.gameData.gameStats.pokemonFused++;
|
this.scene.gameData.gameStats.pokemonFused++;
|
||||||
|
|
||||||
|
// Store the average HP% that each Pokemon has
|
||||||
|
const newHpPercent = ((pokemon.hp / pokemon.stats[Stat.HP]) + (this.hp / this.stats[Stat.HP])) / 2;
|
||||||
|
|
||||||
this.generateName();
|
this.generateName();
|
||||||
this.calculateStats();
|
this.calculateStats();
|
||||||
|
|
||||||
|
// Set this Pokemon's HP to the average % of both fusion components
|
||||||
|
this.hp = Math.round(this.stats[Stat.HP] * newHpPercent);
|
||||||
|
if (!this.isFainted()) {
|
||||||
|
// If this Pokemon hasn't fainted, make sure the HP wasn't set over the new maximum
|
||||||
|
this.hp = Math.min(this.hp, this.stats[Stat.HP]);
|
||||||
|
this.status = getRandomStatus(this.status, pokemon.status); // Get a random valid status between the two
|
||||||
|
}
|
||||||
|
else if (!pokemon.isFainted()) {
|
||||||
|
// If this Pokemon fainted but the other hasn't, make sure the HP wasn't set to zero
|
||||||
|
this.hp = Math.max(this.hp, 1);
|
||||||
|
this.status = pokemon.status; // Inherit the other Pokemon's status
|
||||||
|
}
|
||||||
|
|
||||||
this.generateCompatibleTms();
|
this.generateCompatibleTms();
|
||||||
this.updateInfo(true);
|
this.updateInfo(true);
|
||||||
const fusedPartyMemberIndex = this.scene.getParty().indexOf(pokemon);
|
const fusedPartyMemberIndex = this.scene.getParty().indexOf(pokemon);
|
||||||
|
|