Merge branch 'main' into side

pull/246/head
NxKarim 2024-05-14 12:37:18 -06:00 committed by GitHub
commit 7b4a54d5ef
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
180 changed files with 27298 additions and 8745 deletions

View File

@ -44,7 +44,8 @@ Check out our [Trello Board](https://trello.com/b/z10B703R/pokerogue-board) to s
- Arata Iiyoshi
- Atsuhiro Ishizuna
- Pokémon Black/White 2
- Firel (Additional biome themes)
- Firel (Custom Metropolis and Laboratory biome music)
- Lmz (Custom Jungle biome music)
- edifette (Title screen music)
### 🎵 Sound Effects

View File

@ -11,6 +11,7 @@
<meta property="og:image" content="https://pokerogue.net/logo512.png" />
<link rel="apple-touch-icon" href="./logo512.png" />
<link rel="shortcut icon" type="image/png" href="./logo512.png" />
<link rel="canonical" href="https://pokerogue.net" />
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
<style type="text/css">

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 5.9 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 20 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

@ -5008,6 +5008,11 @@
2,
2
],
"94-mega": [
1,
1,
1
],
"127-mega": [
0,
1,
@ -5259,9 +5264,479 @@
1
],
"696": [
2,
2,
2
],
"697": [
0,
1,
2
],
"700": [
0,
0
1,
1
],
"704": [
0,
1,
1
],
"705": [
0,
1,
1
],
"706": [
0,
1,
1
],
"708": [
0,
1,
1
],
"709": [
0,
1,
1
],
"710": [
0,
1,
1
],
"711": [
1,
1,
1
],
"716-active": [
0,
1,
1
],
"716-neutral": [
0,
1,
1
],
"717": [
0,
1,
1
],
"720-unbound": [
1,
1,
1
],
"720": [
1,
1,
1
],
"728": [
0,
1,
1
],
"729": [
0,
2,
2
],
"730": [
0,
2,
1
],
"747": [
0,
2,
2
],
"748": [
0,
1,
1
],
"753": [
0,
1,
1
],
"754": [
0,
1,
2
],
"755": [
0,
1,
1
],
"756": [
0,
1,
1
],
"761": [
0,
1,
1
],
"762": [
0,
1,
1
],
"763": [
0,
1,
1
],
"767": [
0,
1,
1
],
"768": [
0,
1,
1
],
"771": [
0,
1,
1
],
"789": [
1,
1,
1
],
"790": [
0,
1,
1
],
"791": [
1,
1,
1
],
"792": [
0,
1,
1
],
"793": [
0,
1,
1
],
"800-dawn-wings": [
0,
1,
1
],
"800-dusk-mane": [
0,
1,
1
],
"800-ultra": [
0,
1,
1
],
"800": [
0,
1,
1
],
"802": [
1,
1,
1
],
"808": [
0,
1,
1
],
"809": [
0,
1,
1
],
"821": [
0,
1,
1
],
"822": [
0,
1,
1
],
"823": [
0,
1,
1
],
"829": [
0,
1,
1
],
"830": [
0,
1,
1
],
"835": [
0,
1,
1
],
"836": [
0,
1,
1
],
"850": [
0,
1,
1
],
"851": [
0,
1,
1
],
"856": [
0,
1,
1
],
"857": [
0,
2,
2
],
"858": [
0,
1,
1
],
"863": [
0,
1,
1
],
"872": [
1,
1,
1
],
"873": [
1,
1,
1
],
"877-hangry": [
1,
1,
1
],
"877": [
1,
1,
1
],
"885": [
1,
1,
1
],
"886": [
1,
1,
1
],
"887": [
1,
1,
1
],
"890": [
0,
1,
1
],
"900": [
0,
1,
1
],
"901": [
0,
1,
1
],
"903": [
0,
1,
1
],
"909": [
0,
1,
1
],
"910": [
0,
2,
2
],
"911": [
0,
1,
1
],
"919": [
1,
1,
1
],
"920": [
1,
1,
1
],
"924": [
1,
1,
1
],
"925-four": [
1,
2,
2
],
"925-three": [
1,
2,
2
],
"932": [
0,
1,
1
],
"933": [
0,
1,
1
],
"934": [
0,
1,
1
],
"935": [
2,
2,
2
],
"936": [
2,
2,
2
],
"937": [
2,
2,
2
],
"948": [
0,
1,
1
],
"949": [
0,
1,
1
],
"962": [
1,
1,
2
],
"967": [
0,
1,
1
],
"968": [
0,
2,
2
],
"969": [
0,
1,
1
],
"970": [
0,
2,
2
],
"973": [
1,
1,
1
],
"978-curly": [
0,
2,
2
],
"978-droopy": [
0,
2,
2
],
"978-stretchy": [
0,
1,
1
],
"987": [
1,
1,
1
],
"988": [
0,
1,
1
],
"994": [
0,
1,
1
],
"999": [
1,
1,
1
],
"1000": [
1,

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -0,0 +1,18 @@
{
"1": {
"653510": "5e0b0b",
"443e3c": "4c3216",
"e39f33": "b52424",
"f0f0f2": "dfdea7",
"b56726": "971c1c",
"471515": "080808",
"b45250": "285234",
"902f2d": "153626",
"adaaae": "cbbe8c",
"756b66": "ad8c63",
"46413f": "4c3216",
"766c67": "ad8c63",
"621e1d": "0b241e",
"b56827": "971c1c"
}
}

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

View File

@ -0,0 +1,54 @@
{
"1": {
"101010": "101010",
"ccbd8f": "ccbd8f",
"807659": "807659",
"ffecb2": "ffecb2",
"345090": "75127d",
"7f4a16": "0f735f",
"64bfe8": "dd57e8",
"641e81": "451693",
"f29d49": "51d6ad",
"96301f": "0f457c",
"b857d9": "6c45da",
"f24949": "418fc9",
"a039c3": "6634c3",
"c37732": "3fc199",
"547fe9": "b33ccd",
"dd3238": "2f75b9",
"5959b3": "5959b3",
"9191f2": "9191f2",
"243659": "132b1b",
"3d5c99": "1e3824",
"262626": "447e48",
"1a1a1a": "2a552f",
"404040": "7ca376",
"5c8ae5": "324c37"
},
"2": {
"101010": "101010",
"ccbd8f": "3b2328",
"807659": "210f14",
"ffecb2": "553639",
"345090": "93221f",
"7f4a16": "592fb1",
"64bfe8": "fa8868",
"641e81": "97174a",
"f29d49": "8b67ff",
"96301f": "9b218e",
"b857d9": "f7477f",
"f24949": "f65be1",
"a039c3": "dc2a69",
"c37732": "824adc",
"547fe9": "d75343",
"dd3238": "c53fc3",
"5959b3": "5959b3",
"9191f2": "9191f2",
"243659": "37134c",
"3d5c99": "643071",
"262626": "d284b6",
"1a1a1a": "a65a93",
"404040": "faaed8",
"5c8ae5": "884e9f"
}
}

View File

@ -0,0 +1,28 @@
{
"1": {
"101010": "101010",
"84b4ce": "ac8781",
"364566": "603f3c",
"c0e0ec": "bfa19a",
"243659": "132b1b",
"3d5c99": "1e3824",
"2b2a2e": "518554",
"1a1a1a": "2c5232",
"404040": "7ca376",
"5c8ae5": "324c37",
"1f7a99": "1f7a99"
},
"2": {
"101010": "101010",
"84b4ce": "42283b",
"364566": "230d1e",
"c0e0ec": "613e56",
"243659": "37134c",
"3d5c99": "643071",
"2b2a2e": "d285a7",
"1a1a1a": "b2638b",
"404040": "f6badb",
"5c8ae5": "884e9f",
"1f7a99": "1f7a99"
}
}

View File

@ -0,0 +1,30 @@
{
"1": {
"4d4d4d": "816450",
"b3b3b3": "dbd4cd",
"101010": "101010",
"737373": "c1aa9a",
"242626": "0f0b2c",
"8c8c8c": "cbbfb5",
"798080": "323b6b",
"364d4d": "1d2250",
"293333": "12133a",
"663d4b": "3a0e5b",
"f24949": "9642b1",
"a63a4c": "672389"
},
"2": {
"4d4d4d": "7760b7",
"b3b3b3": "dcd9fa",
"101010": "222030",
"737373": "ab90ea",
"242626": "0b3071",
"8c8c8c": "bfb0f4",
"798080": "94cbf9",
"364d4d": "5f9ee4",
"293333": "2b61ae",
"663d4b": "0e0742",
"f24949": "222a90",
"a63a4c": "1a1c77"
}
}

View File

@ -0,0 +1,34 @@
{
"1": {
"8d3774": "e54c41",
"2c316e": "00473d",
"ef71c0": "ff8072",
"ffc8ea": "fff6e2",
"536fc3": "009469",
"b95094": "e54c41",
"7199db": "14af82",
"171717": "171717",
"9283a3": "808080",
"ccc2d0": "c2beb4",
"3c4b92": "006355",
"fafafa": "fff6e2",
"7090a3": "858d7d",
"a1d9e7": "92b599"
},
"2": {
"8d3774": "620a33",
"2c316e": "54041b",
"ef71c0": "dd3780",
"ffc8ea": "f5edee",
"536fc3": "a6213f",
"b95094": "a7225c",
"7199db": "be294a",
"171717": "171717",
"9283a3": "9283a3",
"ccc2d0": "bfb4b9",
"3c4b92": "770f29",
"fafafa": "f5edee",
"7090a3": "b88389",
"a1d9e7": "f7c1c5"
}
}

View File

@ -0,0 +1,230 @@
{
"textures": [
{
"image": "729_2.png",
"format": "RGBA8888",
"size": {
"w": 148,
"h": 148
},
"scale": 1,
"frames": [
{
"filename": "0006.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 71,
"h": 50
},
"spriteSourceSize": {
"x": 1,
"y": 0,
"w": 70,
"h": 50
},
"frame": {
"x": 0,
"y": 0,
"w": 70,
"h": 50
}
},
{
"filename": "0005.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 71,
"h": 50
},
"spriteSourceSize": {
"x": 1,
"y": 1,
"w": 70,
"h": 49
},
"frame": {
"x": 0,
"y": 50,
"w": 70,
"h": 49
}
},
{
"filename": "0007.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 71,
"h": 50
},
"spriteSourceSize": {
"x": 1,
"y": 1,
"w": 70,
"h": 49
},
"frame": {
"x": 0,
"y": 50,
"w": 70,
"h": 49
}
},
{
"filename": "0003.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 71,
"h": 50
},
"spriteSourceSize": {
"x": 0,
"y": 1,
"w": 69,
"h": 49
},
"frame": {
"x": 0,
"y": 99,
"w": 69,
"h": 49
}
},
{
"filename": "0009.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 71,
"h": 50
},
"spriteSourceSize": {
"x": 0,
"y": 1,
"w": 69,
"h": 49
},
"frame": {
"x": 0,
"y": 99,
"w": 69,
"h": 49
}
},
{
"filename": "0002.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 71,
"h": 50
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 68,
"h": 50
},
"frame": {
"x": 70,
"y": 0,
"w": 68,
"h": 50
}
},
{
"filename": "0010.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 71,
"h": 50
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 68,
"h": 50
},
"frame": {
"x": 70,
"y": 0,
"w": 68,
"h": 50
}
},
{
"filename": "0001.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 71,
"h": 50
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 67,
"h": 50
},
"frame": {
"x": 70,
"y": 50,
"w": 67,
"h": 50
}
},
{
"filename": "0004.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 71,
"h": 50
},
"spriteSourceSize": {
"x": 0,
"y": 2,
"w": 70,
"h": 48
},
"frame": {
"x": 69,
"y": 100,
"w": 70,
"h": 48
}
},
{
"filename": "0008.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 71,
"h": 50
},
"spriteSourceSize": {
"x": 0,
"y": 2,
"w": 70,
"h": 48
},
"frame": {
"x": 69,
"y": 100,
"w": 70,
"h": 48
}
}
]
}
],
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
"smartupdate": "$TexturePacker:SmartUpdate:ca6603181d5c8644f2bdbeecb46551b0:09ccc951204ac93cf598ed13a34f0429:b2d5dd692ec79c7357afdffa7b3670a9$"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

View File

@ -0,0 +1,230 @@
{
"textures": [
{
"image": "729_3.png",
"format": "RGBA8888",
"size": {
"w": 148,
"h": 148
},
"scale": 1,
"frames": [
{
"filename": "0006.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 71,
"h": 50
},
"spriteSourceSize": {
"x": 1,
"y": 0,
"w": 70,
"h": 50
},
"frame": {
"x": 0,
"y": 0,
"w": 70,
"h": 50
}
},
{
"filename": "0005.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 71,
"h": 50
},
"spriteSourceSize": {
"x": 1,
"y": 1,
"w": 70,
"h": 49
},
"frame": {
"x": 0,
"y": 50,
"w": 70,
"h": 49
}
},
{
"filename": "0007.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 71,
"h": 50
},
"spriteSourceSize": {
"x": 1,
"y": 1,
"w": 70,
"h": 49
},
"frame": {
"x": 0,
"y": 50,
"w": 70,
"h": 49
}
},
{
"filename": "0003.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 71,
"h": 50
},
"spriteSourceSize": {
"x": 0,
"y": 1,
"w": 69,
"h": 49
},
"frame": {
"x": 0,
"y": 99,
"w": 69,
"h": 49
}
},
{
"filename": "0009.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 71,
"h": 50
},
"spriteSourceSize": {
"x": 0,
"y": 1,
"w": 69,
"h": 49
},
"frame": {
"x": 0,
"y": 99,
"w": 69,
"h": 49
}
},
{
"filename": "0002.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 71,
"h": 50
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 68,
"h": 50
},
"frame": {
"x": 70,
"y": 0,
"w": 68,
"h": 50
}
},
{
"filename": "0010.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 71,
"h": 50
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 68,
"h": 50
},
"frame": {
"x": 70,
"y": 0,
"w": 68,
"h": 50
}
},
{
"filename": "0001.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 71,
"h": 50
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 67,
"h": 50
},
"frame": {
"x": 70,
"y": 50,
"w": 67,
"h": 50
}
},
{
"filename": "0004.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 71,
"h": 50
},
"spriteSourceSize": {
"x": 0,
"y": 2,
"w": 70,
"h": 48
},
"frame": {
"x": 69,
"y": 100,
"w": 70,
"h": 48
}
},
{
"filename": "0008.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 71,
"h": 50
},
"spriteSourceSize": {
"x": 0,
"y": 2,
"w": 70,
"h": 48
},
"frame": {
"x": 69,
"y": 100,
"w": 70,
"h": 48
}
}
]
}
],
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
"smartupdate": "$TexturePacker:SmartUpdate:ca6603181d5c8644f2bdbeecb46551b0:09ccc951204ac93cf598ed13a34f0429:b2d5dd692ec79c7357afdffa7b3670a9$"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

View File

@ -0,0 +1,18 @@
{
"2": {
"337287": "500518",
"101010": "101010",
"83e6d5": "a6213f",
"52a4b4": "770f29",
"91b9e1": "c17b97",
"bde5ff": "e9a5c0",
"bfbfd1": "bfb4b9",
"fafafa": "f5edee",
"737373": "737373",
"8b3959": "1d1638",
"ff8193": "614388",
"17417f": "3e0f2f",
"215ba5": "591945",
"2f82eb": "81387e"
}
}

View File

@ -0,0 +1,230 @@
{
"textures": [
{
"image": "730_2.png",
"format": "RGBA8888",
"size": {
"w": 206,
"h": 206
},
"scale": 1,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 69,
"h": 82
},
"spriteSourceSize": {
"x": 0,
"y": 3,
"w": 69,
"h": 79
},
"frame": {
"x": 0,
"y": 0,
"w": 69,
"h": 79
}
},
{
"filename": "0005.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 69,
"h": 82
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 68,
"h": 81
},
"frame": {
"x": 69,
"y": 0,
"w": 68,
"h": 81
}
},
{
"filename": "0007.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 69,
"h": 82
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 68,
"h": 81
},
"frame": {
"x": 69,
"y": 0,
"w": 68,
"h": 81
}
},
{
"filename": "0006.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 69,
"h": 82
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 68,
"h": 81
},
"frame": {
"x": 0,
"y": 79,
"w": 68,
"h": 81
}
},
{
"filename": "0003.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 69,
"h": 82
},
"spriteSourceSize": {
"x": 0,
"y": 2,
"w": 69,
"h": 79
},
"frame": {
"x": 68,
"y": 81,
"w": 69,
"h": 79
}
},
{
"filename": "0009.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 69,
"h": 82
},
"spriteSourceSize": {
"x": 0,
"y": 2,
"w": 69,
"h": 79
},
"frame": {
"x": 68,
"y": 81,
"w": 69,
"h": 79
}
},
{
"filename": "0004.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 69,
"h": 82
},
"spriteSourceSize": {
"x": 0,
"y": 2,
"w": 69,
"h": 79
},
"frame": {
"x": 137,
"y": 0,
"w": 69,
"h": 79
}
},
{
"filename": "0008.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 69,
"h": 82
},
"spriteSourceSize": {
"x": 0,
"y": 2,
"w": 69,
"h": 79
},
"frame": {
"x": 137,
"y": 0,
"w": 69,
"h": 79
}
},
{
"filename": "0002.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 69,
"h": 82
},
"spriteSourceSize": {
"x": 0,
"y": 3,
"w": 69,
"h": 78
},
"frame": {
"x": 137,
"y": 79,
"w": 69,
"h": 78
}
},
{
"filename": "0010.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 69,
"h": 82
},
"spriteSourceSize": {
"x": 0,
"y": 3,
"w": 69,
"h": 78
},
"frame": {
"x": 137,
"y": 79,
"w": 69,
"h": 78
}
}
]
}
],
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
"smartupdate": "$TexturePacker:SmartUpdate:2717094fe274718326c9b0fe3237866b:3ad96e0a8adb3bab17597f2996c3f5cc:fcd0d2cb6b26724e796ae0dcb71fae3f$"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -0,0 +1,32 @@
{
"1": {
"234028": "2e1643",
"5ba668": "4e2c62",
"468050": "3e2253",
"101010": "101010",
"315945": "0e2616",
"549977": "1b3822",
"69bf94": "27452c",
"d98d9a": "a55c36",
"ffbfca": "b47145",
"803340": "682c16",
"f8f8f8": "f8f8f8",
"cc5266": "a55c36",
"bfbfbf": "bfbfbf"
},
"2": {
"234028": "531034",
"5ba668": "ce54b0",
"468050": "9b2d76",
"101010": "101010",
"315945": "441342",
"549977": "5a215a",
"69bf94": "6e3472",
"d98d9a": "263b83",
"ffbfca": "3454a5",
"803340": "0b1d4e",
"f8f8f8": "f8f8f8",
"cc5266": "263b83",
"bfbfbf": "bfbfbf"
}
}

View File

@ -0,0 +1,15 @@
{
"1": {
"803340": "82180e",
"101010": "101010",
"ff667f": "c95623",
"cc5266": "ac351f",
"ffbfca": "f48b49",
"d98d9a": "c95623",
"315945": "122a1a",
"69bf94": "314e36",
"bfbfbf": "c9d6b7",
"737373": "859970",
"f8f8f8": "eff7e2"
}
}

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -0,0 +1,26 @@
{
"1": {
"476629": "215e59",
"8fcc52": "70d2e1",
"101010": "101010",
"6b993d": "398793",
"80334d": "251936",
"b3476b": "7e5cdb",
"e55c8a": "9f86e4",
"bfbfbf": "bfbfbf",
"737373": "737373",
"f8f8f8": "f8f8f8"
},
"2": {
"476629": "3e0a11",
"8fcc52": "86232e",
"101010": "101010",
"6b993d": "5a0a16",
"80334d": "0f0f0f",
"b3476b": "254536",
"e55c8a": "2c574a",
"bfbfbf": "af8260",
"737373": "72585f",
"f8f8f8": "e4c59e"
}
}

View File

@ -0,0 +1,30 @@
{
"1": {
"446328": "215e59",
"96c853": "70d2e1",
"0f0f0f": "0f0f0f",
"659344": "398793",
"ebe130": "e66556",
"72585f": "72585f",
"fdfdfd": "fdfdfd",
"c7b8c4": "c7b8c4",
"962354": "45366e",
"f26284": "7e5cdb",
"6a1533": "251936",
"cc4876": "674dad"
},
"2": {
"446328": "3e0a11",
"96c853": "86232e",
"0f0f0f": "0f0f0f",
"659344": "5a0a16",
"ebe130": "5c0505",
"72585f": "574348",
"fdfdfd": "e4c59e",
"c7b8c4": "af8260",
"962354": "162d25",
"f26284": "2c574a",
"6a1533": "0f0f0f",
"cc4876": "254536"
}
}

View File

@ -0,0 +1,36 @@
{
"1": {
"00131c": "00131c",
"c8a848": "af3e31",
"c13d76": "674dad",
"eaee46": "e66556",
"335e4b": "215e59",
"832d4e": "45366e",
"6d9b62": "398793",
"9ce783": "b3f5ff",
"84c36f": "70d2e1",
"dac2d5": "dac2d5",
"fefefe": "fefefe",
"6a6274": "6a6274",
"ef91aa": "c0abf7",
"d75f7f": "9f86e4",
"441e2c": "251936"
},
"2": {
"00131c": "00131c",
"c8a848": "391717",
"c13d76": "254536",
"eaee46": "5c0505",
"335e4b": "3e0a11",
"832d4e": "162d25",
"6d9b62": "5a0a16",
"9ce783": "b83040",
"84c36f": "86232e",
"dac2d5": "af8260",
"fefefe": "e4c59e",
"6a6274": "72585f",
"ef91aa": "438471",
"d75f7f": "2c574a",
"441e2c": "0f0f0f"
}
}

View File

@ -0,0 +1,24 @@
{
"1": {
"46334f": "844008",
"080808": "080808",
"a65e97": "e8a92a",
"713e70": "c86910",
"3f5252": "202733",
"5c7877": "293141",
"8a9f9e": "494950",
"bed3cf": "6e6d6d",
"867b73": "ecd42a"
},
"2": {
"46334f": "091b52",
"080808": "080808",
"a65e97": "2849ac",
"713e70": "1c306d",
"3f5252": "3d105f",
"5c7877": "5722a6",
"8a9f9e": "452772",
"bed3cf": "844caf",
"867b73": "8cdded"
}
}

View File

@ -0,0 +1,36 @@
{
"1": {
"639a67": "27272b",
"c8e1cd": "6e6d6d",
"546b57": "202733",
"81b68e": "494950",
"101010": "101010",
"842886": "c85710",
"000000": "000000",
"cc5fcf": "ff7e2c",
"9a6982": "c86910",
"7a4952": "844008",
"2f3330": "14132b",
"404843": "1e1f32",
"498f6c": "e7cd19",
"bd95a8": "e8a92a",
"5c635e": "283051"
},
"2": {
"639a67": "00054d",
"c8e1cd": "2849ac",
"546b57": "091b52",
"81b68e": "1c306d",
"101010": "101010",
"842886": "5722a6",
"000000": "000000",
"cc5fcf": "8b51e1",
"9a6982": "452772",
"7a4952": "3d105f",
"2f3330": "2f3330",
"404843": "404843",
"498f6c": "8cdded",
"bd95a8": "844caf",
"5c635e": "5c635e"
}
}

View File

@ -0,0 +1,34 @@
{
"1": {
"814f23": "85374d",
"ab732b": "ce5a6f",
"dea220": "ff7c8e",
"ffda45": "ffbeae",
"101010": "101010",
"3d3534": "2c4048",
"59544e": "38585b",
"f9f9f9": "f9f9f9",
"67675f": "426e73",
"dcdcda": "c2effc",
"8a8d7e": "6a8f97",
"b1b5a6": "98d6f0",
"741012": "f39e56",
"c2292e": "ffce6b"
},
"2": {
"814f23": "101010",
"ab732b": "2d2931",
"dea220": "64486f",
"ffda45": "9b6e98",
"101010": "101010",
"3d3534": "780000",
"59544e": "9e002e",
"f9f9f9": "f9f9f9",
"67675f": "ba2b41",
"dcdcda": "ffbe6e",
"8a8d7e": "d66352",
"b1b5a6": "f49769",
"741012": "741012",
"c2292e": "c2292e"
}
}

View File

@ -0,0 +1,34 @@
{
"1": {
"3d3534": "2c4048",
"211d1d": "232a2b",
"59544e": "38585b",
"814f23": "85374d",
"101010": "101010",
"ab732b": "ce5a6f",
"67675f": "426e73",
"ffda45": "ffbeae",
"8a8d7e": "6a8f97",
"dea220": "ff7c8e",
"b1b5a6": "98d6f0",
"dcdcda": "c2effc",
"c2292e": "ffce6b",
"f9f9f9": "f9f9f9"
},
"2": {
"3d3534": "780000",
"211d1d": "570000",
"59544e": "9e002e",
"814f23": "101010",
"101010": "101010",
"ab732b": "2d2931",
"67675f": "ba2b41",
"ffda45": "9b6e98",
"8a8d7e": "d66352",
"dea220": "64486f",
"b1b5a6": "f49769",
"dcdcda": "ffbe6e",
"c2292e": "c2292e",
"f9f9f9": "f9f9f9"
}
}

View File

@ -0,0 +1,28 @@
{
"1": {
"080808": "080808",
"201a12": "4b2a5e",
"505038": "bc7dc3",
"272b47": "6a445c",
"344172": "ad6f83",
"4967ab": "e7a6c9",
"403524": "845195",
"979b9e": "57445a",
"6c5d64": "2e262f",
"31291d": "684f59",
"ac9534": "be919e"
},
"2": {
"080808": "080808",
"201a12": "a46828",
"505038": "eaae36",
"272b47": "612a0e",
"344172": "b95212",
"4967ab": "dc7c16",
"403524": "b27017",
"979b9e": "743419",
"6c5d64": "541705",
"31291d": "825821",
"ac9534": "b6a255"
}
}

View File

@ -0,0 +1,30 @@
{
"1": {
"403524": "ad6f83",
"201a12": "201a12",
"505038": "e7a6c9",
"252d49": "c8658a",
"080808": "080808",
"2f4577": "f4a0b9",
"426eb2": "ffdeeb",
"95a1b6": "57445a",
"e21d22": "e21d22",
"f4f4f4": "f4f4f4",
"659aba": "fff6f8",
"444f59": "2e262f"
},
"2": {
"403524": "b95212",
"201a12": "201a12",
"505038": "dc7c16",
"252d49": "91591e",
"080808": "080808",
"2f4577": "eaae36",
"426eb2": "edd472",
"95a1b6": "743419",
"e21d22": "e21d22",
"f4f4f4": "f4f4f4",
"659aba": "fff1b9",
"444f59": "541705"
}
}

View File

@ -0,0 +1,32 @@
{
"1": {
"010101": "010101",
"251d4e": "6a445c",
"434475": "f4a0b9",
"303360": "ad6f83",
"646ca8": "ffdeeb",
"4d5488": "e7a6c9",
"e80000": "df7b10",
"ffa8a8": "ffa8a8",
"4e4150": "57445a",
"2e262f": "2e262f",
"18173d": "4b2a5e",
"2c2b58": "845195",
"3e3d6d": "bc7dc3"
},
"2": {
"010101": "010101",
"251d4e": "612a0e",
"434475": "dc7c16",
"303360": "b95212",
"646ca8": "edd472",
"4d5488": "eaae36",
"e80000": "e80000",
"ffa8a8": "ff4a4a",
"4e4150": "743419",
"2e262f": "541705",
"18173d": "461010",
"2c2b58": "5a0015",
"3e3d6d": "8f0021"
}
}

View File

@ -0,0 +1,30 @@
{
"1": {
"844840": "051514",
"101010": "101010",
"bd8d62": "e0bb76",
"a26642": "aa8e5a",
"d1cccb": "e7c78d",
"fbfbfb": "fdffe1",
"837a76": "b39363",
"9a6229": "13423f",
"f7da11": "499e8c",
"cf9529": "28797b",
"76c745": "2c4f4d",
"6d943a": "172c2b"
},
"2": {
"844840": "313e38",
"101010": "101010",
"bd8d62": "509468",
"a26642": "3d5d59",
"d1cccb": "a0bcaa",
"fbfbfb": "fbfbfb",
"837a76": "43554d",
"9a6229": "2b2042",
"f7da11": "776baf",
"cf9529": "56447e",
"76c745": "202758",
"6d943a": "1e1a42"
}
}

View File

@ -0,0 +1,30 @@
{
"1": {
"a06d21": "a06d21",
"0d0d0d": "0d0d0d",
"fad833": "e0bb76",
"c8ad25": "aa8e5a",
"495043": "28797b",
"cfc7c6": "cbcdb4",
"8c7b7a": "8c7b7a",
"dec12e": "e0bb76",
"f2efef": "fdffe1",
"fff665": "e7c78d",
"373737": "2c4f4d",
"5e7460": "499e8c"
},
"2": {
"a06d21": "213d3a",
"0d0d0d": "0d0d0d",
"fad833": "509468",
"c8ad25": "3d5d59",
"495043": "3c2e5b",
"cfc7c6": "cbcbcb",
"8c7b7a": "43554d",
"dec12e": "509468",
"f2efef": "ffffff",
"fff665": "a0bcaa",
"373737": "2b1e47",
"5e7460": "776baf"
}
}

View File

@ -0,0 +1,30 @@
{
"1": {
"66716c": "59879a",
"bfc1bf": "b4e0d3",
"010101": "010101",
"8f9c95": "85c1c0",
"181a1d": "181a1d",
"272d2e": "342b49",
"3d4547": "4e385a",
"84726f": "9591a7",
"5b4e4d": "4e455c",
"ada09a": "d5d0dd",
"b3b6b3": "b3b6b3",
"a4a5a4": "a4a5a4"
},
"2": {
"66716c": "331a37",
"bfc1bf": "92264b",
"010101": "010101",
"8f9c95": "6d0b3c",
"181a1d": "0f2127",
"272d2e": "234a56",
"3d4547": "417778",
"84726f": "27293c",
"5b4e4d": "141626",
"ada09a": "4c4d62",
"b3b6b3": "b3b6b3",
"a4a5a4": "a4a5a4"
}
}

View File

@ -0,0 +1,36 @@
{
"1": {
"382423": "1c2825",
"0f0f0f": "0f0f0f",
"502f29": "273b32",
"231a18": "0c1515",
"77655b": "77655b",
"9c8d86": "9c8d86",
"4b4236": "4b4236",
"63443d": "31563f",
"ca8b35": "c48e81",
"fec643": "f7eee1",
"fcfcfc": "fcfcfc",
"25521f": "557f24",
"fec672": "f2cab8",
"95908a": "95908a",
"b4b4b1": "b4b4b1"
},
"2": {
"382423": "1e2249",
"0f0f0f": "0f0f0f",
"502f29": "323760",
"231a18": "111433",
"77655b": "c199ae",
"9c8d86": "ede6eb",
"4b4236": "593d4a",
"63443d": "46527a",
"ca8b35": "437aff",
"fec643": "bfeeff",
"fcfcfc": "fcfcfc",
"25521f": "f83259",
"fec672": "96b7ff",
"95908a": "95908a",
"b4b4b1": "b4b4b1"
}
}

View File

@ -0,0 +1,32 @@
{
"1": {
"36213e": "113b69",
"415b81": "3a0f0e",
"533662": "136e81",
"9ebade": "bd795f",
"0f110d": "0f110d",
"718fbe": "9f4c3d",
"8e2458": "12968b",
"6a56b3": "722738",
"36326d": "210609",
"f8feff": "f8feff",
"9b98a9": "9b98a9",
"de2f41": "31dabb",
"eb357c": "31dabb"
},
"2": {
"36213e": "601522",
"415b81": "152b2f",
"533662": "982e33",
"9ebade": "256258",
"0f110d": "0f110d",
"718fbe": "194648",
"8e2458": "cc5427",
"6a56b3": "65b571",
"36326d": "06131a",
"f8feff": "f4ebc8",
"9b98a9": "c5a37b",
"de2f41": "f49633",
"eb357c": "f49633"
}
}

View File

@ -0,0 +1,36 @@
{
"1": {
"cf5d1b": "8cd9d9",
"f8ad21": "ade4e4",
"efe657": "dafefe",
"83260e": "152828",
"a35f2a": "76976a",
"c03f2b": "234141",
"c3916e": "ade4e4",
"dac0af": "a4ba9e",
"ff512d": "366565",
"546978": "546978",
"fafae2": "ffffff",
"ff817a": "448282",
"000000": "000000",
"3d505e": "3d505e",
"202d35": "202d35"
},
"2": {
"cf5d1b": "2ce455",
"f8ad21": "33ff65",
"efe657": "6aff8f",
"83260e": "162319",
"a35f2a": "55754a",
"c03f2b": "243929",
"c3916e": "33ff65",
"dac0af": "82977c",
"ff512d": "38583f",
"546978": "546978",
"fafae2": "e5ffec",
"ff817a": "4a7854",
"000000": "000000",
"3d505e": "3d505e",
"202d35": "202d35"
}
}

View File

@ -0,0 +1,188 @@
{
"textures": [
{
"image": "910_2.png",
"format": "RGBA8888",
"size": {
"w": 124,
"h": 124
},
"scale": 1,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 62,
"h": 59
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 62,
"h": 59
},
"frame": {
"x": 0,
"y": 0,
"w": 62,
"h": 59
}
},
{
"filename": "0002.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 62,
"h": 59
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 62,
"h": 59
},
"frame": {
"x": 0,
"y": 0,
"w": 62,
"h": 59
}
},
{
"filename": "0003.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 62,
"h": 59
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 62,
"h": 59
},
"frame": {
"x": 62,
"y": 0,
"w": 62,
"h": 59
}
},
{
"filename": "0004.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 62,
"h": 59
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 62,
"h": 59
},
"frame": {
"x": 62,
"y": 0,
"w": 62,
"h": 59
}
},
{
"filename": "0007.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 62,
"h": 59
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 62,
"h": 59
},
"frame": {
"x": 0,
"y": 59,
"w": 62,
"h": 59
}
},
{
"filename": "0008.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 62,
"h": 59
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 62,
"h": 59
},
"frame": {
"x": 0,
"y": 59,
"w": 62,
"h": 59
}
},
{
"filename": "0005.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 62,
"h": 59
},
"spriteSourceSize": {
"x": 0,
"y": 1,
"w": 62,
"h": 58
},
"frame": {
"x": 62,
"y": 59,
"w": 62,
"h": 58
}
},
{
"filename": "0006.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 62,
"h": 59
},
"spriteSourceSize": {
"x": 0,
"y": 1,
"w": 62,
"h": 58
},
"frame": {
"x": 62,
"y": 59,
"w": 62,
"h": 58
}
}
]
}
],
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
"smartupdate": "$TexturePacker:SmartUpdate:d1df235399de291d5ee21b2bdc4bd919:b63ecdbe9164a1c0d065f3c19c85efb3:4ef35bbfad22352c7f8d853285e12bca$"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@ -0,0 +1,188 @@
{
"textures": [
{
"image": "910_3.png",
"format": "RGBA8888",
"size": {
"w": 124,
"h": 124
},
"scale": 1,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 62,
"h": 59
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 62,
"h": 59
},
"frame": {
"x": 0,
"y": 0,
"w": 62,
"h": 59
}
},
{
"filename": "0002.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 62,
"h": 59
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 62,
"h": 59
},
"frame": {
"x": 0,
"y": 0,
"w": 62,
"h": 59
}
},
{
"filename": "0003.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 62,
"h": 59
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 62,
"h": 59
},
"frame": {
"x": 62,
"y": 0,
"w": 62,
"h": 59
}
},
{
"filename": "0004.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 62,
"h": 59
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 62,
"h": 59
},
"frame": {
"x": 62,
"y": 0,
"w": 62,
"h": 59
}
},
{
"filename": "0007.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 62,
"h": 59
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 62,
"h": 59
},
"frame": {
"x": 0,
"y": 59,
"w": 62,
"h": 59
}
},
{
"filename": "0008.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 62,
"h": 59
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 62,
"h": 59
},
"frame": {
"x": 0,
"y": 59,
"w": 62,
"h": 59
}
},
{
"filename": "0005.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 62,
"h": 59
},
"spriteSourceSize": {
"x": 0,
"y": 1,
"w": 62,
"h": 58
},
"frame": {
"x": 62,
"y": 59,
"w": 62,
"h": 58
}
},
{
"filename": "0006.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 62,
"h": 59
},
"spriteSourceSize": {
"x": 0,
"y": 1,
"w": 62,
"h": 58
},
"frame": {
"x": 62,
"y": 59,
"w": 62,
"h": 58
}
}
]
}
],
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
"smartupdate": "$TexturePacker:SmartUpdate:d1df235399de291d5ee21b2bdc4bd919:b63ecdbe9164a1c0d065f3c19c85efb3:4ef35bbfad22352c7f8d853285e12bca$"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@ -0,0 +1,54 @@
{
"1": {
"d20000": "3fbcbc",
"f45511": "91dada",
"ee8b08": "81d5d5",
"ffd017": "b4e6e6",
"5b5c5e": "5b5c5e",
"fcfcfc": "cccccc",
"9fa0a2": "758a70",
"333c36": "333c36",
"ba3227": "234141",
"741010": "152828",
"ff4a3c": "366565",
"0f0f0f": "0f0f0f",
"d20300": "3fbcbc",
"595d5f": "5b5c5e",
"f6520d": "91dada",
"fafcf9": "cccccc",
"ef8b06": "81d5d5",
"ffd00b": "d3dfbe",
"343c38": "343c38",
"9ca1a3": "758a70",
"bc3126": "234141",
"750d0d": "152828",
"ff4539": "366565",
"0e100c": "0e100c"
},
"2": {
"d20000": "0ea631",
"f45511": "2fe757",
"ee8b08": "08e739",
"ffd017": "4ffc75",
"5b5c5e": "5b5c5e",
"fcfcfc": "e5ffec",
"9fa0a2": "82977c",
"333c36": "333c36",
"ba3227": "243929",
"741010": "162319",
"ff4a3c": "38583f",
"0f0f0f": "0f0f0f",
"d20300": "0ea631",
"595d5f": "5b5c5e",
"f6520d": "2fe757",
"fafcf9": "e5ffec",
"ef8b06": "08e739",
"ffd00b": "aaee60",
"343c38": "343c38",
"9ca1a3": "82977c",
"bc3126": "243929",
"750d0d": "162319",
"ff4539": "38583f",
"0e100c": "0e100c"
}
}

View File

@ -0,0 +1,272 @@
{
"textures": [
{
"image": "968_2.png",
"format": "RGBA8888",
"size": {
"w": 185,
"h": 185
},
"scale": 1,
"frames": [
{
"filename": "0003.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 96,
"h": 38
},
"spriteSourceSize": {
"x": 1,
"y": 0,
"w": 94,
"h": 38
},
"frame": {
"x": 0,
"y": 0,
"w": 94,
"h": 38
}
},
{
"filename": "0011.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 96,
"h": 38
},
"spriteSourceSize": {
"x": 1,
"y": 0,
"w": 94,
"h": 38
},
"frame": {
"x": 0,
"y": 0,
"w": 94,
"h": 38
}
},
{
"filename": "0007.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 96,
"h": 38
},
"spriteSourceSize": {
"x": 0,
"y": 1,
"w": 91,
"h": 33
},
"frame": {
"x": 94,
"y": 0,
"w": 91,
"h": 33
}
},
{
"filename": "0004.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 96,
"h": 38
},
"spriteSourceSize": {
"x": 0,
"y": 1,
"w": 94,
"h": 36
},
"frame": {
"x": 0,
"y": 38,
"w": 94,
"h": 36
}
},
{
"filename": "0010.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 96,
"h": 38
},
"spriteSourceSize": {
"x": 0,
"y": 1,
"w": 94,
"h": 36
},
"frame": {
"x": 0,
"y": 38,
"w": 94,
"h": 36
}
},
{
"filename": "0001.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 96,
"h": 38
},
"spriteSourceSize": {
"x": 3,
"y": 0,
"w": 93,
"h": 38
},
"frame": {
"x": 0,
"y": 74,
"w": 93,
"h": 38
}
},
{
"filename": "0006.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 96,
"h": 38
},
"spriteSourceSize": {
"x": 0,
"y": 1,
"w": 92,
"h": 32
},
"frame": {
"x": 93,
"y": 74,
"w": 92,
"h": 32
}
},
{
"filename": "0008.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 96,
"h": 38
},
"spriteSourceSize": {
"x": 0,
"y": 1,
"w": 92,
"h": 32
},
"frame": {
"x": 93,
"y": 74,
"w": 92,
"h": 32
}
},
{
"filename": "0002.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 96,
"h": 38
},
"spriteSourceSize": {
"x": 2,
"y": 0,
"w": 93,
"h": 38
},
"frame": {
"x": 0,
"y": 112,
"w": 93,
"h": 38
}
},
{
"filename": "0012.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 96,
"h": 38
},
"spriteSourceSize": {
"x": 2,
"y": 0,
"w": 93,
"h": 38
},
"frame": {
"x": 0,
"y": 112,
"w": 93,
"h": 38
}
},
{
"filename": "0005.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 96,
"h": 38
},
"spriteSourceSize": {
"x": 0,
"y": 2,
"w": 93,
"h": 33
},
"frame": {
"x": 0,
"y": 150,
"w": 93,
"h": 33
}
},
{
"filename": "0009.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 96,
"h": 38
},
"spriteSourceSize": {
"x": 0,
"y": 2,
"w": 93,
"h": 33
},
"frame": {
"x": 0,
"y": 150,
"w": 93,
"h": 33
}
}
]
}
],
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
"smartupdate": "$TexturePacker:SmartUpdate:73a45bef4ca14afe6f4361208ee9e814:fff7d9abe2aee5a411a1e8c22cae78cc:0a4e1115d2108d4376fa446e83ec1675$"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

View File

@ -0,0 +1,272 @@
{
"textures": [
{
"image": "968_3.png",
"format": "RGBA8888",
"size": {
"w": 185,
"h": 185
},
"scale": 1,
"frames": [
{
"filename": "0003.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 96,
"h": 38
},
"spriteSourceSize": {
"x": 1,
"y": 0,
"w": 94,
"h": 38
},
"frame": {
"x": 0,
"y": 0,
"w": 94,
"h": 38
}
},
{
"filename": "0011.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 96,
"h": 38
},
"spriteSourceSize": {
"x": 1,
"y": 0,
"w": 94,
"h": 38
},
"frame": {
"x": 0,
"y": 0,
"w": 94,
"h": 38
}
},
{
"filename": "0007.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 96,
"h": 38
},
"spriteSourceSize": {
"x": 0,
"y": 1,
"w": 91,
"h": 33
},
"frame": {
"x": 94,
"y": 0,
"w": 91,
"h": 33
}
},
{
"filename": "0004.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 96,
"h": 38
},
"spriteSourceSize": {
"x": 0,
"y": 1,
"w": 94,
"h": 36
},
"frame": {
"x": 0,
"y": 38,
"w": 94,
"h": 36
}
},
{
"filename": "0010.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 96,
"h": 38
},
"spriteSourceSize": {
"x": 0,
"y": 1,
"w": 94,
"h": 36
},
"frame": {
"x": 0,
"y": 38,
"w": 94,
"h": 36
}
},
{
"filename": "0001.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 96,
"h": 38
},
"spriteSourceSize": {
"x": 3,
"y": 0,
"w": 93,
"h": 38
},
"frame": {
"x": 0,
"y": 74,
"w": 93,
"h": 38
}
},
{
"filename": "0006.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 96,
"h": 38
},
"spriteSourceSize": {
"x": 0,
"y": 1,
"w": 92,
"h": 32
},
"frame": {
"x": 93,
"y": 74,
"w": 92,
"h": 32
}
},
{
"filename": "0008.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 96,
"h": 38
},
"spriteSourceSize": {
"x": 0,
"y": 1,
"w": 92,
"h": 32
},
"frame": {
"x": 93,
"y": 74,
"w": 92,
"h": 32
}
},
{
"filename": "0002.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 96,
"h": 38
},
"spriteSourceSize": {
"x": 2,
"y": 0,
"w": 93,
"h": 38
},
"frame": {
"x": 0,
"y": 112,
"w": 93,
"h": 38
}
},
{
"filename": "0012.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 96,
"h": 38
},
"spriteSourceSize": {
"x": 2,
"y": 0,
"w": 93,
"h": 38
},
"frame": {
"x": 0,
"y": 112,
"w": 93,
"h": 38
}
},
{
"filename": "0005.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 96,
"h": 38
},
"spriteSourceSize": {
"x": 0,
"y": 2,
"w": 93,
"h": 33
},
"frame": {
"x": 0,
"y": 150,
"w": 93,
"h": 33
}
},
{
"filename": "0009.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 96,
"h": 38
},
"spriteSourceSize": {
"x": 0,
"y": 2,
"w": 93,
"h": 33
},
"frame": {
"x": 0,
"y": 150,
"w": 93,
"h": 33
}
}
]
}
],
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
"smartupdate": "$TexturePacker:SmartUpdate:73a45bef4ca14afe6f4361208ee9e814:fff7d9abe2aee5a411a1e8c22cae78cc:0a4e1115d2108d4376fa446e83ec1675$"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

View File

@ -0,0 +1,36 @@
{
"1": {
"21255c": "323b51",
"3253d6": "577b81",
"2c369a": "435469",
"adffdd": "fbce5d",
"93ebc6": "fbce5d",
"5de0aa": "fbce5d",
"72fec4": "fbce5d",
"5fe3ac": "fbce5d",
"41968b": "c57833",
"0f0f0f": "0f0f0f",
"453b4d": "2c445a",
"635181": "527492",
"8475a7": "80aec5",
"9488bd": "93cfe8",
"ada9d6": "afe7ee"
},
"2": {
"21255c": "bb7154",
"3253d6": "ffedd1",
"2c369a": "e1a47a",
"adffdd": "df543b",
"93ebc6": "df543b",
"5de0aa": "df543b",
"72fec4": "df543b",
"5fe3ac": "df543b",
"41968b": "a51414",
"0f0f0f": "0f0f0f",
"453b4d": "0d240f",
"635181": "193a1c",
"8475a7": "1e5c17",
"9488bd": "45832d",
"ada9d6": "7db047"
}
}

View File

@ -0,0 +1,419 @@
{
"textures": [
{
"image": "970_2.png",
"format": "RGBA8888",
"size": {
"w": 296,
"h": 296
},
"scale": 1,
"frames": [
{
"filename": "0007.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 61,
"h": 77
},
"spriteSourceSize": {
"x": 2,
"y": 8,
"w": 59,
"h": 60
},
"frame": {
"x": 0,
"y": 0,
"w": 59,
"h": 60
}
},
{
"filename": "0008.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 61,
"h": 77
},
"spriteSourceSize": {
"x": 2,
"y": 8,
"w": 59,
"h": 60
},
"frame": {
"x": 59,
"y": 0,
"w": 59,
"h": 60
}
},
{
"filename": "0006.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 61,
"h": 77
},
"spriteSourceSize": {
"x": 0,
"y": 6,
"w": 59,
"h": 62
},
"frame": {
"x": 118,
"y": 0,
"w": 59,
"h": 62
}
},
{
"filename": "0005.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 61,
"h": 77
},
"spriteSourceSize": {
"x": 0,
"y": 5,
"w": 58,
"h": 63
},
"frame": {
"x": 177,
"y": 0,
"w": 58,
"h": 63
}
},
{
"filename": "0009.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 61,
"h": 77
},
"spriteSourceSize": {
"x": 2,
"y": 5,
"w": 59,
"h": 66
},
"frame": {
"x": 235,
"y": 0,
"w": 59,
"h": 66
}
},
{
"filename": "0010.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 61,
"h": 77
},
"spriteSourceSize": {
"x": 1,
"y": 4,
"w": 60,
"h": 66
},
"frame": {
"x": 0,
"y": 60,
"w": 60,
"h": 66
}
},
{
"filename": "0018.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 61,
"h": 77
},
"spriteSourceSize": {
"x": 0,
"y": 4,
"w": 59,
"h": 66
},
"frame": {
"x": 60,
"y": 62,
"w": 59,
"h": 66
}
},
{
"filename": "0004.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 61,
"h": 77
},
"spriteSourceSize": {
"x": 0,
"y": 2,
"w": 59,
"h": 67
},
"frame": {
"x": 119,
"y": 63,
"w": 59,
"h": 67
}
},
{
"filename": "0017.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 61,
"h": 77
},
"spriteSourceSize": {
"x": 0,
"y": 2,
"w": 59,
"h": 67
},
"frame": {
"x": 178,
"y": 66,
"w": 59,
"h": 67
}
},
{
"filename": "0012.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 61,
"h": 77
},
"spriteSourceSize": {
"x": 0,
"y": 4,
"w": 59,
"h": 68
},
"frame": {
"x": 237,
"y": 66,
"w": 59,
"h": 68
}
},
{
"filename": "0015.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 61,
"h": 77
},
"spriteSourceSize": {
"x": 0,
"y": 4,
"w": 59,
"h": 68
},
"frame": {
"x": 0,
"y": 126,
"w": 59,
"h": 68
}
},
{
"filename": "0014.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 61,
"h": 77
},
"spriteSourceSize": {
"x": 1,
"y": 1,
"w": 60,
"h": 69
},
"frame": {
"x": 59,
"y": 128,
"w": 60,
"h": 69
}
},
{
"filename": "0001.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 61,
"h": 77
},
"spriteSourceSize": {
"x": 0,
"y": 2,
"w": 61,
"h": 69
},
"frame": {
"x": 119,
"y": 133,
"w": 61,
"h": 69
}
},
{
"filename": "0011.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 61,
"h": 77
},
"spriteSourceSize": {
"x": 0,
"y": 2,
"w": 61,
"h": 69
},
"frame": {
"x": 119,
"y": 133,
"w": 61,
"h": 69
}
},
{
"filename": "0002.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 61,
"h": 77
},
"spriteSourceSize": {
"x": 0,
"y": 3,
"w": 61,
"h": 69
},
"frame": {
"x": 180,
"y": 134,
"w": 61,
"h": 69
}
},
{
"filename": "0003.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 61,
"h": 77
},
"spriteSourceSize": {
"x": 0,
"y": 2,
"w": 61,
"h": 69
},
"frame": {
"x": 0,
"y": 197,
"w": 61,
"h": 69
}
},
{
"filename": "0019.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 61,
"h": 77
},
"spriteSourceSize": {
"x": 0,
"y": 2,
"w": 61,
"h": 69
},
"frame": {
"x": 61,
"y": 202,
"w": 61,
"h": 69
}
},
{
"filename": "0013.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 61,
"h": 77
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 61,
"h": 71
},
"frame": {
"x": 122,
"y": 203,
"w": 61,
"h": 71
}
},
{
"filename": "0016.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 61,
"h": 77
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 61,
"h": 71
},
"frame": {
"x": 183,
"y": 203,
"w": 61,
"h": 71
}
}
]
}
],
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
"smartupdate": "$TexturePacker:SmartUpdate:826f0c54b74572cfb274b9973fbd50bf:a0d3e34e9b94dc843d98c54879e0c70e:97e320d73d4227f4b083688478fb20b2$"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View File

@ -0,0 +1,419 @@
{
"textures": [
{
"image": "970_3.png",
"format": "RGBA8888",
"size": {
"w": 296,
"h": 296
},
"scale": 1,
"frames": [
{
"filename": "0007.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 61,
"h": 77
},
"spriteSourceSize": {
"x": 2,
"y": 8,
"w": 59,
"h": 60
},
"frame": {
"x": 0,
"y": 0,
"w": 59,
"h": 60
}
},
{
"filename": "0008.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 61,
"h": 77
},
"spriteSourceSize": {
"x": 2,
"y": 8,
"w": 59,
"h": 60
},
"frame": {
"x": 59,
"y": 0,
"w": 59,
"h": 60
}
},
{
"filename": "0006.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 61,
"h": 77
},
"spriteSourceSize": {
"x": 0,
"y": 6,
"w": 59,
"h": 62
},
"frame": {
"x": 118,
"y": 0,
"w": 59,
"h": 62
}
},
{
"filename": "0005.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 61,
"h": 77
},
"spriteSourceSize": {
"x": 0,
"y": 5,
"w": 58,
"h": 63
},
"frame": {
"x": 177,
"y": 0,
"w": 58,
"h": 63
}
},
{
"filename": "0009.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 61,
"h": 77
},
"spriteSourceSize": {
"x": 2,
"y": 5,
"w": 59,
"h": 66
},
"frame": {
"x": 235,
"y": 0,
"w": 59,
"h": 66
}
},
{
"filename": "0010.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 61,
"h": 77
},
"spriteSourceSize": {
"x": 1,
"y": 4,
"w": 60,
"h": 66
},
"frame": {
"x": 0,
"y": 60,
"w": 60,
"h": 66
}
},
{
"filename": "0018.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 61,
"h": 77
},
"spriteSourceSize": {
"x": 0,
"y": 4,
"w": 59,
"h": 66
},
"frame": {
"x": 60,
"y": 62,
"w": 59,
"h": 66
}
},
{
"filename": "0004.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 61,
"h": 77
},
"spriteSourceSize": {
"x": 0,
"y": 2,
"w": 59,
"h": 67
},
"frame": {
"x": 119,
"y": 63,
"w": 59,
"h": 67
}
},
{
"filename": "0017.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 61,
"h": 77
},
"spriteSourceSize": {
"x": 0,
"y": 2,
"w": 59,
"h": 67
},
"frame": {
"x": 178,
"y": 66,
"w": 59,
"h": 67
}
},
{
"filename": "0012.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 61,
"h": 77
},
"spriteSourceSize": {
"x": 0,
"y": 4,
"w": 59,
"h": 68
},
"frame": {
"x": 237,
"y": 66,
"w": 59,
"h": 68
}
},
{
"filename": "0015.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 61,
"h": 77
},
"spriteSourceSize": {
"x": 0,
"y": 4,
"w": 59,
"h": 68
},
"frame": {
"x": 0,
"y": 126,
"w": 59,
"h": 68
}
},
{
"filename": "0014.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 61,
"h": 77
},
"spriteSourceSize": {
"x": 1,
"y": 1,
"w": 60,
"h": 69
},
"frame": {
"x": 59,
"y": 128,
"w": 60,
"h": 69
}
},
{
"filename": "0001.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 61,
"h": 77
},
"spriteSourceSize": {
"x": 0,
"y": 2,
"w": 61,
"h": 69
},
"frame": {
"x": 119,
"y": 133,
"w": 61,
"h": 69
}
},
{
"filename": "0011.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 61,
"h": 77
},
"spriteSourceSize": {
"x": 0,
"y": 2,
"w": 61,
"h": 69
},
"frame": {
"x": 119,
"y": 133,
"w": 61,
"h": 69
}
},
{
"filename": "0002.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 61,
"h": 77
},
"spriteSourceSize": {
"x": 0,
"y": 3,
"w": 61,
"h": 69
},
"frame": {
"x": 180,
"y": 134,
"w": 61,
"h": 69
}
},
{
"filename": "0003.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 61,
"h": 77
},
"spriteSourceSize": {
"x": 0,
"y": 2,
"w": 61,
"h": 69
},
"frame": {
"x": 0,
"y": 197,
"w": 61,
"h": 69
}
},
{
"filename": "0019.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 61,
"h": 77
},
"spriteSourceSize": {
"x": 0,
"y": 2,
"w": 61,
"h": 69
},
"frame": {
"x": 61,
"y": 202,
"w": 61,
"h": 69
}
},
{
"filename": "0013.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 61,
"h": 77
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 61,
"h": 71
},
"frame": {
"x": 122,
"y": 203,
"w": 61,
"h": 71
}
},
{
"filename": "0016.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 61,
"h": 77
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 61,
"h": 71
},
"frame": {
"x": 183,
"y": 203,
"w": 61,
"h": 71
}
}
]
}
],
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
"smartupdate": "$TexturePacker:SmartUpdate:826f0c54b74572cfb274b9973fbd50bf:a0d3e34e9b94dc843d98c54879e0c70e:97e320d73d4227f4b083688478fb20b2$"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View File

@ -0,0 +1,230 @@
{
"textures": [
{
"image": "978-curly_2.png",
"format": "RGBA8888",
"size": {
"w": 134,
"h": 134
},
"scale": 1,
"frames": [
{
"filename": "0005.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 32,
"h": 50
},
"spriteSourceSize": {
"x": 1,
"y": 0,
"w": 31,
"h": 50
},
"frame": {
"x": 0,
"y": 0,
"w": 31,
"h": 50
}
},
{
"filename": "0004.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 32,
"h": 50
},
"spriteSourceSize": {
"x": 1,
"y": 1,
"w": 31,
"h": 49
},
"frame": {
"x": 0,
"y": 50,
"w": 31,
"h": 49
}
},
{
"filename": "0006.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 32,
"h": 50
},
"spriteSourceSize": {
"x": 1,
"y": 1,
"w": 31,
"h": 49
},
"frame": {
"x": 31,
"y": 0,
"w": 31,
"h": 49
}
},
{
"filename": "0003.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 32,
"h": 50
},
"spriteSourceSize": {
"x": 1,
"y": 3,
"w": 31,
"h": 47
},
"frame": {
"x": 31,
"y": 49,
"w": 31,
"h": 47
}
},
{
"filename": "0007.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 32,
"h": 50
},
"spriteSourceSize": {
"x": 1,
"y": 3,
"w": 31,
"h": 47
},
"frame": {
"x": 62,
"y": 0,
"w": 31,
"h": 47
}
},
{
"filename": "0001.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 32,
"h": 50
},
"spriteSourceSize": {
"x": 1,
"y": 4,
"w": 31,
"h": 46
},
"frame": {
"x": 62,
"y": 47,
"w": 31,
"h": 46
}
},
{
"filename": "0002.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 32,
"h": 50
},
"spriteSourceSize": {
"x": 1,
"y": 4,
"w": 31,
"h": 46
},
"frame": {
"x": 93,
"y": 0,
"w": 31,
"h": 46
}
},
{
"filename": "0008.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 32,
"h": 50
},
"spriteSourceSize": {
"x": 1,
"y": 5,
"w": 31,
"h": 45
},
"frame": {
"x": 93,
"y": 46,
"w": 31,
"h": 45
}
},
{
"filename": "0010.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 32,
"h": 50
},
"spriteSourceSize": {
"x": 0,
"y": 9,
"w": 32,
"h": 41
},
"frame": {
"x": 62,
"y": 93,
"w": 32,
"h": 41
}
},
{
"filename": "0009.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 32,
"h": 50
},
"spriteSourceSize": {
"x": 1,
"y": 7,
"w": 31,
"h": 43
},
"frame": {
"x": 94,
"y": 91,
"w": 31,
"h": 43
}
}
]
}
],
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
"smartupdate": "$TexturePacker:SmartUpdate:b43c8af134bbd2759b86bb9236db8af1:cbb12c7279700385b76aa010e976e4cd:9002f357c9c9d2c76ee3b70aa2d05a8d$"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

@ -0,0 +1,230 @@
{
"textures": [
{
"image": "978-curly_3.png",
"format": "RGBA8888",
"size": {
"w": 134,
"h": 134
},
"scale": 1,
"frames": [
{
"filename": "0005.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 32,
"h": 50
},
"spriteSourceSize": {
"x": 1,
"y": 0,
"w": 31,
"h": 50
},
"frame": {
"x": 0,
"y": 0,
"w": 31,
"h": 50
}
},
{
"filename": "0004.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 32,
"h": 50
},
"spriteSourceSize": {
"x": 1,
"y": 1,
"w": 31,
"h": 49
},
"frame": {
"x": 0,
"y": 50,
"w": 31,
"h": 49
}
},
{
"filename": "0006.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 32,
"h": 50
},
"spriteSourceSize": {
"x": 1,
"y": 1,
"w": 31,
"h": 49
},
"frame": {
"x": 31,
"y": 0,
"w": 31,
"h": 49
}
},
{
"filename": "0003.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 32,
"h": 50
},
"spriteSourceSize": {
"x": 1,
"y": 3,
"w": 31,
"h": 47
},
"frame": {
"x": 31,
"y": 49,
"w": 31,
"h": 47
}
},
{
"filename": "0007.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 32,
"h": 50
},
"spriteSourceSize": {
"x": 1,
"y": 3,
"w": 31,
"h": 47
},
"frame": {
"x": 62,
"y": 0,
"w": 31,
"h": 47
}
},
{
"filename": "0001.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 32,
"h": 50
},
"spriteSourceSize": {
"x": 1,
"y": 4,
"w": 31,
"h": 46
},
"frame": {
"x": 62,
"y": 47,
"w": 31,
"h": 46
}
},
{
"filename": "0002.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 32,
"h": 50
},
"spriteSourceSize": {
"x": 1,
"y": 4,
"w": 31,
"h": 46
},
"frame": {
"x": 93,
"y": 0,
"w": 31,
"h": 46
}
},
{
"filename": "0008.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 32,
"h": 50
},
"spriteSourceSize": {
"x": 1,
"y": 5,
"w": 31,
"h": 45
},
"frame": {
"x": 93,
"y": 46,
"w": 31,
"h": 45
}
},
{
"filename": "0010.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 32,
"h": 50
},
"spriteSourceSize": {
"x": 0,
"y": 9,
"w": 32,
"h": 41
},
"frame": {
"x": 62,
"y": 93,
"w": 32,
"h": 41
}
},
{
"filename": "0009.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 32,
"h": 50
},
"spriteSourceSize": {
"x": 1,
"y": 7,
"w": 31,
"h": 43
},
"frame": {
"x": 94,
"y": 91,
"w": 31,
"h": 43
}
}
]
}
],
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
"smartupdate": "$TexturePacker:SmartUpdate:b43c8af134bbd2759b86bb9236db8af1:cbb12c7279700385b76aa010e976e4cd:9002f357c9c9d2c76ee3b70aa2d05a8d$"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

@ -0,0 +1,482 @@
{
"textures": [
{
"image": "978-droopy_2.png",
"format": "RGBA8888",
"size": {
"w": 120,
"h": 120
},
"scale": 1,
"frames": [
{
"filename": "0006.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 40,
"h": 33
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 40,
"h": 33
},
"frame": {
"x": 0,
"y": 0,
"w": 40,
"h": 33
}
},
{
"filename": "0018.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 40,
"h": 33
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 40,
"h": 33
},
"frame": {
"x": 0,
"y": 0,
"w": 40,
"h": 33
}
},
{
"filename": "0005.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 33
},
"spriteSourceSize": {
"x": 0,
"y": 1,
"w": 40,
"h": 32
},
"frame": {
"x": 40,
"y": 0,
"w": 40,
"h": 32
}
},
{
"filename": "0019.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 33
},
"spriteSourceSize": {
"x": 0,
"y": 1,
"w": 40,
"h": 32
},
"frame": {
"x": 40,
"y": 0,
"w": 40,
"h": 32
}
},
{
"filename": "0007.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 33
},
"spriteSourceSize": {
"x": 0,
"y": 1,
"w": 40,
"h": 32
},
"frame": {
"x": 80,
"y": 0,
"w": 40,
"h": 32
}
},
{
"filename": "0017.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 33
},
"spriteSourceSize": {
"x": 0,
"y": 1,
"w": 40,
"h": 32
},
"frame": {
"x": 80,
"y": 0,
"w": 40,
"h": 32
}
},
{
"filename": "0004.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 33
},
"spriteSourceSize": {
"x": 0,
"y": 3,
"w": 40,
"h": 30
},
"frame": {
"x": 40,
"y": 32,
"w": 40,
"h": 30
}
},
{
"filename": "0020.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 33
},
"spriteSourceSize": {
"x": 0,
"y": 3,
"w": 40,
"h": 30
},
"frame": {
"x": 40,
"y": 32,
"w": 40,
"h": 30
}
},
{
"filename": "0008.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 33
},
"spriteSourceSize": {
"x": 0,
"y": 3,
"w": 40,
"h": 30
},
"frame": {
"x": 0,
"y": 33,
"w": 40,
"h": 30
}
},
{
"filename": "0016.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 33
},
"spriteSourceSize": {
"x": 0,
"y": 3,
"w": 40,
"h": 30
},
"frame": {
"x": 0,
"y": 33,
"w": 40,
"h": 30
}
},
{
"filename": "0003.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 33
},
"spriteSourceSize": {
"x": 0,
"y": 5,
"w": 40,
"h": 28
},
"frame": {
"x": 80,
"y": 32,
"w": 40,
"h": 28
}
},
{
"filename": "0009.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 33
},
"spriteSourceSize": {
"x": 0,
"y": 5,
"w": 40,
"h": 28
},
"frame": {
"x": 80,
"y": 32,
"w": 40,
"h": 28
}
},
{
"filename": "0015.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 33
},
"spriteSourceSize": {
"x": 0,
"y": 5,
"w": 40,
"h": 28
},
"frame": {
"x": 80,
"y": 32,
"w": 40,
"h": 28
}
},
{
"filename": "0021.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 33
},
"spriteSourceSize": {
"x": 0,
"y": 5,
"w": 40,
"h": 28
},
"frame": {
"x": 80,
"y": 32,
"w": 40,
"h": 28
}
},
{
"filename": "0002.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 33
},
"spriteSourceSize": {
"x": 0,
"y": 7,
"w": 40,
"h": 26
},
"frame": {
"x": 80,
"y": 60,
"w": 40,
"h": 26
}
},
{
"filename": "0022.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 33
},
"spriteSourceSize": {
"x": 0,
"y": 7,
"w": 40,
"h": 26
},
"frame": {
"x": 80,
"y": 60,
"w": 40,
"h": 26
}
},
{
"filename": "0010.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 33
},
"spriteSourceSize": {
"x": 0,
"y": 7,
"w": 40,
"h": 26
},
"frame": {
"x": 40,
"y": 62,
"w": 40,
"h": 26
}
},
{
"filename": "0014.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 33
},
"spriteSourceSize": {
"x": 0,
"y": 7,
"w": 40,
"h": 26
},
"frame": {
"x": 40,
"y": 62,
"w": 40,
"h": 26
}
},
{
"filename": "0001.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 33
},
"spriteSourceSize": {
"x": 0,
"y": 8,
"w": 40,
"h": 25
},
"frame": {
"x": 0,
"y": 63,
"w": 40,
"h": 25
}
},
{
"filename": "0011.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 33
},
"spriteSourceSize": {
"x": 0,
"y": 8,
"w": 40,
"h": 25
},
"frame": {
"x": 80,
"y": 86,
"w": 40,
"h": 25
}
},
{
"filename": "0012.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 33
},
"spriteSourceSize": {
"x": 0,
"y": 8,
"w": 40,
"h": 25
},
"frame": {
"x": 80,
"y": 86,
"w": 40,
"h": 25
}
},
{
"filename": "0013.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 33
},
"spriteSourceSize": {
"x": 0,
"y": 8,
"w": 40,
"h": 25
},
"frame": {
"x": 80,
"y": 86,
"w": 40,
"h": 25
}
}
]
}
],
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
"smartupdate": "$TexturePacker:SmartUpdate:04c8c8a0edb7e5dbbd38c343d418abd5:a5c49c391b56310c6ca8c4603188ae18:4a81cfb3bb02b4715c47648a8b0893d2$"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@ -0,0 +1,482 @@
{
"textures": [
{
"image": "978-droopy_3.png",
"format": "RGBA8888",
"size": {
"w": 120,
"h": 120
},
"scale": 1,
"frames": [
{
"filename": "0006.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 40,
"h": 33
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 40,
"h": 33
},
"frame": {
"x": 0,
"y": 0,
"w": 40,
"h": 33
}
},
{
"filename": "0018.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 40,
"h": 33
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 40,
"h": 33
},
"frame": {
"x": 0,
"y": 0,
"w": 40,
"h": 33
}
},
{
"filename": "0005.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 33
},
"spriteSourceSize": {
"x": 0,
"y": 1,
"w": 40,
"h": 32
},
"frame": {
"x": 40,
"y": 0,
"w": 40,
"h": 32
}
},
{
"filename": "0019.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 33
},
"spriteSourceSize": {
"x": 0,
"y": 1,
"w": 40,
"h": 32
},
"frame": {
"x": 40,
"y": 0,
"w": 40,
"h": 32
}
},
{
"filename": "0007.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 33
},
"spriteSourceSize": {
"x": 0,
"y": 1,
"w": 40,
"h": 32
},
"frame": {
"x": 80,
"y": 0,
"w": 40,
"h": 32
}
},
{
"filename": "0017.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 33
},
"spriteSourceSize": {
"x": 0,
"y": 1,
"w": 40,
"h": 32
},
"frame": {
"x": 80,
"y": 0,
"w": 40,
"h": 32
}
},
{
"filename": "0004.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 33
},
"spriteSourceSize": {
"x": 0,
"y": 3,
"w": 40,
"h": 30
},
"frame": {
"x": 40,
"y": 32,
"w": 40,
"h": 30
}
},
{
"filename": "0020.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 33
},
"spriteSourceSize": {
"x": 0,
"y": 3,
"w": 40,
"h": 30
},
"frame": {
"x": 40,
"y": 32,
"w": 40,
"h": 30
}
},
{
"filename": "0008.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 33
},
"spriteSourceSize": {
"x": 0,
"y": 3,
"w": 40,
"h": 30
},
"frame": {
"x": 0,
"y": 33,
"w": 40,
"h": 30
}
},
{
"filename": "0016.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 33
},
"spriteSourceSize": {
"x": 0,
"y": 3,
"w": 40,
"h": 30
},
"frame": {
"x": 0,
"y": 33,
"w": 40,
"h": 30
}
},
{
"filename": "0003.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 33
},
"spriteSourceSize": {
"x": 0,
"y": 5,
"w": 40,
"h": 28
},
"frame": {
"x": 80,
"y": 32,
"w": 40,
"h": 28
}
},
{
"filename": "0009.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 33
},
"spriteSourceSize": {
"x": 0,
"y": 5,
"w": 40,
"h": 28
},
"frame": {
"x": 80,
"y": 32,
"w": 40,
"h": 28
}
},
{
"filename": "0015.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 33
},
"spriteSourceSize": {
"x": 0,
"y": 5,
"w": 40,
"h": 28
},
"frame": {
"x": 80,
"y": 32,
"w": 40,
"h": 28
}
},
{
"filename": "0021.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 33
},
"spriteSourceSize": {
"x": 0,
"y": 5,
"w": 40,
"h": 28
},
"frame": {
"x": 80,
"y": 32,
"w": 40,
"h": 28
}
},
{
"filename": "0002.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 33
},
"spriteSourceSize": {
"x": 0,
"y": 7,
"w": 40,
"h": 26
},
"frame": {
"x": 80,
"y": 60,
"w": 40,
"h": 26
}
},
{
"filename": "0022.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 33
},
"spriteSourceSize": {
"x": 0,
"y": 7,
"w": 40,
"h": 26
},
"frame": {
"x": 80,
"y": 60,
"w": 40,
"h": 26
}
},
{
"filename": "0010.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 33
},
"spriteSourceSize": {
"x": 0,
"y": 7,
"w": 40,
"h": 26
},
"frame": {
"x": 40,
"y": 62,
"w": 40,
"h": 26
}
},
{
"filename": "0014.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 33
},
"spriteSourceSize": {
"x": 0,
"y": 7,
"w": 40,
"h": 26
},
"frame": {
"x": 40,
"y": 62,
"w": 40,
"h": 26
}
},
{
"filename": "0001.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 33
},
"spriteSourceSize": {
"x": 0,
"y": 8,
"w": 40,
"h": 25
},
"frame": {
"x": 0,
"y": 63,
"w": 40,
"h": 25
}
},
{
"filename": "0011.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 33
},
"spriteSourceSize": {
"x": 0,
"y": 8,
"w": 40,
"h": 25
},
"frame": {
"x": 80,
"y": 86,
"w": 40,
"h": 25
}
},
{
"filename": "0012.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 33
},
"spriteSourceSize": {
"x": 0,
"y": 8,
"w": 40,
"h": 25
},
"frame": {
"x": 80,
"y": 86,
"w": 40,
"h": 25
}
},
{
"filename": "0013.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 33
},
"spriteSourceSize": {
"x": 0,
"y": 8,
"w": 40,
"h": 25
},
"frame": {
"x": 80,
"y": 86,
"w": 40,
"h": 25
}
}
]
}
],
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
"smartupdate": "$TexturePacker:SmartUpdate:04c8c8a0edb7e5dbbd38c343d418abd5:a5c49c391b56310c6ca8c4603188ae18:4a81cfb3bb02b4715c47648a8b0893d2$"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -0,0 +1,26 @@
{
"1": {
"8f6b18": "252c60",
"57420f": "251f4c",
"ffcb2d": "7277a4",
"ce9b24": "485084",
"feca2e": "a3a3a3",
"ffcf2d": "c1c1c1",
"0f0f0f": "0f0f0f",
"adafb8": "dace8e",
"626471": "bca353",
"fcfcfc": "faf2c4"
},
"2": {
"8f6b18": "184a03",
"57420f": "143405",
"ffcb2d": "355c1e",
"ce9b24": "273f08",
"feca2e": "d8d0ad",
"ffcf2d": "afa680",
"0f0f0f": "0f0f0f",
"adafb8": "91734f",
"626471": "604a30",
"fcfcfc": "bc996e"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 295 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 295 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 B

View File

@ -646,7 +646,16 @@ export default class BattleScene extends SceneBase {
const container = this.add.container(x, y);
const icon = this.add.sprite(0, 0, pokemon.getIconAtlasKey(ignoreOverride));
icon.setFrame(pokemon.getIconId(true));
icon.setFrame(pokemon.getIconId(true));
// Temporary fix to show pokemon's default icon if variant icon doesn't exist
if (icon.frame.name != pokemon.getIconId(true)) {
console.log(`${pokemon.name}'s variant icon does not exist. Replacing with default.`)
const temp = pokemon.shiny;
pokemon.shiny = false;
icon.setTexture(pokemon.getIconAtlasKey(ignoreOverride));
icon.setFrame(pokemon.getIconId(true));
pokemon.shiny = temp;
}
icon.setOrigin(0.5, 0);
container.add(icon);
@ -732,6 +741,9 @@ export default class BattleScene extends SceneBase {
this.pokeballCounts = Object.fromEntries(Utils.getEnumValues(PokeballType).filter(p => p <= PokeballType.MASTER_BALL).map(t => [ t, 0 ]));
this.pokeballCounts[PokeballType.POKEBALL] += 5;
if (Overrides.POKEBALL_OVERRIDE.active) {
this.pokeballCounts = Overrides.POKEBALL_OVERRIDE.pokeballs;
}
this.modifiers = [];
this.enemyModifiers = [];
@ -987,6 +999,8 @@ export default class BattleScene extends SceneBase {
case Species.SAWSBUCK:
case Species.FROAKIE:
case Species.FROGADIER:
case Species.SCATTERBUG:
case Species.SPEWPA:
case Species.VIVILLON:
case Species.FLABEBE:
case Species.FLOETTE:
@ -1971,6 +1985,7 @@ export default class BattleScene extends SceneBase {
updateGameInfo(): void {
const gameInfo = {
playTime: this.sessionPlayTime ? this.sessionPlayTime : 0,
gameMode: this.currentBattle ? this.gameMode.getName() : 'Title',
biome: this.currentBattle ? getBiomeName(this.arena.biomeType) : '',
wave: this.currentBattle?.waveIndex || 0,

View File

@ -3,13 +3,13 @@ import { Type } from "./type";
import * as Utils from "../utils";
import { BattleStat, getBattleStatName } from "./battle-stat";
import { PokemonHealPhase, ShowAbilityPhase, StatChangePhase } from "../phases";
import { getPokemonMessage } from "../messages";
import { getPokemonMessage, getPokemonPrefix } from "../messages";
import { Weather, WeatherType } from "./weather";
import { BattlerTag } from "./battler-tags";
import { BattlerTagType } from "./enums/battler-tag-type";
import { StatusEffect, getStatusEffectDescriptor, getStatusEffectHealText } from "./status-effect";
import { Gender } from "./gender";
import Move, { AttackMove, MoveCategory, MoveFlags, MoveTarget, RecoilAttr, StatusMoveTypeImmunityAttr, FlinchAttr, OneHitKOAttr, HitHealAttr, StrengthSapHealAttr, allMoves, StatusMove } from "./move";
import Move, { AttackMove, MoveCategory, MoveFlags, MoveTarget, RecoilAttr, StatusMoveTypeImmunityAttr, FlinchAttr, OneHitKOAttr, HitHealAttr, StrengthSapHealAttr, allMoves, StatusMove, VariablePowerAttr, applyMoveAttrs } from "./move";
import { ArenaTagSide, ArenaTrapTag } from "./arena-tag";
import { ArenaTagType } from "./enums/arena-tag-type";
import { Stat } from "./pokemon-stat";
@ -144,7 +144,7 @@ export class BlockRecoilDamageAttr extends AbAttr {
}
getTriggerMessage(pokemon: Pokemon, abilityName: string, ...args: any[]) {
return getPokemonMessage(pokemon, `'s ${abilityName}\nprotected it from recoil!`);
return i18next.t('abilityTriggers:blockRecoilDamage', {pokemonName: `${getPokemonPrefix(pokemon)}${pokemon.name}`, abilityName: abilityName});
}
}
@ -249,10 +249,13 @@ export class PreDefendFormChangeAbAttr extends PreDefendAbAttr {
}
export class PreDefendFullHpEndureAbAttr extends PreDefendAbAttr {
applyPreDefend(pokemon: Pokemon, passive: boolean, attacker: Pokemon, move: PokemonMove, cancelled: Utils.BooleanHolder, args: any[]): boolean {
if (pokemon.getMaxHp() <= 1 && (pokemon.getHpRatio() < 1 || (args[0] as Utils.NumberHolder).value < pokemon.hp))
return false;
return pokemon.addTag(BattlerTagType.STURDY, 1);
if (pokemon.hp === pokemon.getMaxHp() &&
pokemon.getMaxHp() > 1 && //Checks if pokemon has wonder_guard (which forces 1hp)
(args[0] as Utils.NumberHolder).value >= pokemon.hp){ //Damage >= hp
return pokemon.addTag(BattlerTagType.STURDY, 1);
}
return false
}
}
@ -712,7 +715,7 @@ export class PostDefendContactApplyStatusEffectAbAttr extends PostDefendAbAttr {
applyPostDefend(pokemon: Pokemon, passive: boolean, attacker: Pokemon, move: PokemonMove, hitResult: HitResult, args: any[]): boolean {
if (move.getMove().checkFlag(MoveFlags.MAKES_CONTACT, attacker, pokemon) && !attacker.status && (this.chance === -1 || pokemon.randSeedInt(100) < this.chance)) {
const effect = this.effects.length === 1 ? this.effects[0] : this.effects[pokemon.randSeedInt(this.effects.length)];
return attacker.trySetStatus(effect, true);
return attacker.trySetStatus(effect, true, pokemon);
}
return false;
@ -1045,6 +1048,42 @@ export class MoveTypeChangeAttr extends PreAttackAbAttr {
}
}
/**
* Class for abilities that boost the damage of moves
* For abilities that boost the base power of moves, see VariableMovePowerAbAttr
* @param damageMultiplier the amount to multiply the damage by
* @param condition the condition for this ability to be applied
*/
export class DamageBoostAbAttr extends PreAttackAbAttr {
private damageMultiplier: number;
private condition: PokemonAttackCondition;
constructor(damageMultiplier: number, condition: PokemonAttackCondition){
super(true);
this.damageMultiplier = damageMultiplier;
this.condition = condition;
}
/**
*
* @param pokemon the attacker pokemon
* @param passive N/A
* @param defender the target pokemon
* @param move the move used by the attacker pokemon
* @param args Utils.NumberHolder as damage
* @returns true if the function succeeds
*/
applyPreAttack(pokemon: Pokemon, passive: boolean, defender: Pokemon, move: PokemonMove, args: any[]): boolean {
if (this.condition(pokemon, defender, move.getMove())) {
const power = args[0] as Utils.NumberHolder;
power.value = Math.floor(power.value * this.damageMultiplier);
return true;
}
return false;
}
}
export class MovePowerBoostAbAttr extends VariableMovePowerAbAttr {
private condition: PokemonAttackCondition;
private powerMultiplier: number;
@ -1196,7 +1235,7 @@ export class PostAttackApplyStatusEffectAbAttr extends PostAttackAbAttr {
//Status inflicted by abilities post attacking are also considered additional effects.
if (!attacker.hasAbilityWithAttr(IgnoreMoveEffectsAbAttr) && pokemon != attacker && (!this.contactRequired || move.getMove().checkFlag(MoveFlags.MAKES_CONTACT, attacker, pokemon)) && pokemon.randSeedInt(100) < this.chance && !pokemon.status) {
const effect = this.effects.length === 1 ? this.effects[0] : this.effects[pokemon.randSeedInt(this.effects.length)];
return attacker.trySetStatus(effect, true);
return attacker.trySetStatus(effect, true, pokemon);
}
return false;
@ -1425,6 +1464,23 @@ export class PostSummonMessageAbAttr extends PostSummonAbAttr {
}
}
export class PostSummonUnnamedMessageAbAttr extends PostSummonAbAttr {
//Attr doesn't force pokemon name on the message
private message: string;
constructor(message: string) {
super(true);
this.message = message;
}
applyPostSummon(pokemon: Pokemon, passive: boolean, args: any[]): boolean {
pokemon.scene.queueMessage(this.message);
return true;
}
}
export class PostSummonAddBattlerTagAbAttr extends PostSummonAbAttr {
private tagType: BattlerTagType;
private turnCount: integer;
@ -1502,6 +1558,34 @@ export class PostSummonAllyHealAbAttr extends PostSummonAbAttr {
}
}
/**
* Resets an ally's temporary stat boots to zero with no regard to
* whether this is a positive or negative change
* @param pokemon The {@link Pokemon} with this {@link AbAttr}
* @param passive N/A
* @param args N/A
* @returns if the move was successful
*/
export class PostSummonClearAllyStatsAbAttr extends PostSummonAbAttr {
constructor() {
super();
}
applyPostSummon(pokemon: Pokemon, passive: boolean, args: any[]): boolean {
const target = pokemon.getAlly();
if (target?.isActive(true)) {
for (let s = 0; s < target.summonData.battleStats.length; s++)
target.summonData.battleStats[s] = 0;
target.scene.queueMessage(getPokemonMessage(target, `'s stat changes\nwere removed!`));
return true;
}
return false;
}
}
export class DownloadAbAttr extends PostSummonAbAttr {
private enemyDef: integer;
private enemySpDef: integer;
@ -2428,6 +2512,26 @@ export class PostFaintContactDamageAbAttr extends PostFaintAbAttr {
}
}
/**
* Attribute used for abilities (Innards Out) that damage the opponent based on how much HP the last attack used to knock out the owner of the ability.
*/
export class PostFaintHPDamageAbAttr extends PostFaintAbAttr {
constructor() {
super ();
}
applyPostFaint(pokemon: Pokemon, passive: boolean, attacker: Pokemon, move: PokemonMove, hitResult: HitResult, args: any[]): boolean {
const damage = pokemon.turnData.attacksReceived[0].damage;
attacker.damageAndUpdate((damage), HitResult.OTHER);
attacker.turnData.damageTaken += damage;
return true;
}
getTriggerMessage(pokemon: Pokemon, abilityName: string, ...args: any[]): string {
return getPokemonMessage(pokemon, `'s ${abilityName} hurt\nits attacker!`);
}
}
export class RedirectMoveAbAttr extends AbAttr {
apply(pokemon: Pokemon, passive: boolean, cancelled: Utils.BooleanHolder, args: any[]): boolean {
if (this.canRedirect(args[0] as Moves)) {
@ -2628,8 +2732,8 @@ export class NoFusionAbilityAbAttr extends AbAttr {
}
export class IgnoreTypeImmunityAbAttr extends AbAttr {
defenderType: Type;
allowedMoveTypes: Type[];
private defenderType: Type;
private allowedMoveTypes: Type[];
constructor(defenderType: Type, allowedMoveTypes: Type[]) {
super(true);
@ -2646,6 +2750,30 @@ export class IgnoreTypeImmunityAbAttr extends AbAttr {
}
}
/**
* Ignores the type immunity to Status Effects of the defender if the defender is of a certain type
*/
export class IgnoreTypeStatusEffectImmunityAbAttr extends AbAttr {
private statusEffect: StatusEffect[];
private defenderType: Type[];
constructor(statusEffect: StatusEffect[], defenderType: Type[]) {
super(true);
this.statusEffect = statusEffect;
this.defenderType = defenderType;
}
apply(pokemon: Pokemon, passive: boolean, cancelled: Utils.BooleanHolder, args: any[]): boolean {
if (this.statusEffect.includes(args[0] as StatusEffect) && this.defenderType.includes(args[1] as Type)) {
cancelled.value = true;
return true;
}
return false;
}
}
function applyAbAttrsInternal<TAttr extends AbAttr>(attrType: { new(...args: any[]): TAttr },
pokemon: Pokemon, applyFunc: AbAttrApplyFunc<TAttr>, args: any[], isAsync: boolean = false, showAbilityInstant: boolean = false, quiet: boolean = false, passive: boolean = false): Promise<void> {
return new Promise(resolve => {
@ -2844,7 +2972,7 @@ export const allAbilities = [ new Ability(Abilities.NONE, 3) ];
export function initAbilities() {
allAbilities.push(
new Ability(Abilities.STENCH, 3)
.attr(PostAttackApplyBattlerTagAbAttr, false, (user, target, move) => !move.getMove().findAttr(attr => attr instanceof FlinchAttr) ? 10 : 0, BattlerTagType.FLINCHED),
.attr(PostAttackApplyBattlerTagAbAttr, false, (user, target, move) => (move.getMove().category !== MoveCategory.STATUS && !move.getMove().findAttr(attr => attr instanceof FlinchAttr)) ? 10 : 0, BattlerTagType.FLINCHED),
new Ability(Abilities.DRIZZLE, 3)
.attr(PostSummonWeatherChangeAbAttr, WeatherType.RAIN)
.attr(PostBiomeChangeWeatherChangeAbAttr, WeatherType.RAIN),
@ -3060,7 +3188,8 @@ export function initAbilities() {
.attr(BlockCritAbAttr)
.ignorable(),
new Ability(Abilities.AIR_LOCK, 3)
.attr(SuppressWeatherEffectAbAttr, true),
.attr(SuppressWeatherEffectAbAttr, true)
.attr(PostSummonUnnamedMessageAbAttr, "The effects of the weather disappeared."),
new Ability(Abilities.TANGLED_FEET, 4)
.conditionalAttr(pokemon => !!pokemon.getTag(BattlerTagType.CONFUSED), BattleStatMultiplierAbAttr, BattleStat.EVA, 2)
.ignorable(),
@ -3128,7 +3257,11 @@ export function initAbilities() {
new Ability(Abilities.STALL, 4)
.unimplemented(),
new Ability(Abilities.TECHNICIAN, 4)
.attr(MovePowerBoostAbAttr, (user, target, move) => move.power <= 60, 1.5),
.attr(MovePowerBoostAbAttr, (user, target, move) => {
const power = new Utils.NumberHolder(move.power);
applyMoveAttrs(VariablePowerAttr, user, target, move, power);
return power.value <= 60
}, 1.5),
new Ability(Abilities.LEAF_GUARD, 4)
.attr(StatusEffectImmunityAbAttr)
.condition(getWeatherCondition(WeatherType.SUNNY, WeatherType.HARSH_SUN))
@ -3152,7 +3285,7 @@ export function initAbilities() {
.attr(IgnoreOpponentStatChangesAbAttr)
.ignorable(),
new Ability(Abilities.TINTED_LENS, 4)
.attr(MovePowerBoostAbAttr, (user, target, move) => target.getAttackTypeEffectiveness(move.type, user) <= 0.5, 2),
.attr(DamageBoostAbAttr, 2, (user, target, move) => target.getAttackTypeEffectiveness(move.type, user) <= 0.5),
new Ability(Abilities.FILTER, 4)
.attr(ReceivedMoveDamageMultiplierAbAttr,(target, user, move) => target.getAttackTypeEffectiveness(move.type, user) >= 2, 0.75)
.ignorable(),
@ -3240,8 +3373,8 @@ export function initAbilities() {
new Ability(Abilities.HARVEST, 5)
.unimplemented(),
new Ability(Abilities.TELEPATHY, 5)
.ignorable()
.unimplemented(),
.attr(MoveImmunityAbAttr, (pokemon, attacker, move) => pokemon.getAlly() === attacker && move.getMove() instanceof AttackMove)
.ignorable(),
new Ability(Abilities.MOODY, 5)
.attr(MoodyAbAttr),
new Ability(Abilities.OVERCOAT, 5)
@ -3464,16 +3597,17 @@ export function initAbilities() {
.attr(UnsuppressableAbilityAbAttr)
.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)
.attr(PostTurnFormChangeAbAttr, p => p.getHpRatio() <= 0.5 ? 4 : 2)
.attr(PostBattleInitFormChangeAbAttr, p => p.getHpRatio() <= 0.5 || p.getFormKey() === 'complete' ? 4 : 2)
.attr(PostSummonFormChangeAbAttr, p => p.getHpRatio() <= 0.5 || p.getFormKey() === 'complete' ? 4 : 2)
.attr(PostTurnFormChangeAbAttr, p => p.getHpRatio() <= 0.5 || p.getFormKey() === 'complete' ? 4 : 2)
.attr(UncopiableAbilityAbAttr)
.attr(UnswappableAbilityAbAttr)
.attr(UnsuppressableAbilityAbAttr)
.attr(NoFusionAbilityAbAttr)
.partial(),
new Ability(Abilities.CORROSION, 7)
.unimplemented(),
new Ability(Abilities.CORROSION, 7) // TODO: Test Corrosion against Magic Bounce once it is implemented
.attr(IgnoreTypeStatusEffectImmunityAbAttr, [StatusEffect.POISON, StatusEffect.TOXIC], [Type.STEEL, Type.POISON])
.partial(),
new Ability(Abilities.COMATOSE, 7)
.attr(UncopiableAbilityAbAttr)
.attr(UnswappableAbilityAbAttr)
@ -3483,7 +3617,8 @@ export function initAbilities() {
.attr(FieldPriorityMoveImmunityAbAttr)
.ignorable(),
new Ability(Abilities.INNARDS_OUT, 7)
.unimplemented(),
.attr(PostFaintHPDamageAbAttr)
.bypassFaint(),
new Ability(Abilities.DANCER, 7)
.unimplemented(),
new Ability(Abilities.BATTERY, 7)
@ -3630,7 +3765,7 @@ export function initAbilities() {
new Ability(Abilities.UNSEEN_FIST, 8)
.unimplemented(),
new Ability(Abilities.CURIOUS_MEDICINE, 8)
.unimplemented(),
.attr(PostSummonClearAllyStatsAbAttr),
new Ability(Abilities.TRANSISTOR, 8)
.attr(MoveTypePowerBoostAbAttr, Type.ELECTRIC),
new Ability(Abilities.DRAGONS_MAW, 8)

View File

@ -316,7 +316,7 @@ class ToxicSpikesTag extends ArenaTrapTag {
}
} else if (!pokemon.status) {
const toxic = this.layers > 1;
if (pokemon.trySetStatus(!toxic ? StatusEffect.POISON : StatusEffect.TOXIC, true, null, `the ${this.getMoveName()}`))
if (pokemon.trySetStatus(!toxic ? StatusEffect.POISON : StatusEffect.TOXIC, true, null, 0, `the ${this.getMoveName()}`))
return true;
}
}

View File

@ -819,7 +819,7 @@ export class ContactPoisonProtectedTag extends ProtectedTag {
const effectPhase = pokemon.scene.getCurrentPhase();
if (effectPhase instanceof MoveEffectPhase && effectPhase.move.getMove().hasFlag(MoveFlags.MAKES_CONTACT)) {
const attacker = effectPhase.getPokemon();
attacker.trySetStatus(StatusEffect.POISON, true);
attacker.trySetStatus(StatusEffect.POISON, true, pokemon);
}
}

View File

@ -197,7 +197,7 @@ export const speciesEggMoves = {
[Species.LATIOS]: [ Moves.CORE_ENFORCER, Moves.SEARING_SHOT, Moves.DRAGON_ENERGY, Moves.QUIVER_DANCE ],
[Species.KYOGRE]: [ Moves.BOUNCY_BUBBLE, Moves.HURRICANE, Moves.THUNDER, Moves.TAIL_GLOW ],
[Species.GROUDON]: [ Moves.STONE_AXE, Moves.SOLAR_BLADE, Moves.MORNING_SUN, Moves.SACRED_FIRE ],
[Species.RAYQUAZA]: [ Moves.OBLIVION_WING, Moves.DRAGON_DARTS, Moves.DRAGON_ENERGY, Moves.V_CREATE ],
[Species.RAYQUAZA]: [ Moves.V_CREATE, Moves.DRAGON_DARTS, Moves.DRAGON_ENERGY, Moves.OBLIVION_WING ],
[Species.JIRACHI]: [ Moves.IRON_HEAD, Moves.FLOATY_FALL, Moves.ROCK_SLIDE, Moves.SHIFT_GEAR ],
[Species.DEOXYS]: [ Moves.COLLISION_COURSE, Moves.EARTH_POWER, Moves.PARTING_SHOT, Moves.LUMINA_CRASH ],
[Species.TURTWIG]: [ Moves.SHELL_SMASH, Moves.MIGHTY_CLEAVE, Moves.ICE_SPINNER, Moves.SAPPY_SEED ],

View File

@ -95,9 +95,16 @@ export function getLegendaryGachaSpeciesForTimestamp(scene: BattleScene, timesta
let ret: Species;
// 86400000 is the number of miliseconds in one day
const timeDate = new Date(timestamp);
const dayDate = new Date(Date.UTC(timeDate.getUTCFullYear(), timeDate.getUTCMonth(), timeDate.getUTCDate()));
const dayTimestamp = timeDate.getTime(); // Timestamp of current week
const offset = Math.floor(Math.floor(dayTimestamp / 86400000) / legendarySpecies.length); // Cycle number
const index = Math.floor(dayTimestamp / 86400000) % legendarySpecies.length // Index within cycle
scene.executeWithSeedOffset(() => {
ret = Utils.randSeedItem(legendarySpecies);
}, Utils.getSunday(new Date(timestamp)).getTime(), EGG_SEED.toString());
ret = Phaser.Math.RND.shuffle(legendarySpecies)[index];
}, offset, EGG_SEED.toString());
return ret;
}

View File

@ -43,7 +43,7 @@ export function getLevelTotalExp(level: integer, growthRate: GrowthRate): intege
ret = Math.pow(level, 3) * 5 / 4;
break;
case GrowthRate.FLUCTUATING:
ret = (Math.pow(level, 3) + ((level / 2) + 32)) * 4 / (100 + level);
ret = (Math.pow(level, 3) * ((level / 2) + 8)) * 4 / (100 + level);
break;
}

View File

@ -832,7 +832,7 @@ export class HealAttr extends MoveEffectAttr {
addHealPhase(target: Pokemon, healRatio: number) {
target.scene.unshiftPhase(new PokemonHealPhase(target.scene, target.getBattlerIndex(),
Math.max(Math.floor(target.getMaxHp() * healRatio), 1), getPokemonMessage(target, ' regained\nhealth!'), true, !this.showAnim));
Math.max(Math.floor(target.getMaxHp() * healRatio), 1), getPokemonMessage(target, ' \nhad its HP restored.'), true, !this.showAnim));
}
getTargetBenefitScore(user: Pokemon, target: Pokemon, move: Move): integer {
@ -970,6 +970,42 @@ export class SandHealAttr extends WeatherHealAttr {
}
}
/**
* Heals the target by either {@link normalHealRatio} or {@link boostedHealRatio}
* depending on the evaluation of {@link condition}
* @see {@link apply}
* @param user The Pokemon using this move
* @param target The target Pokemon of this move
* @param move This move
* @param args N/A
* @returns if the move was successful
*/
export class BoostHealAttr extends HealAttr {
private normalHealRatio?: number;
private boostedHealRatio?: number;
private condition?: MoveConditionFunc;
/**
* @param normalHealRatio Healing received when {@link condition} is false
* @param boostedHealRatio Healing received when {@link condition} is true
* @param showAnim Should a healing animation be showed?
* @param selfTarget Should the move target the user?
* @param condition The condition to check against when boosting the healing value
*/
constructor(normalHealRatio?: number, boostedHealRatio?: number, showAnim?: boolean, selfTarget?: boolean, condition?: MoveConditionFunc) {
super(normalHealRatio, showAnim, selfTarget);
this.normalHealRatio = normalHealRatio;
this.boostedHealRatio = boostedHealRatio;
this.condition = condition;
}
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
const healRatio = this.condition(user, target, move) ? this.boostedHealRatio : this.normalHealRatio;
this.addHealPhase(target, healRatio);
return true;
}
}
export class HitHealAttr extends MoveEffectAttr {
private healRatio: number;
@ -1130,14 +1166,15 @@ export class StatusEffectAttr extends MoveEffectAttr {
return false;
}
if (!pokemon.status || (pokemon.status.effect === this.effect && moveChance < 0))
return pokemon.trySetStatus(this.effect, true, this.cureTurn);
return pokemon.trySetStatus(this.effect, true, user, this.cureTurn);
}
return false;
}
getTargetBenefitScore(user: Pokemon, target: Pokemon, move: Move): number {
let moveChance = this.getMoveChance(user,target,move,this.selfTarget);
return !(this.selfTarget ? user : target).status && (this.selfTarget ? user : target).canSetStatus(this.effect, true) ? Math.floor(moveChance * -0.1) : 0;
return !(this.selfTarget ? user : target).status && (this.selfTarget ? user : target).canSetStatus(this.effect, true, false, user) ? Math.floor(moveChance * -0.1) : 0;
}
}
@ -1156,7 +1193,7 @@ export class MultiStatusEffectAttr extends StatusEffectAttr {
}
getTargetBenefitScore(user: Pokemon, target: Pokemon, move: Move): number {
return !(this.selfTarget ? user : target).status && (this.selfTarget ? user : target).canSetStatus(this.effect, true) ? Math.floor(move.chance * -0.1) : 0;
return !(this.selfTarget ? user : target).status && (this.selfTarget ? user : target).canSetStatus(this.effect, true, false, user) ? Math.floor(move.chance * -0.1) : 0;
}
}
@ -1172,7 +1209,7 @@ export class PsychoShiftEffectAttr extends MoveEffectAttr {
return false;
}
if (!target.status || (target.status.effect === statusToApply && move.chance < 0)) {
var statusAfflictResult = target.trySetStatus(statusToApply, true);
var statusAfflictResult = target.trySetStatus(statusToApply, true, user);
if (statusAfflictResult) {
user.scene.queueMessage(getPokemonMessage(user, getStatusEffectHealText(user.status.effect)));
user.resetStatus();
@ -1185,7 +1222,7 @@ export class PsychoShiftEffectAttr extends MoveEffectAttr {
}
getTargetBenefitScore(user: Pokemon, target: Pokemon, move: Move): number {
return !(this.selfTarget ? user : target).status && (this.selfTarget ? user : target).canSetStatus(user.status?.effect, true) ? Math.floor(move.chance * -0.1) : 0;
return !(this.selfTarget ? user : target).status && (this.selfTarget ? user : target).canSetStatus(user.status?.effect, true, false, user) ? Math.floor(move.chance * -0.1) : 0;
}
}
@ -1328,6 +1365,25 @@ export class BypassSleepAttr extends MoveAttr {
}
}
/**
* Attribute used for moves that bypass the burn damage reduction of physical moves, currently only facade
* Called during damage calculation
* @param user N/A
* @param target N/A
* @param move Move with this attribute
* @param args Utils.BooleanHolder for burnDamageReductionCancelled
* @returns true if the function succeeds
*/
export class BypassBurnDamageReductionAttr extends MoveAttr {
/** Prevents the move's damage from being reduced by burn */
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
(args[0] as Utils.BooleanHolder).value = true;
return true;
}
}
export class WeatherChangeAttr extends MoveEffectAttr {
private weatherType: WeatherType;
@ -1788,6 +1844,37 @@ export class ResetStatsAttr extends MoveEffectAttr {
}
}
/**
* Attribute used for moves which swap the user and the target's stat changes.
*/
export class SwapStatsAttr extends MoveEffectAttr
{
/**
* Swaps the user and the target's stat changes.
* @param user Pokemon that used the move
* @param target The target of the move
* @param move Move with this attribute
* @param args N/A
* @returns true if the function succeeds
*/
apply(user: Pokemon, target: Pokemon, move: Move, args: any []): boolean
{
if (!super.apply(user, target, move, args))
return false; //Exits if the move can't apply
let priorBoost : integer; //For storing a stat boost
for (let s = 0; s < target.summonData.battleStats.length; s++)
{
priorBoost = user.summonData.battleStats[s]; //Store user stat boost
user.summonData.battleStats[s] = target.summonData.battleStats[s]; //Applies target boost to self
target.summonData.battleStats[s] = priorBoost; //Applies stored boost to target
}
target.updateInfo();
user.updateInfo();
target.scene.queueMessage(getPokemonMessage(user, ' switched stat changes with the target!'));
return true;
}
}
export class HpSplitAttr extends MoveEffectAttr {
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): Promise<boolean> {
return new Promise(resolve => {
@ -2603,6 +2690,24 @@ export class WaterSuperEffectTypeMultiplierAttr extends VariableMoveTypeMultipli
}
}
export class IceNoEffectTypeAttr extends VariableMoveTypeMultiplierAttr {
/**
* Checks to see if the Target is Ice-Type or not. If so, the move will have no effect.
* @param {Pokemon} user N/A
* @param {Pokemon} target Pokemon that is being checked whether Ice-Type or not.
* @param {Move} move N/A
* @param {any[]} args Sets to false if the target is Ice-Type, so it should do no damage/no effect.
* @returns {boolean} Returns true if move is successful, false if Ice-Type.
*/
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
if (target.isOfType(Type.ICE)) {
(args[0] as Utils.BooleanHolder).value = false;
return false;
}
return true;
}
}
export class FlyingTypeMultiplierAttr extends VariableMoveTypeMultiplierAttr {
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
const multiplier = args[0] as Utils.NumberHolder;
@ -2622,6 +2727,29 @@ export class OneHitKOAccuracyAttr extends VariableAccuracyAttr {
}
}
export class SheerColdAccuracyAttr extends OneHitKOAccuracyAttr {
/**
* Changes the normal One Hit KO Accuracy Attr to implement the Gen VII changes,
* where if the user is Ice-Type, it has more accuracy.
* @param {Pokemon} user Pokemon that is using the move; checks the Pokemon's level.
* @param {Pokemon} target Pokemon that is receiving the move; checks the Pokemon's level.
* @param {Move} move N/A
* @param {any[]} args Uses the accuracy argument, allowing to change it from either 0 if it doesn't pass
* the first if/else, or 30/20 depending on the type of the user Pokemon.
* @returns Returns true if move is successful, false if misses.
*/
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
const accuracy = args[0] as Utils.NumberHolder;
if (user.level < target.level) {
accuracy.value = 0;
} else {
const baseAccuracy = user.isOfType(Type.ICE) ? 30 : 20;
accuracy.value = Math.min(Math.max(baseAccuracy + 100 * (1 - target.level / user.level), 0), 100);
}
return true;
}
}
export class MissEffectAttr extends MoveAttr {
private missEffectFunc: UserMoveConditionFunc;
@ -4848,7 +4976,8 @@ export function initMoves() {
.attr(StatChangeAttr, [ BattleStat.ATK, BattleStat.SPATK ], -2),
new AttackMove(Moves.FACADE, Type.NORMAL, MoveCategory.PHYSICAL, 70, 100, 20, -1, 0, 3)
.attr(MovePowerMultiplierAttr, (user, target, move) => user.status
&& (user.status.effect === StatusEffect.BURN || user.status.effect === StatusEffect.POISON || user.status.effect === StatusEffect.TOXIC || user.status.effect === StatusEffect.PARALYSIS) ? 2 : 1),
&& (user.status.effect === StatusEffect.BURN || user.status.effect === StatusEffect.POISON || user.status.effect === StatusEffect.TOXIC || user.status.effect === StatusEffect.PARALYSIS) ? 2 : 1)
.attr(BypassBurnDamageReductionAttr),
new AttackMove(Moves.FOCUS_PUNCH, Type.FIGHTING, MoveCategory.PHYSICAL, 150, 100, 20, -1, -3, 3)
.punchingMove()
.ignoresVirtual()
@ -5019,9 +5148,10 @@ export function initMoves() {
new AttackMove(Moves.SAND_TOMB, Type.GROUND, MoveCategory.PHYSICAL, 35, 85, 15, -1, 0, 3)
.attr(TrapAttr, BattlerTagType.SAND_TOMB)
.makesContact(false),
new AttackMove(Moves.SHEER_COLD, Type.ICE, MoveCategory.SPECIAL, 200, 30, 5, -1, 0, 3)
new AttackMove(Moves.SHEER_COLD, Type.ICE, MoveCategory.SPECIAL, 200, 20, 5, -1, 0, 3)
.attr(IceNoEffectTypeAttr)
.attr(OneHitKOAttr)
.attr(OneHitKOAccuracyAttr),
.attr(SheerColdAccuracyAttr),
new AttackMove(Moves.MUDDY_WATER, Type.WATER, MoveCategory.SPECIAL, 90, 85, 10, 30, 0, 3)
.attr(StatChangeAttr, BattleStat.ACC, -1)
.target(MoveTarget.ALL_NEAR_ENEMIES),
@ -5150,7 +5280,7 @@ export function initMoves() {
|| user.status?.effect === StatusEffect.TOXIC
|| user.status?.effect === StatusEffect.PARALYSIS
|| user.status?.effect === StatusEffect.SLEEP)
&& target.canSetStatus(user.status?.effect)
&& target.canSetStatus(user.status?.effect, false, false, user)
),
new AttackMove(Moves.TRUMP_CARD, Type.NORMAL, MoveCategory.SPECIAL, -1, -1, 5, -1, 0, 4)
.makesContact()
@ -5192,7 +5322,7 @@ export function initMoves() {
.attr(AddArenaTrapTagAttr, ArenaTagType.TOXIC_SPIKES)
.target(MoveTarget.ENEMY_SIDE),
new StatusMove(Moves.HEART_SWAP, Type.PSYCHIC, -1, 10, -1, 0, 4)
.unimplemented(),
.attr(SwapStatsAttr),
new SelfStatusMove(Moves.AQUA_RING, Type.WATER, -1, 20, -1, 0, 4)
.attr(AddBattlerTagAttr, BattlerTagType.AQUA_RING, true, true),
new SelfStatusMove(Moves.MAGNET_RISE, Type.ELECTRIC, -1, 10, -1, 0, 4)
@ -5957,9 +6087,8 @@ export function initMoves() {
.attr(StatChangeAttr, BattleStat.SPD, -1, true)
.punchingMove(),
new StatusMove(Moves.FLORAL_HEALING, Type.FAIRY, -1, 10, -1, 0, 7)
.attr(HealAttr, 0.5, true, false)
.triageMove()
.partial(),
.attr(BoostHealAttr, 0.5, 2/3, true, false, (user, target, move) => user.scene.arena.terrain?.terrainType === TerrainType.GRASSY)
.triageMove(),
new AttackMove(Moves.HIGH_HORSEPOWER, Type.GROUND, MoveCategory.PHYSICAL, 95, 95, 10, -1, 0, 7),
new StatusMove(Moves.STRENGTH_SAP, Type.GRASS, 100, 10, 100, 0, 7)
.attr(StrengthSapHealAttr)
@ -6146,7 +6275,7 @@ export function initMoves() {
.ignoresVirtual(),
/* End Unused */
new AttackMove(Moves.ZIPPY_ZAP, Type.ELECTRIC, MoveCategory.PHYSICAL, 80, 100, 10, 100, 2, 7)
.attr(CritOnlyAttr),
.attr(StatChangeAttr, BattleStat.EVA, 1, true),
new AttackMove(Moves.SPLISHY_SPLASH, Type.WATER, MoveCategory.SPECIAL, 90, 100, 15, 30, 0, 7)
.attr(StatusEffectAttr, StatusEffect.PARALYSIS)
.target(MoveTarget.ALL_NEAR_ENEMIES),
@ -6171,7 +6300,7 @@ export function initMoves() {
new AttackMove(Moves.FREEZY_FROST, Type.ICE, MoveCategory.SPECIAL, 100, 90, 10, -1, 0, 7)
.attr(ResetStatsAttr),
new AttackMove(Moves.SPARKLY_SWIRL, Type.FAIRY, MoveCategory.SPECIAL, 120, 85, 5, -1, 0, 7)
.partial(),
.attr(PartyStatusCureAttr, null, Abilities.NONE),
new AttackMove(Moves.VEEVEE_VOLLEY, Type.NORMAL, MoveCategory.PHYSICAL, -1, -1, 20, -1, 0, 7)
.attr(FriendshipPowerAttr),
new AttackMove(Moves.DOUBLE_IRON_BASH, Type.STEEL, MoveCategory.PHYSICAL, 60, 100, 5, 30, 0, 7)
@ -6342,7 +6471,8 @@ export function initMoves() {
.attr(ConfuseAttr),
new StatusMove(Moves.LIFE_DEW, Type.WATER, -1, 10, -1, 0, 8)
.attr(HealAttr, 0.25, true, false)
.target(MoveTarget.USER_AND_ALLIES),
.target(MoveTarget.USER_AND_ALLIES)
.ignoresProtect(),
new SelfStatusMove(Moves.OBSTRUCT, Type.DARK, 100, 10, -1, 4, 8)
.attr(ProtectAttr, BattlerTagType.OBSTRUCT),
new AttackMove(Moves.FALSE_SURRENDER, Type.DARK, MoveCategory.PHYSICAL, 80, -1, 10, -1, 0, 8),
@ -6765,7 +6895,7 @@ export function initMoves() {
const turnMove = user.getLastXMoves(1);
return !turnMove.length || turnMove[0].move !== move.id || turnMove[0].result !== MoveResult.SUCCESS;
}), // TODO Add Instruct/Encore interaction
new AttackMove(Moves.COMEUPPANCE, Type.DARK, MoveCategory.PHYSICAL, 1, 100, 10, -1, 0, 9)
new AttackMove(Moves.COMEUPPANCE, Type.DARK, MoveCategory.PHYSICAL, -1, 100, 10, -1, 0, 9)
.attr(CounterDamageAttr, (move: Move) => (move.category === MoveCategory.PHYSICAL || move.category === MoveCategory.SPECIAL), 1.5)
.target(MoveTarget.ATTACKER),
new AttackMove(Moves.AQUA_CUTTER, Type.WATER, MoveCategory.PHYSICAL, 70, 100, 20, -1, 0, 9)

View File

@ -2,6 +2,7 @@ import { Stat, getStatName } from "./pokemon-stat";
import * as Utils from "../utils";
import { TextStyle, getBBCodeFrag } from "../ui/text";
import { UiTheme } from "#app/enums/ui-theme";
import i18next from 'i18next';
export enum Nature {
HARDY,
@ -33,6 +34,10 @@ export enum Nature {
export function getNatureName(nature: Nature, includeStatEffects: boolean = false, forStarterSelect: boolean = false, ignoreBBCode: boolean = false, uiTheme: UiTheme = UiTheme.DEFAULT): string {
let ret = Utils.toReadableString(Nature[nature]);
//Translating nature
if(i18next.exists('nature:' + ret)){
ret = i18next.t('nature:' + ret as any)
}
if (includeStatEffects) {
const stats = Utils.getEnumValues(Stat).slice(1);
let increasedStat: Stat = null;

View File

@ -1,6 +1,5 @@
import { Gender } from "./gender";
import { AttackTypeBoosterModifier, FlinchChanceModifier } from "../modifier/modifier";
import { AttackTypeBoosterModifierType } from "../modifier/modifier-type";
import { Moves } from "./enums/moves";
import { PokeballType } from "./pokeball";
import Pokemon from "../field/pokemon";
@ -1386,15 +1385,15 @@ export const pokemonEvolutions: PokemonEvolutions = {
new SpeciesEvolution(Species.HELIOLISK, 1, EvolutionItem.SUN_STONE, null, SpeciesWildEvolutionDelay.LONG)
],
[Species.CHARJABUG]: [
new SpeciesEvolution(Species.VIKAVOLT, 1, EvolutionItem.THUNDER_STONE, null)
new SpeciesEvolution(Species.VIKAVOLT, 1, EvolutionItem.THUNDER_STONE, null, SpeciesWildEvolutionDelay.LONG)
],
[Species.CRABRAWLER]: [
new SpeciesEvolution(Species.CRABOMINABLE, 1, EvolutionItem.ICE_STONE, null)
new SpeciesEvolution(Species.CRABOMINABLE, 1, EvolutionItem.ICE_STONE, null, SpeciesWildEvolutionDelay.LONG)
],
[Species.ROCKRUFF]: [
new SpeciesFormEvolution(Species.LYCANROC, '', 'midday', 25, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DAY), null),
new SpeciesFormEvolution(Species.LYCANROC, '', 'dusk', 25, null, new SpeciesEvolutionCondition(p => p.scene.getSpeciesFormIndex(p.species) === 1), null),
new SpeciesFormEvolution(Species.LYCANROC, '', 'midnight', 25, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT), null)
new SpeciesFormEvolution(Species.LYCANROC, '', 'midday', 25, null, new SpeciesEvolutionCondition(p => (p.scene.arena.getTimeOfDay() === TimeOfDay.DAWN || p.scene.arena.getTimeOfDay() === TimeOfDay.DAY) && (p.formIndex === 0)), null),
new SpeciesFormEvolution(Species.LYCANROC, '', 'dusk', 25, null, new SpeciesEvolutionCondition(p => p.formIndex === 1), null),
new SpeciesFormEvolution(Species.LYCANROC, '', 'midnight', 25, null, new SpeciesEvolutionCondition(p => (p.scene.arena.getTimeOfDay() === TimeOfDay.DUSK || p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT) && (p.formIndex === 0)), null)
],
[Species.STEENEE]: [
new SpeciesEvolution(Species.TSAREENA, 28, null, new SpeciesEvolutionCondition(p => p.moveset.filter(m => m.moveId === Moves.STOMP).length > 0), SpeciesWildEvolutionDelay.LONG)

File diff suppressed because it is too large Load Diff

View File

@ -2759,7 +2759,7 @@ export const speciesStarters = {
[Species.GROUDON]: 8,
[Species.RAYQUAZA]: 8,
[Species.JIRACHI]: 7,
[Species.DEOXYS]: 8,
[Species.DEOXYS]: 7,
[Species.TURTWIG]: 3,
[Species.CHIMCHAR]: 3,
@ -2813,7 +2813,7 @@ export const speciesStarters = {
[Species.DARKRAI]: 7,
[Species.SHAYMIN]: 7,
[Species.ARCEUS]: 9,
[Species.VICTINI]: 8,
[Species.VICTINI]: 7,
[Species.SNIVY]: 3,
[Species.TEPIG]: 3,
@ -2895,7 +2895,7 @@ export const speciesStarters = {
[Species.KYUREM]: 8,
[Species.KELDEO]: 7,
[Species.MELOETTA]: 7,
[Species.GENESECT]: 8,
[Species.GENESECT]: 7,
[Species.CHESPIN]: 3,
[Species.FENNEKIN]: 3,

View File

@ -179,10 +179,6 @@ export class Arena {
return 5;
}
break;
case Species.SCATTERBUG:
case Species.SPEWPA:
case Species.VIVILLON:
return 0;
case Species.LYCANROC:
const timeOfDay = this.getTimeOfDay();
switch (timeOfDay) {
@ -194,13 +190,6 @@ export class Arena {
case TimeOfDay.NIGHT:
return 1;
}
case Species.CALYREX:
switch (this.biomeType) {
case Biome.SNOWY_FOREST:
return 1;
case Biome.GRAVEYARD:
return 2;
}
break;
}
@ -628,7 +617,7 @@ export class Arena {
case Biome.CONSTRUCTION_SITE:
return 1.222;
case Biome.JUNGLE:
return 2.477;
return 0.000;
case Biome.FAIRY_CAVE:
return 4.542;
case Biome.TEMPLE:

Some files were not shown because too many files have changed in this diff Show More