Merge branch 'main' into nuzlocke-mode
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 49 KiB |
BIN
public/images/items/burn_drive.png
Normal file
After Width: | Height: | Size: 303 B |
BIN
public/images/items/chill_drive.png
Normal file
After Width: | Height: | Size: 303 B |
BIN
public/images/items/douse_drive.png
Normal file
After Width: | Height: | Size: 303 B |
BIN
public/images/items/shock_drive.png
Normal file
After Width: | Height: | Size: 303 B |
BIN
public/images/pokemon/icons/variant/1/118_1.png
Normal file
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 |
BIN
public/images/pokemon/icons/variant/3/278_1.png
Normal file
After Width: | Height: | Size: 476 B |
BIN
public/images/pokemon/icons/variant/3/278_2.png
Normal file
After Width: | Height: | Size: 488 B |
BIN
public/images/pokemon/icons/variant/3/278_3.png
Normal file
After Width: | Height: | Size: 481 B |
BIN
public/images/pokemon/icons/variant/3/279_1.png
Normal file
After Width: | Height: | Size: 3.3 KiB |
BIN
public/images/pokemon/icons/variant/3/279_2.png
Normal file
After Width: | Height: | Size: 3.3 KiB |
BIN
public/images/pokemon/icons/variant/3/279_3.png
Normal file
After Width: | Height: | Size: 3.3 KiB |
BIN
public/images/pokemon/icons/variant/3/320_2.png
Normal file
After Width: | Height: | Size: 543 B |
BIN
public/images/pokemon/icons/variant/3/320_3.png
Normal file
After Width: | Height: | Size: 524 B |
BIN
public/images/pokemon/icons/variant/3/321_2.png
Normal file
After Width: | Height: | Size: 597 B |
BIN
public/images/pokemon/icons/variant/3/321_3.png
Normal file
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 |
BIN
public/images/pokemon/icons/variant/4/485_2.png
Normal file
After Width: | Height: | Size: 324 B |
BIN
public/images/pokemon/icons/variant/4/485_3.png
Normal file
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 |
BIN
public/images/pokemon/icons/variant/5/592-f_1.png
Normal file
After Width: | Height: | Size: 3.2 KiB |
BIN
public/images/pokemon/icons/variant/5/592-f_2.png
Normal file
After Width: | Height: | Size: 3.2 KiB |
BIN
public/images/pokemon/icons/variant/5/592-f_3.png
Normal file
After Width: | Height: | Size: 3.2 KiB |
BIN
public/images/pokemon/icons/variant/5/592_2.png
Normal file
After Width: | Height: | Size: 451 B |
BIN
public/images/pokemon/icons/variant/5/592_3.png
Normal file
After Width: | Height: | Size: 3.2 KiB |
BIN
public/images/pokemon/icons/variant/5/593-f_1.png
Normal file
After Width: | Height: | Size: 3.3 KiB |
BIN
public/images/pokemon/icons/variant/5/593-f_2.png
Normal file
After Width: | Height: | Size: 3.3 KiB |
BIN
public/images/pokemon/icons/variant/5/593-f_3.png
Normal file
After Width: | Height: | Size: 3.4 KiB |
BIN
public/images/pokemon/icons/variant/5/593_2.png
Normal file
After Width: | Height: | Size: 571 B |
BIN
public/images/pokemon/icons/variant/5/593_3.png
Normal file
After Width: | Height: | Size: 644 B |
BIN
public/images/pokemon/icons/variant/5/619_2.png
Normal file
After Width: | Height: | Size: 577 B |
BIN
public/images/pokemon/icons/variant/5/619_3.png
Normal file
After Width: | Height: | Size: 565 B |
BIN
public/images/pokemon/icons/variant/5/620_2.png
Normal file
After Width: | Height: | Size: 609 B |
BIN
public/images/pokemon/icons/variant/5/620_3.png
Normal file
After Width: | Height: | Size: 625 B |
BIN
public/images/pokemon/icons/variant/8/850_2.png
Normal file
After Width: | Height: | Size: 393 B |
BIN
public/images/pokemon/icons/variant/8/850_3.png
Normal file
After Width: | Height: | Size: 390 B |
BIN
public/images/pokemon/icons/variant/8/851_2.png
Normal file
After Width: | Height: | Size: 922 B |
BIN
public/images/pokemon/icons/variant/8/851_3.png
Normal file
After Width: | Height: | Size: 926 B |
BIN
public/images/pokemon/icons/variant/9/935_1.png
Normal file
After Width: | Height: | Size: 391 B |
BIN
public/images/pokemon/icons/variant/9/935_2.png
Normal file
After Width: | Height: | Size: 396 B |
Before Width: | Height: | Size: 392 B After Width: | Height: | Size: 386 B |
BIN
public/images/pokemon/icons/variant/9/936_1.png
Normal file
After Width: | Height: | Size: 491 B |
BIN
public/images/pokemon/icons/variant/9/936_2.png
Normal file
After Width: | Height: | Size: 486 B |
Before Width: | Height: | Size: 485 B After Width: | Height: | Size: 485 B |
BIN
public/images/pokemon/icons/variant/9/937_1.png
Normal file
After Width: | Height: | Size: 502 B |
BIN
public/images/pokemon/icons/variant/9/937_2.png
Normal file
After Width: | Height: | Size: 495 B |
BIN
public/images/pokemon/icons/variant/9/937_3.png
Normal file
After Width: | Height: | Size: 518 B |
@ -1,5 +1,5 @@
|
||||
{
|
||||
"0": {
|
||||
"1": {
|
||||
"424284": "6b1524",
|
||||
"7384ad": "a53038",
|
||||
"d6d6ff": "f28566",
|
||||
|
@ -1,7 +1,7 @@
|
||||
{
|
||||
"29": [
|
||||
1,
|
||||
0,
|
||||
1,
|
||||
1
|
||||
],
|
||||
"30": [
|
||||
@ -2991,6 +2991,16 @@
|
||||
1,
|
||||
1
|
||||
],
|
||||
"306-mega": [
|
||||
1,
|
||||
1,
|
||||
1
|
||||
],
|
||||
"308-mega": [
|
||||
0,
|
||||
1,
|
||||
1
|
||||
],
|
||||
"310-mega": [
|
||||
0,
|
||||
1,
|
||||
@ -3116,6 +3126,11 @@
|
||||
1,
|
||||
1
|
||||
],
|
||||
"747": [
|
||||
0,
|
||||
1,
|
||||
1
|
||||
],
|
||||
"748": [
|
||||
0,
|
||||
1,
|
||||
@ -3196,6 +3211,16 @@
|
||||
1,
|
||||
1
|
||||
],
|
||||
"850": [
|
||||
0,
|
||||
1,
|
||||
1
|
||||
],
|
||||
"851": [
|
||||
0,
|
||||
1,
|
||||
1
|
||||
],
|
||||
"856": [
|
||||
0,
|
||||
1,
|
||||
@ -3453,6 +3478,16 @@
|
||||
1,
|
||||
1
|
||||
],
|
||||
"306-mega": [
|
||||
1,
|
||||
1,
|
||||
1
|
||||
],
|
||||
"308-mega": [
|
||||
0,
|
||||
1,
|
||||
1
|
||||
],
|
||||
"310-mega": [
|
||||
0,
|
||||
1,
|
||||
@ -3578,6 +3613,11 @@
|
||||
1,
|
||||
1
|
||||
],
|
||||
"747": [
|
||||
0,
|
||||
2,
|
||||
2
|
||||
],
|
||||
"748": [
|
||||
0,
|
||||
1,
|
||||
@ -3658,6 +3698,16 @@
|
||||
1,
|
||||
1
|
||||
],
|
||||
"850": [
|
||||
0,
|
||||
1,
|
||||
1
|
||||
],
|
||||
"851": [
|
||||
0,
|
||||
1,
|
||||
1
|
||||
],
|
||||
"856": [
|
||||
0,
|
||||
1,
|
||||
|
47
public/images/pokemon/variant/exp/306-mega.json
Normal file
@ -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"
|
||||
}
|
||||
}
|
36
public/images/pokemon/variant/exp/308-mega.json
Normal file
@ -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"
|
||||
}
|
||||
}
|
30
public/images/pokemon/variant/exp/747.json
Normal file
@ -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"
|
||||
}
|
||||
}
|
32
public/images/pokemon/variant/exp/850.json
Normal file
@ -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"
|
||||
}
|
||||
}
|
36
public/images/pokemon/variant/exp/851.json
Normal file
@ -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"
|
||||
}
|
||||
}
|
38
public/images/pokemon/variant/exp/back/306-mega.json
Normal file
@ -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"
|
||||
}
|
||||
}
|
34
public/images/pokemon/variant/exp/back/308-mega.json
Normal file
@ -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"
|
||||
}
|
||||
}
|
230
public/images/pokemon/variant/exp/back/747_2.json
Normal file
@ -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$"
|
||||
}
|
||||
}
|
BIN
public/images/pokemon/variant/exp/back/747_2.png
Normal file
After Width: | Height: | Size: 5.9 KiB |
230
public/images/pokemon/variant/exp/back/747_3.json
Normal file
@ -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$"
|
||||
}
|
||||
}
|
BIN
public/images/pokemon/variant/exp/back/747_3.png
Normal file
After Width: | Height: | Size: 5.9 KiB |
@ -1,11 +1,11 @@
|
||||
{
|
||||
"1": {
|
||||
"943732": "490a3c",
|
||||
"943732": "5c075b",
|
||||
"101010": "101010",
|
||||
"f28c4f": "a21f90",
|
||||
"e25025": "91138c",
|
||||
"f28c4f": "c639bd",
|
||||
"e25025": "a21f90",
|
||||
"93d1d7": "df7b52",
|
||||
"3a3f6d": "462952",
|
||||
"3a3f6d": "171539",
|
||||
"6f97c4": "be583d",
|
||||
"711a6a": "81463e",
|
||||
"455b85": "892e20",
|
||||
@ -15,12 +15,12 @@
|
||||
"171539": "171539"
|
||||
},
|
||||
"2": {
|
||||
"943732": "c30e49",
|
||||
"943732": "ac063c",
|
||||
"101010": "101010",
|
||||
"f28c4f": "ff3f5a",
|
||||
"e25025": "e12350",
|
||||
"93d1d7": "5bd97f",
|
||||
"3a3f6d": "862916",
|
||||
"3a3f6d": "490c06",
|
||||
"6f97c4": "359d5d",
|
||||
"711a6a": "082b29",
|
||||
"455b85": "186443",
|
||||
|
28
public/images/pokemon/variant/exp/back/850.json
Normal file
@ -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"
|
||||
}
|
||||
}
|
34
public/images/pokemon/variant/exp/back/851.json
Normal file
@ -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 |
BIN
public/images/ui/candy.png
Normal file
After Width: | Height: | Size: 415 B |
BIN
public/images/ui/candy_overlay.png
Normal file
After Width: | Height: | Size: 211 B |
BIN
public/images/ui/legacy/candy.png
Normal file
After Width: | Height: | Size: 415 B |
BIN
public/images/ui/legacy/candy_overlay.png
Normal file
After Width: | Height: | Size: 211 B |
@ -3,7 +3,7 @@
|
||||
"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.",
|
||||
"scope": "/",
|
||||
"start_url": "https://pokerogue.net",
|
||||
"start_url": "/",
|
||||
"display": "fullscreen",
|
||||
"background_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 {
|
||||
constructor() {
|
||||
super(false);
|
||||
@ -3217,8 +3224,7 @@ export function initAbilities() {
|
||||
.attr(UncopiableAbilityAbAttr)
|
||||
.attr(UnswappableAbilityAbAttr)
|
||||
.attr(UnsuppressableAbilityAbAttr)
|
||||
.attr(NoFusionAbilityAbAttr)
|
||||
.partial(),
|
||||
.attr(NoFusionAbilityAbAttr),
|
||||
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(PostSummonFormChangeAbAttr, p => p.getHpRatio() <= 0.5 ? 4 : 2)
|
||||
@ -3484,7 +3490,7 @@ export function initAbilities() {
|
||||
.attr(PostBiomeChangeTerrainChangeAbAttr, TerrainType.ELECTRIC)
|
||||
.conditionalAttr(getTerrainCondition(TerrainType.ELECTRIC), BattleStatMultiplierAbAttr, BattleStat.SPATK, 4 / 3),
|
||||
new Ability(Abilities.OPPORTUNIST, 9)
|
||||
.unimplemented(),
|
||||
.attr(StatChangeCopyAbAttr),
|
||||
new Ability(Abilities.CUD_CHEW, 9)
|
||||
.unimplemented(),
|
||||
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.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.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.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 ],
|
||||
|
@ -756,7 +756,7 @@ export enum MultiHitType {
|
||||
_2_TO_5,
|
||||
_3,
|
||||
_3_INCR,
|
||||
_1_TO_10
|
||||
_1_TO_10,
|
||||
}
|
||||
|
||||
export class HealAttr extends MoveEffectAttr {
|
||||
@ -912,7 +912,9 @@ export class MultiHitAttr extends MoveAttr {
|
||||
|
||||
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
|
||||
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:
|
||||
{
|
||||
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 {
|
||||
public effect: StatusEffect;
|
||||
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 {
|
||||
constructor() {
|
||||
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 {
|
||||
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
|
||||
if ([user.species.speciesId, user.fusionSpecies?.speciesId].includes(Species.MORPEKO)) {
|
||||
@ -4736,8 +4795,7 @@ export function initMoves() {
|
||||
.attr(StatusEffectAttr, StatusEffect.SLEEP)
|
||||
.soundBased(),
|
||||
new StatusMove(Moves.TICKLE, Type.NORMAL, 100, 20, -1, 0, 3)
|
||||
.attr(StatChangeAttr, BattleStat.ATK, -1)
|
||||
.attr(StatChangeAttr, BattleStat.DEF, -1),
|
||||
.attr(StatChangeAttr, [ BattleStat.ATK, BattleStat.DEF ], -1),
|
||||
new SelfStatusMove(Moves.COSMIC_POWER, Type.PSYCHIC, -1, 20, -1, 0, 3)
|
||||
.attr(StatChangeAttr, [ BattleStat.DEF, BattleStat.SPDEF ], 1, true),
|
||||
new AttackMove(Moves.WATER_SPOUT, Type.WATER, MoveCategory.SPECIAL, 150, 100, 5, -1, 0, 3)
|
||||
@ -5334,7 +5392,7 @@ export function initMoves() {
|
||||
.ballBombMove()
|
||||
.target(MoveTarget.ALL_NEAR_OTHERS),
|
||||
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)
|
||||
.attr(StatusEffectAttr, StatusEffect.SLEEP)
|
||||
.soundBased()
|
||||
@ -5473,7 +5531,9 @@ export function initMoves() {
|
||||
new AttackMove(Moves.HYPERSPACE_HOLE, Type.PSYCHIC, MoveCategory.SPECIAL, 80, -1, 5, -1, 0, 6)
|
||||
.ignoresProtect(),
|
||||
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)
|
||||
.attr(StatChangeAttr, BattleStat.SPATK, -1),
|
||||
new SelfStatusMove(Moves.SPIKY_SHIELD, Type.GRASS, -1, 10, -1, 4, 6)
|
||||
@ -5777,8 +5837,7 @@ export function initMoves() {
|
||||
.ignoresAbilities()
|
||||
.partial(),
|
||||
new StatusMove(Moves.TEARFUL_LOOK, Type.NORMAL, -1, 20, 100, 0, 7)
|
||||
.attr(StatChangeAttr, BattleStat.ATK, -1)
|
||||
.attr(StatChangeAttr, BattleStat.SPATK, -1),
|
||||
.attr(StatChangeAttr, [ BattleStat.ATK, BattleStat.SPATK ], -1),
|
||||
new AttackMove(Moves.ZING_ZAP, Type.ELECTRIC, MoveCategory.PHYSICAL, 80, 100, 10, 30, 0, 7)
|
||||
.attr(FlinchAttr),
|
||||
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)
|
||||
.attr(DefAtkAttr),
|
||||
new StatusMove(Moves.DECORATE, Type.FAIRY, -1, 15, 100, 0, 8)
|
||||
.attr(StatChangeAttr, BattleStat.ATK, 2)
|
||||
.attr(StatChangeAttr, BattleStat.SPATK, 2),
|
||||
.attr(StatChangeAttr, [ BattleStat.ATK, BattleStat.SPATK ], 2),
|
||||
new AttackMove(Moves.DRUM_BEATING, Type.GRASS, MoveCategory.PHYSICAL, 80, 100, 10, 100, 0, 8)
|
||||
.attr(StatChangeAttr, BattleStat.SPD, -1)
|
||||
.makesContact(false),
|
||||
|
@ -82,7 +82,11 @@ export enum FormChangeItem {
|
||||
SHADOW_REINS_OF_UNITY,
|
||||
WELLSPRING_MASK,
|
||||
HEARTHFLAME_MASK,
|
||||
CORNERSTONE_MASK
|
||||
CORNERSTONE_MASK,
|
||||
SHOCK_DRIVE,
|
||||
BURN_DRIVE,
|
||||
CHILL_DRIVE,
|
||||
DOUSE_DRIVE
|
||||
}
|
||||
|
||||
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 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]: [
|
||||
new SpeciesFormChange(Species.GRENINJA, 'battle-bond', 'ash', 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 ],
|
||||
[ 27, Moves.SYNTHESIS ],
|
||||
[ 30, Moves.WORRY_SEED ],
|
||||
[ 33, Moves.DOUBLE_EDGE ],
|
||||
[ 33, Moves.POWER_WHIP ],
|
||||
[ 36, Moves.SOLAR_BEAM ],
|
||||
],
|
||||
[Species.IVYSAUR]: [
|
||||
@ -47,16 +47,16 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
||||
[ 30, Moves.SWEET_SCENT ],
|
||||
[ 35, Moves.SYNTHESIS ],
|
||||
[ 40, Moves.WORRY_SEED ],
|
||||
[ 45, Moves.DOUBLE_EDGE ],
|
||||
[ 45, Moves.POWER_WHIP ],
|
||||
[ 50, Moves.SOLAR_BEAM ],
|
||||
],
|
||||
[Species.VENUSAUR]: [
|
||||
[ 0, Moves.PETAL_BLIZZARD ],
|
||||
[ 1, Moves.GROWTH ],
|
||||
[ 1, Moves.PETAL_DANCE ],
|
||||
[ 1, Moves.VINE_WHIP ],
|
||||
[ 1, Moves.TACKLE ],
|
||||
[ 1, Moves.GROWL ],
|
||||
[ 1, Moves.GROWTH ],
|
||||
[ 1, Moves.PETAL_DANCE ],
|
||||
[ 9, Moves.LEECH_SEED ],
|
||||
[ 12, Moves.RAZOR_LEAF ],
|
||||
[ 15, Moves.POISON_POWDER ],
|
||||
@ -66,7 +66,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
||||
[ 30, Moves.SWEET_SCENT ],
|
||||
[ 37, Moves.SYNTHESIS ],
|
||||
[ 44, Moves.WORRY_SEED ],
|
||||
[ 51, Moves.DOUBLE_EDGE ],
|
||||
[ 51, Moves.POWER_WHIP ],
|
||||
[ 58, Moves.SOLAR_BEAM ],
|
||||
],
|
||||
[Species.CHARMANDER]: [
|
||||
@ -127,7 +127,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
||||
[ 27, Moves.SHELL_SMASH ],
|
||||
[ 30, Moves.IRON_DEFENSE ],
|
||||
[ 33, Moves.HYDRO_PUMP ],
|
||||
[ 36, Moves.SKULL_BASH ],
|
||||
[ 36, Moves.WAVE_CRASH ],
|
||||
],
|
||||
[Species.WARTORTLE]: [
|
||||
[ 1, Moves.TACKLE ],
|
||||
@ -143,7 +143,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
||||
[ 35, Moves.SHELL_SMASH ],
|
||||
[ 40, Moves.IRON_DEFENSE ],
|
||||
[ 45, Moves.HYDRO_PUMP ],
|
||||
[ 50, Moves.SKULL_BASH ],
|
||||
[ 50, Moves.WAVE_CRASH ],
|
||||
],
|
||||
[Species.BLASTOISE]: [
|
||||
[ 0, Moves.FLASH_CANNON ],
|
||||
@ -160,7 +160,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
||||
[ 35, Moves.SHELL_SMASH ],
|
||||
[ 42, Moves.IRON_DEFENSE ],
|
||||
[ 49, Moves.HYDRO_PUMP ],
|
||||
[ 56, Moves.SKULL_BASH ],
|
||||
[ 56, Moves.WAVE_CRASH ],
|
||||
],
|
||||
[Species.CATERPIE]: [
|
||||
[ 1, Moves.TACKLE ],
|
||||
@ -341,9 +341,9 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
||||
[ 12, Moves.GLARE ],
|
||||
[ 17, Moves.SCREECH ],
|
||||
[ 20, Moves.ACID ],
|
||||
[ 25, Moves.SWALLOW ],
|
||||
[ 25, Moves.STOCKPILE ],
|
||||
[ 25, Moves.SPIT_UP ],
|
||||
[ 25, Moves.SWALLOW ],
|
||||
[ 28, Moves.ACID_SPRAY ],
|
||||
[ 33, Moves.SLUDGE_BOMB ],
|
||||
[ 36, Moves.GASTRO_ACID ],
|
||||
@ -1780,14 +1780,15 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
||||
[ 4, Moves.DOUBLE_KICK ],
|
||||
[ 8, Moves.LOW_KICK ],
|
||||
[ 12, Moves.ENDURE ],
|
||||
[ 16, Moves.REVENGE ],
|
||||
[ 16, Moves.SUCKER_PUNCH ],
|
||||
[ 21, Moves.WIDE_GUARD ],
|
||||
[ 24, Moves.BLAZE_KICK ],
|
||||
[ 28, Moves.MIND_READER ],
|
||||
[ 28, Moves.FEINT ],
|
||||
[ 32, Moves.MEGA_KICK ],
|
||||
[ 36, Moves.CLOSE_COMBAT ],
|
||||
[ 40, Moves.REVERSAL ],
|
||||
[ 44, Moves.HIGH_JUMP_KICK ],
|
||||
[ 50, Moves.AXE_KICK ],
|
||||
],
|
||||
[Species.HITMONCHAN]: [
|
||||
[ 0, Moves.DRAIN_PUNCH ],
|
||||
@ -1796,16 +1797,14 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
||||
[ 1, Moves.FAKE_OUT ],
|
||||
[ 1, Moves.HELPING_HAND ],
|
||||
[ 1, Moves.FEINT ],
|
||||
[ 1, Moves.VACUUM_WAVE ],
|
||||
[ 1, Moves.BULLET_PUNCH ],
|
||||
[ 4, Moves.MACH_PUNCH ],
|
||||
[ 8, Moves.POWER_UP_PUNCH ],
|
||||
[ 8, Moves.VACUUM_WAVE ],
|
||||
[ 12, Moves.DETECT ],
|
||||
[ 16, Moves.REVENGE ],
|
||||
[ 16, Moves.BULLET_PUNCH ],
|
||||
[ 21, Moves.QUICK_GUARD ],
|
||||
[ 24, Moves.FIRE_PUNCH ],
|
||||
[ 24, Moves.ICE_PUNCH ],
|
||||
[ 24, Moves.THUNDER_PUNCH ],
|
||||
[ 24, Moves.ICE_PUNCH ],
|
||||
[ 24, Moves.FIRE_PUNCH ],
|
||||
[ 28, Moves.AGILITY ],
|
||||
[ 32, Moves.MEGA_PUNCH ],
|
||||
[ 36, Moves.CLOSE_COMBAT ],
|
||||
@ -2598,7 +2597,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
||||
[ 31, Moves.LIGHT_SCREEN ],
|
||||
[ 34, Moves.BODY_SLAM ],
|
||||
[ 39, Moves.SAFEGUARD ],
|
||||
[ 42, Moves.AROMATHERAPY ],
|
||||
[ 42, Moves.GIGA_DRAIN ],
|
||||
[ 45, Moves.SOLAR_BEAM ],
|
||||
],
|
||||
[Species.BAYLEEF]: [
|
||||
@ -2614,7 +2613,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
||||
[ 36, Moves.LIGHT_SCREEN ],
|
||||
[ 40, Moves.BODY_SLAM ],
|
||||
[ 46, Moves.SAFEGUARD ],
|
||||
[ 50, Moves.AROMATHERAPY ],
|
||||
[ 50, Moves.GIGA_DRAIN ],
|
||||
[ 54, Moves.SOLAR_BEAM ],
|
||||
],
|
||||
[Species.MEGANIUM]: [
|
||||
@ -2632,7 +2631,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
||||
[ 40, Moves.LIGHT_SCREEN ],
|
||||
[ 46, Moves.BODY_SLAM ],
|
||||
[ 54, Moves.SAFEGUARD ],
|
||||
[ 60, Moves.AROMATHERAPY ],
|
||||
[ 60, Moves.GIGA_DRAIN ],
|
||||
[ 65, Moves.SOLAR_BEAM ],
|
||||
],
|
||||
[Species.CYNDAQUIL]: [
|
||||
@ -2796,6 +2795,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
||||
[ 1, Moves.ECHOED_VOICE ],
|
||||
[ 9, Moves.CONFUSION ],
|
||||
[ 12, Moves.REFLECT ],
|
||||
[ 15, Moves.DEFOG ],
|
||||
[ 18, Moves.AIR_SLASH ],
|
||||
[ 23, Moves.EXTRASENSORY ],
|
||||
[ 28, Moves.TAKE_DOWN ],
|
||||
@ -3574,7 +3574,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
||||
[ 13, Moves.LICK ],
|
||||
[ 19, Moves.HEADBUTT ],
|
||||
[ 25, Moves.ROAR ],
|
||||
[ 31, Moves.RAGE ],
|
||||
[ 31, Moves.LAST_RESORT ],
|
||||
[ 37, Moves.PLAY_ROUGH ],
|
||||
[ 43, Moves.PAYBACK ],
|
||||
[ 49, Moves.CRUNCH ],
|
||||
@ -3592,7 +3592,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
||||
[ 13, Moves.LICK ],
|
||||
[ 19, Moves.HEADBUTT ],
|
||||
[ 27, Moves.ROAR ],
|
||||
[ 35, Moves.RAGE ],
|
||||
[ 35, Moves.LAST_RESORT ],
|
||||
[ 43, Moves.PLAY_ROUGH ],
|
||||
[ 51, Moves.PAYBACK ],
|
||||
[ 59, Moves.CRUNCH ],
|
||||
@ -3868,7 +3868,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
||||
[ 20, Moves.WING_ATTACK ],
|
||||
[ 24, Moves.SLASH ],
|
||||
[ 28, Moves.STEEL_WING ],
|
||||
[ 32, Moves.AUTOTOMIZE ],
|
||||
[ 32, Moves.PAYBACK ],
|
||||
[ 36, Moves.DRILL_PECK ],
|
||||
[ 40, Moves.METAL_SOUND ],
|
||||
[ 44, Moves.SPIKES ],
|
||||
@ -3923,11 +3923,12 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
||||
[ 20, Moves.DRAGON_BREATH ],
|
||||
[ 25, Moves.BUBBLE_BEAM ],
|
||||
[ 30, Moves.AGILITY ],
|
||||
[ 37, Moves.LASER_FOCUS ],
|
||||
[ 37, Moves.WATER_PULSE ],
|
||||
[ 44, Moves.DRAGON_PULSE ],
|
||||
[ 51, Moves.HYDRO_PUMP ],
|
||||
[ 58, Moves.DRAGON_DANCE ],
|
||||
[ 65, Moves.RAIN_DANCE ],
|
||||
[ 72, Moves.WAVE_CRASH ],
|
||||
],
|
||||
[Species.PHANPY]: [
|
||||
[ 1, Moves.TACKLE ],
|
||||
@ -3974,10 +3975,9 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
||||
[ 35, Moves.RECOVER ],
|
||||
[ 40, Moves.DISCHARGE ],
|
||||
[ 45, Moves.TRI_ATTACK ],
|
||||
[ 50, Moves.MAGIC_COAT ],
|
||||
[ 55, Moves.LOCK_ON ],
|
||||
[ 60, Moves.ZAP_CANNON ],
|
||||
[ 65, Moves.HYPER_BEAM ],
|
||||
[ 50, Moves.LOCK_ON ],
|
||||
[ 55, Moves.ZAP_CANNON ],
|
||||
[ 60, Moves.HYPER_BEAM ],
|
||||
],
|
||||
[Species.STANTLER]: [
|
||||
[ 1, Moves.TACKLE ],
|
||||
@ -4268,7 +4268,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
||||
[ 72, Moves.FIRE_BLAST ],
|
||||
[ 81, Moves.FUTURE_SIGHT ],
|
||||
[ 90, Moves.SKY_ATTACK ],
|
||||
[ 99, Moves.BURN_UP ],
|
||||
[ 99, Moves.OVERHEAT ],
|
||||
],
|
||||
[Species.CELEBI]: [
|
||||
[ 1, Moves.CONFUSION ],
|
||||
|
@ -135,3 +135,43 @@ export function getStatusEffectCatchRateMultiplier(statusEffect: StatusEffect):
|
||||
|
||||
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 { IncrementMovePriorityAbAttr, applyAbAttrs } from "./ability";
|
||||
import { ProtectAttr } from "./move";
|
||||
import { BattlerIndex } from "#app/battle.js";
|
||||
|
||||
export enum TerrainType {
|
||||
NONE,
|
||||
@ -48,13 +49,13 @@ export class Terrain {
|
||||
return 1;
|
||||
}
|
||||
|
||||
isMoveTerrainCancelled(user: Pokemon, move: Move): boolean {
|
||||
isMoveTerrainCancelled(user: Pokemon, targets: BattlerIndex[], move: Move): boolean {
|
||||
switch (this.terrainType) {
|
||||
case TerrainType.PSYCHIC:
|
||||
if (!move.getAttrs(ProtectAttr).length) {
|
||||
const priority = new Utils.IntegerHolder(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);
|
||||
}
|
||||
|
||||
isMoveTerrainCancelled(user: Pokemon, move: Move) {
|
||||
return this.terrain && this.terrain.isMoveTerrainCancelled(user, move);
|
||||
isMoveTerrainCancelled(user: Pokemon, targets: BattlerIndex[], move: Move) {
|
||||
return this.terrain && this.terrain.isMoveTerrainCancelled(user, targets, move);
|
||||
}
|
||||
|
||||
getTerrainType() : TerrainType {
|
||||
|
@ -14,7 +14,7 @@ import { AttackTypeBoosterModifier, DamageMoneyRewardModifier, EnemyDamageBooste
|
||||
import { PokeballType } from '../data/pokeball';
|
||||
import { Gender } from '../data/gender';
|
||||
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 { reverseCompatibleTms, tmSpecies } from '../data/tms';
|
||||
import { DamagePhase, FaintPhase, LearnMovePhase, ObtainStatusEffectPhase, StatChangePhase, SwitchSummonPhase } from '../phases';
|
||||
@ -2551,6 +2551,10 @@ export class PlayerPokemon extends Pokemon {
|
||||
this.generateCompatibleTms();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a Promise to fuse two PlayerPokemon together
|
||||
* @param pokemon The PlayerPokemon to fuse to this one
|
||||
*/
|
||||
fuse(pokemon: PlayerPokemon): Promise<void> {
|
||||
return new Promise(resolve => {
|
||||
this.fusionSpecies = pokemon.species;
|
||||
@ -2564,8 +2568,25 @@ export class PlayerPokemon extends Pokemon {
|
||||
this.scene.validateAchv(achvs.SPLICE);
|
||||
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.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.updateInfo(true);
|
||||
const fusedPartyMemberIndex = this.scene.getParty().indexOf(pokemon);
|
||||
|