Merge branch 'beta' into held-item-refactor

This commit is contained in:
Wlowscha 2025-06-01 20:25:10 +02:00 committed by GitHub
commit db4cbe02ff
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
162 changed files with 3179 additions and 772 deletions

View File

@ -1,7 +1,7 @@
{ {
"textures": [ "textures": [
{ {
"image": "statuses_ca_ES.png", "image": "statuses_ca.png",
"format": "RGBA8888", "format": "RGBA8888",
"size": { "size": {
"w": 22, "w": 22,

View File

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -0,0 +1,188 @@
{
"textures": [
{
"image": "statuses_da.png",
"format": "RGBA8888",
"size": {
"w": 22,
"h": 64
},
"scale": 1,
"frames": [
{
"filename": "pokerus",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 22,
"h": 8
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 22,
"h": 8
},
"frame": {
"x": 0,
"y": 0,
"w": 22,
"h": 8
}
},
{
"filename": "burn",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 20,
"h": 8
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 20,
"h": 8
},
"frame": {
"x": 0,
"y": 8,
"w": 20,
"h": 8
}
},
{
"filename": "faint",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 20,
"h": 8
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 20,
"h": 8
},
"frame": {
"x": 0,
"y": 16,
"w": 20,
"h": 8
}
},
{
"filename": "freeze",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 20,
"h": 8
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 20,
"h": 8
},
"frame": {
"x": 0,
"y": 24,
"w": 20,
"h": 8
}
},
{
"filename": "paralysis",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 20,
"h": 8
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 20,
"h": 8
},
"frame": {
"x": 0,
"y": 32,
"w": 20,
"h": 8
}
},
{
"filename": "poison",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 20,
"h": 8
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 20,
"h": 8
},
"frame": {
"x": 0,
"y": 40,
"w": 20,
"h": 8
}
},
{
"filename": "sleep",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 20,
"h": 8
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 20,
"h": 8
},
"frame": {
"x": 0,
"y": 48,
"w": 20,
"h": 8
}
},
{
"filename": "toxic",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 20,
"h": 8
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 20,
"h": 8
},
"frame": {
"x": 0,
"y": 56,
"w": 20,
"h": 8
}
}
]
}
],
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
"smartupdate": "$TexturePacker:SmartUpdate:37686e85605d17b806f22d43081c1139:70535ffee63ba61b3397d8470c2c8982:e6649238c018d3630e55681417c698ca$"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -0,0 +1,188 @@
{
"textures": [
{
"image": "statuses_ro.png",
"format": "RGBA8888",
"size": {
"w": 22,
"h": 64
},
"scale": 1,
"frames": [
{
"filename": "pokerus",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 22,
"h": 8
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 22,
"h": 8
},
"frame": {
"x": 0,
"y": 0,
"w": 22,
"h": 8
}
},
{
"filename": "burn",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 20,
"h": 8
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 20,
"h": 8
},
"frame": {
"x": 0,
"y": 8,
"w": 20,
"h": 8
}
},
{
"filename": "faint",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 20,
"h": 8
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 20,
"h": 8
},
"frame": {
"x": 0,
"y": 16,
"w": 20,
"h": 8
}
},
{
"filename": "freeze",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 20,
"h": 8
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 20,
"h": 8
},
"frame": {
"x": 0,
"y": 24,
"w": 20,
"h": 8
}
},
{
"filename": "paralysis",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 20,
"h": 8
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 20,
"h": 8
},
"frame": {
"x": 0,
"y": 32,
"w": 20,
"h": 8
}
},
{
"filename": "poison",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 20,
"h": 8
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 20,
"h": 8
},
"frame": {
"x": 0,
"y": 40,
"w": 20,
"h": 8
}
},
{
"filename": "sleep",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 20,
"h": 8
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 20,
"h": 8
},
"frame": {
"x": 0,
"y": 48,
"w": 20,
"h": 8
}
},
{
"filename": "toxic",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 20,
"h": 8
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 20,
"h": 8
},
"frame": {
"x": 0,
"y": 56,
"w": 20,
"h": 8
}
}
]
}
],
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
"smartupdate": "$TexturePacker:SmartUpdate:37686e85605d17b806f22d43081c1139:70535ffee63ba61b3397d8470c2c8982:e6649238c018d3630e55681417c698ca$"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -0,0 +1,188 @@
{
"textures": [
{
"image": "statuses_ru.png",
"format": "RGBA8888",
"size": {
"w": 22,
"h": 64
},
"scale": 1,
"frames": [
{
"filename": "pokerus",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 22,
"h": 8
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 22,
"h": 8
},
"frame": {
"x": 0,
"y": 0,
"w": 22,
"h": 8
}
},
{
"filename": "burn",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 20,
"h": 8
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 20,
"h": 8
},
"frame": {
"x": 0,
"y": 8,
"w": 20,
"h": 8
}
},
{
"filename": "faint",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 20,
"h": 8
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 20,
"h": 8
},
"frame": {
"x": 0,
"y": 16,
"w": 20,
"h": 8
}
},
{
"filename": "freeze",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 20,
"h": 8
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 20,
"h": 8
},
"frame": {
"x": 0,
"y": 24,
"w": 20,
"h": 8
}
},
{
"filename": "paralysis",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 20,
"h": 8
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 20,
"h": 8
},
"frame": {
"x": 0,
"y": 32,
"w": 20,
"h": 8
}
},
{
"filename": "poison",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 20,
"h": 8
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 20,
"h": 8
},
"frame": {
"x": 0,
"y": 40,
"w": 20,
"h": 8
}
},
{
"filename": "sleep",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 20,
"h": 8
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 20,
"h": 8
},
"frame": {
"x": 0,
"y": 48,
"w": 20,
"h": 8
}
},
{
"filename": "toxic",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 20,
"h": 8
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 20,
"h": 8
},
"frame": {
"x": 0,
"y": 56,
"w": 20,
"h": 8
}
}
]
}
],
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
"smartupdate": "$TexturePacker:SmartUpdate:37686e85605d17b806f22d43081c1139:70535ffee63ba61b3397d8470c2c8982:e6649238c018d3630e55681417c698ca$"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -0,0 +1,188 @@
{
"textures": [
{
"image": "statuses_tr.png",
"format": "RGBA8888",
"size": {
"w": 22,
"h": 64
},
"scale": 1,
"frames": [
{
"filename": "pokerus",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 22,
"h": 8
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 22,
"h": 8
},
"frame": {
"x": 0,
"y": 0,
"w": 22,
"h": 8
}
},
{
"filename": "burn",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 20,
"h": 8
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 20,
"h": 8
},
"frame": {
"x": 0,
"y": 8,
"w": 20,
"h": 8
}
},
{
"filename": "faint",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 20,
"h": 8
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 20,
"h": 8
},
"frame": {
"x": 0,
"y": 16,
"w": 20,
"h": 8
}
},
{
"filename": "freeze",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 20,
"h": 8
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 20,
"h": 8
},
"frame": {
"x": 0,
"y": 24,
"w": 20,
"h": 8
}
},
{
"filename": "paralysis",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 20,
"h": 8
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 20,
"h": 8
},
"frame": {
"x": 0,
"y": 32,
"w": 20,
"h": 8
}
},
{
"filename": "poison",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 20,
"h": 8
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 20,
"h": 8
},
"frame": {
"x": 0,
"y": 40,
"w": 20,
"h": 8
}
},
{
"filename": "sleep",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 20,
"h": 8
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 20,
"h": 8
},
"frame": {
"x": 0,
"y": 48,
"w": 20,
"h": 8
}
},
{
"filename": "toxic",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 20,
"h": 8
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 20,
"h": 8
},
"frame": {
"x": 0,
"y": 56,
"w": 20,
"h": 8
}
}
]
}
],
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
"smartupdate": "$TexturePacker:SmartUpdate:37686e85605d17b806f22d43081c1139:70535ffee63ba61b3397d8470c2c8982:e6649238c018d3630e55681417c698ca$"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 441 B

View File

@ -1,7 +1,7 @@
{ {
"textures": [ "textures": [
{ {
"image": "types_ca-ES.png", "image": "types_ca.png",
"format": "RGBA8888", "format": "RGBA8888",
"size": { "size": {
"w": 32, "w": 32,

View File

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 6.2 KiB

440
public/images/types_da.json Normal file
View File

@ -0,0 +1,440 @@
{
"textures": [
{
"image": "types_da.png",
"format": "RGBA8888",
"size": {
"w": 32,
"h": 280
},
"scale": 1,
"frames": [
{
"filename": "unknown",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
}
},
{
"filename": "bug",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 14,
"w": 32,
"h": 14
}
},
{
"filename": "dark",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 28,
"w": 32,
"h": 14
}
},
{
"filename": "dragon",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 42,
"w": 32,
"h": 14
}
},
{
"filename": "electric",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 56,
"w": 32,
"h": 14
}
},
{
"filename": "fairy",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 70,
"w": 32,
"h": 14
}
},
{
"filename": "fighting",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 84,
"w": 32,
"h": 14
}
},
{
"filename": "fire",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 98,
"w": 32,
"h": 14
}
},
{
"filename": "flying",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 112,
"w": 32,
"h": 14
}
},
{
"filename": "ghost",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 126,
"w": 32,
"h": 14
}
},
{
"filename": "grass",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 140,
"w": 32,
"h": 14
}
},
{
"filename": "ground",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 154,
"w": 32,
"h": 14
}
},
{
"filename": "ice",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 168,
"w": 32,
"h": 14
}
},
{
"filename": "normal",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 182,
"w": 32,
"h": 14
}
},
{
"filename": "poison",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 196,
"w": 32,
"h": 14
}
},
{
"filename": "psychic",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 210,
"w": 32,
"h": 14
}
},
{
"filename": "rock",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 224,
"w": 32,
"h": 14
}
},
{
"filename": "steel",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 238,
"w": 32,
"h": 14
}
},
{
"filename": "water",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 252,
"w": 32,
"h": 14
}
},
{
"filename": "stellar",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 266,
"w": 32,
"h": 14
}
}
]
}
],
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
"smartupdate": "$TexturePacker:SmartUpdate:f14cf47d9a8f1d40c8e03aa6ba00fff3:6fc4227b57a95d429a1faad4280f7ec8:5961efbfbf4c56b8745347e7a663a32f$"
}
}

BIN
public/images/types_da.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

440
public/images/types_ro.json Normal file
View File

@ -0,0 +1,440 @@
{
"textures": [
{
"image": "types_ro.png",
"format": "RGBA8888",
"size": {
"w": 32,
"h": 280
},
"scale": 1,
"frames": [
{
"filename": "unknown",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
}
},
{
"filename": "bug",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 14,
"w": 32,
"h": 14
}
},
{
"filename": "dark",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 28,
"w": 32,
"h": 14
}
},
{
"filename": "dragon",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 42,
"w": 32,
"h": 14
}
},
{
"filename": "electric",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 56,
"w": 32,
"h": 14
}
},
{
"filename": "fairy",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 70,
"w": 32,
"h": 14
}
},
{
"filename": "fighting",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 84,
"w": 32,
"h": 14
}
},
{
"filename": "fire",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 98,
"w": 32,
"h": 14
}
},
{
"filename": "flying",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 112,
"w": 32,
"h": 14
}
},
{
"filename": "ghost",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 126,
"w": 32,
"h": 14
}
},
{
"filename": "grass",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 140,
"w": 32,
"h": 14
}
},
{
"filename": "ground",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 154,
"w": 32,
"h": 14
}
},
{
"filename": "ice",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 168,
"w": 32,
"h": 14
}
},
{
"filename": "normal",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 182,
"w": 32,
"h": 14
}
},
{
"filename": "poison",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 196,
"w": 32,
"h": 14
}
},
{
"filename": "psychic",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 210,
"w": 32,
"h": 14
}
},
{
"filename": "rock",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 224,
"w": 32,
"h": 14
}
},
{
"filename": "steel",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 238,
"w": 32,
"h": 14
}
},
{
"filename": "water",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 252,
"w": 32,
"h": 14
}
},
{
"filename": "stellar",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 266,
"w": 32,
"h": 14
}
}
]
}
],
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
"smartupdate": "$TexturePacker:SmartUpdate:f14cf47d9a8f1d40c8e03aa6ba00fff3:6fc4227b57a95d429a1faad4280f7ec8:5961efbfbf4c56b8745347e7a663a32f$"
}
}

BIN
public/images/types_ro.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

440
public/images/types_ru.json Normal file
View File

@ -0,0 +1,440 @@
{
"textures": [
{
"image": "types_ru.png",
"format": "RGBA8888",
"size": {
"w": 32,
"h": 280
},
"scale": 1,
"frames": [
{
"filename": "unknown",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
}
},
{
"filename": "bug",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 14,
"w": 32,
"h": 14
}
},
{
"filename": "dark",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 28,
"w": 32,
"h": 14
}
},
{
"filename": "dragon",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 42,
"w": 32,
"h": 14
}
},
{
"filename": "electric",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 56,
"w": 32,
"h": 14
}
},
{
"filename": "fairy",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 70,
"w": 32,
"h": 14
}
},
{
"filename": "fighting",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 84,
"w": 32,
"h": 14
}
},
{
"filename": "fire",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 98,
"w": 32,
"h": 14
}
},
{
"filename": "flying",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 112,
"w": 32,
"h": 14
}
},
{
"filename": "ghost",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 126,
"w": 32,
"h": 14
}
},
{
"filename": "grass",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 140,
"w": 32,
"h": 14
}
},
{
"filename": "ground",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 154,
"w": 32,
"h": 14
}
},
{
"filename": "ice",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 168,
"w": 32,
"h": 14
}
},
{
"filename": "normal",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 182,
"w": 32,
"h": 14
}
},
{
"filename": "poison",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 196,
"w": 32,
"h": 14
}
},
{
"filename": "psychic",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 210,
"w": 32,
"h": 14
}
},
{
"filename": "rock",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 224,
"w": 32,
"h": 14
}
},
{
"filename": "steel",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 238,
"w": 32,
"h": 14
}
},
{
"filename": "water",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 252,
"w": 32,
"h": 14
}
},
{
"filename": "stellar",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 266,
"w": 32,
"h": 14
}
}
]
}
],
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
"smartupdate": "$TexturePacker:SmartUpdate:f14cf47d9a8f1d40c8e03aa6ba00fff3:6fc4227b57a95d429a1faad4280f7ec8:5961efbfbf4c56b8745347e7a663a32f$"
}
}

BIN
public/images/types_ru.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

440
public/images/types_tr.json Normal file
View File

@ -0,0 +1,440 @@
{
"textures": [
{
"image": "types_tr.png",
"format": "RGBA8888",
"size": {
"w": 32,
"h": 280
},
"scale": 1,
"frames": [
{
"filename": "unknown",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
}
},
{
"filename": "bug",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 14,
"w": 32,
"h": 14
}
},
{
"filename": "dark",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 28,
"w": 32,
"h": 14
}
},
{
"filename": "dragon",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 42,
"w": 32,
"h": 14
}
},
{
"filename": "electric",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 56,
"w": 32,
"h": 14
}
},
{
"filename": "fairy",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 70,
"w": 32,
"h": 14
}
},
{
"filename": "fighting",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 84,
"w": 32,
"h": 14
}
},
{
"filename": "fire",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 98,
"w": 32,
"h": 14
}
},
{
"filename": "flying",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 112,
"w": 32,
"h": 14
}
},
{
"filename": "ghost",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 126,
"w": 32,
"h": 14
}
},
{
"filename": "grass",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 140,
"w": 32,
"h": 14
}
},
{
"filename": "ground",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 154,
"w": 32,
"h": 14
}
},
{
"filename": "ice",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 168,
"w": 32,
"h": 14
}
},
{
"filename": "normal",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 182,
"w": 32,
"h": 14
}
},
{
"filename": "poison",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 196,
"w": 32,
"h": 14
}
},
{
"filename": "psychic",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 210,
"w": 32,
"h": 14
}
},
{
"filename": "rock",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 224,
"w": 32,
"h": 14
}
},
{
"filename": "steel",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 238,
"w": 32,
"h": 14
}
},
{
"filename": "water",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 252,
"w": 32,
"h": 14
}
},
{
"filename": "stellar",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 32,
"h": 14
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 32,
"h": 14
},
"frame": {
"x": 0,
"y": 266,
"w": 32,
"h": 14
}
}
]
}
],
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
"smartupdate": "$TexturePacker:SmartUpdate:f14cf47d9a8f1d40c8e03aa6ba00fff3:6fc4227b57a95d429a1faad4280f7ec8:5961efbfbf4c56b8745347e7a663a32f$"
}
}

BIN
public/images/types_tr.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

@ -1 +1 @@
Subproject commit e9ccbadb6eaa3b797f3dec919745befda2ec74bd Subproject commit 88c60b6f8d5babfb0c157b31ceff22486712295c

View File

@ -65,14 +65,14 @@ const fonts: Array<LoadingFontFaceProperty> = [
unicodeRange: rangesByLanguage.chinese, unicodeRange: rangesByLanguage.chinese,
}), }),
extraOptions: { sizeAdjust: "70%", format: "woff2" }, extraOptions: { sizeAdjust: "70%", format: "woff2" },
only: ["en", "es", "fr", "it", "de", "zh", "pt", "ko", "ca"], only: ["en", "es", "fr", "it", "de", "zh", "pt", "ko", "ca", "da", "tr", "ro", "ru"],
}, },
{ {
face: new FontFace("pkmnems", "url(./fonts/unifont-15.1.05.subset.woff2)", { face: new FontFace("pkmnems", "url(./fonts/unifont-15.1.05.subset.woff2)", {
unicodeRange: rangesByLanguage.chinese, unicodeRange: rangesByLanguage.chinese,
}), }),
extraOptions: { format: "woff2" }, extraOptions: { format: "woff2" },
only: ["en", "es", "fr", "it", "de", "zh", "pt", "ko", "ca"], only: ["en", "es", "fr", "it", "de", "zh", "pt", "ko", "ca", "da", "tr", "ro", "ru"],
}, },
// japanese // japanese
{ {
@ -174,7 +174,7 @@ export async function initI18n(): Promise<void> {
"es-MX": ["es-ES", "en"], "es-MX": ["es-ES", "en"],
default: ["en"], default: ["en"],
}, },
supportedLngs: ["en", "es-ES", "es-MX", "fr", "it", "de", "zh-CN", "zh-TW", "pt-BR", "ko", "ja", "ca-ES"], supportedLngs: ["en", "es-ES", "es-MX", "fr", "it", "de", "zh-CN", "zh-TW", "pt-BR", "ko", "ja", "ca", "da", "tr", "ro", "ru"],
backend: { backend: {
loadPath(lng: string, [ns]: string[]) { loadPath(lng: string, [ns]: string[]) {
let fileName: string; let fileName: string;

View File

@ -921,10 +921,6 @@ export function setSetting(setting: string, value: number): boolean {
label: "Español (LATAM)", label: "Español (LATAM)",
handler: () => changeLocaleHandler("es-MX"), handler: () => changeLocaleHandler("es-MX"),
}, },
{
label: "Italiano",
handler: () => changeLocaleHandler("it"),
},
{ {
label: "Français", label: "Français",
handler: () => changeLocaleHandler("fr"), handler: () => changeLocaleHandler("fr"),
@ -933,18 +929,14 @@ export function setSetting(setting: string, value: number): boolean {
label: "Deutsch", label: "Deutsch",
handler: () => changeLocaleHandler("de"), handler: () => changeLocaleHandler("de"),
}, },
{
label: "Italiano",
handler: () => changeLocaleHandler("it"),
},
{ {
label: "Português (BR)", label: "Português (BR)",
handler: () => changeLocaleHandler("pt-BR"), handler: () => changeLocaleHandler("pt-BR"),
}, },
{
label: "简体中文",
handler: () => changeLocaleHandler("zh-CN"),
},
{
label: "繁體中文",
handler: () => changeLocaleHandler("zh-TW"),
},
{ {
label: "한국어", label: "한국어",
handler: () => changeLocaleHandler("ko"), handler: () => changeLocaleHandler("ko"),
@ -954,8 +946,32 @@ export function setSetting(setting: string, value: number): boolean {
handler: () => changeLocaleHandler("ja"), handler: () => changeLocaleHandler("ja"),
}, },
{ {
label: "Català", label: "简体中文",
handler: () => changeLocaleHandler("ca-ES"), handler: () => changeLocaleHandler("zh-CN"),
},
{
label: "繁體中文",
handler: () => changeLocaleHandler("zh-TW"),
},
{
label: "Català (Needs Help)",
handler: () => changeLocaleHandler("ca"),
},
{
label: "Türkçe (Needs Help)",
handler: () => changeLocaleHandler("tr")
},
{
label: "Русский (Needs Help)",
handler: () => changeLocaleHandler("ru"),
},
{
label: "Dansk (Needs Help)",
handler: () => changeLocaleHandler("da")
},
{
label: "Română (Needs Help)",
handler: () => changeLocaleHandler("ro")
}, },
{ {
label: i18next.t("settings:back"), label: i18next.t("settings:back"),

View File

@ -39,12 +39,6 @@ export default class SettingsDisplayUiHandler extends AbstractSettingsUiHandler
label: "Español (LATAM)", label: "Español (LATAM)",
}; };
break; break;
case "it":
this.settings[languageIndex].options[0] = {
value: "Italiano",
label: "Italiano",
};
break;
case "fr": case "fr":
this.settings[languageIndex].options[0] = { this.settings[languageIndex].options[0] = {
value: "Français", value: "Français",
@ -57,24 +51,18 @@ export default class SettingsDisplayUiHandler extends AbstractSettingsUiHandler
label: "Deutsch", label: "Deutsch",
}; };
break; break;
case "it":
this.settings[languageIndex].options[0] = {
value: "Italiano",
label: "Italiano",
};
break;
case "pt-BR": case "pt-BR":
this.settings[languageIndex].options[0] = { this.settings[languageIndex].options[0] = {
value: "Português (BR)", value: "Português (BR)",
label: "Português (BR)", label: "Português (BR)",
}; };
break; break;
case "zh-CN":
this.settings[languageIndex].options[0] = {
value: "简体中文",
label: "简体中文",
};
break;
case "zh-TW":
this.settings[languageIndex].options[0] = {
value: "繁體中文",
label: "繁體中文",
};
break;
case "ko": case "ko":
case "ko-KR": case "ko-KR":
this.settings[languageIndex].options[0] = { this.settings[languageIndex].options[0] = {
@ -88,10 +76,46 @@ export default class SettingsDisplayUiHandler extends AbstractSettingsUiHandler
label: "日本語", label: "日本語",
}; };
break; break;
case "ca-ES": case "zh-CN":
this.settings[languageIndex].options[0] = {
value: "简体中文",
label: "简体中文",
};
break;
case "zh-TW":
this.settings[languageIndex].options[0] = {
value: "繁體中文",
label: "繁體中文",
};
break;
case "ca":
this.settings[languageIndex].options[0] = { this.settings[languageIndex].options[0] = {
value: "Català", value: "Català",
label: "Català", label: "Català (Needs Help)",
};
break;
case "tr":
this.settings[languageIndex].options[0] = {
value: "Türkçe",
label: "Türkçe (Needs Help)",
};
break;
case "ru":
this.settings[languageIndex].options[0] = {
value: "Русский",
label: "Русский (Needs Help)",
};
break;
case "da":
this.settings[languageIndex].options[0] = {
value: "Dansk",
label: "Dansk (Needs Help)",
};
break;
case "ro":
this.settings[languageIndex].options[0] = {
value: "Română",
label: "Română (Needs Help)",
}; };
break; break;
default: default:

View File

@ -162,6 +162,24 @@ const languageSettings: { [key: string]: LanguageSetting } = {
starterInfoYOffset: 0.5, starterInfoYOffset: 0.5,
starterInfoXPos: 29, starterInfoXPos: 29,
}, },
da:{
starterInfoTextSize: "56px",
instructionTextSize: "38px",
},
tr:{
starterInfoTextSize: "56px",
instructionTextSize: "38px",
},
ro:{
starterInfoTextSize: "56px",
instructionTextSize: "38px",
},
ru: {
starterInfoTextSize: "46px",
instructionTextSize: "38px",
starterInfoYOffset: 0.5,
starterInfoXPos: 26,
},
}; };
const valueReductionMax = 2; const valueReductionMax = 2;

View File

@ -1260,7 +1260,7 @@ export default class SummaryUiHandler extends UiHandler {
this.moveSelect = true; this.moveSelect = true;
this.extraMoveRowContainer.setVisible(true); this.extraMoveRowContainer.setVisible(true);
this.selectedMoveIndex = -1; this.selectedMoveIndex = -1;
this.setCursor(0); this.setCursor(this.summaryUiMode === SummaryUiMode.LEARN_MOVE ? 4 : 0);
this.showMoveEffect(); this.showMoveEffect();
} }

View File

@ -435,14 +435,18 @@ export function hasAllLocalizedSprites(lang?: string): boolean {
case "es-ES": case "es-ES":
case "es-MX": case "es-MX":
case "fr": case "fr":
case "da":
case "de": case "de":
case "it": case "it":
case "zh-CN": case "zh-CN":
case "zh-TW": case "zh-TW":
case "pt-BR": case "pt-BR":
case "ro":
case "tr":
case "ko": case "ko":
case "ja": case "ja":
case "ca-ES": case "ca":
case "ru":
return true; return true;
default: default:
return false; return false;

View File

@ -40,7 +40,7 @@ describe("Moves - Aroma Veil", () => {
game.move.select(Moves.GROWL); game.move.select(Moves.GROWL);
game.move.select(Moves.GROWL); game.move.select(Moves.GROWL);
await game.forceEnemyMove(Moves.HEAL_BLOCK); await game.move.selectEnemyMove(Moves.HEAL_BLOCK);
await game.toNextTurn(); await game.toNextTurn();
party.forEach(p => { party.forEach(p => {
expect(p.getTag(BattlerTagType.HEAL_BLOCK)).toBeUndefined(); expect(p.getTag(BattlerTagType.HEAL_BLOCK)).toBeUndefined();
@ -54,8 +54,8 @@ describe("Moves - Aroma Veil", () => {
game.move.select(Moves.GROWL); game.move.select(Moves.GROWL);
game.move.select(Moves.GROWL, 1); game.move.select(Moves.GROWL, 1);
await game.forceEnemyMove(Moves.IMPRISON, BattlerIndex.PLAYER); await game.move.selectEnemyMove(Moves.IMPRISON, BattlerIndex.PLAYER);
await game.forceEnemyMove(Moves.SPLASH); await game.move.selectEnemyMove(Moves.SPLASH);
await game.toNextTurn(); await game.toNextTurn();
expect(game.scene.arena.getTag(ArenaTagType.IMPRISON)).toBeDefined(); expect(game.scene.arena.getTag(ArenaTagType.IMPRISON)).toBeDefined();
party.forEach(p => { party.forEach(p => {

View File

@ -39,7 +39,7 @@ describe("Abilities - Battery", () => {
vi.spyOn(moveToCheck, "calculateBattlePower"); vi.spyOn(moveToCheck, "calculateBattlePower");
await game.startBattle([Species.PIKACHU, Species.CHARJABUG]); await game.classicMode.startBattle([Species.PIKACHU, Species.CHARJABUG]);
game.move.select(Moves.DAZZLING_GLEAM); game.move.select(Moves.DAZZLING_GLEAM);
game.move.select(Moves.SPLASH, 1); game.move.select(Moves.SPLASH, 1);
@ -54,7 +54,7 @@ describe("Abilities - Battery", () => {
vi.spyOn(moveToCheck, "calculateBattlePower"); vi.spyOn(moveToCheck, "calculateBattlePower");
await game.startBattle([Species.PIKACHU, Species.CHARJABUG]); await game.classicMode.startBattle([Species.PIKACHU, Species.CHARJABUG]);
game.move.select(Moves.BREAKING_SWIPE); game.move.select(Moves.BREAKING_SWIPE);
game.move.select(Moves.SPLASH, 1); game.move.select(Moves.SPLASH, 1);
@ -69,7 +69,7 @@ describe("Abilities - Battery", () => {
vi.spyOn(moveToCheck, "calculateBattlePower"); vi.spyOn(moveToCheck, "calculateBattlePower");
await game.startBattle([Species.CHARJABUG, Species.PIKACHU]); await game.classicMode.startBattle([Species.CHARJABUG, Species.PIKACHU]);
game.move.select(Moves.DAZZLING_GLEAM); game.move.select(Moves.DAZZLING_GLEAM);
game.move.select(Moves.SPLASH, 1); game.move.select(Moves.SPLASH, 1);

View File

@ -59,8 +59,8 @@ describe("Abilities - Commander", () => {
expect(game.scene.currentBattle.turnCommands[0]?.skip).toBeTruthy(); expect(game.scene.currentBattle.turnCommands[0]?.skip).toBeTruthy();
// Force both enemies to target the Tatsugiri // Force both enemies to target the Tatsugiri
await game.forceEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER); await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER);
await game.forceEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER); await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER);
await game.phaseInterceptor.to("BerryPhase", false); await game.phaseInterceptor.to("BerryPhase", false);
game.scene.getEnemyField().forEach(enemy => expect(enemy.getLastXMoves(1)[0].result).toBe(MoveResult.MISS)); game.scene.getEnemyField().forEach(enemy => expect(enemy.getLastXMoves(1)[0].result).toBe(MoveResult.MISS));
@ -100,8 +100,8 @@ describe("Abilities - Commander", () => {
expect(game.scene.currentBattle.turnCommands[0]?.skip).toBeTruthy(); expect(game.scene.currentBattle.turnCommands[0]?.skip).toBeTruthy();
await game.forceEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER); await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER);
await game.forceEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER); await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER);
await game.setTurnOrder([BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER]); await game.setTurnOrder([BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER]);
@ -183,8 +183,8 @@ describe("Abilities - Commander", () => {
expect(game.scene.currentBattle.turnCommands[0]?.skip).toBeTruthy(); expect(game.scene.currentBattle.turnCommands[0]?.skip).toBeTruthy();
await game.forceEnemyMove(Moves.WHIRLWIND, BattlerIndex.PLAYER_2); await game.move.selectEnemyMove(Moves.WHIRLWIND, BattlerIndex.PLAYER_2);
await game.forceEnemyMove(Moves.SPLASH); await game.move.selectEnemyMove(Moves.SPLASH);
// Test may time out here if Whirlwind forced out a Pokemon // Test may time out here if Whirlwind forced out a Pokemon
await game.phaseInterceptor.to("TurnEndPhase"); await game.phaseInterceptor.to("TurnEndPhase");

View File

@ -33,7 +33,7 @@ describe("Abilities - COSTAR", () => {
test("ability copies positive stat stages", async () => { test("ability copies positive stat stages", async () => {
game.override.enemyAbility(Abilities.BALL_FETCH); game.override.enemyAbility(Abilities.BALL_FETCH);
await game.startBattle([Species.MAGIKARP, Species.MAGIKARP, Species.FLAMIGO]); await game.classicMode.startBattle([Species.MAGIKARP, Species.MAGIKARP, Species.FLAMIGO]);
let [leftPokemon, rightPokemon] = game.scene.getPlayerField(); let [leftPokemon, rightPokemon] = game.scene.getPlayerField();
@ -58,7 +58,7 @@ describe("Abilities - COSTAR", () => {
test("ability copies negative stat stages", async () => { test("ability copies negative stat stages", async () => {
game.override.enemyAbility(Abilities.INTIMIDATE); game.override.enemyAbility(Abilities.INTIMIDATE);
await game.startBattle([Species.MAGIKARP, Species.MAGIKARP, Species.FLAMIGO]); await game.classicMode.startBattle([Species.MAGIKARP, Species.MAGIKARP, Species.FLAMIGO]);
let [leftPokemon, rightPokemon] = game.scene.getPlayerField(); let [leftPokemon, rightPokemon] = game.scene.getPlayerField();

View File

@ -76,7 +76,7 @@ describe("Abilities - Cud Chew", () => {
farigiraf.hp = farigiraf.getMaxHp() / 2 - 1; farigiraf.hp = farigiraf.getMaxHp() / 2 - 1;
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.SPLASH); await game.move.selectEnemyMove(Moves.SPLASH);
await game.phaseInterceptor.to("TurnEndPhase"); await game.phaseInterceptor.to("TurnEndPhase");
// doesn't trigger since cud chew hasn't eaten berry yet // doesn't trigger since cud chew hasn't eaten berry yet
@ -86,7 +86,7 @@ describe("Abilities - Cud Chew", () => {
// get heal pulsed back to full before the cud chew proc // get heal pulsed back to full before the cud chew proc
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.HEAL_PULSE); await game.move.selectEnemyMove(Moves.HEAL_PULSE);
await game.phaseInterceptor.to("TurnEndPhase"); await game.phaseInterceptor.to("TurnEndPhase");
// globalScene.queueAbilityDisplay should be called twice: // globalScene.queueAbilityDisplay should be called twice:

View File

@ -77,8 +77,8 @@ describe("Abilities - Dancer", () => {
game.move.select(Moves.REVELATION_DANCE, BattlerIndex.PLAYER, BattlerIndex.ENEMY_2); game.move.select(Moves.REVELATION_DANCE, BattlerIndex.PLAYER, BattlerIndex.ENEMY_2);
game.move.select(Moves.FIERY_DANCE, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY_2); game.move.select(Moves.FIERY_DANCE, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY_2);
await game.forceEnemyMove(Moves.INSTRUCT, BattlerIndex.PLAYER); await game.move.selectEnemyMove(Moves.INSTRUCT, BattlerIndex.PLAYER);
await game.forceEnemyMove(Moves.MIRROR_MOVE, BattlerIndex.PLAYER); await game.move.selectEnemyMove(Moves.MIRROR_MOVE, BattlerIndex.PLAYER);
await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY_2, BattlerIndex.ENEMY]); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY_2, BattlerIndex.ENEMY]);
await game.phaseInterceptor.to("MovePhase"); // Oricorio rev dance await game.phaseInterceptor.to("MovePhase"); // Oricorio rev dance
await game.phaseInterceptor.to("MovePhase"); // Feebas fiery dance await game.phaseInterceptor.to("MovePhase"); // Feebas fiery dance

View File

@ -50,8 +50,8 @@ describe("Abilities - Desolate Land", () => {
game.move.select(Moves.SPLASH, 0, 2); game.move.select(Moves.SPLASH, 0, 2);
game.move.select(Moves.SPLASH, 1, 2); game.move.select(Moves.SPLASH, 1, 2);
await game.forceEnemyMove(Moves.ROAR, 0); await game.move.selectEnemyMove(Moves.ROAR, 0);
await game.forceEnemyMove(Moves.SPLASH, 1); await game.move.selectEnemyMove(Moves.SPLASH, 1);
await game.phaseInterceptor.to("TurnEndPhase"); await game.phaseInterceptor.to("TurnEndPhase");
@ -66,8 +66,8 @@ describe("Abilities - Desolate Land", () => {
game.move.select(Moves.SPLASH, 0, 2); game.move.select(Moves.SPLASH, 0, 2);
game.move.select(Moves.SPLASH, 1, 2); game.move.select(Moves.SPLASH, 1, 2);
await game.forceEnemyMove(Moves.ROAR, 1); await game.move.selectEnemyMove(Moves.ROAR, 1);
await game.forceEnemyMove(Moves.SPLASH, 0); await game.move.selectEnemyMove(Moves.SPLASH, 0);
await game.phaseInterceptor.to("TurnEndPhase"); await game.phaseInterceptor.to("TurnEndPhase");
@ -103,8 +103,8 @@ describe("Abilities - Desolate Land", () => {
game.move.select(Moves.SPLASH, 0, 2); game.move.select(Moves.SPLASH, 0, 2);
game.move.select(Moves.SPLASH, 1, 2); game.move.select(Moves.SPLASH, 1, 2);
await game.forceEnemyMove(Moves.MEMENTO, 0); await game.move.selectEnemyMove(Moves.MEMENTO, 0);
await game.forceEnemyMove(Moves.MEMENTO, 1); await game.move.selectEnemyMove(Moves.MEMENTO, 1);
await game.phaseInterceptor.to("TurnEndPhase"); await game.phaseInterceptor.to("TurnEndPhase");

View File

@ -67,8 +67,8 @@ describe("Abilities - Flower Gift", () => {
// turn 1 // turn 1
game.move.select(Moves.SUNNY_DAY, 0); game.move.select(Moves.SUNNY_DAY, 0);
game.move.select(ally_move, 1, ally_target); game.move.select(ally_move, 1, ally_target);
await game.forceEnemyMove(enemy_move, BattlerIndex.PLAYER_2); await game.move.selectEnemyMove(enemy_move, BattlerIndex.PLAYER_2);
await game.forceEnemyMove(Moves.SPLASH); await game.move.selectEnemyMove(Moves.SPLASH);
// Ensure sunny day is used last. // Ensure sunny day is used last.
await game.setTurnOrder([attacker_index, target_index, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER]); await game.setTurnOrder([attacker_index, target_index, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER]);
await game.phaseInterceptor.to(TurnEndPhase); await game.phaseInterceptor.to(TurnEndPhase);
@ -79,8 +79,8 @@ describe("Abilities - Flower Gift", () => {
// turn 2. Make target use recover to reset hp calculation. // turn 2. Make target use recover to reset hp calculation.
game.move.select(Moves.SPLASH, 0, target_index); game.move.select(Moves.SPLASH, 0, target_index);
game.move.select(ally_move, 1, ally_target); game.move.select(ally_move, 1, ally_target);
await game.forceEnemyMove(enemy_move, BattlerIndex.PLAYER_2); await game.move.selectEnemyMove(enemy_move, BattlerIndex.PLAYER_2);
await game.forceEnemyMove(Moves.SPLASH); await game.move.selectEnemyMove(Moves.SPLASH);
await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY_2, target_index, attacker_index]); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY_2, target_index, attacker_index]);
await game.phaseInterceptor.to(TurnEndPhase); await game.phaseInterceptor.to(TurnEndPhase);
const damageWithGift = initialHp - target.hp; const damageWithGift = initialHp - target.hp;

View File

@ -49,7 +49,7 @@ describe("Abilities - Flower Veil", () => {
await game.classicMode.startBattle([Species.BULBASAUR]); await game.classicMode.startBattle([Species.BULBASAUR]);
const user = game.scene.getPlayerPokemon()!; const user = game.scene.getPlayerPokemon()!;
game.move.select(Moves.REST); game.move.select(Moves.REST);
await game.forceEnemyMove(Moves.TACKLE); await game.move.selectEnemyMove(Moves.TACKLE);
await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]);
await game.toNextTurn(); await game.toNextTurn();
expect(user.status?.effect).toBe(StatusEffect.SLEEP); expect(user.status?.effect).toBe(StatusEffect.SLEEP);
@ -57,7 +57,7 @@ describe("Abilities - Flower Veil", () => {
// remove sleep status so we can get burn from the orb // remove sleep status so we can get burn from the orb
user.resetStatus(); user.resetStatus();
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.SPLASH); await game.move.selectEnemyMove(Moves.SPLASH);
await game.toNextTurn(); await game.toNextTurn();
expect(user.status?.effect).toBe(StatusEffect.BURN); expect(user.status?.effect).toBe(StatusEffect.BURN);
}); });
@ -71,8 +71,8 @@ describe("Abilities - Flower Veil", () => {
vi.spyOn(ally, "getAbility").mockReturnValue(allAbilities[Abilities.BALL_FETCH]); vi.spyOn(ally, "getAbility").mockReturnValue(allAbilities[Abilities.BALL_FETCH]);
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.YAWN, BattlerIndex.PLAYER); await game.move.selectEnemyMove(Moves.YAWN, BattlerIndex.PLAYER);
await game.forceEnemyMove(Moves.YAWN, BattlerIndex.PLAYER_2); await game.move.selectEnemyMove(Moves.YAWN, BattlerIndex.PLAYER_2);
await game.phaseInterceptor.to("BerryPhase"); await game.phaseInterceptor.to("BerryPhase");
const user = game.scene.getPlayerPokemon()!; const user = game.scene.getPlayerPokemon()!;
@ -86,7 +86,7 @@ describe("Abilities - Flower Veil", () => {
await game.classicMode.startBattle([Species.BULBASAUR]); await game.classicMode.startBattle([Species.BULBASAUR]);
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.THUNDER_WAVE); await game.move.selectEnemyMove(Moves.THUNDER_WAVE);
await game.toNextTurn(); await game.toNextTurn();
expect(game.scene.getPlayerPokemon()!.status).toBeUndefined(); expect(game.scene.getPlayerPokemon()!.status).toBeUndefined();
vi.spyOn(allMoves[Moves.THUNDER_WAVE], "accuracy", "get").mockClear(); vi.spyOn(allMoves[Moves.THUNDER_WAVE], "accuracy", "get").mockClear();
@ -101,8 +101,8 @@ describe("Abilities - Flower Veil", () => {
vi.spyOn(ally, "getAbility").mockReturnValue(allAbilities[Abilities.BALL_FETCH]); vi.spyOn(ally, "getAbility").mockReturnValue(allAbilities[Abilities.BALL_FETCH]);
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.THUNDER_WAVE, BattlerIndex.PLAYER); await game.move.selectEnemyMove(Moves.THUNDER_WAVE, BattlerIndex.PLAYER);
await game.forceEnemyMove(Moves.THUNDER_WAVE, BattlerIndex.PLAYER_2); await game.move.selectEnemyMove(Moves.THUNDER_WAVE, BattlerIndex.PLAYER_2);
await game.phaseInterceptor.to("BerryPhase"); await game.phaseInterceptor.to("BerryPhase");
expect(user.status?.effect).toBe(StatusEffect.PARALYSIS); expect(user.status?.effect).toBe(StatusEffect.PARALYSIS);
expect(ally.status?.effect).toBe(StatusEffect.PARALYSIS); expect(ally.status?.effect).toBe(StatusEffect.PARALYSIS);

View File

@ -30,7 +30,7 @@ describe("Abilities - Forecast", () => {
*/ */
const testWeatherFormChange = async (game: GameManager, weather: WeatherType, form: number, initialForm?: number) => { const testWeatherFormChange = async (game: GameManager, weather: WeatherType, form: number, initialForm?: number) => {
game.override.weather(weather).starterForms({ [Species.CASTFORM]: initialForm }); game.override.weather(weather).starterForms({ [Species.CASTFORM]: initialForm });
await game.startBattle([Species.CASTFORM]); await game.classicMode.startBattle([Species.CASTFORM]);
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
@ -44,7 +44,7 @@ describe("Abilities - Forecast", () => {
*/ */
const testRevertFormAgainstAbility = async (game: GameManager, ability: Abilities) => { const testRevertFormAgainstAbility = async (game: GameManager, ability: Abilities) => {
game.override.starterForms({ [Species.CASTFORM]: SUNNY_FORM }).enemyAbility(ability); game.override.starterForms({ [Species.CASTFORM]: SUNNY_FORM }).enemyAbility(ability);
await game.startBattle([Species.CASTFORM]); await game.classicMode.startBattle([Species.CASTFORM]);
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
@ -81,7 +81,7 @@ describe("Abilities - Forecast", () => {
[Species.GROUDON]: 1, [Species.GROUDON]: 1,
[Species.RAYQUAZA]: 1, [Species.RAYQUAZA]: 1,
}); });
await game.startBattle([ await game.classicMode.startBattle([
Species.CASTFORM, Species.CASTFORM,
Species.FEEBAS, Species.FEEBAS,
Species.KYOGRE, Species.KYOGRE,
@ -201,7 +201,7 @@ describe("Abilities - Forecast", () => {
it("has no effect on Pokémon other than Castform", async () => { it("has no effect on Pokémon other than Castform", async () => {
game.override.enemyAbility(Abilities.FORECAST).enemySpecies(Species.SHUCKLE); game.override.enemyAbility(Abilities.FORECAST).enemySpecies(Species.SHUCKLE);
await game.startBattle([Species.CASTFORM]); await game.classicMode.startBattle([Species.CASTFORM]);
game.move.select(Moves.RAIN_DANCE); game.move.select(Moves.RAIN_DANCE);
await game.phaseInterceptor.to(TurnEndPhase); await game.phaseInterceptor.to(TurnEndPhase);
@ -212,7 +212,7 @@ describe("Abilities - Forecast", () => {
it("reverts to Normal Form when Forecast is suppressed, changes form to match the weather when it regains it", async () => { it("reverts to Normal Form when Forecast is suppressed, changes form to match the weather when it regains it", async () => {
game.override.enemyMoveset([Moves.GASTRO_ACID]).weather(WeatherType.RAIN); game.override.enemyMoveset([Moves.GASTRO_ACID]).weather(WeatherType.RAIN);
await game.startBattle([Species.CASTFORM, Species.PIKACHU]); await game.classicMode.startBattle([Species.CASTFORM, Species.PIKACHU]);
const castform = game.scene.getPlayerPokemon()!; const castform = game.scene.getPlayerPokemon()!;
expect(castform.formIndex).toBe(RAINY_FORM); expect(castform.formIndex).toBe(RAINY_FORM);
@ -243,7 +243,7 @@ describe("Abilities - Forecast", () => {
it("does not change Castform's form until after Stealth Rock deals damage", async () => { it("does not change Castform's form until after Stealth Rock deals damage", async () => {
game.override.weather(WeatherType.RAIN).enemyMoveset([Moves.STEALTH_ROCK]); game.override.weather(WeatherType.RAIN).enemyMoveset([Moves.STEALTH_ROCK]);
await game.startBattle([Species.PIKACHU, Species.CASTFORM]); await game.classicMode.startBattle([Species.PIKACHU, Species.CASTFORM]);
// First turn - set up stealth rock // First turn - set up stealth rock
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
@ -267,7 +267,7 @@ describe("Abilities - Forecast", () => {
it("should be in Normal Form after the user is switched out", async () => { it("should be in Normal Form after the user is switched out", async () => {
game.override.weather(WeatherType.RAIN); game.override.weather(WeatherType.RAIN);
await game.startBattle([Species.CASTFORM, Species.MAGIKARP]); await game.classicMode.startBattle([Species.CASTFORM, Species.MAGIKARP]);
const castform = game.scene.getPlayerPokemon()!; const castform = game.scene.getPlayerPokemon()!;
expect(castform.formIndex).toBe(RAINY_FORM); expect(castform.formIndex).toBe(RAINY_FORM);

View File

@ -43,8 +43,8 @@ describe("Moves - Friend Guard", () => {
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
game.move.select(Moves.SPLASH, 1); game.move.select(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER); await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER);
await game.forceEnemyMove(Moves.SPLASH); await game.move.selectEnemyMove(Moves.SPLASH);
await game.toNextTurn(); await game.toNextTurn();
// Get the last return value from `getAttackDamage` // Get the last return value from `getAttackDamage`
@ -60,8 +60,8 @@ describe("Moves - Friend Guard", () => {
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
game.move.select(Moves.SPLASH, 1); game.move.select(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER); await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER);
await game.forceEnemyMove(Moves.SPLASH); await game.move.selectEnemyMove(Moves.SPLASH);
await game.toNextTurn(); await game.toNextTurn();
// Get the last return value from `getAttackDamage` // Get the last return value from `getAttackDamage`
@ -83,8 +83,8 @@ describe("Moves - Friend Guard", () => {
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
game.move.select(Moves.SPLASH, 1); game.move.select(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER_2); await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER_2);
await game.forceEnemyMove(Moves.SPLASH); await game.move.selectEnemyMove(Moves.SPLASH);
await game.toNextTurn(); await game.toNextTurn();
const turn1Damage = spy.mock.results[spy.mock.results.length - 1].value.damage; const turn1Damage = spy.mock.results[spy.mock.results.length - 1].value.damage;
@ -93,8 +93,8 @@ describe("Moves - Friend Guard", () => {
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
game.move.select(Moves.SPLASH, 1); game.move.select(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER_2); await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER_2);
await game.forceEnemyMove(Moves.SPLASH); await game.move.selectEnemyMove(Moves.SPLASH);
await game.toNextTurn(); await game.toNextTurn();
const turn2Damage = spy.mock.results[spy.mock.results.length - 1].value.damage; const turn2Damage = spy.mock.results[spy.mock.results.length - 1].value.damage;
@ -109,8 +109,8 @@ describe("Moves - Friend Guard", () => {
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
game.move.select(Moves.SPLASH, 1); game.move.select(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.DRAGON_RAGE, BattlerIndex.PLAYER); await game.move.selectEnemyMove(Moves.DRAGON_RAGE, BattlerIndex.PLAYER);
await game.forceEnemyMove(Moves.SPLASH); await game.move.selectEnemyMove(Moves.SPLASH);
await game.toNextTurn(); await game.toNextTurn();
const turn1Damage = spy.mock.results[spy.mock.results.length - 1].value.damage; const turn1Damage = spy.mock.results[spy.mock.results.length - 1].value.damage;
@ -120,8 +120,8 @@ describe("Moves - Friend Guard", () => {
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
game.move.select(Moves.SPLASH, 1); game.move.select(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.DRAGON_RAGE, BattlerIndex.PLAYER); await game.move.selectEnemyMove(Moves.DRAGON_RAGE, BattlerIndex.PLAYER);
await game.forceEnemyMove(Moves.SPLASH); await game.move.selectEnemyMove(Moves.SPLASH);
await game.toNextTurn(); await game.toNextTurn();
const turn2Damage = spy.mock.results[spy.mock.results.length - 1].value.damage; const turn2Damage = spy.mock.results[spy.mock.results.length - 1].value.damage;

View File

@ -74,8 +74,8 @@ describe("Abilities - Good As Gold", () => {
game.move.select(Moves.SWORDS_DANCE, 0); game.move.select(Moves.SWORDS_DANCE, 0);
game.move.select(Moves.SAFEGUARD, 1); game.move.select(Moves.SAFEGUARD, 1);
await game.forceEnemyMove(Moves.STEALTH_ROCK); await game.move.selectEnemyMove(Moves.STEALTH_ROCK);
await game.forceEnemyMove(Moves.HAZE); await game.move.selectEnemyMove(Moves.HAZE);
await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]);
await game.phaseInterceptor.to("BerryPhase"); await game.phaseInterceptor.to("BerryPhase");
expect(good_as_gold.getAbility().id).toBe(Abilities.GOOD_AS_GOLD); expect(good_as_gold.getAbility().id).toBe(Abilities.GOOD_AS_GOLD);

View File

@ -39,7 +39,7 @@ describe("Abilities - Gorilla Tactics", () => {
const initialAtkStat = darmanitan.getStat(Stat.ATK); const initialAtkStat = darmanitan.getStat(Stat.ATK);
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.SPLASH); await game.move.selectEnemyMove(Moves.SPLASH);
await game.phaseInterceptor.to("TurnEndPhase"); await game.phaseInterceptor.to("TurnEndPhase");
@ -57,13 +57,13 @@ describe("Abilities - Gorilla Tactics", () => {
// First turn, lock move to Growl // First turn, lock move to Growl
game.move.select(Moves.GROWL); game.move.select(Moves.GROWL);
await game.forceEnemyMove(Moves.SPLASH); await game.move.selectEnemyMove(Moves.SPLASH);
// Second turn, Growl is interrupted by Disable // Second turn, Growl is interrupted by Disable
await game.toNextTurn(); await game.toNextTurn();
game.move.select(Moves.GROWL); game.move.select(Moves.GROWL);
await game.forceEnemyMove(Moves.DISABLE); await game.move.selectEnemyMove(Moves.DISABLE);
await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]);
await game.phaseInterceptor.to("TurnEndPhase"); await game.phaseInterceptor.to("TurnEndPhase");

View File

@ -241,13 +241,13 @@ describe("Abilities - Gulp Missile", () => {
await game.classicMode.startBattle([Species.CRAMORANT]); await game.classicMode.startBattle([Species.CRAMORANT]);
game.move.select(Moves.SURF); game.move.select(Moves.SURF);
await game.forceEnemyMove(Moves.SPLASH); await game.move.selectEnemyMove(Moves.SPLASH);
await game.toNextTurn(); await game.toNextTurn();
expect(game.scene.getPlayerPokemon()!.formIndex).toBe(GULPING_FORM); expect(game.scene.getPlayerPokemon()!.formIndex).toBe(GULPING_FORM);
game.move.select(Moves.SUBSTITUTE); game.move.select(Moves.SUBSTITUTE);
await game.forceEnemyMove(Moves.POWER_TRIP); await game.move.selectEnemyMove(Moves.POWER_TRIP);
await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]);
await game.toNextTurn(); await game.toNextTurn();

View File

@ -61,7 +61,7 @@ describe("Abilities - Harvest", () => {
await game.classicMode.startBattle([Species.FEEBAS]); await game.classicMode.startBattle([Species.FEEBAS]);
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.NUZZLE); await game.move.selectEnemyMove(Moves.NUZZLE);
await game.phaseInterceptor.to("BerryPhase"); await game.phaseInterceptor.to("BerryPhase");
expect(getPlayerBerries()).toHaveLength(0); expect(getPlayerBerries()).toHaveLength(0);
expect(game.scene.getPlayerPokemon()?.battleData.berriesEaten).toHaveLength(1); expect(game.scene.getPlayerPokemon()?.battleData.berriesEaten).toHaveLength(1);
@ -87,7 +87,7 @@ describe("Abilities - Harvest", () => {
// Chug a few berries without harvest (should get tracked) // Chug a few berries without harvest (should get tracked)
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.NUZZLE); await game.move.selectEnemyMove(Moves.NUZZLE);
await game.toNextTurn(); await game.toNextTurn();
expect(milotic.battleData.berriesEaten).toEqual(expect.arrayContaining([BerryType.ENIGMA, BerryType.LUM])); expect(milotic.battleData.berriesEaten).toEqual(expect.arrayContaining([BerryType.ENIGMA, BerryType.LUM]));
@ -98,7 +98,7 @@ describe("Abilities - Harvest", () => {
vi.spyOn(PostTurnRestoreBerryAbAttr.prototype, "canApplyPostTurn").mockReturnValueOnce(false); vi.spyOn(PostTurnRestoreBerryAbAttr.prototype, "canApplyPostTurn").mockReturnValueOnce(false);
game.override.ability(Abilities.HARVEST); game.override.ability(Abilities.HARVEST);
game.move.select(Moves.GASTRO_ACID); game.move.select(Moves.GASTRO_ACID);
await game.forceEnemyMove(Moves.NUZZLE); await game.move.selectEnemyMove(Moves.NUZZLE);
await game.toNextTurn(); await game.toNextTurn();
@ -109,7 +109,7 @@ describe("Abilities - Harvest", () => {
// proc a high roll and we _should_ get a berry back! // proc a high roll and we _should_ get a berry back!
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.SPLASH); await game.move.selectEnemyMove(Moves.SPLASH);
await game.toNextTurn(); await game.toNextTurn();
expect(milotic.battleData.berriesEaten).toHaveLength(3); expect(milotic.battleData.berriesEaten).toHaveLength(3);
@ -126,7 +126,7 @@ describe("Abilities - Harvest", () => {
regieleki.hp = 1; regieleki.hp = 1;
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.SPLASH); await game.move.selectEnemyMove(Moves.SPLASH);
await game.doKillOpponents(); await game.doKillOpponents();
await game.phaseInterceptor.to("TurnEndPhase"); await game.phaseInterceptor.to("TurnEndPhase");
@ -154,7 +154,7 @@ describe("Abilities - Harvest", () => {
regieleki.hp = regieleki.getMaxHp() / 4 + 1; regieleki.hp = regieleki.getMaxHp() / 4 + 1;
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.SUPER_FANG); await game.move.selectEnemyMove(Moves.SUPER_FANG);
await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]);
await game.toNextTurn(); await game.toNextTurn();
@ -165,7 +165,7 @@ describe("Abilities - Harvest", () => {
// heal up so harvest doesn't proc and kill enemy // heal up so harvest doesn't proc and kill enemy
game.move.select(Moves.EARTHQUAKE); game.move.select(Moves.EARTHQUAKE);
await game.forceEnemyMove(Moves.HEAL_PULSE); await game.move.selectEnemyMove(Moves.HEAL_PULSE);
await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]);
await game.toNextWave(); await game.toNextWave();
@ -191,7 +191,7 @@ describe("Abilities - Harvest", () => {
feebas.battleData.berriesEaten = [BerryType.LUM, BerryType.STARF]; feebas.battleData.berriesEaten = [BerryType.LUM, BerryType.STARF];
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.SPLASH); await game.move.selectEnemyMove(Moves.SPLASH);
await game.phaseInterceptor.to("BerryPhase"); await game.phaseInterceptor.to("BerryPhase");
// Force RNG roll to hit the first berry we find that matches. // Force RNG roll to hit the first berry we find that matches.
@ -219,7 +219,7 @@ describe("Abilities - Harvest", () => {
player.battleData.berriesEaten = [BerryType.LUM, BerryType.STARF]; player.battleData.berriesEaten = [BerryType.LUM, BerryType.STARF];
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.SPLASH); await game.move.selectEnemyMove(Moves.SPLASH);
await game.phaseInterceptor.to("TurnEndPhase"); await game.phaseInterceptor.to("TurnEndPhase");
expectBerriesContaining(...initBerries); expectBerriesContaining(...initBerries);
@ -231,7 +231,7 @@ describe("Abilities - Harvest", () => {
await game.classicMode.startBattle([Species.FEEBAS]); await game.classicMode.startBattle([Species.FEEBAS]);
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.INCINERATE); await game.move.selectEnemyMove(Moves.INCINERATE);
await game.phaseInterceptor.to("TurnEndPhase"); await game.phaseInterceptor.to("TurnEndPhase");
expect(game.scene.getPlayerPokemon()?.battleData.berriesEaten).toEqual([]); expect(game.scene.getPlayerPokemon()?.battleData.berriesEaten).toEqual([]);
@ -242,7 +242,7 @@ describe("Abilities - Harvest", () => {
await game.classicMode.startBattle([Species.FEEBAS]); await game.classicMode.startBattle([Species.FEEBAS]);
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.KNOCK_OFF); await game.move.selectEnemyMove(Moves.KNOCK_OFF);
await game.phaseInterceptor.to("TurnEndPhase"); await game.phaseInterceptor.to("TurnEndPhase");
expect(game.scene.getPlayerPokemon()?.battleData.berriesEaten).toEqual([]); expect(game.scene.getPlayerPokemon()?.battleData.berriesEaten).toEqual([]);
@ -308,7 +308,7 @@ describe("Abilities - Harvest", () => {
// steal a sitrus and immediately consume it // steal a sitrus and immediately consume it
game.move.select(Moves.FALSE_SWIPE); game.move.select(Moves.FALSE_SWIPE);
await game.forceEnemyMove(Moves.SPLASH); await game.move.selectEnemyMove(Moves.SPLASH);
await game.phaseInterceptor.to("BerryPhase"); await game.phaseInterceptor.to("BerryPhase");
expect(player.battleData.berriesEaten).toEqual([BerryType.SITRUS]); expect(player.battleData.berriesEaten).toEqual([BerryType.SITRUS]);

View File

@ -38,7 +38,7 @@ describe("Abilities - Heatproof", () => {
}); });
it("reduces Fire type damage by half", async () => { it("reduces Fire type damage by half", async () => {
await game.startBattle(); await game.classicMode.startBattle();
const enemy = game.scene.getEnemyPokemon()!; const enemy = game.scene.getEnemyPokemon()!;
const initialHP = 1000; const initialHP = 1000;
@ -61,7 +61,7 @@ describe("Abilities - Heatproof", () => {
it("reduces Burn damage by half", async () => { it("reduces Burn damage by half", async () => {
game.override.enemyStatusEffect(StatusEffect.BURN).enemySpecies(Species.ABRA); game.override.enemyStatusEffect(StatusEffect.BURN).enemySpecies(Species.ABRA);
await game.startBattle(); await game.classicMode.startBattle();
const enemy = game.scene.getEnemyPokemon()!; const enemy = game.scene.getEnemyPokemon()!;

View File

@ -34,7 +34,7 @@ describe("Abilities - Hyper Cutter", () => {
// Reference Link: https://bulbapedia.bulbagarden.net/wiki/Hyper_Cutter_(Ability) // Reference Link: https://bulbapedia.bulbagarden.net/wiki/Hyper_Cutter_(Ability)
it("only prevents ATK drops", async () => { it("only prevents ATK drops", async () => {
await game.startBattle(); await game.classicMode.startBattle();
const enemy = game.scene.getEnemyPokemon()!; const enemy = game.scene.getEnemyPokemon()!;

View File

@ -39,7 +39,7 @@ describe("Abilities - Libero", () => {
test("ability applies and changes a pokemon's type", async () => { test("ability applies and changes a pokemon's type", async () => {
game.override.moveset([Moves.SPLASH]); game.override.moveset([Moves.SPLASH]);
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
expect(leadPokemon).not.toBe(undefined); expect(leadPokemon).not.toBe(undefined);
@ -54,7 +54,7 @@ describe("Abilities - Libero", () => {
test.skip("ability applies only once per switch in", async () => { test.skip("ability applies only once per switch in", async () => {
game.override.moveset([Moves.SPLASH, Moves.AGILITY]); game.override.moveset([Moves.SPLASH, Moves.AGILITY]);
await game.startBattle([Species.MAGIKARP, Species.BULBASAUR]); await game.classicMode.startBattle([Species.MAGIKARP, Species.BULBASAUR]);
let leadPokemon = game.scene.getPlayerPokemon()!; let leadPokemon = game.scene.getPlayerPokemon()!;
expect(leadPokemon).not.toBe(undefined); expect(leadPokemon).not.toBe(undefined);
@ -90,7 +90,7 @@ describe("Abilities - Libero", () => {
test("ability applies correctly even if the pokemon's move has a variable type", async () => { test("ability applies correctly even if the pokemon's move has a variable type", async () => {
game.override.moveset([Moves.WEATHER_BALL]); game.override.moveset([Moves.WEATHER_BALL]);
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
expect(leadPokemon).not.toBe(undefined); expect(leadPokemon).not.toBe(undefined);
@ -110,7 +110,7 @@ describe("Abilities - Libero", () => {
game.override.moveset([Moves.TACKLE]); game.override.moveset([Moves.TACKLE]);
game.override.passiveAbility(Abilities.REFRIGERATE); game.override.passiveAbility(Abilities.REFRIGERATE);
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
expect(leadPokemon).not.toBe(undefined); expect(leadPokemon).not.toBe(undefined);
@ -128,7 +128,7 @@ describe("Abilities - Libero", () => {
test("ability applies correctly even if the pokemon's move calls another move", async () => { test("ability applies correctly even if the pokemon's move calls another move", async () => {
game.override.moveset([Moves.NATURE_POWER]); game.override.moveset([Moves.NATURE_POWER]);
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
expect(leadPokemon).not.toBe(undefined); expect(leadPokemon).not.toBe(undefined);
@ -143,7 +143,7 @@ describe("Abilities - Libero", () => {
test("ability applies correctly even if the pokemon's move is delayed / charging", async () => { test("ability applies correctly even if the pokemon's move is delayed / charging", async () => {
game.override.moveset([Moves.DIG]); game.override.moveset([Moves.DIG]);
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
expect(leadPokemon).not.toBe(undefined); expect(leadPokemon).not.toBe(undefined);
@ -158,7 +158,7 @@ describe("Abilities - Libero", () => {
game.override.moveset([Moves.TACKLE]); game.override.moveset([Moves.TACKLE]);
game.override.enemyMoveset(Moves.SPLASH); game.override.enemyMoveset(Moves.SPLASH);
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
expect(leadPokemon).not.toBe(undefined); expect(leadPokemon).not.toBe(undefined);
@ -176,7 +176,7 @@ describe("Abilities - Libero", () => {
game.override.moveset([Moves.TACKLE]); game.override.moveset([Moves.TACKLE]);
game.override.enemyMoveset([Moves.PROTECT, Moves.PROTECT, Moves.PROTECT, Moves.PROTECT]); game.override.enemyMoveset([Moves.PROTECT, Moves.PROTECT, Moves.PROTECT, Moves.PROTECT]);
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
expect(leadPokemon).not.toBe(undefined); expect(leadPokemon).not.toBe(undefined);
@ -191,7 +191,7 @@ describe("Abilities - Libero", () => {
game.override.moveset([Moves.TACKLE]); game.override.moveset([Moves.TACKLE]);
game.override.enemySpecies(Species.GASTLY); game.override.enemySpecies(Species.GASTLY);
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
expect(leadPokemon).not.toBe(undefined); expect(leadPokemon).not.toBe(undefined);
@ -205,7 +205,7 @@ describe("Abilities - Libero", () => {
test("ability is not applied if pokemon's type is the same as the move's type", async () => { test("ability is not applied if pokemon's type is the same as the move's type", async () => {
game.override.moveset([Moves.SPLASH]); game.override.moveset([Moves.SPLASH]);
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
expect(leadPokemon).not.toBe(undefined); expect(leadPokemon).not.toBe(undefined);
@ -220,7 +220,7 @@ describe("Abilities - Libero", () => {
test("ability is not applied if pokemon is terastallized", async () => { test("ability is not applied if pokemon is terastallized", async () => {
game.override.moveset([Moves.SPLASH]); game.override.moveset([Moves.SPLASH]);
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
expect(leadPokemon).not.toBe(undefined); expect(leadPokemon).not.toBe(undefined);
@ -236,7 +236,7 @@ describe("Abilities - Libero", () => {
test("ability is not applied if pokemon uses struggle", async () => { test("ability is not applied if pokemon uses struggle", async () => {
game.override.moveset([Moves.STRUGGLE]); game.override.moveset([Moves.STRUGGLE]);
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
expect(leadPokemon).not.toBe(undefined); expect(leadPokemon).not.toBe(undefined);
@ -250,7 +250,7 @@ describe("Abilities - Libero", () => {
test("ability is not applied if the pokemon's move fails", async () => { test("ability is not applied if the pokemon's move fails", async () => {
game.override.moveset([Moves.BURN_UP]); game.override.moveset([Moves.BURN_UP]);
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
expect(leadPokemon).not.toBe(undefined); expect(leadPokemon).not.toBe(undefined);
@ -265,7 +265,7 @@ describe("Abilities - Libero", () => {
game.override.moveset([Moves.TRICK_OR_TREAT]); game.override.moveset([Moves.TRICK_OR_TREAT]);
game.override.enemySpecies(Species.GASTLY); game.override.enemySpecies(Species.GASTLY);
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
expect(leadPokemon).not.toBe(undefined); expect(leadPokemon).not.toBe(undefined);
@ -279,7 +279,7 @@ describe("Abilities - Libero", () => {
test("ability applies correctly and the pokemon curses itself", async () => { test("ability applies correctly and the pokemon curses itself", async () => {
game.override.moveset([Moves.CURSE]); game.override.moveset([Moves.CURSE]);
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
expect(leadPokemon).not.toBe(undefined); expect(leadPokemon).not.toBe(undefined);

View File

@ -52,7 +52,7 @@ describe("Abilities - Magic Bounce", () => {
game.override.enemyMoveset([Moves.FLY]); game.override.enemyMoveset([Moves.FLY]);
game.move.select(Moves.GROWL); game.move.select(Moves.GROWL);
await game.forceEnemyMove(Moves.FLY); await game.move.selectEnemyMove(Moves.FLY);
await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]);
await game.phaseInterceptor.to("BerryPhase"); await game.phaseInterceptor.to("BerryPhase");
@ -183,7 +183,7 @@ describe("Abilities - Magic Bounce", () => {
// turn 1 // turn 1
game.move.select(Moves.ENCORE); game.move.select(Moves.ENCORE);
await game.forceEnemyMove(Moves.TACKLE); await game.move.selectEnemyMove(Moves.TACKLE);
await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]);
await game.toNextTurn(); await game.toNextTurn();
expect(enemyPokemon.getTag(BattlerTagType.ENCORE)!["moveId"]).toBe(Moves.TACKLE); expect(enemyPokemon.getTag(BattlerTagType.ENCORE)!["moveId"]).toBe(Moves.TACKLE);
@ -209,7 +209,7 @@ describe("Abilities - Magic Bounce", () => {
// turn 1 // turn 1
game.move.select(Moves.GROWL); game.move.select(Moves.GROWL);
await game.forceEnemyMove(Moves.TACKLE); await game.move.selectEnemyMove(Moves.TACKLE);
await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]);
await game.toNextTurn(); await game.toNextTurn();
@ -218,7 +218,7 @@ describe("Abilities - Magic Bounce", () => {
// turn 2 // turn 2
game.move.select(Moves.ENCORE); game.move.select(Moves.ENCORE);
await game.forceEnemyMove(Moves.TACKLE); await game.move.selectEnemyMove(Moves.TACKLE);
await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]);
await game.phaseInterceptor.to("BerryPhase"); await game.phaseInterceptor.to("BerryPhase");
expect(enemyPokemon.getTag(BattlerTagType.ENCORE)!["moveId"]).toBe(Moves.TACKLE); expect(enemyPokemon.getTag(BattlerTagType.ENCORE)!["moveId"]).toBe(Moves.TACKLE);
@ -254,7 +254,7 @@ describe("Abilities - Magic Bounce", () => {
vi.spyOn(stomping_tantrum, "calculateBattlePower"); vi.spyOn(stomping_tantrum, "calculateBattlePower");
game.move.select(Moves.SPORE); game.move.select(Moves.SPORE);
await game.forceEnemyMove(Moves.CHARM); await game.move.selectEnemyMove(Moves.CHARM);
await game.phaseInterceptor.to("TurnEndPhase"); await game.phaseInterceptor.to("TurnEndPhase");
expect(enemy.getLastXMoves(1)[0].result).toBe("success"); expect(enemy.getLastXMoves(1)[0].result).toBe("success");
@ -346,7 +346,7 @@ describe("Abilities - Magic Bounce", () => {
game.override.moveset([Moves.TOXIC, Moves.CHARM]); game.override.moveset([Moves.TOXIC, Moves.CHARM]);
await game.classicMode.startBattle([Species.BULBASAUR]); await game.classicMode.startBattle([Species.BULBASAUR]);
game.move.select(Moves.TOXIC); game.move.select(Moves.TOXIC);
await game.forceEnemyMove(Moves.FLY); await game.move.selectEnemyMove(Moves.FLY);
await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]);
await game.phaseInterceptor.to("BerryPhase"); await game.phaseInterceptor.to("BerryPhase");
expect(game.scene.getEnemyPokemon()!.status?.effect).toBe(StatusEffect.TOXIC); expect(game.scene.getEnemyPokemon()!.status?.effect).toBe(StatusEffect.TOXIC);

View File

@ -46,7 +46,7 @@ describe("Abilities - Magic Guard", () => {
it("ability should prevent damage caused by weather", async () => { it("ability should prevent damage caused by weather", async () => {
game.override.weather(WeatherType.SANDSTORM); game.override.weather(WeatherType.SANDSTORM);
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
@ -70,7 +70,7 @@ describe("Abilities - Magic Guard", () => {
//Toxic keeps track of the turn counters -> important that Magic Guard keeps track of post-Toxic turns //Toxic keeps track of the turn counters -> important that Magic Guard keeps track of post-Toxic turns
game.override.statusEffect(StatusEffect.POISON); game.override.statusEffect(StatusEffect.POISON);
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
@ -91,7 +91,7 @@ describe("Abilities - Magic Guard", () => {
game.override.enemyMoveset([Moves.WORRY_SEED, Moves.WORRY_SEED, Moves.WORRY_SEED, Moves.WORRY_SEED]); game.override.enemyMoveset([Moves.WORRY_SEED, Moves.WORRY_SEED, Moves.WORRY_SEED, Moves.WORRY_SEED]);
game.override.statusEffect(StatusEffect.POISON); game.override.statusEffect(StatusEffect.POISON);
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
@ -110,7 +110,7 @@ describe("Abilities - Magic Guard", () => {
game.override.enemyStatusEffect(StatusEffect.BURN); game.override.enemyStatusEffect(StatusEffect.BURN);
game.override.enemyAbility(Abilities.MAGIC_GUARD); game.override.enemyAbility(Abilities.MAGIC_GUARD);
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
@ -132,7 +132,7 @@ describe("Abilities - Magic Guard", () => {
game.override.enemyStatusEffect(StatusEffect.TOXIC); game.override.enemyStatusEffect(StatusEffect.TOXIC);
game.override.enemyAbility(Abilities.MAGIC_GUARD); game.override.enemyAbility(Abilities.MAGIC_GUARD);
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
@ -159,7 +159,7 @@ describe("Abilities - Magic Guard", () => {
const newTag = getArenaTag(ArenaTagType.SPIKES, 5, Moves.SPIKES, 0, 0, ArenaTagSide.BOTH)!; const newTag = getArenaTag(ArenaTagType.SPIKES, 5, Moves.SPIKES, 0, 0, ArenaTagSide.BOTH)!;
game.scene.arena.tags.push(newTag); game.scene.arena.tags.push(newTag);
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
@ -184,7 +184,7 @@ describe("Abilities - Magic Guard", () => {
game.scene.arena.tags.push(playerTag); game.scene.arena.tags.push(playerTag);
game.scene.arena.tags.push(enemyTag); game.scene.arena.tags.push(enemyTag);
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
@ -206,7 +206,7 @@ describe("Abilities - Magic Guard", () => {
}); });
it("Magic Guard prevents against damage from volatile status effects", async () => { it("Magic Guard prevents against damage from volatile status effects", async () => {
await game.startBattle([Species.DUSKULL]); await game.classicMode.startBattle([Species.DUSKULL]);
game.override.moveset([Moves.CURSE]); game.override.moveset([Moves.CURSE]);
game.override.enemyAbility(Abilities.MAGIC_GUARD); game.override.enemyAbility(Abilities.MAGIC_GUARD);
@ -231,7 +231,7 @@ describe("Abilities - Magic Guard", () => {
it("Magic Guard prevents crash damage", async () => { it("Magic Guard prevents crash damage", async () => {
game.override.moveset([Moves.HIGH_JUMP_KICK]); game.override.moveset([Moves.HIGH_JUMP_KICK]);
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
@ -249,7 +249,7 @@ describe("Abilities - Magic Guard", () => {
it("Magic Guard prevents damage from recoil", async () => { it("Magic Guard prevents damage from recoil", async () => {
game.override.moveset([Moves.TAKE_DOWN]); game.override.moveset([Moves.TAKE_DOWN]);
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
@ -266,7 +266,7 @@ describe("Abilities - Magic Guard", () => {
it("Magic Guard does not prevent damage from Struggle's recoil", async () => { it("Magic Guard does not prevent damage from Struggle's recoil", async () => {
game.override.moveset([Moves.STRUGGLE]); game.override.moveset([Moves.STRUGGLE]);
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
@ -284,7 +284,7 @@ describe("Abilities - Magic Guard", () => {
//This tests different move attributes than the recoil tests above //This tests different move attributes than the recoil tests above
it("Magic Guard prevents self-damage from attacking moves", async () => { it("Magic Guard prevents self-damage from attacking moves", async () => {
game.override.moveset([Moves.STEEL_BEAM]); game.override.moveset([Moves.STEEL_BEAM]);
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
@ -301,7 +301,7 @@ describe("Abilities - Magic Guard", () => {
/* /*
it("Magic Guard does not prevent self-damage from confusion", async () => { it("Magic Guard does not prevent self-damage from confusion", async () => {
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
game.move.select(Moves.CHARM); game.move.select(Moves.CHARM);
@ -311,7 +311,7 @@ describe("Abilities - Magic Guard", () => {
it("Magic Guard does not prevent self-damage from non-attacking moves", async () => { it("Magic Guard does not prevent self-damage from non-attacking moves", async () => {
game.override.moveset([Moves.BELLY_DRUM]); game.override.moveset([Moves.BELLY_DRUM]);
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
@ -333,7 +333,7 @@ describe("Abilities - Magic Guard", () => {
game.override.enemyMoveset([Moves.SPORE, Moves.SPORE, Moves.SPORE, Moves.SPORE]); game.override.enemyMoveset([Moves.SPORE, Moves.SPORE, Moves.SPORE, Moves.SPORE]);
game.override.enemyAbility(Abilities.BAD_DREAMS); game.override.enemyAbility(Abilities.BAD_DREAMS);
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
@ -355,7 +355,7 @@ describe("Abilities - Magic Guard", () => {
game.override.moveset([Moves.TACKLE]); game.override.moveset([Moves.TACKLE]);
game.override.enemyAbility(Abilities.AFTERMATH); game.override.enemyAbility(Abilities.AFTERMATH);
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
@ -379,7 +379,7 @@ describe("Abilities - Magic Guard", () => {
game.override.moveset([Moves.TACKLE]); game.override.moveset([Moves.TACKLE]);
game.override.enemyAbility(Abilities.IRON_BARBS); game.override.enemyAbility(Abilities.IRON_BARBS);
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
@ -402,7 +402,7 @@ describe("Abilities - Magic Guard", () => {
game.override.moveset([Moves.ABSORB]); game.override.moveset([Moves.ABSORB]);
game.override.enemyAbility(Abilities.LIQUID_OOZE); game.override.enemyAbility(Abilities.LIQUID_OOZE);
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
@ -425,7 +425,7 @@ describe("Abilities - Magic Guard", () => {
game.override.passiveAbility(Abilities.SOLAR_POWER); game.override.passiveAbility(Abilities.SOLAR_POWER);
game.override.weather(WeatherType.SUNNY); game.override.weather(WeatherType.SUNNY);
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
await game.phaseInterceptor.to(TurnEndPhase); await game.phaseInterceptor.to(TurnEndPhase);

View File

@ -55,7 +55,7 @@ describe("Abilities - Mimicry", () => {
const playerPokemon = game.scene.getPlayerPokemon(); const playerPokemon = game.scene.getPlayerPokemon();
game.move.select(Moves.TRANSFORM); game.move.select(Moves.TRANSFORM);
await game.forceEnemyMove(Moves.PSYCHIC_TERRAIN); await game.move.selectEnemyMove(Moves.PSYCHIC_TERRAIN);
await game.toNextTurn(); await game.toNextTurn();
expect(playerPokemon?.getTypes().includes(PokemonType.PSYCHIC)).toBe(true); expect(playerPokemon?.getTypes().includes(PokemonType.PSYCHIC)).toBe(true);
@ -64,7 +64,7 @@ describe("Abilities - Mimicry", () => {
} }
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.SPLASH); await game.move.selectEnemyMove(Moves.SPLASH);
await game.toNextTurn(); await game.toNextTurn();
expect(playerPokemon?.getTypes().includes(PokemonType.ELECTRIC)).toBe(true); expect(playerPokemon?.getTypes().includes(PokemonType.ELECTRIC)).toBe(true);
}); });
@ -75,13 +75,13 @@ describe("Abilities - Mimicry", () => {
const playerPokemon = game.scene.getPlayerPokemon(); const playerPokemon = game.scene.getPlayerPokemon();
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.FORESTS_CURSE); await game.move.selectEnemyMove(Moves.FORESTS_CURSE);
await game.toNextTurn(); await game.toNextTurn();
expect(playerPokemon?.summonData.addedType).toBe(PokemonType.GRASS); expect(playerPokemon?.summonData.addedType).toBe(PokemonType.GRASS);
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.GRASSY_TERRAIN); await game.move.selectEnemyMove(Moves.GRASSY_TERRAIN);
await game.phaseInterceptor.to("TurnEndPhase"); await game.phaseInterceptor.to("TurnEndPhase");
expect(playerPokemon?.summonData.addedType).toBeNull(); expect(playerPokemon?.summonData.addedType).toBeNull();

View File

@ -46,7 +46,7 @@ describe("Ability - Mirror Armor", () => {
// Enemy has intimidate, enemy should lose -1 atk // Enemy has intimidate, enemy should lose -1 atk
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER); await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER);
await game.toNextTurn(); await game.toNextTurn();
expect(enemyPokemon.getStatStage(Stat.ATK)).toBe(-1); expect(enemyPokemon.getStatStage(Stat.ATK)).toBe(-1);
@ -63,7 +63,7 @@ describe("Ability - Mirror Armor", () => {
// Enemy has intimidate, enemy should lose -1 atk // Enemy has intimidate, enemy should lose -1 atk
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER); await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER);
await game.toNextTurn(); await game.toNextTurn();
expect(userPokemon.getStatStage(Stat.ATK)).toBe(-1); expect(userPokemon.getStatStage(Stat.ATK)).toBe(-1);
@ -82,8 +82,8 @@ describe("Ability - Mirror Armor", () => {
// Enemy has intimidate, enemy should lose -2 atk each // Enemy has intimidate, enemy should lose -2 atk each
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
game.move.select(Moves.SPLASH, 1); game.move.select(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER); await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER);
await game.forceEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER_2); await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER_2);
await game.toNextTurn(); await game.toNextTurn();
expect(enemy1.getStatStage(Stat.ATK)).toBe(-2); expect(enemy1.getStatStage(Stat.ATK)).toBe(-2);
@ -104,8 +104,8 @@ describe("Ability - Mirror Armor", () => {
// Enemy has intimidate, enemy should lose -1 atk // Enemy has intimidate, enemy should lose -1 atk
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
game.move.select(Moves.SPLASH, 1); game.move.select(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER); await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER);
await game.forceEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER_2); await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER_2);
await game.toNextTurn(); await game.toNextTurn();
expect(enemy1.getStatStage(Stat.ATK)).toBe(0); expect(enemy1.getStatStage(Stat.ATK)).toBe(0);
@ -124,7 +124,7 @@ describe("Ability - Mirror Armor", () => {
// Enemy has intimidate and uses tickle, enemy receives -2 atk and -1 defense // Enemy has intimidate and uses tickle, enemy receives -2 atk and -1 defense
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.TICKLE, BattlerIndex.PLAYER); await game.move.selectEnemyMove(Moves.TICKLE, BattlerIndex.PLAYER);
await game.toNextTurn(); await game.toNextTurn();
expect(enemyPokemon.getStatStage(Stat.DEF)).toBe(-1); expect(enemyPokemon.getStatStage(Stat.DEF)).toBe(-1);
@ -144,8 +144,8 @@ describe("Ability - Mirror Armor", () => {
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
game.move.select(Moves.SPLASH, 1); game.move.select(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.TICKLE, BattlerIndex.PLAYER); await game.move.selectEnemyMove(Moves.TICKLE, BattlerIndex.PLAYER);
await game.forceEnemyMove(Moves.TICKLE, BattlerIndex.PLAYER_2); await game.move.selectEnemyMove(Moves.TICKLE, BattlerIndex.PLAYER_2);
await game.toNextTurn(); await game.toNextTurn();
expect(player1.getStatStage(Stat.ATK)).toBe(0); expect(player1.getStatStage(Stat.ATK)).toBe(0);
@ -168,7 +168,7 @@ describe("Ability - Mirror Armor", () => {
// Enemy has intimidate and uses tickle, enemy receives -2 atk and -1 defense // Enemy has intimidate and uses tickle, enemy receives -2 atk and -1 defense
game.move.select(Moves.TICKLE); game.move.select(Moves.TICKLE);
await game.forceEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER); await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER);
await game.toNextTurn(); await game.toNextTurn();
expect(userPokemon.getStatStage(Stat.DEF)).toBe(-1); expect(userPokemon.getStatStage(Stat.DEF)).toBe(-1);
@ -187,7 +187,7 @@ describe("Ability - Mirror Armor", () => {
// Enemy has intimidate and uses tickle, enemy has white smoke, no one loses stats // Enemy has intimidate and uses tickle, enemy has white smoke, no one loses stats
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.TICKLE, BattlerIndex.PLAYER); await game.move.selectEnemyMove(Moves.TICKLE, BattlerIndex.PLAYER);
await game.toNextTurn(); await game.toNextTurn();
expect(enemyPokemon.getStatStage(Stat.DEF)).toBe(0); expect(enemyPokemon.getStatStage(Stat.DEF)).toBe(0);
@ -206,7 +206,7 @@ describe("Ability - Mirror Armor", () => {
// Enemy has intimidate and uses tickle, enemy has white smoke, no one loses stats // Enemy has intimidate and uses tickle, enemy has white smoke, no one loses stats
game.move.select(Moves.TICKLE); game.move.select(Moves.TICKLE);
await game.forceEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER); await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER);
await game.toNextTurn(); await game.toNextTurn();
expect(enemyPokemon.getStatStage(Stat.DEF)).toBe(0); expect(enemyPokemon.getStatStage(Stat.DEF)).toBe(0);
@ -224,7 +224,7 @@ describe("Ability - Mirror Armor", () => {
// Enemy uses octolock, player loses stats at end of turn // Enemy uses octolock, player loses stats at end of turn
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.OCTOLOCK, BattlerIndex.PLAYER); await game.move.selectEnemyMove(Moves.OCTOLOCK, BattlerIndex.PLAYER);
await game.toNextTurn(); await game.toNextTurn();
expect(enemyPokemon.getStatStage(Stat.DEF)).toBe(0); expect(enemyPokemon.getStatStage(Stat.DEF)).toBe(0);
@ -242,7 +242,7 @@ describe("Ability - Mirror Armor", () => {
// Player uses octolock, enemy loses stats at end of turn // Player uses octolock, enemy loses stats at end of turn
game.move.select(Moves.OCTOLOCK); game.move.select(Moves.OCTOLOCK);
await game.forceEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER); await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER);
await game.toNextTurn(); await game.toNextTurn();
expect(userPokemon.getStatStage(Stat.DEF)).toBe(0); expect(userPokemon.getStatStage(Stat.DEF)).toBe(0);
@ -261,7 +261,7 @@ describe("Ability - Mirror Armor", () => {
const userPokemon = game.scene.getPlayerPokemon()!; const userPokemon = game.scene.getPlayerPokemon()!;
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER); await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER);
await game.toNextTurn(); await game.toNextTurn();
expect(userPokemon.getStatStage(Stat.ATK)).toBe(-1); expect(userPokemon.getStatStage(Stat.ATK)).toBe(-1);
@ -276,11 +276,11 @@ describe("Ability - Mirror Armor", () => {
const userPokemon = game.scene.getPlayerPokemon()!; const userPokemon = game.scene.getPlayerPokemon()!;
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.STICKY_WEB, BattlerIndex.PLAYER); await game.move.selectEnemyMove(Moves.STICKY_WEB, BattlerIndex.PLAYER);
await game.toNextTurn(); await game.toNextTurn();
game.doSwitchPokemon(1); game.doSwitchPokemon(1);
await game.forceEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER); await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER);
await game.toNextTurn(); await game.toNextTurn();
expect(userPokemon.getStatStage(Stat.SPD)).toBe(0); expect(userPokemon.getStatStage(Stat.SPD)).toBe(0);
@ -297,14 +297,14 @@ describe("Ability - Mirror Armor", () => {
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
game.move.select(Moves.SPLASH, 1); game.move.select(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.STICKY_WEB, BattlerIndex.PLAYER); await game.move.selectEnemyMove(Moves.STICKY_WEB, BattlerIndex.PLAYER);
await game.forceEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER_2); await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER_2);
await game.toNextTurn(); await game.toNextTurn();
game.doSwitchPokemon(2); game.doSwitchPokemon(2);
game.move.select(Moves.SPLASH, 1); game.move.select(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER); await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER);
await game.forceEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER_2); await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER_2);
await game.toNextTurn(); await game.toNextTurn();
expect(enemy1.getStatStage(Stat.SPD)).toBe(-1); expect(enemy1.getStatStage(Stat.SPD)).toBe(-1);

View File

@ -38,7 +38,7 @@ describe("Abilities - Moxie", () => {
it("should raise ATK stat stage by 1 when winning a battle", async () => { it("should raise ATK stat stage by 1 when winning a battle", async () => {
const moveToUse = Moves.AERIAL_ACE; const moveToUse = Moves.AERIAL_ACE;
await game.startBattle([Species.MIGHTYENA, Species.MIGHTYENA]); await game.classicMode.startBattle([Species.MIGHTYENA, Species.MIGHTYENA]);
const playerPokemon = game.scene.getPlayerPokemon()!; const playerPokemon = game.scene.getPlayerPokemon()!;
@ -56,7 +56,7 @@ describe("Abilities - Moxie", () => {
async () => { async () => {
game.override.battleStyle("double"); game.override.battleStyle("double");
const moveToUse = Moves.AERIAL_ACE; const moveToUse = Moves.AERIAL_ACE;
await game.startBattle([Species.MIGHTYENA, Species.MIGHTYENA]); await game.classicMode.startBattle([Species.MIGHTYENA, Species.MIGHTYENA]);
const [firstPokemon, secondPokemon] = game.scene.getPlayerField(); const [firstPokemon, secondPokemon] = game.scene.getPlayerField();

View File

@ -41,7 +41,7 @@ describe("Abilities - Mycelium Might", () => {
**/ **/
it("will move last in its priority bracket and ignore protective abilities", async () => { it("will move last in its priority bracket and ignore protective abilities", async () => {
await game.startBattle([Species.REGIELEKI]); await game.classicMode.startBattle([Species.REGIELEKI]);
const enemyPokemon = game.scene.getEnemyPokemon(); const enemyPokemon = game.scene.getEnemyPokemon();
const playerIndex = game.scene.getPlayerPokemon()?.getBattlerIndex(); const playerIndex = game.scene.getPlayerPokemon()?.getBattlerIndex();
@ -65,7 +65,7 @@ describe("Abilities - Mycelium Might", () => {
it("will still go first if a status move that is in a higher priority bracket than the opponent's move is used", async () => { it("will still go first if a status move that is in a higher priority bracket than the opponent's move is used", async () => {
game.override.enemyMoveset([Moves.TACKLE, Moves.TACKLE, Moves.TACKLE, Moves.TACKLE]); game.override.enemyMoveset([Moves.TACKLE, Moves.TACKLE, Moves.TACKLE, Moves.TACKLE]);
await game.startBattle([Species.REGIELEKI]); await game.classicMode.startBattle([Species.REGIELEKI]);
const enemyPokemon = game.scene.getEnemyPokemon(); const enemyPokemon = game.scene.getEnemyPokemon();
const playerIndex = game.scene.getPlayerPokemon()?.getBattlerIndex(); const playerIndex = game.scene.getPlayerPokemon()?.getBattlerIndex();
@ -87,7 +87,7 @@ describe("Abilities - Mycelium Might", () => {
}, 20000); }, 20000);
it("will not affect non-status moves", async () => { it("will not affect non-status moves", async () => {
await game.startBattle([Species.REGIELEKI]); await game.classicMode.startBattle([Species.REGIELEKI]);
const playerIndex = game.scene.getPlayerPokemon()!.getBattlerIndex(); const playerIndex = game.scene.getPlayerPokemon()!.getBattlerIndex();
const enemyIndex = game.scene.getEnemyPokemon()!.getBattlerIndex(); const enemyIndex = game.scene.getEnemyPokemon()!.getBattlerIndex();

View File

@ -110,16 +110,16 @@ describe("Abilities - Neutralizing Gas", () => {
await game.classicMode.startBattle([Species.ACCELGOR, Species.ACCELGOR]); await game.classicMode.startBattle([Species.ACCELGOR, Species.ACCELGOR]);
game.move.select(Moves.SPLASH, 0); game.move.select(Moves.SPLASH, 0);
game.move.select(Moves.SPLASH, 1); game.move.select(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.ENTRAINMENT, BattlerIndex.PLAYER); await game.move.selectEnemyMove(Moves.ENTRAINMENT, BattlerIndex.PLAYER);
await game.forceEnemyMove(Moves.SPLASH); await game.move.selectEnemyMove(Moves.SPLASH);
await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]);
await game.phaseInterceptor.to("BerryPhase"); await game.phaseInterceptor.to("BerryPhase");
expect(game.scene.arena.getTag(ArenaTagType.NEUTRALIZING_GAS)).toBeDefined(); // Now one neut gas user is left expect(game.scene.arena.getTag(ArenaTagType.NEUTRALIZING_GAS)).toBeDefined(); // Now one neut gas user is left
game.move.select(Moves.SPLASH, 0); game.move.select(Moves.SPLASH, 0);
game.move.select(Moves.SPLASH, 1); game.move.select(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.ENTRAINMENT, BattlerIndex.PLAYER_2); await game.move.selectEnemyMove(Moves.ENTRAINMENT, BattlerIndex.PLAYER_2);
await game.forceEnemyMove(Moves.SPLASH); await game.move.selectEnemyMove(Moves.SPLASH);
await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]);
await game.phaseInterceptor.to("BerryPhase"); await game.phaseInterceptor.to("BerryPhase");
expect(game.scene.arena.getTag(ArenaTagType.NEUTRALIZING_GAS)).toBeUndefined(); // No neut gas users are left expect(game.scene.arena.getTag(ArenaTagType.NEUTRALIZING_GAS)).toBeUndefined(); // No neut gas users are left

View File

@ -34,7 +34,7 @@ describe("Abilities - Pastel Veil", () => {
}); });
it("prevents the user and its allies from being afflicted by poison", async () => { it("prevents the user and its allies from being afflicted by poison", async () => {
await game.startBattle([Species.MAGIKARP, Species.GALAR_PONYTA]); await game.classicMode.startBattle([Species.MAGIKARP, Species.GALAR_PONYTA]);
const ponyta = game.scene.getPlayerField()[1]; const ponyta = game.scene.getPlayerField()[1];
const magikarp = game.scene.getPlayerField()[0]; const magikarp = game.scene.getPlayerField()[0];
ponyta.abilityIndex = 1; ponyta.abilityIndex = 1;
@ -50,7 +50,7 @@ describe("Abilities - Pastel Veil", () => {
}); });
it("it heals the poisoned status condition of allies if user is sent out into battle", async () => { it("it heals the poisoned status condition of allies if user is sent out into battle", async () => {
await game.startBattle([Species.MAGIKARP, Species.FEEBAS, Species.GALAR_PONYTA]); await game.classicMode.startBattle([Species.MAGIKARP, Species.FEEBAS, Species.GALAR_PONYTA]);
const ponyta = game.scene.getPlayerParty()[2]; const ponyta = game.scene.getPlayerParty()[2];
const magikarp = game.scene.getPlayerField()[0]; const magikarp = game.scene.getPlayerField()[0];
ponyta.abilityIndex = 1; ponyta.abilityIndex = 1;

View File

@ -64,14 +64,14 @@ describe("Abilities - Perish Song", () => {
const magikarp = game.scene.getEnemyPokemon(); const magikarp = game.scene.getEnemyPokemon();
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.PERISH_SONG); await game.move.selectEnemyMove(Moves.PERISH_SONG);
await game.toNextTurn(); await game.toNextTurn();
expect(feebas?.summonData.tags[0].turnCount).toBe(3); expect(feebas?.summonData.tags[0].turnCount).toBe(3);
expect(magikarp?.summonData.tags[0].turnCount).toBe(3); expect(magikarp?.summonData.tags[0].turnCount).toBe(3);
game.doSwitchPokemon(1); game.doSwitchPokemon(1);
await game.forceEnemyMove(Moves.SPLASH); await game.move.selectEnemyMove(Moves.SPLASH);
await game.toNextTurn(); await game.toNextTurn();
const cursola = game.scene.getPlayerPokemon(); const cursola = game.scene.getPlayerPokemon();
@ -79,7 +79,7 @@ describe("Abilities - Perish Song", () => {
expect(magikarp?.summonData.tags[0].turnCount).toBe(2); expect(magikarp?.summonData.tags[0].turnCount).toBe(2);
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.AQUA_JET); await game.move.selectEnemyMove(Moves.AQUA_JET);
await game.toNextTurn(); await game.toNextTurn();
expect(cursola?.summonData.tags.length).toBe(0); expect(cursola?.summonData.tags.length).toBe(0);
@ -94,7 +94,7 @@ describe("Abilities - Perish Song", () => {
const cursola = game.scene.getPlayerPokemon(); const cursola = game.scene.getPlayerPokemon();
game.move.select(Moves.WHIRLWIND); game.move.select(Moves.WHIRLWIND);
await game.forceEnemyMove(Moves.PERISH_SONG); await game.move.selectEnemyMove(Moves.PERISH_SONG);
await game.toNextTurn(); await game.toNextTurn();
const magikarp = game.scene.getEnemyPokemon(); const magikarp = game.scene.getEnemyPokemon();
@ -102,7 +102,7 @@ describe("Abilities - Perish Song", () => {
expect(magikarp?.summonData.tags.length).toBe(0); expect(magikarp?.summonData.tags.length).toBe(0);
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.AQUA_JET); await game.move.selectEnemyMove(Moves.AQUA_JET);
await game.toNextTurn(); await game.toNextTurn();
expect(cursola?.summonData.tags[0].turnCount).toBe(2); expect(cursola?.summonData.tags[0].turnCount).toBe(2);

View File

@ -39,7 +39,7 @@ describe("Abilities - Power Spot", () => {
vi.spyOn(moveToCheck, "calculateBattlePower"); vi.spyOn(moveToCheck, "calculateBattlePower");
await game.startBattle([Species.REGIELEKI, Species.STONJOURNER]); await game.classicMode.startBattle([Species.REGIELEKI, Species.STONJOURNER]);
game.move.select(Moves.DAZZLING_GLEAM); game.move.select(Moves.DAZZLING_GLEAM);
game.move.select(Moves.SPLASH, 1); game.move.select(Moves.SPLASH, 1);
await game.phaseInterceptor.to(MoveEffectPhase); await game.phaseInterceptor.to(MoveEffectPhase);
@ -53,7 +53,7 @@ describe("Abilities - Power Spot", () => {
vi.spyOn(moveToCheck, "calculateBattlePower"); vi.spyOn(moveToCheck, "calculateBattlePower");
await game.startBattle([Species.REGIELEKI, Species.STONJOURNER]); await game.classicMode.startBattle([Species.REGIELEKI, Species.STONJOURNER]);
game.move.select(Moves.BREAKING_SWIPE); game.move.select(Moves.BREAKING_SWIPE);
game.move.select(Moves.SPLASH, 1); game.move.select(Moves.SPLASH, 1);
await game.phaseInterceptor.to(MoveEffectPhase); await game.phaseInterceptor.to(MoveEffectPhase);
@ -67,7 +67,7 @@ describe("Abilities - Power Spot", () => {
vi.spyOn(moveToCheck, "calculateBattlePower"); vi.spyOn(moveToCheck, "calculateBattlePower");
await game.startBattle([Species.STONJOURNER, Species.REGIELEKI]); await game.classicMode.startBattle([Species.STONJOURNER, Species.REGIELEKI]);
game.move.select(Moves.BREAKING_SWIPE); game.move.select(Moves.BREAKING_SWIPE);
game.move.select(Moves.SPLASH, 1); game.move.select(Moves.SPLASH, 1);
await game.phaseInterceptor.to(TurnEndPhase); await game.phaseInterceptor.to(TurnEndPhase);

View File

@ -39,7 +39,7 @@ describe("Abilities - Protean", () => {
test("ability applies and changes a pokemon's type", async () => { test("ability applies and changes a pokemon's type", async () => {
game.override.moveset([Moves.SPLASH]); game.override.moveset([Moves.SPLASH]);
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
expect(leadPokemon).not.toBe(undefined); expect(leadPokemon).not.toBe(undefined);
@ -54,7 +54,7 @@ describe("Abilities - Protean", () => {
test.skip("ability applies only once per switch in", async () => { test.skip("ability applies only once per switch in", async () => {
game.override.moveset([Moves.SPLASH, Moves.AGILITY]); game.override.moveset([Moves.SPLASH, Moves.AGILITY]);
await game.startBattle([Species.MAGIKARP, Species.BULBASAUR]); await game.classicMode.startBattle([Species.MAGIKARP, Species.BULBASAUR]);
let leadPokemon = game.scene.getPlayerPokemon()!; let leadPokemon = game.scene.getPlayerPokemon()!;
expect(leadPokemon).not.toBe(undefined); expect(leadPokemon).not.toBe(undefined);
@ -90,7 +90,7 @@ describe("Abilities - Protean", () => {
test("ability applies correctly even if the pokemon's move has a variable type", async () => { test("ability applies correctly even if the pokemon's move has a variable type", async () => {
game.override.moveset([Moves.WEATHER_BALL]); game.override.moveset([Moves.WEATHER_BALL]);
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
expect(leadPokemon).not.toBe(undefined); expect(leadPokemon).not.toBe(undefined);
@ -110,7 +110,7 @@ describe("Abilities - Protean", () => {
game.override.moveset([Moves.TACKLE]); game.override.moveset([Moves.TACKLE]);
game.override.passiveAbility(Abilities.REFRIGERATE); game.override.passiveAbility(Abilities.REFRIGERATE);
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
expect(leadPokemon).not.toBe(undefined); expect(leadPokemon).not.toBe(undefined);
@ -128,7 +128,7 @@ describe("Abilities - Protean", () => {
test("ability applies correctly even if the pokemon's move calls another move", async () => { test("ability applies correctly even if the pokemon's move calls another move", async () => {
game.override.moveset([Moves.NATURE_POWER]); game.override.moveset([Moves.NATURE_POWER]);
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
expect(leadPokemon).not.toBe(undefined); expect(leadPokemon).not.toBe(undefined);
@ -143,7 +143,7 @@ describe("Abilities - Protean", () => {
test("ability applies correctly even if the pokemon's move is delayed / charging", async () => { test("ability applies correctly even if the pokemon's move is delayed / charging", async () => {
game.override.moveset([Moves.DIG]); game.override.moveset([Moves.DIG]);
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
expect(leadPokemon).not.toBe(undefined); expect(leadPokemon).not.toBe(undefined);
@ -158,7 +158,7 @@ describe("Abilities - Protean", () => {
game.override.moveset([Moves.TACKLE]); game.override.moveset([Moves.TACKLE]);
game.override.enemyMoveset(Moves.SPLASH); game.override.enemyMoveset(Moves.SPLASH);
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
expect(leadPokemon).not.toBe(undefined); expect(leadPokemon).not.toBe(undefined);
@ -176,7 +176,7 @@ describe("Abilities - Protean", () => {
game.override.moveset([Moves.TACKLE]); game.override.moveset([Moves.TACKLE]);
game.override.enemyMoveset([Moves.PROTECT, Moves.PROTECT, Moves.PROTECT, Moves.PROTECT]); game.override.enemyMoveset([Moves.PROTECT, Moves.PROTECT, Moves.PROTECT, Moves.PROTECT]);
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
expect(leadPokemon).not.toBe(undefined); expect(leadPokemon).not.toBe(undefined);
@ -191,7 +191,7 @@ describe("Abilities - Protean", () => {
game.override.moveset([Moves.TACKLE]); game.override.moveset([Moves.TACKLE]);
game.override.enemySpecies(Species.GASTLY); game.override.enemySpecies(Species.GASTLY);
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
expect(leadPokemon).not.toBe(undefined); expect(leadPokemon).not.toBe(undefined);
@ -205,7 +205,7 @@ describe("Abilities - Protean", () => {
test("ability is not applied if pokemon's type is the same as the move's type", async () => { test("ability is not applied if pokemon's type is the same as the move's type", async () => {
game.override.moveset([Moves.SPLASH]); game.override.moveset([Moves.SPLASH]);
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
expect(leadPokemon).not.toBe(undefined); expect(leadPokemon).not.toBe(undefined);
@ -220,7 +220,7 @@ describe("Abilities - Protean", () => {
test("ability is not applied if pokemon is terastallized", async () => { test("ability is not applied if pokemon is terastallized", async () => {
game.override.moveset([Moves.SPLASH]); game.override.moveset([Moves.SPLASH]);
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
expect(leadPokemon).not.toBe(undefined); expect(leadPokemon).not.toBe(undefined);
@ -236,7 +236,7 @@ describe("Abilities - Protean", () => {
test("ability is not applied if pokemon uses struggle", async () => { test("ability is not applied if pokemon uses struggle", async () => {
game.override.moveset([Moves.STRUGGLE]); game.override.moveset([Moves.STRUGGLE]);
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
expect(leadPokemon).not.toBe(undefined); expect(leadPokemon).not.toBe(undefined);
@ -250,7 +250,7 @@ describe("Abilities - Protean", () => {
test("ability is not applied if the pokemon's move fails", async () => { test("ability is not applied if the pokemon's move fails", async () => {
game.override.moveset([Moves.BURN_UP]); game.override.moveset([Moves.BURN_UP]);
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
expect(leadPokemon).not.toBe(undefined); expect(leadPokemon).not.toBe(undefined);
@ -265,7 +265,7 @@ describe("Abilities - Protean", () => {
game.override.moveset([Moves.TRICK_OR_TREAT]); game.override.moveset([Moves.TRICK_OR_TREAT]);
game.override.enemySpecies(Species.GASTLY); game.override.enemySpecies(Species.GASTLY);
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
expect(leadPokemon).not.toBe(undefined); expect(leadPokemon).not.toBe(undefined);
@ -279,7 +279,7 @@ describe("Abilities - Protean", () => {
test("ability applies correctly and the pokemon curses itself", async () => { test("ability applies correctly and the pokemon curses itself", async () => {
game.override.moveset([Moves.CURSE]); game.override.moveset([Moves.CURSE]);
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
expect(leadPokemon).not.toBe(undefined); expect(leadPokemon).not.toBe(undefined);

View File

@ -41,7 +41,7 @@ describe("Abilities - Quick Draw", () => {
}); });
test("makes pokemon going first in its priority bracket", async () => { test("makes pokemon going first in its priority bracket", async () => {
await game.startBattle(); await game.classicMode.startBattle();
const pokemon = game.scene.getPlayerPokemon()!; const pokemon = game.scene.getPlayerPokemon()!;
const enemy = game.scene.getEnemyPokemon()!; const enemy = game.scene.getEnemyPokemon()!;
@ -63,7 +63,7 @@ describe("Abilities - Quick Draw", () => {
retry: 5, retry: 5,
}, },
async () => { async () => {
await game.startBattle(); await game.classicMode.startBattle();
const pokemon = game.scene.getPlayerPokemon()!; const pokemon = game.scene.getPlayerPokemon()!;
const enemy = game.scene.getEnemyPokemon()!; const enemy = game.scene.getEnemyPokemon()!;
@ -83,7 +83,7 @@ describe("Abilities - Quick Draw", () => {
test("does not increase priority", async () => { test("does not increase priority", async () => {
game.override.enemyMoveset([Moves.EXTREME_SPEED]); game.override.enemyMoveset([Moves.EXTREME_SPEED]);
await game.startBattle(); await game.classicMode.startBattle();
const pokemon = game.scene.getPlayerPokemon()!; const pokemon = game.scene.getPlayerPokemon()!;
const enemy = game.scene.getEnemyPokemon()!; const enemy = game.scene.getEnemyPokemon()!;

View File

@ -38,7 +38,7 @@ describe("Abilities - Sand Veil", () => {
}); });
test("ability should increase the evasiveness of the source", async () => { test("ability should increase the evasiveness of the source", async () => {
await game.startBattle([Species.SNORLAX, Species.BLISSEY]); await game.classicMode.startBattle([Species.SNORLAX, Species.BLISSEY]);
const leadPokemon = game.scene.getPlayerField(); const leadPokemon = game.scene.getPlayerField();

View File

@ -39,7 +39,7 @@ describe("Abilities - SCHOOLING", () => {
[Species.WISHIWASHI]: schoolForm, [Species.WISHIWASHI]: schoolForm,
}); });
await game.startBattle([Species.MAGIKARP, Species.WISHIWASHI]); await game.classicMode.startBattle([Species.MAGIKARP, Species.WISHIWASHI]);
const wishiwashi = game.scene.getPlayerParty().find(p => p.species.speciesId === Species.WISHIWASHI)!; const wishiwashi = game.scene.getPlayerParty().find(p => p.species.speciesId === Species.WISHIWASHI)!;
expect(wishiwashi).not.toBe(undefined); expect(wishiwashi).not.toBe(undefined);

View File

@ -33,7 +33,7 @@ describe("Abilities - Screen Cleaner", () => {
game.override.moveset([Moves.HAIL]); game.override.moveset([Moves.HAIL]);
game.override.enemyMoveset([Moves.AURORA_VEIL, Moves.AURORA_VEIL, Moves.AURORA_VEIL, Moves.AURORA_VEIL]); game.override.enemyMoveset([Moves.AURORA_VEIL, Moves.AURORA_VEIL, Moves.AURORA_VEIL, Moves.AURORA_VEIL]);
await game.startBattle([Species.MAGIKARP, Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP, Species.MAGIKARP]);
game.move.select(Moves.HAIL); game.move.select(Moves.HAIL);
await game.phaseInterceptor.to(TurnEndPhase); await game.phaseInterceptor.to(TurnEndPhase);
@ -50,7 +50,7 @@ describe("Abilities - Screen Cleaner", () => {
it("removes Light Screen", async () => { it("removes Light Screen", async () => {
game.override.enemyMoveset([Moves.LIGHT_SCREEN, Moves.LIGHT_SCREEN, Moves.LIGHT_SCREEN, Moves.LIGHT_SCREEN]); game.override.enemyMoveset([Moves.LIGHT_SCREEN, Moves.LIGHT_SCREEN, Moves.LIGHT_SCREEN, Moves.LIGHT_SCREEN]);
await game.startBattle([Species.MAGIKARP, Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP, Species.MAGIKARP]);
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
await game.phaseInterceptor.to(TurnEndPhase); await game.phaseInterceptor.to(TurnEndPhase);
@ -67,7 +67,7 @@ describe("Abilities - Screen Cleaner", () => {
it("removes Reflect", async () => { it("removes Reflect", async () => {
game.override.enemyMoveset([Moves.REFLECT, Moves.REFLECT, Moves.REFLECT, Moves.REFLECT]); game.override.enemyMoveset([Moves.REFLECT, Moves.REFLECT, Moves.REFLECT, Moves.REFLECT]);
await game.startBattle([Species.MAGIKARP, Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP, Species.MAGIKARP]);
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
await game.phaseInterceptor.to(TurnEndPhase); await game.phaseInterceptor.to(TurnEndPhase);

View File

@ -76,7 +76,7 @@ describe("Abilities - SHIELDS DOWN", () => {
await game.classicMode.startBattle([Species.MINIOR]); await game.classicMode.startBattle([Species.MINIOR]);
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.SPORE); await game.move.selectEnemyMove(Moves.SPORE);
await game.phaseInterceptor.to(TurnEndPhase); await game.phaseInterceptor.to(TurnEndPhase);
expect(game.scene.getPlayerPokemon()!.status).toBe(undefined); expect(game.scene.getPlayerPokemon()!.status).toBe(undefined);
@ -115,12 +115,12 @@ describe("Abilities - SHIELDS DOWN", () => {
// turn 1 // turn 1
game.move.select(Moves.GRAVITY); game.move.select(Moves.GRAVITY);
await game.forceEnemyMove(Moves.TOXIC_SPIKES); await game.move.selectEnemyMove(Moves.TOXIC_SPIKES);
await game.toNextTurn(); await game.toNextTurn();
// turn 2 // turn 2
game.doSwitchPokemon(1); game.doSwitchPokemon(1);
await game.forceEnemyMove(Moves.SPLASH); await game.move.selectEnemyMove(Moves.SPLASH);
await game.toNextTurn(); await game.toNextTurn();
expect(game.scene.getPlayerPokemon()!.species.speciesId).toBe(Species.MINIOR); expect(game.scene.getPlayerPokemon()!.species.speciesId).toBe(Species.MINIOR);
@ -134,7 +134,7 @@ describe("Abilities - SHIELDS DOWN", () => {
await game.classicMode.startBattle([Species.MAGIKARP, Species.MINIOR]); await game.classicMode.startBattle([Species.MAGIKARP, Species.MINIOR]);
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.YAWN); await game.move.selectEnemyMove(Moves.YAWN);
await game.phaseInterceptor.to(TurnEndPhase); await game.phaseInterceptor.to(TurnEndPhase);
expect(game.scene.getPlayerPokemon()!.findTag(tag => tag.tagType === BattlerTagType.DROWSY)).toBe(undefined); expect(game.scene.getPlayerPokemon()!.findTag(tag => tag.tagType === BattlerTagType.DROWSY)).toBe(undefined);
@ -146,7 +146,7 @@ describe("Abilities - SHIELDS DOWN", () => {
await game.classicMode.startBattle([Species.MINIOR]); await game.classicMode.startBattle([Species.MINIOR]);
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.CONFUSE_RAY); await game.move.selectEnemyMove(Moves.CONFUSE_RAY);
await game.phaseInterceptor.to(TurnEndPhase); await game.phaseInterceptor.to(TurnEndPhase);
@ -162,7 +162,7 @@ describe("Abilities - SHIELDS DOWN", () => {
await game.classicMode.startBattle([Species.MINIOR]); await game.classicMode.startBattle([Species.MINIOR]);
game.move.select(Moves.SPORE); game.move.select(Moves.SPORE);
await game.forceEnemyMove(Moves.SPLASH); await game.move.selectEnemyMove(Moves.SPLASH);
await game.phaseInterceptor.to(TurnEndPhase); await game.phaseInterceptor.to(TurnEndPhase);
expect(game.scene.getEnemyPokemon()!.status?.effect).toBe(StatusEffect.SLEEP); expect(game.scene.getEnemyPokemon()!.status?.effect).toBe(StatusEffect.SLEEP);

View File

@ -31,7 +31,7 @@ describe("Abilities - Simple", () => {
}); });
it("should double stat changes when applied", async () => { it("should double stat changes when applied", async () => {
await game.startBattle([Species.SLOWBRO]); await game.classicMode.startBattle([Species.SLOWBRO]);
const enemyPokemon = game.scene.getEnemyPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!;

View File

@ -42,7 +42,7 @@ describe("Abilities - Stakeout", () => {
const [enemy1] = game.scene.getEnemyParty(); const [enemy1] = game.scene.getEnemyParty();
game.move.select(Moves.SURF); game.move.select(Moves.SURF);
await game.forceEnemyMove(Moves.SPLASH); await game.move.selectEnemyMove(Moves.SPLASH);
await game.toNextTurn(); await game.toNextTurn();
const damage1 = enemy1.getInverseHp(); const damage1 = enemy1.getInverseHp();
enemy1.hp = enemy1.getMaxHp(); enemy1.hp = enemy1.getMaxHp();
@ -65,17 +65,17 @@ describe("Abilities - Stakeout", () => {
const [enemy1] = game.scene.getEnemyParty(); const [enemy1] = game.scene.getEnemyParty();
game.move.select(Moves.SURF); game.move.select(Moves.SURF);
await game.forceEnemyMove(Moves.SPLASH); await game.move.selectEnemyMove(Moves.SPLASH);
await game.toNextTurn(); await game.toNextTurn();
const damage1 = enemy1.getInverseHp(); const damage1 = enemy1.getInverseHp();
enemy1.hp = enemy1.getMaxHp(); enemy1.hp = enemy1.getMaxHp();
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.FLIP_TURN); await game.move.selectEnemyMove(Moves.FLIP_TURN);
await game.toNextTurn(); await game.toNextTurn();
game.move.select(Moves.SURF); game.move.select(Moves.SURF);
await game.forceEnemyMove(Moves.FLIP_TURN); await game.move.selectEnemyMove(Moves.FLIP_TURN);
await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]);
await game.toNextTurn(); await game.toNextTurn();

View File

@ -37,7 +37,7 @@ describe("Abilities - Stall", () => {
**/ **/
it("Pokemon with Stall should move last in its priority bracket regardless of speed", async () => { it("Pokemon with Stall should move last in its priority bracket regardless of speed", async () => {
await game.startBattle([Species.SHUCKLE]); await game.classicMode.startBattle([Species.SHUCKLE]);
const playerIndex = game.scene.getPlayerPokemon()!.getBattlerIndex(); const playerIndex = game.scene.getPlayerPokemon()!.getBattlerIndex();
const enemyIndex = game.scene.getEnemyPokemon()!.getBattlerIndex(); const enemyIndex = game.scene.getEnemyPokemon()!.getBattlerIndex();
@ -55,7 +55,7 @@ describe("Abilities - Stall", () => {
}, 20000); }, 20000);
it("Pokemon with Stall will go first if a move that is in a higher priority bracket than the opponent's move is used", async () => { it("Pokemon with Stall will go first if a move that is in a higher priority bracket than the opponent's move is used", async () => {
await game.startBattle([Species.SHUCKLE]); await game.classicMode.startBattle([Species.SHUCKLE]);
const playerIndex = game.scene.getPlayerPokemon()!.getBattlerIndex(); const playerIndex = game.scene.getPlayerPokemon()!.getBattlerIndex();
const enemyIndex = game.scene.getEnemyPokemon()!.getBattlerIndex(); const enemyIndex = game.scene.getEnemyPokemon()!.getBattlerIndex();
@ -74,7 +74,7 @@ describe("Abilities - Stall", () => {
it("If both Pokemon have stall and use the same move, speed is used to determine who goes first.", async () => { it("If both Pokemon have stall and use the same move, speed is used to determine who goes first.", async () => {
game.override.ability(Abilities.STALL); game.override.ability(Abilities.STALL);
await game.startBattle([Species.SHUCKLE]); await game.classicMode.startBattle([Species.SHUCKLE]);
const playerIndex = game.scene.getPlayerPokemon()!.getBattlerIndex(); const playerIndex = game.scene.getPlayerPokemon()!.getBattlerIndex();
const enemyIndex = game.scene.getEnemyPokemon()!.getBattlerIndex(); const enemyIndex = game.scene.getEnemyPokemon()!.getBattlerIndex();

View File

@ -36,14 +36,14 @@ describe("Abilities - Sturdy", () => {
}); });
test("Sturdy activates when user is at full HP", async () => { test("Sturdy activates when user is at full HP", async () => {
await game.startBattle(); await game.classicMode.startBattle();
game.move.select(Moves.CLOSE_COMBAT); game.move.select(Moves.CLOSE_COMBAT);
await game.phaseInterceptor.to(MoveEndPhase); await game.phaseInterceptor.to(MoveEndPhase);
expect(game.scene.getEnemyParty()[0].hp).toBe(1); expect(game.scene.getEnemyParty()[0].hp).toBe(1);
}); });
test("Sturdy doesn't activate when user is not at full HP", async () => { test("Sturdy doesn't activate when user is not at full HP", async () => {
await game.startBattle(); await game.classicMode.startBattle();
const enemyPokemon: EnemyPokemon = game.scene.getEnemyParty()[0]; const enemyPokemon: EnemyPokemon = game.scene.getEnemyParty()[0];
enemyPokemon.hp = enemyPokemon.getMaxHp() - 1; enemyPokemon.hp = enemyPokemon.getMaxHp() - 1;
@ -56,7 +56,7 @@ describe("Abilities - Sturdy", () => {
}); });
test("Sturdy pokemon should be immune to OHKO moves", async () => { test("Sturdy pokemon should be immune to OHKO moves", async () => {
await game.startBattle(); await game.classicMode.startBattle();
game.move.select(Moves.FISSURE); game.move.select(Moves.FISSURE);
await game.phaseInterceptor.to(MoveEndPhase); await game.phaseInterceptor.to(MoveEndPhase);
@ -67,7 +67,7 @@ describe("Abilities - Sturdy", () => {
test("Sturdy is ignored by pokemon with `Abilities.MOLD_BREAKER`", async () => { test("Sturdy is ignored by pokemon with `Abilities.MOLD_BREAKER`", async () => {
game.override.ability(Abilities.MOLD_BREAKER); game.override.ability(Abilities.MOLD_BREAKER);
await game.startBattle(); await game.classicMode.startBattle();
game.move.select(Moves.CLOSE_COMBAT); game.move.select(Moves.CLOSE_COMBAT);
await game.phaseInterceptor.to(DamageAnimPhase); await game.phaseInterceptor.to(DamageAnimPhase);

View File

@ -44,7 +44,7 @@ describe("Abilities - Supreme Overlord", () => {
}); });
it("should increase Power by 20% if 2 Pokemon are fainted in the party", async () => { it("should increase Power by 20% if 2 Pokemon are fainted in the party", async () => {
await game.startBattle([Species.BULBASAUR, Species.CHARMANDER, Species.SQUIRTLE]); await game.classicMode.startBattle([Species.BULBASAUR, Species.CHARMANDER, Species.SQUIRTLE]);
game.move.select(Moves.EXPLOSION); game.move.select(Moves.EXPLOSION);
await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]);

View File

@ -33,7 +33,7 @@ describe("Abilities - Sweet Veil", () => {
}); });
it("prevents the user and its allies from falling asleep", async () => { it("prevents the user and its allies from falling asleep", async () => {
await game.startBattle([Species.SWIRLIX, Species.MAGIKARP]); await game.classicMode.startBattle([Species.SWIRLIX, Species.MAGIKARP]);
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
game.move.select(Moves.SPLASH, 1); game.move.select(Moves.SPLASH, 1);
@ -45,7 +45,7 @@ describe("Abilities - Sweet Veil", () => {
it("causes Rest to fail when used by the user or its allies", async () => { it("causes Rest to fail when used by the user or its allies", async () => {
game.override.enemyMoveset(Moves.SPLASH); game.override.enemyMoveset(Moves.SPLASH);
await game.startBattle([Species.SWIRLIX, Species.MAGIKARP]); await game.classicMode.startBattle([Species.SWIRLIX, Species.MAGIKARP]);
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
game.move.select(Moves.REST, 1); game.move.select(Moves.REST, 1);
@ -57,7 +57,7 @@ describe("Abilities - Sweet Veil", () => {
it("causes Yawn to fail if used on the user or its allies", async () => { it("causes Yawn to fail if used on the user or its allies", async () => {
game.override.enemyMoveset([Moves.YAWN, Moves.YAWN, Moves.YAWN, Moves.YAWN]); game.override.enemyMoveset([Moves.YAWN, Moves.YAWN, Moves.YAWN, Moves.YAWN]);
await game.startBattle([Species.SWIRLIX, Species.MAGIKARP]); await game.classicMode.startBattle([Species.SWIRLIX, Species.MAGIKARP]);
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
game.move.select(Moves.SPLASH, 1); game.move.select(Moves.SPLASH, 1);
@ -73,7 +73,7 @@ describe("Abilities - Sweet Veil", () => {
game.override.startingLevel(5); game.override.startingLevel(5);
game.override.enemyMoveset(Moves.SPLASH); game.override.enemyMoveset(Moves.SPLASH);
await game.startBattle([Species.SHUCKLE, Species.SHUCKLE, Species.SWIRLIX]); await game.classicMode.startBattle([Species.SHUCKLE, Species.SHUCKLE, Species.SWIRLIX]);
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
game.move.select(Moves.YAWN, 1, BattlerIndex.PLAYER); game.move.select(Moves.YAWN, 1, BattlerIndex.PLAYER);

View File

@ -244,8 +244,8 @@ describe("Abilities - Unburden", () => {
// Turn 1: Treecko gets hit by False Swipe and eats Sitrus Berry, activating Unburden // Turn 1: Treecko gets hit by False Swipe and eats Sitrus Berry, activating Unburden
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
game.move.select(Moves.SPLASH, 1); game.move.select(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.FALSE_SWIPE, 0); await game.move.selectEnemyMove(Moves.FALSE_SWIPE, 0);
await game.forceEnemyMove(Moves.FALSE_SWIPE, 0); await game.move.selectEnemyMove(Moves.FALSE_SWIPE, 0);
await game.phaseInterceptor.to("TurnEndPhase"); await game.phaseInterceptor.to("TurnEndPhase");
expect(getHeldItemCount(treecko)).toBeLessThan(playerHeldItems); expect(getHeldItemCount(treecko)).toBeLessThan(playerHeldItems);
@ -302,7 +302,7 @@ describe("Abilities - Unburden", () => {
// Turn 1: Get hit by False Swipe and eat Sitrus Berry, activating Unburden // Turn 1: Get hit by False Swipe and eat Sitrus Berry, activating Unburden
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.FALSE_SWIPE); await game.move.selectEnemyMove(Moves.FALSE_SWIPE);
await game.toNextTurn(); await game.toNextTurn();
expect(getHeldItemCount(playerPokemon)).toBeLessThan(playerHeldItems); expect(getHeldItemCount(playerPokemon)).toBeLessThan(playerHeldItems);
@ -310,7 +310,7 @@ describe("Abilities - Unburden", () => {
// Turn 2: Get hit by Worry Seed, deactivating Unburden // Turn 2: Get hit by Worry Seed, deactivating Unburden
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.WORRY_SEED); await game.move.selectEnemyMove(Moves.WORRY_SEED);
await game.toNextTurn(); await game.toNextTurn();
expect(getHeldItemCount(playerPokemon)).toBeLessThan(playerHeldItems); expect(getHeldItemCount(playerPokemon)).toBeLessThan(playerHeldItems);
@ -343,13 +343,13 @@ describe("Abilities - Unburden", () => {
const initialSpeed = treecko.getStat(Stat.SPD); const initialSpeed = treecko.getStat(Stat.SPD);
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.THIEF); await game.move.selectEnemyMove(Moves.THIEF);
game.doSelectPartyPokemon(1); game.doSelectPartyPokemon(1);
await game.toNextTurn(); await game.toNextTurn();
game.doRevivePokemon(1); game.doRevivePokemon(1);
game.doSwitchPokemon(1); game.doSwitchPokemon(1);
await game.forceEnemyMove(Moves.SPLASH); await game.move.selectEnemyMove(Moves.SPLASH);
await game.toNextTurn(); await game.toNextTurn();
expect(game.scene.getPlayerPokemon()!).toBe(treecko); expect(game.scene.getPlayerPokemon()!).toBe(treecko);
@ -372,8 +372,8 @@ describe("Abilities - Unburden", () => {
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
game.move.select(Moves.REVIVAL_BLESSING, 1); game.move.select(Moves.REVIVAL_BLESSING, 1);
await game.forceEnemyMove(Moves.THIEF, BattlerIndex.PLAYER); await game.move.selectEnemyMove(Moves.THIEF, BattlerIndex.PLAYER);
await game.forceEnemyMove(Moves.SPLASH); await game.move.selectEnemyMove(Moves.SPLASH);
await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER_2]); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER_2]);
game.doSelectPartyPokemon(0, "RevivalBlessingPhase"); game.doSelectPartyPokemon(0, "RevivalBlessingPhase");
await game.toNextTurn(); await game.toNextTurn();

View File

@ -544,8 +544,8 @@ describe("Abilities - Wimp Out", () => {
// turn 1 // turn 1
game.move.select(Moves.DRAGON_ENERGY, 0); game.move.select(Moves.DRAGON_ENERGY, 0);
game.move.select(Moves.SPLASH, 1); game.move.select(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.SPLASH); await game.move.selectEnemyMove(Moves.SPLASH);
await game.forceEnemyMove(Moves.ENDURE); await game.move.selectEnemyMove(Moves.ENDURE);
await game.phaseInterceptor.to("SelectModifierPhase"); await game.phaseInterceptor.to("SelectModifierPhase");
expect(game.scene.currentBattle.waveIndex).toBe(wave + 1); expect(game.scene.currentBattle.waveIndex).toBe(wave + 1);

View File

@ -31,7 +31,7 @@ describe("Abilities - Wind Power", () => {
}); });
it("it becomes charged when hit by wind moves", async () => { it("it becomes charged when hit by wind moves", async () => {
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const shiftry = game.scene.getEnemyPokemon()!; const shiftry = game.scene.getEnemyPokemon()!;
expect(shiftry.getTag(BattlerTagType.CHARGED)).toBeUndefined(); expect(shiftry.getTag(BattlerTagType.CHARGED)).toBeUndefined();
@ -46,7 +46,7 @@ describe("Abilities - Wind Power", () => {
game.override.ability(Abilities.WIND_POWER); game.override.ability(Abilities.WIND_POWER);
game.override.enemySpecies(Species.MAGIKARP); game.override.enemySpecies(Species.MAGIKARP);
await game.startBattle([Species.SHIFTRY]); await game.classicMode.startBattle([Species.SHIFTRY]);
const shiftry = game.scene.getPlayerPokemon()!; const shiftry = game.scene.getPlayerPokemon()!;
expect(shiftry.getTag(BattlerTagType.CHARGED)).toBeUndefined(); expect(shiftry.getTag(BattlerTagType.CHARGED)).toBeUndefined();
@ -61,7 +61,7 @@ describe("Abilities - Wind Power", () => {
game.override.enemySpecies(Species.MAGIKARP); game.override.enemySpecies(Species.MAGIKARP);
game.override.ability(Abilities.WIND_POWER); game.override.ability(Abilities.WIND_POWER);
await game.startBattle([Species.SHIFTRY]); await game.classicMode.startBattle([Species.SHIFTRY]);
const magikarp = game.scene.getEnemyPokemon()!; const magikarp = game.scene.getEnemyPokemon()!;
const shiftry = game.scene.getPlayerPokemon()!; const shiftry = game.scene.getPlayerPokemon()!;
@ -79,7 +79,7 @@ describe("Abilities - Wind Power", () => {
it("does not interact with Sandstorm", async () => { it("does not interact with Sandstorm", async () => {
game.override.enemySpecies(Species.MAGIKARP); game.override.enemySpecies(Species.MAGIKARP);
await game.startBattle([Species.SHIFTRY]); await game.classicMode.startBattle([Species.SHIFTRY]);
const shiftry = game.scene.getPlayerPokemon()!; const shiftry = game.scene.getPlayerPokemon()!;
expect(shiftry.getTag(BattlerTagType.CHARGED)).toBeUndefined(); expect(shiftry.getTag(BattlerTagType.CHARGED)).toBeUndefined();

View File

@ -36,7 +36,7 @@ describe("Abilities - Wonder Skin", () => {
vi.spyOn(moveToCheck, "calculateBattleAccuracy"); vi.spyOn(moveToCheck, "calculateBattleAccuracy");
await game.startBattle([Species.PIKACHU]); await game.classicMode.startBattle([Species.PIKACHU]);
game.move.select(Moves.CHARM); game.move.select(Moves.CHARM);
await game.phaseInterceptor.to(MoveEffectPhase); await game.phaseInterceptor.to(MoveEffectPhase);
@ -48,7 +48,7 @@ describe("Abilities - Wonder Skin", () => {
vi.spyOn(moveToCheck, "calculateBattleAccuracy"); vi.spyOn(moveToCheck, "calculateBattleAccuracy");
await game.startBattle([Species.PIKACHU]); await game.classicMode.startBattle([Species.PIKACHU]);
game.move.select(Moves.TACKLE); game.move.select(Moves.TACKLE);
await game.phaseInterceptor.to(MoveEffectPhase); await game.phaseInterceptor.to(MoveEffectPhase);

View File

@ -39,7 +39,7 @@ describe("Abilities - ZERO TO HERO", () => {
[Species.PALAFIN]: heroForm, [Species.PALAFIN]: heroForm,
}); });
await game.startBattle([Species.FEEBAS, Species.PALAFIN, Species.PALAFIN]); await game.classicMode.startBattle([Species.FEEBAS, Species.PALAFIN, Species.PALAFIN]);
const palafin1 = game.scene.getPlayerParty()[1]; const palafin1 = game.scene.getPlayerParty()[1];
const palafin2 = game.scene.getPlayerParty()[2]; const palafin2 = game.scene.getPlayerParty()[2];
@ -61,7 +61,7 @@ describe("Abilities - ZERO TO HERO", () => {
}); });
it("should swap to Hero form when switching out during a battle", async () => { it("should swap to Hero form when switching out during a battle", async () => {
await game.startBattle([Species.PALAFIN, Species.FEEBAS]); await game.classicMode.startBattle([Species.PALAFIN, Species.FEEBAS]);
const palafin = game.scene.getPlayerPokemon()!; const palafin = game.scene.getPlayerPokemon()!;
expect(palafin.formIndex).toBe(baseForm); expect(palafin.formIndex).toBe(baseForm);
@ -72,7 +72,7 @@ describe("Abilities - ZERO TO HERO", () => {
}); });
it("should not swap to Hero form if switching due to faint", async () => { it("should not swap to Hero form if switching due to faint", async () => {
await game.startBattle([Species.PALAFIN, Species.FEEBAS]); await game.classicMode.startBattle([Species.PALAFIN, Species.FEEBAS]);
const palafin = game.scene.getPlayerPokemon()!; const palafin = game.scene.getPlayerPokemon()!;
expect(palafin.formIndex).toBe(baseForm); expect(palafin.formIndex).toBe(baseForm);
@ -89,7 +89,7 @@ describe("Abilities - ZERO TO HERO", () => {
[Species.PALAFIN]: heroForm, [Species.PALAFIN]: heroForm,
}); });
await game.startBattle([Species.PALAFIN, Species.FEEBAS]); await game.classicMode.startBattle([Species.PALAFIN, Species.FEEBAS]);
const palafin = game.scene.getPlayerPokemon()!; const palafin = game.scene.getPlayerPokemon()!;
expect(palafin.formIndex).toBe(heroForm); expect(palafin.formIndex).toBe(heroForm);

View File

@ -37,7 +37,7 @@ describe("Weather - Fog", () => {
vi.spyOn(moveToCheck, "calculateBattleAccuracy"); vi.spyOn(moveToCheck, "calculateBattleAccuracy");
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
game.move.select(Moves.TACKLE); game.move.select(Moves.TACKLE);
await game.phaseInterceptor.to(MoveEffectPhase); await game.phaseInterceptor.to(MoveEffectPhase);

View File

@ -32,7 +32,7 @@ describe("Battle order", () => {
}); });
it("opponent faster than player 50 vs 150", async () => { it("opponent faster than player 50 vs 150", async () => {
await game.startBattle([Species.BULBASAUR]); await game.classicMode.startBattle([Species.BULBASAUR]);
const playerPokemon = game.scene.getPlayerPokemon()!; const playerPokemon = game.scene.getPlayerPokemon()!;
const enemyPokemon = game.scene.getEnemyPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!;
@ -51,7 +51,7 @@ describe("Battle order", () => {
}, 20000); }, 20000);
it("Player faster than opponent 150 vs 50", async () => { it("Player faster than opponent 150 vs 50", async () => {
await game.startBattle([Species.BULBASAUR]); await game.classicMode.startBattle([Species.BULBASAUR]);
const playerPokemon = game.scene.getPlayerPokemon()!; const playerPokemon = game.scene.getPlayerPokemon()!;
const enemyPokemon = game.scene.getEnemyPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!;
@ -71,7 +71,7 @@ describe("Battle order", () => {
it("double - both opponents faster than player 50/50 vs 150/150", async () => { it("double - both opponents faster than player 50/50 vs 150/150", async () => {
game.override.battleStyle("double"); game.override.battleStyle("double");
await game.startBattle([Species.BULBASAUR, Species.BLASTOISE]); await game.classicMode.startBattle([Species.BULBASAUR, Species.BLASTOISE]);
const playerPokemon = game.scene.getPlayerField(); const playerPokemon = game.scene.getPlayerField();
const enemyPokemon = game.scene.getEnemyField(); const enemyPokemon = game.scene.getEnemyField();
@ -95,7 +95,7 @@ describe("Battle order", () => {
it("double - speed tie except 1 - 100/100 vs 100/150", async () => { it("double - speed tie except 1 - 100/100 vs 100/150", async () => {
game.override.battleStyle("double"); game.override.battleStyle("double");
await game.startBattle([Species.BULBASAUR, Species.BLASTOISE]); await game.classicMode.startBattle([Species.BULBASAUR, Species.BLASTOISE]);
const playerPokemon = game.scene.getPlayerField(); const playerPokemon = game.scene.getPlayerField();
const enemyPokemon = game.scene.getEnemyField(); const enemyPokemon = game.scene.getEnemyField();
@ -119,7 +119,7 @@ describe("Battle order", () => {
it("double - speed tie 100/150 vs 100/150", async () => { it("double - speed tie 100/150 vs 100/150", async () => {
game.override.battleStyle("double"); game.override.battleStyle("double");
await game.startBattle([Species.BULBASAUR, Species.BLASTOISE]); await game.classicMode.startBattle([Species.BULBASAUR, Species.BLASTOISE]);
const playerPokemon = game.scene.getPlayerField(); const playerPokemon = game.scene.getPlayerField();
const enemyPokemon = game.scene.getEnemyField(); const enemyPokemon = game.scene.getEnemyField();

View File

@ -85,7 +85,7 @@ describe("Test Battle Phase", () => {
}, 20000); }, 20000);
it("newGame one-liner", async () => { it("newGame one-liner", async () => {
await game.startBattle(); await game.classicMode.startBattle();
expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND);
expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name);
}, 20000); }, 20000);
@ -98,7 +98,7 @@ describe("Test Battle Phase", () => {
game.override.moveset([Moves.TACKLE]); game.override.moveset([Moves.TACKLE]);
game.override.enemyAbility(Abilities.HYDRATION); game.override.enemyAbility(Abilities.HYDRATION);
game.override.enemyMoveset([Moves.TACKLE, Moves.TACKLE, Moves.TACKLE, Moves.TACKLE]); game.override.enemyMoveset([Moves.TACKLE, Moves.TACKLE, Moves.TACKLE, Moves.TACKLE]);
await game.startBattle(); await game.classicMode.startBattle();
game.move.select(Moves.TACKLE); game.move.select(Moves.TACKLE);
await game.phaseInterceptor.runFrom(EnemyCommandPhase).to(SelectModifierPhase, false); await game.phaseInterceptor.runFrom(EnemyCommandPhase).to(SelectModifierPhase, false);
}, 20000); }, 20000);
@ -112,7 +112,7 @@ describe("Test Battle Phase", () => {
game.override.enemyAbility(Abilities.HYDRATION); game.override.enemyAbility(Abilities.HYDRATION);
game.override.enemyMoveset([Moves.TAIL_WHIP, Moves.TAIL_WHIP, Moves.TAIL_WHIP, Moves.TAIL_WHIP]); game.override.enemyMoveset([Moves.TAIL_WHIP, Moves.TAIL_WHIP, Moves.TAIL_WHIP, Moves.TAIL_WHIP]);
game.override.battleStyle("single"); game.override.battleStyle("single");
await game.startBattle(); await game.classicMode.startBattle();
game.move.select(Moves.TACKLE); game.move.select(Moves.TACKLE);
await game.phaseInterceptor.runFrom(EnemyCommandPhase).to(TurnInitPhase, false); await game.phaseInterceptor.runFrom(EnemyCommandPhase).to(TurnInitPhase, false);
}, 20000); }, 20000);
@ -127,7 +127,7 @@ describe("Test Battle Phase", () => {
}, 20000); }, 20000);
it("start battle with selected team", async () => { it("start battle with selected team", async () => {
await game.startBattle([Species.CHARIZARD, Species.CHANSEY, Species.MEW]); await game.classicMode.startBattle([Species.CHARIZARD, Species.CHANSEY, Species.MEW]);
expect(game.scene.getPlayerParty()[0].species.speciesId).toBe(Species.CHARIZARD); expect(game.scene.getPlayerParty()[0].species.speciesId).toBe(Species.CHARIZARD);
expect(game.scene.getPlayerParty()[1].species.speciesId).toBe(Species.CHANSEY); expect(game.scene.getPlayerParty()[1].species.speciesId).toBe(Species.CHANSEY);
expect(game.scene.getPlayerParty()[2].species.speciesId).toBe(Species.MEW); expect(game.scene.getPlayerParty()[2].species.speciesId).toBe(Species.MEW);
@ -207,7 +207,7 @@ describe("Test Battle Phase", () => {
game.override.enemySpecies(Species.MIGHTYENA); game.override.enemySpecies(Species.MIGHTYENA);
game.override.enemyAbility(Abilities.HYDRATION); game.override.enemyAbility(Abilities.HYDRATION);
game.override.ability(Abilities.HYDRATION); game.override.ability(Abilities.HYDRATION);
await game.startBattle([Species.BLASTOISE, Species.CHARIZARD]); await game.classicMode.startBattle([Species.BLASTOISE, Species.CHARIZARD]);
expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND);
expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name);
}, 20000); }, 20000);
@ -217,7 +217,7 @@ describe("Test Battle Phase", () => {
game.override.enemySpecies(Species.MIGHTYENA); game.override.enemySpecies(Species.MIGHTYENA);
game.override.enemyAbility(Abilities.HYDRATION); game.override.enemyAbility(Abilities.HYDRATION);
game.override.ability(Abilities.HYDRATION); game.override.ability(Abilities.HYDRATION);
await game.startBattle([Species.BLASTOISE]); await game.classicMode.startBattle([Species.BLASTOISE]);
expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND);
expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name);
}, 20000); }, 20000);
@ -228,7 +228,7 @@ describe("Test Battle Phase", () => {
game.override.enemyAbility(Abilities.HYDRATION); game.override.enemyAbility(Abilities.HYDRATION);
game.override.ability(Abilities.HYDRATION); game.override.ability(Abilities.HYDRATION);
game.override.startingWave(3); game.override.startingWave(3);
await game.startBattle([Species.BLASTOISE, Species.CHARIZARD]); await game.classicMode.startBattle([Species.BLASTOISE, Species.CHARIZARD]);
expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND);
expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name);
}, 20000); }, 20000);
@ -239,7 +239,7 @@ describe("Test Battle Phase", () => {
game.override.enemyAbility(Abilities.HYDRATION); game.override.enemyAbility(Abilities.HYDRATION);
game.override.ability(Abilities.HYDRATION); game.override.ability(Abilities.HYDRATION);
game.override.startingWave(3); game.override.startingWave(3);
await game.startBattle([Species.BLASTOISE, Species.CHARIZARD, Species.DARKRAI, Species.GABITE]); await game.classicMode.startBattle([Species.BLASTOISE, Species.CHARIZARD, Species.DARKRAI, Species.GABITE]);
expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND);
expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name);
}, 20000); }, 20000);
@ -255,7 +255,7 @@ describe("Test Battle Phase", () => {
game.override.startingWave(3); game.override.startingWave(3);
game.override.moveset([moveToUse]); game.override.moveset([moveToUse]);
game.override.enemyMoveset([Moves.TACKLE, Moves.TACKLE, Moves.TACKLE, Moves.TACKLE]); game.override.enemyMoveset([Moves.TACKLE, Moves.TACKLE, Moves.TACKLE, Moves.TACKLE]);
await game.startBattle([Species.DARMANITAN, Species.CHARIZARD]); await game.classicMode.startBattle([Species.DARMANITAN, Species.CHARIZARD]);
game.move.select(moveToUse); game.move.select(moveToUse);
await game.phaseInterceptor.to(DamageAnimPhase, false); await game.phaseInterceptor.to(DamageAnimPhase, false);
@ -275,7 +275,7 @@ describe("Test Battle Phase", () => {
game.override.startingWave(3); game.override.startingWave(3);
game.override.moveset([moveToUse]); game.override.moveset([moveToUse]);
game.override.enemyMoveset([Moves.TACKLE, Moves.TACKLE, Moves.TACKLE, Moves.TACKLE]); game.override.enemyMoveset([Moves.TACKLE, Moves.TACKLE, Moves.TACKLE, Moves.TACKLE]);
await game.startBattle(); await game.classicMode.startBattle();
const turn = game.scene.currentBattle.turn; const turn = game.scene.currentBattle.turn;
game.move.select(moveToUse); game.move.select(moveToUse);
await game.toNextTurn(); await game.toNextTurn();
@ -318,7 +318,7 @@ describe("Test Battle Phase", () => {
.enemyMoveset(Moves.SPLASH) .enemyMoveset(Moves.SPLASH)
.startingHeldItems([{ name: "TEMP_STAT_STAGE_BOOSTER", type: Stat.ACC }]); .startingHeldItems([{ name: "TEMP_STAT_STAGE_BOOSTER", type: Stat.ACC }]);
await game.startBattle(); await game.classicMode.startBattle();
game.scene.getPlayerPokemon()!.hp = 1; game.scene.getPlayerPokemon()!.hp = 1;
game.move.select(moveToUse); game.move.select(moveToUse);

View File

@ -34,7 +34,7 @@ describe("Double Battles", () => {
// (There were bugs that either only summon one when can summon two, player stuck in switchPhase etc) // (There were bugs that either only summon one when can summon two, player stuck in switchPhase etc)
it("3v2 edge case: player summons 2 pokemon on the next battle after being fainted and revived", async () => { it("3v2 edge case: player summons 2 pokemon on the next battle after being fainted and revived", async () => {
game.override.battleStyle("double").enemyMoveset(Moves.SPLASH).moveset(Moves.SPLASH); game.override.battleStyle("double").enemyMoveset(Moves.SPLASH).moveset(Moves.SPLASH);
await game.startBattle([Species.BULBASAUR, Species.CHARIZARD, Species.SQUIRTLE]); await game.classicMode.startBattle([Species.BULBASAUR, Species.CHARIZARD, Species.SQUIRTLE]);
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
game.move.select(Moves.SPLASH, 1); game.move.select(Moves.SPLASH, 1);

View File

@ -33,63 +33,63 @@ describe("Test Battle Phase", () => {
it("startBattle 2vs1 boss", async () => { it("startBattle 2vs1 boss", async () => {
game.override.battleStyle("single").startingWave(10); game.override.battleStyle("single").startingWave(10);
await game.startBattle([Species.BLASTOISE, Species.CHARIZARD]); await game.classicMode.startBattle([Species.BLASTOISE, Species.CHARIZARD]);
expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND);
expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name);
}, 20000); }, 20000);
it("startBattle 2vs2 boss", async () => { it("startBattle 2vs2 boss", async () => {
game.override.battleStyle("double").startingWave(10); game.override.battleStyle("double").startingWave(10);
await game.startBattle([Species.BLASTOISE, Species.CHARIZARD]); await game.classicMode.startBattle([Species.BLASTOISE, Species.CHARIZARD]);
expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND);
expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name);
}, 20000); }, 20000);
it("startBattle 2vs2 trainer", async () => { it("startBattle 2vs2 trainer", async () => {
game.override.battleStyle("double").startingWave(5); game.override.battleStyle("double").startingWave(5);
await game.startBattle([Species.BLASTOISE, Species.CHARIZARD]); await game.classicMode.startBattle([Species.BLASTOISE, Species.CHARIZARD]);
expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND);
expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name);
}, 20000); }, 20000);
it("startBattle 2vs1 trainer", async () => { it("startBattle 2vs1 trainer", async () => {
game.override.battleStyle("single").startingWave(5); game.override.battleStyle("single").startingWave(5);
await game.startBattle([Species.BLASTOISE, Species.CHARIZARD]); await game.classicMode.startBattle([Species.BLASTOISE, Species.CHARIZARD]);
expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND);
expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name);
}, 20000); }, 20000);
it("startBattle 2vs1 rival", async () => { it("startBattle 2vs1 rival", async () => {
game.override.battleStyle("single").startingWave(8); game.override.battleStyle("single").startingWave(8);
await game.startBattle([Species.BLASTOISE, Species.CHARIZARD]); await game.classicMode.startBattle([Species.BLASTOISE, Species.CHARIZARD]);
expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND);
expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name);
}, 20000); }, 20000);
it("startBattle 2vs2 rival", async () => { it("startBattle 2vs2 rival", async () => {
game.override.battleStyle("double").startingWave(8); game.override.battleStyle("double").startingWave(8);
await game.startBattle([Species.BLASTOISE, Species.CHARIZARD]); await game.classicMode.startBattle([Species.BLASTOISE, Species.CHARIZARD]);
expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND);
expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name);
}, 20000); }, 20000);
it("startBattle 1vs1 trainer", async () => { it("startBattle 1vs1 trainer", async () => {
game.override.battleStyle("single").startingWave(5); game.override.battleStyle("single").startingWave(5);
await game.startBattle([Species.BLASTOISE]); await game.classicMode.startBattle([Species.BLASTOISE]);
expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND);
expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name);
}, 20000); }, 20000);
it("startBattle 2vs2 trainer", async () => { it("startBattle 2vs2 trainer", async () => {
game.override.battleStyle("double").startingWave(5); game.override.battleStyle("double").startingWave(5);
await game.startBattle([Species.BLASTOISE, Species.CHARIZARD]); await game.classicMode.startBattle([Species.BLASTOISE, Species.CHARIZARD]);
expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND);
expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name);
}, 20000); }, 20000);
it("startBattle 4vs2 trainer", async () => { it("startBattle 4vs2 trainer", async () => {
game.override.battleStyle("double").startingWave(5); game.override.battleStyle("double").startingWave(5);
await game.startBattle([Species.BLASTOISE, Species.CHARIZARD, Species.DARKRAI, Species.GABITE]); await game.classicMode.startBattle([Species.BLASTOISE, Species.CHARIZARD, Species.DARKRAI, Species.GABITE]);
expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND);
expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name);
}, 20000); }, 20000);

View File

@ -30,7 +30,7 @@ describe("Daily Mode", () => {
}); });
it("should initialize properly", async () => { it("should initialize properly", async () => {
await game.dailyMode.runToSummon(); await game.dailyMode.startBattle();
const party = game.scene.getPlayerParty(); const party = game.scene.getPlayerParty();
expect(party).toHaveLength(3); expect(party).toHaveLength(3);

View File

@ -110,7 +110,7 @@ describe("Evolution", () => {
.startingLevel(16) .startingLevel(16)
.enemyLevel(50); .enemyLevel(50);
await game.startBattle([Species.TOTODILE]); await game.classicMode.startBattle([Species.TOTODILE]);
const totodile = game.scene.getPlayerPokemon()!; const totodile = game.scene.getPlayerPokemon()!;
const hpBefore = totodile.hp; const hpBefore = totodile.hp;
@ -138,7 +138,7 @@ describe("Evolution", () => {
.startingLevel(13) .startingLevel(13)
.enemyLevel(30); .enemyLevel(30);
await game.startBattle([Species.CYNDAQUIL]); await game.classicMode.startBattle([Species.CYNDAQUIL]);
const cyndaquil = game.scene.getPlayerPokemon()!; const cyndaquil = game.scene.getPlayerPokemon()!;
cyndaquil.hp = Math.floor(cyndaquil.getMaxHp() / 2); cyndaquil.hp = Math.floor(cyndaquil.getMaxHp() / 2);
@ -171,7 +171,7 @@ describe("Evolution", () => {
* If the value is 0, it's a 3 family maushold, whereas if the value is * If the value is 0, it's a 3 family maushold, whereas if the value is
* 1, 2 or 3, it's a 4 family maushold * 1, 2 or 3, it's a 4 family maushold
*/ */
await game.startBattle([Species.TANDEMAUS]); // starts us off with a tandemaus await game.classicMode.startBattle([Species.TANDEMAUS]); // starts us off with a tandemaus
const playerPokemon = game.scene.getPlayerPokemon()!; const playerPokemon = game.scene.getPlayerPokemon()!;
playerPokemon.level = 25; // tandemaus evolves at level 25 playerPokemon.level = 25; // tandemaus evolves at level 25
vi.spyOn(Utils, "randSeedInt").mockReturnValue(0); // setting the random generator to be 0 to force a three family maushold vi.spyOn(Utils, "randSeedInt").mockReturnValue(0); // setting the random generator to be 0 to force a three family maushold

View File

@ -40,7 +40,7 @@ describe("Items - Dire Hit", () => {
}, 20000); }, 20000);
it("should raise CRIT stage by 1", async () => { it("should raise CRIT stage by 1", async () => {
await game.startBattle([Species.GASTLY]); await game.classicMode.startBattle([Species.GASTLY]);
const enemyPokemon = game.scene.getEnemyPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!;
@ -56,7 +56,7 @@ describe("Items - Dire Hit", () => {
it("should renew how many battles are left of existing DIRE_HIT when picking up new DIRE_HIT", async () => { it("should renew how many battles are left of existing DIRE_HIT when picking up new DIRE_HIT", async () => {
game.override.itemRewards([{ name: "DIRE_HIT" }]); game.override.itemRewards([{ name: "DIRE_HIT" }]);
await game.startBattle([Species.PIKACHU]); await game.classicMode.startBattle([Species.PIKACHU]);
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);

View File

@ -29,7 +29,7 @@ describe("EXP Modifier Items", () => {
it("EXP booster items stack multiplicatively", async () => { it("EXP booster items stack multiplicatively", async () => {
game.override.startingHeldItems([{ name: "LUCKY_EGG", count: 3 }, { name: "GOLDEN_EGG" }]); game.override.startingHeldItems([{ name: "LUCKY_EGG", count: 3 }, { name: "GOLDEN_EGG" }]);
await game.startBattle(); await game.classicMode.startBattle();
const partyMember = game.scene.getPlayerPokemon()!; const partyMember = game.scene.getPlayerPokemon()!;
partyMember.exp = 100; partyMember.exp = 100;

View File

@ -32,7 +32,7 @@ describe("Items - Leek", () => {
}); });
it("should raise CRIT stage by 2 when held by FARFETCHD", async () => { it("should raise CRIT stage by 2 when held by FARFETCHD", async () => {
await game.startBattle([Species.FARFETCHD]); await game.classicMode.startBattle([Species.FARFETCHD]);
const enemyMember = game.scene.getEnemyPokemon()!; const enemyMember = game.scene.getEnemyPokemon()!;
@ -46,7 +46,7 @@ describe("Items - Leek", () => {
}, 20000); }, 20000);
it("should raise CRIT stage by 2 when held by GALAR_FARFETCHD", async () => { it("should raise CRIT stage by 2 when held by GALAR_FARFETCHD", async () => {
await game.startBattle([Species.GALAR_FARFETCHD]); await game.classicMode.startBattle([Species.GALAR_FARFETCHD]);
const enemyMember = game.scene.getEnemyPokemon()!; const enemyMember = game.scene.getEnemyPokemon()!;
@ -60,7 +60,7 @@ describe("Items - Leek", () => {
}, 20000); }, 20000);
it("should raise CRIT stage by 2 when held by SIRFETCHD", async () => { it("should raise CRIT stage by 2 when held by SIRFETCHD", async () => {
await game.startBattle([Species.SIRFETCHD]); await game.classicMode.startBattle([Species.SIRFETCHD]);
const enemyMember = game.scene.getEnemyPokemon()!; const enemyMember = game.scene.getEnemyPokemon()!;
@ -77,7 +77,7 @@ describe("Items - Leek", () => {
// Randomly choose from the Farfetch'd line // Randomly choose from the Farfetch'd line
const species = [Species.FARFETCHD, Species.GALAR_FARFETCHD, Species.SIRFETCHD]; const species = [Species.FARFETCHD, Species.GALAR_FARFETCHD, Species.SIRFETCHD];
await game.startBattle([species[randInt(species.length)], Species.PIKACHU]); await game.classicMode.startBattle([species[randInt(species.length)], Species.PIKACHU]);
const [partyMember, ally] = game.scene.getPlayerParty(); const [partyMember, ally] = game.scene.getPlayerParty();
@ -105,7 +105,7 @@ describe("Items - Leek", () => {
// Randomly choose from the Farfetch'd line // Randomly choose from the Farfetch'd line
const species = [Species.FARFETCHD, Species.GALAR_FARFETCHD, Species.SIRFETCHD]; const species = [Species.FARFETCHD, Species.GALAR_FARFETCHD, Species.SIRFETCHD];
await game.startBattle([Species.PIKACHU, species[randInt(species.length)]]); await game.classicMode.startBattle([Species.PIKACHU, species[randInt(species.length)]]);
const [partyMember, ally] = game.scene.getPlayerParty(); const [partyMember, ally] = game.scene.getPlayerParty();
@ -130,7 +130,7 @@ describe("Items - Leek", () => {
}, 20000); }, 20000);
it("should not raise CRIT stage when held by a Pokemon outside of FARFETCHD line", async () => { it("should not raise CRIT stage when held by a Pokemon outside of FARFETCHD line", async () => {
await game.startBattle([Species.PIKACHU]); await game.classicMode.startBattle([Species.PIKACHU]);
const enemyMember = game.scene.getEnemyPokemon()!; const enemyMember = game.scene.getEnemyPokemon()!;

View File

@ -34,7 +34,7 @@ describe("Items - Leftovers", () => {
}); });
it("leftovers works", async () => { it("leftovers works", async () => {
await game.startBattle([Species.ARCANINE]); await game.classicMode.startBattle([Species.ARCANINE]);
// Make sure leftovers are there // Make sure leftovers are there
expect(game.scene.modifiers[0].type.id).toBe("LEFTOVERS"); expect(game.scene.modifiers[0].type.id).toBe("LEFTOVERS");

View File

@ -150,7 +150,7 @@ describe("Items - Light Ball", () => {
}, 20000); }, 20000);
it("LIGHT_BALL held by fused PIKACHU (part)", async () => { it("LIGHT_BALL held by fused PIKACHU (part)", async () => {
await game.startBattle([Species.MAROWAK, Species.PIKACHU]); await game.classicMode.startBattle([Species.MAROWAK, Species.PIKACHU]);
const partyMember = game.scene.getPlayerParty()[0]; const partyMember = game.scene.getPlayerParty()[0];
const ally = game.scene.getPlayerParty()[1]; const ally = game.scene.getPlayerParty()[1];
@ -189,7 +189,7 @@ describe("Items - Light Ball", () => {
}, 20000); }, 20000);
it("LIGHT_BALL not held by PIKACHU", async () => { it("LIGHT_BALL not held by PIKACHU", async () => {
await game.startBattle([Species.MAROWAK]); await game.classicMode.startBattle([Species.MAROWAK]);
const partyMember = game.scene.getPlayerParty()[0]; const partyMember = game.scene.getPlayerParty()[0];

View File

@ -82,7 +82,7 @@ describe("Items - Metal Powder", () => {
}); });
it("METAL_POWDER held by DITTO", async () => { it("METAL_POWDER held by DITTO", async () => {
await game.startBattle([Species.DITTO]); await game.classicMode.startBattle([Species.DITTO]);
const partyMember = game.scene.getPlayerParty()[0]; const partyMember = game.scene.getPlayerParty()[0];
@ -105,7 +105,7 @@ describe("Items - Metal Powder", () => {
}, 20000); }, 20000);
it("METAL_POWDER held by fused DITTO (base)", async () => { it("METAL_POWDER held by fused DITTO (base)", async () => {
await game.startBattle([Species.DITTO, Species.MAROWAK]); await game.classicMode.startBattle([Species.DITTO, Species.MAROWAK]);
const partyMember = game.scene.getPlayerParty()[0]; const partyMember = game.scene.getPlayerParty()[0];
const ally = game.scene.getPlayerParty()[1]; const ally = game.scene.getPlayerParty()[1];
@ -138,7 +138,7 @@ describe("Items - Metal Powder", () => {
}, 20000); }, 20000);
it("METAL_POWDER held by fused DITTO (part)", async () => { it("METAL_POWDER held by fused DITTO (part)", async () => {
await game.startBattle([Species.MAROWAK, Species.DITTO]); await game.classicMode.startBattle([Species.MAROWAK, Species.DITTO]);
const partyMember = game.scene.getPlayerParty()[0]; const partyMember = game.scene.getPlayerParty()[0];
const ally = game.scene.getPlayerParty()[1]; const ally = game.scene.getPlayerParty()[1];
@ -171,7 +171,7 @@ describe("Items - Metal Powder", () => {
}, 20000); }, 20000);
it("METAL_POWDER not held by DITTO", async () => { it("METAL_POWDER not held by DITTO", async () => {
await game.startBattle([Species.MAROWAK]); await game.classicMode.startBattle([Species.MAROWAK]);
const partyMember = game.scene.getPlayerParty()[0]; const partyMember = game.scene.getPlayerParty()[0];

View File

@ -31,7 +31,7 @@ describe("Items - Scope Lens", () => {
}, 20000); }, 20000);
it("should raise CRIT stage by 1", async () => { it("should raise CRIT stage by 1", async () => {
await game.startBattle([Species.GASTLY]); await game.classicMode.startBattle([Species.GASTLY]);
const enemyPokemon = game.scene.getEnemyPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!;

View File

@ -39,7 +39,7 @@ describe("Moves - Astonish", () => {
}); });
test("move effect should cancel the target's move on the turn it applies", async () => { test("move effect should cancel the target's move on the turn it applies", async () => {
await game.startBattle([Species.MEOWSCARADA]); await game.classicMode.startBattle([Species.MEOWSCARADA]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;

View File

@ -35,7 +35,7 @@ describe("Moves - Beat Up", () => {
}); });
it("should hit once for each healthy player Pokemon", async () => { it("should hit once for each healthy player Pokemon", async () => {
await game.startBattle([ await game.classicMode.startBattle([
Species.MAGIKARP, Species.MAGIKARP,
Species.BULBASAUR, Species.BULBASAUR,
Species.CHARMANDER, Species.CHARMANDER,
@ -63,7 +63,7 @@ describe("Moves - Beat Up", () => {
}); });
it("should not count player Pokemon with status effects towards hit count", async () => { it("should not count player Pokemon with status effects towards hit count", async () => {
await game.startBattle([ await game.classicMode.startBattle([
Species.MAGIKARP, Species.MAGIKARP,
Species.BULBASAUR, Species.BULBASAUR,
Species.CHARMANDER, Species.CHARMANDER,

View File

@ -42,7 +42,7 @@ describe("Moves - BELLY DRUM", () => {
// Bulbapedia Reference: https://bulbapedia.bulbagarden.net/wiki/Belly_Drum_(move) // Bulbapedia Reference: https://bulbapedia.bulbagarden.net/wiki/Belly_Drum_(move)
test("raises the user's ATK stat stage to its max, at the cost of 1/2 of its maximum HP", async () => { test("raises the user's ATK stat stage to its max, at the cost of 1/2 of its maximum HP", async () => {
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
const hpLost = toDmgValue(leadPokemon.getMaxHp() / RATIO); const hpLost = toDmgValue(leadPokemon.getMaxHp() / RATIO);
@ -55,7 +55,7 @@ describe("Moves - BELLY DRUM", () => {
}); });
test("will still take effect if an uninvolved stat stage is at max", async () => { test("will still take effect if an uninvolved stat stage is at max", async () => {
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
const hpLost = toDmgValue(leadPokemon.getMaxHp() / RATIO); const hpLost = toDmgValue(leadPokemon.getMaxHp() / RATIO);
@ -73,7 +73,7 @@ describe("Moves - BELLY DRUM", () => {
}); });
test("fails if the pokemon's ATK stat stage is at its maximum", async () => { test("fails if the pokemon's ATK stat stage is at its maximum", async () => {
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
@ -87,7 +87,7 @@ describe("Moves - BELLY DRUM", () => {
}); });
test("fails if the user's health is less than 1/2", async () => { test("fails if the user's health is less than 1/2", async () => {
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
const hpLost = toDmgValue(leadPokemon.getMaxHp() / RATIO); const hpLost = toDmgValue(leadPokemon.getMaxHp() / RATIO);

View File

@ -77,7 +77,7 @@ describe("Moves - Chilly Reception", () => {
await game.classicMode.startBattle([Species.SLOWKING, Species.MEOWTH]); await game.classicMode.startBattle([Species.SLOWKING, Species.MEOWTH]);
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.TACKLE); await game.move.selectEnemyMove(Moves.TACKLE);
await game.phaseInterceptor.to("BerryPhase", false); await game.phaseInterceptor.to("BerryPhase", false);
expect(game.scene.arena.weather?.weatherType).toBe(undefined); expect(game.scene.arena.weather?.weatherType).toBe(undefined);

View File

@ -38,7 +38,7 @@ describe("Moves - Clangorous Soul", () => {
//Bulbapedia Reference: https://bulbapedia.bulbagarden.net/wiki/Clangorous_Soul_(move) //Bulbapedia Reference: https://bulbapedia.bulbagarden.net/wiki/Clangorous_Soul_(move)
it("raises the user's ATK, DEF, SPATK, SPDEF, and SPD stat stages by 1 each at the cost of 1/3 of its maximum HP", async () => { it("raises the user's ATK, DEF, SPATK, SPDEF, and SPD stat stages by 1 each at the cost of 1/3 of its maximum HP", async () => {
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
const hpLost = Math.floor(leadPokemon.getMaxHp() / RATIO); const hpLost = Math.floor(leadPokemon.getMaxHp() / RATIO);
@ -55,7 +55,7 @@ describe("Moves - Clangorous Soul", () => {
}); });
it("will still take effect if one or more of the involved stat stages are not at max", async () => { it("will still take effect if one or more of the involved stat stages are not at max", async () => {
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
const hpLost = Math.floor(leadPokemon.getMaxHp() / RATIO); const hpLost = Math.floor(leadPokemon.getMaxHp() / RATIO);
@ -78,7 +78,7 @@ describe("Moves - Clangorous Soul", () => {
}); });
it("fails if all stat stages involved are at max", async () => { it("fails if all stat stages involved are at max", async () => {
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
@ -100,7 +100,7 @@ describe("Moves - Clangorous Soul", () => {
}); });
it("fails if the user's health is less than 1/3", async () => { it("fails if the user's health is less than 1/3", async () => {
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
const hpLost = Math.floor(leadPokemon.getMaxHp() / RATIO); const hpLost = Math.floor(leadPokemon.getMaxHp() / RATIO);

View File

@ -39,7 +39,7 @@ describe("Moves - Crafty Shield", () => {
}); });
test("should protect the user and allies from status moves", async () => { test("should protect the user and allies from status moves", async () => {
await game.startBattle([Species.CHARIZARD, Species.BLASTOISE]); await game.classicMode.startBattle([Species.CHARIZARD, Species.BLASTOISE]);
const leadPokemon = game.scene.getPlayerField(); const leadPokemon = game.scene.getPlayerField();
@ -57,7 +57,7 @@ describe("Moves - Crafty Shield", () => {
test("should not protect the user and allies from attack moves", async () => { test("should not protect the user and allies from attack moves", async () => {
game.override.enemyMoveset([Moves.TACKLE]); game.override.enemyMoveset([Moves.TACKLE]);
await game.startBattle([Species.CHARIZARD, Species.BLASTOISE]); await game.classicMode.startBattle([Species.CHARIZARD, Species.BLASTOISE]);
const leadPokemon = game.scene.getPlayerField(); const leadPokemon = game.scene.getPlayerField();
@ -76,7 +76,7 @@ describe("Moves - Crafty Shield", () => {
game.override.enemySpecies(Species.DUSCLOPS); game.override.enemySpecies(Species.DUSCLOPS);
game.override.enemyMoveset([Moves.CURSE]); game.override.enemyMoveset([Moves.CURSE]);
await game.startBattle([Species.CHARIZARD, Species.BLASTOISE]); await game.classicMode.startBattle([Species.CHARIZARD, Species.BLASTOISE]);
const leadPokemon = game.scene.getPlayerField(); const leadPokemon = game.scene.getPlayerField();
@ -92,7 +92,7 @@ describe("Moves - Crafty Shield", () => {
}); });
test("should not block allies' self-targeted moves", async () => { test("should not block allies' self-targeted moves", async () => {
await game.startBattle([Species.CHARIZARD, Species.BLASTOISE]); await game.classicMode.startBattle([Species.CHARIZARD, Species.BLASTOISE]);
const leadPokemon = game.scene.getPlayerField(); const leadPokemon = game.scene.getPlayerField();

View File

@ -39,7 +39,7 @@ describe("Moves - Defog", () => {
const enemyPokemon = game.scene.getEnemyField(); const enemyPokemon = game.scene.getEnemyField();
game.move.select(Moves.SAFEGUARD); game.move.select(Moves.SAFEGUARD);
await game.forceEnemyMove(Moves.DEFOG); await game.move.selectEnemyMove(Moves.DEFOG);
await game.phaseInterceptor.to("BerryPhase"); await game.phaseInterceptor.to("BerryPhase");
expect(playerPokemon[0].isSafeguarded(enemyPokemon[0])).toBe(false); expect(playerPokemon[0].isSafeguarded(enemyPokemon[0])).toBe(false);
@ -53,12 +53,12 @@ describe("Moves - Defog", () => {
const playerPokemon = game.scene.getPlayerField(); const playerPokemon = game.scene.getPlayerField();
game.move.select(Moves.MIST); game.move.select(Moves.MIST);
await game.forceEnemyMove(Moves.DEFOG); await game.move.selectEnemyMove(Moves.DEFOG);
await game.toNextTurn(); await game.toNextTurn();
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.GROWL); await game.move.selectEnemyMove(Moves.GROWL);
await game.phaseInterceptor.to("BerryPhase"); await game.phaseInterceptor.to("BerryPhase");

View File

@ -139,12 +139,12 @@ describe("Moves - Disable", () => {
const enemyMon = game.scene.getEnemyPokemon()!; const enemyMon = game.scene.getEnemyPokemon()!;
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER); await game.move.selectEnemyMove(Moves.SPLASH, BattlerIndex.PLAYER);
await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]);
await game.toNextTurn(); await game.toNextTurn();
game.move.select(Moves.DISABLE); game.move.select(Moves.DISABLE);
await game.forceEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER); await game.move.selectEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER);
await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]);
await game.toNextTurn(); await game.toNextTurn();

View File

@ -33,7 +33,7 @@ describe("Moves - Double Team", () => {
}); });
it("raises the user's EVA stat stage by 1", async () => { it("raises the user's EVA stat stage by 1", async () => {
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const ally = game.scene.getPlayerPokemon()!; const ally = game.scene.getPlayerPokemon()!;
const enemy = game.scene.getEnemyPokemon()!; const enemy = game.scene.getEnemyPokemon()!;

View File

@ -206,7 +206,7 @@ describe("Moves - Dragon Tail", () => {
return min; return min;
}); });
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.DRAGON_TAIL); await game.move.selectEnemyMove(Moves.DRAGON_TAIL);
await game.toNextTurn(); await game.toNextTurn();
expect(bulbasaur.isOnField()).toBe(false); expect(bulbasaur.isOnField()).toBe(false);
@ -260,7 +260,7 @@ describe("Moves - Dragon Tail", () => {
eevee.status = new Status(StatusEffect.FAINT); eevee.status = new Status(StatusEffect.FAINT);
expect(eevee.isFainted()).toBe(true); expect(eevee.isFainted()).toBe(true);
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.SPLASH); await game.move.selectEnemyMove(Moves.SPLASH);
await game.toNextTurn(); await game.toNextTurn();
// Turn 2: Mock an RNG call that would normally call for switching to Eevee, but it is fainted // Turn 2: Mock an RNG call that would normally call for switching to Eevee, but it is fainted
@ -268,7 +268,7 @@ describe("Moves - Dragon Tail", () => {
return min; return min;
}); });
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.DRAGON_TAIL); await game.move.selectEnemyMove(Moves.DRAGON_TAIL);
await game.toNextTurn(); await game.toNextTurn();
expect(lapras.isOnField()).toBe(false); expect(lapras.isOnField()).toBe(false);
@ -289,7 +289,7 @@ describe("Moves - Dragon Tail", () => {
eevee.status = new Status(StatusEffect.FAINT); eevee.status = new Status(StatusEffect.FAINT);
expect(eevee.isFainted()).toBe(true); expect(eevee.isFainted()).toBe(true);
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.SPLASH); await game.move.selectEnemyMove(Moves.SPLASH);
await game.toNextTurn(); await game.toNextTurn();
// Turn 2: Mock an RNG call that would normally call for switching to Eevee, but it is fainted // Turn 2: Mock an RNG call that would normally call for switching to Eevee, but it is fainted
@ -297,7 +297,7 @@ describe("Moves - Dragon Tail", () => {
return min; return min;
}); });
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.DRAGON_TAIL); await game.move.selectEnemyMove(Moves.DRAGON_TAIL);
await game.toNextTurn(); await game.toNextTurn();
expect(lapras.isOnField()).toBe(true); expect(lapras.isOnField()).toBe(true);

View File

@ -45,7 +45,7 @@ describe("Moves - Dynamax Cannon", () => {
it("should return 100 power against an enemy below level cap", async () => { it("should return 100 power against an enemy below level cap", async () => {
game.override.enemyLevel(1); game.override.enemyLevel(1);
await game.startBattle([Species.ETERNATUS]); await game.classicMode.startBattle([Species.ETERNATUS]);
game.move.select(dynamaxCannon.id); game.move.select(dynamaxCannon.id);
@ -57,7 +57,7 @@ describe("Moves - Dynamax Cannon", () => {
it("should return 100 power against an enemy at level cap", async () => { it("should return 100 power against an enemy at level cap", async () => {
game.override.enemyLevel(10); game.override.enemyLevel(10);
await game.startBattle([Species.ETERNATUS]); await game.classicMode.startBattle([Species.ETERNATUS]);
game.move.select(dynamaxCannon.id); game.move.select(dynamaxCannon.id);
@ -69,7 +69,7 @@ describe("Moves - Dynamax Cannon", () => {
it("should return 120 power against an enemy 1% above level cap", async () => { it("should return 120 power against an enemy 1% above level cap", async () => {
game.override.enemyLevel(101); game.override.enemyLevel(101);
await game.startBattle([Species.ETERNATUS]); await game.classicMode.startBattle([Species.ETERNATUS]);
game.move.select(dynamaxCannon.id); game.move.select(dynamaxCannon.id);
@ -84,7 +84,7 @@ describe("Moves - Dynamax Cannon", () => {
it("should return 140 power against an enemy 2% above level capp", async () => { it("should return 140 power against an enemy 2% above level capp", async () => {
game.override.enemyLevel(102); game.override.enemyLevel(102);
await game.startBattle([Species.ETERNATUS]); await game.classicMode.startBattle([Species.ETERNATUS]);
game.move.select(dynamaxCannon.id); game.move.select(dynamaxCannon.id);
@ -99,7 +99,7 @@ describe("Moves - Dynamax Cannon", () => {
it("should return 160 power against an enemy 3% above level cap", async () => { it("should return 160 power against an enemy 3% above level cap", async () => {
game.override.enemyLevel(103); game.override.enemyLevel(103);
await game.startBattle([Species.ETERNATUS]); await game.classicMode.startBattle([Species.ETERNATUS]);
game.move.select(dynamaxCannon.id); game.move.select(dynamaxCannon.id);
@ -114,7 +114,7 @@ describe("Moves - Dynamax Cannon", () => {
it("should return 180 power against an enemy 4% above level cap", async () => { it("should return 180 power against an enemy 4% above level cap", async () => {
game.override.enemyLevel(104); game.override.enemyLevel(104);
await game.startBattle([Species.ETERNATUS]); await game.classicMode.startBattle([Species.ETERNATUS]);
game.move.select(dynamaxCannon.id); game.move.select(dynamaxCannon.id);
@ -129,7 +129,7 @@ describe("Moves - Dynamax Cannon", () => {
it("should return 200 power against an enemy 5% above level cap", async () => { it("should return 200 power against an enemy 5% above level cap", async () => {
game.override.enemyLevel(105); game.override.enemyLevel(105);
await game.startBattle([Species.ETERNATUS]); await game.classicMode.startBattle([Species.ETERNATUS]);
game.move.select(dynamaxCannon.id); game.move.select(dynamaxCannon.id);
@ -144,7 +144,7 @@ describe("Moves - Dynamax Cannon", () => {
it("should return 200 power against an enemy way above level cap", async () => { it("should return 200 power against an enemy way above level cap", async () => {
game.override.enemyLevel(999); game.override.enemyLevel(999);
await game.startBattle([Species.ETERNATUS]); await game.classicMode.startBattle([Species.ETERNATUS]);
game.move.select(dynamaxCannon.id); game.move.select(dynamaxCannon.id);
await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]);

View File

@ -42,7 +42,7 @@ describe("Moves - Encore", () => {
const enemyPokemon = game.scene.getEnemyPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!;
game.move.select(Moves.ENCORE); game.move.select(Moves.ENCORE);
await game.forceEnemyMove(Moves.SPLASH); await game.move.selectEnemyMove(Moves.SPLASH);
await game.toNextTurn(); await game.toNextTurn();
expect(enemyPokemon.getTag(BattlerTagType.ENCORE)).toBeDefined(); expect(enemyPokemon.getTag(BattlerTagType.ENCORE)).toBeDefined();

View File

@ -40,8 +40,8 @@ describe("Moves - Fairy Lock", () => {
game.move.select(Moves.FAIRY_LOCK); game.move.select(Moves.FAIRY_LOCK);
game.move.select(Moves.SPLASH, 1); game.move.select(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.SPLASH, 1); await game.move.selectEnemyMove(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.SPLASH, 1); await game.move.selectEnemyMove(Moves.SPLASH, 1);
await game.phaseInterceptor.to("BerryPhase"); await game.phaseInterceptor.to("BerryPhase");
expect(game.scene.arena.getTagOnSide(ArenaTagType.FAIRY_LOCK, ArenaTagSide.PLAYER)).toBeDefined(); expect(game.scene.arena.getTagOnSide(ArenaTagType.FAIRY_LOCK, ArenaTagSide.PLAYER)).toBeDefined();
expect(game.scene.arena.getTagOnSide(ArenaTagType.FAIRY_LOCK, ArenaTagSide.ENEMY)).toBeDefined(); expect(game.scene.arena.getTagOnSide(ArenaTagType.FAIRY_LOCK, ArenaTagSide.ENEMY)).toBeDefined();
@ -50,8 +50,8 @@ describe("Moves - Fairy Lock", () => {
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.SPLASH, 1); await game.move.selectEnemyMove(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.SPLASH, 1); await game.move.selectEnemyMove(Moves.SPLASH, 1);
await game.phaseInterceptor.to("BerryPhase"); await game.phaseInterceptor.to("BerryPhase");
expect(playerPokemon[0].isTrapped()).toEqual(true); expect(playerPokemon[0].isTrapped()).toEqual(true);
expect(playerPokemon[1].isTrapped()).toEqual(true); expect(playerPokemon[1].isTrapped()).toEqual(true);
@ -70,8 +70,8 @@ describe("Moves - Fairy Lock", () => {
game.move.select(Moves.FAIRY_LOCK); game.move.select(Moves.FAIRY_LOCK);
game.move.select(Moves.SPLASH, 1); game.move.select(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.SPLASH, 1); await game.move.selectEnemyMove(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.SPLASH, 1); await game.move.selectEnemyMove(Moves.SPLASH, 1);
await game.phaseInterceptor.to("BerryPhase"); await game.phaseInterceptor.to("BerryPhase");
expect(game.scene.arena.getTagOnSide(ArenaTagType.FAIRY_LOCK, ArenaTagSide.PLAYER)).toBeDefined(); expect(game.scene.arena.getTagOnSide(ArenaTagType.FAIRY_LOCK, ArenaTagSide.PLAYER)).toBeDefined();
@ -84,8 +84,8 @@ describe("Moves - Fairy Lock", () => {
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
game.doSwitchPokemon(2); game.doSwitchPokemon(2);
await game.forceEnemyMove(Moves.SPLASH, 1); await game.move.selectEnemyMove(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.SPLASH, 1); await game.move.selectEnemyMove(Moves.SPLASH, 1);
await game.phaseInterceptor.to("BerryPhase"); await game.phaseInterceptor.to("BerryPhase");
await game.toNextTurn(); await game.toNextTurn();
@ -98,8 +98,8 @@ describe("Moves - Fairy Lock", () => {
game.move.select(Moves.FAIRY_LOCK); game.move.select(Moves.FAIRY_LOCK);
game.move.select(Moves.SPLASH, 1); game.move.select(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.SPLASH, 1); await game.move.selectEnemyMove(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.SPLASH, 1); await game.move.selectEnemyMove(Moves.SPLASH, 1);
await game.phaseInterceptor.to("BerryPhase"); await game.phaseInterceptor.to("BerryPhase");
expect(game.scene.arena.getTagOnSide(ArenaTagType.FAIRY_LOCK, ArenaTagSide.PLAYER)).toBeDefined(); expect(game.scene.arena.getTagOnSide(ArenaTagType.FAIRY_LOCK, ArenaTagSide.PLAYER)).toBeDefined();
@ -108,9 +108,9 @@ describe("Moves - Fairy Lock", () => {
await game.toNextTurn(); await game.toNextTurn();
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.WHIRLWIND, 0); await game.move.selectEnemyMove(Moves.WHIRLWIND, 0);
game.doSelectPartyPokemon(2); game.doSelectPartyPokemon(2);
await game.forceEnemyMove(Moves.WHIRLWIND, 1); await game.move.selectEnemyMove(Moves.WHIRLWIND, 1);
game.doSelectPartyPokemon(2); game.doSelectPartyPokemon(2);
await game.phaseInterceptor.to("BerryPhase"); await game.phaseInterceptor.to("BerryPhase");
await game.toNextTurn(); await game.toNextTurn();
@ -126,8 +126,8 @@ describe("Moves - Fairy Lock", () => {
game.move.select(Moves.FAIRY_LOCK); game.move.select(Moves.FAIRY_LOCK);
game.move.select(Moves.MEMENTO, 1); game.move.select(Moves.MEMENTO, 1);
game.doSelectPartyPokemon(2); game.doSelectPartyPokemon(2);
await game.forceEnemyMove(Moves.SPLASH, 1); await game.move.selectEnemyMove(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.SPLASH, 1); await game.move.selectEnemyMove(Moves.SPLASH, 1);
await game.phaseInterceptor.to("BerryPhase"); await game.phaseInterceptor.to("BerryPhase");
expect(game.scene.arena.getTagOnSide(ArenaTagType.FAIRY_LOCK, ArenaTagSide.PLAYER)).toBeDefined(); expect(game.scene.arena.getTagOnSide(ArenaTagType.FAIRY_LOCK, ArenaTagSide.PLAYER)).toBeDefined();
expect(game.scene.arena.getTagOnSide(ArenaTagType.FAIRY_LOCK, ArenaTagSide.ENEMY)).toBeDefined(); expect(game.scene.arena.getTagOnSide(ArenaTagType.FAIRY_LOCK, ArenaTagSide.ENEMY)).toBeDefined();
@ -135,8 +135,8 @@ describe("Moves - Fairy Lock", () => {
await game.toNextTurn(); await game.toNextTurn();
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
game.move.select(Moves.SPLASH); game.move.select(Moves.SPLASH);
await game.forceEnemyMove(Moves.SPLASH, 1); await game.move.selectEnemyMove(Moves.SPLASH, 1);
await game.forceEnemyMove(Moves.SPLASH, 1); await game.move.selectEnemyMove(Moves.SPLASH, 1);
await game.phaseInterceptor.to("BerryPhase"); await game.phaseInterceptor.to("BerryPhase");
expect(game.scene.getPlayerField()[0].isTrapped()).toEqual(true); expect(game.scene.getPlayerField()[0].isTrapped()).toEqual(true);
expect(game.scene.getPlayerField()[1].isTrapped()).toEqual(true); expect(game.scene.getPlayerField()[1].isTrapped()).toEqual(true);

View File

@ -39,7 +39,7 @@ describe("Moves - FILLET AWAY", () => {
//Bulbapedia Reference: https://bulbapedia.bulbagarden.net/wiki/fillet_away_(move) //Bulbapedia Reference: https://bulbapedia.bulbagarden.net/wiki/fillet_away_(move)
test("raises the user's ATK, SPATK, and SPD stat stages by 2 each, at the cost of 1/2 of its maximum HP", async () => { test("raises the user's ATK, SPATK, and SPD stat stages by 2 each, at the cost of 1/2 of its maximum HP", async () => {
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
const hpLost = toDmgValue(leadPokemon.getMaxHp() / RATIO); const hpLost = toDmgValue(leadPokemon.getMaxHp() / RATIO);
@ -54,7 +54,7 @@ describe("Moves - FILLET AWAY", () => {
}); });
test("still takes effect if one or more of the involved stat stages are not at max", async () => { test("still takes effect if one or more of the involved stat stages are not at max", async () => {
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
const hpLost = toDmgValue(leadPokemon.getMaxHp() / RATIO); const hpLost = toDmgValue(leadPokemon.getMaxHp() / RATIO);
@ -73,7 +73,7 @@ describe("Moves - FILLET AWAY", () => {
}); });
test("fails if all stat stages involved are at max", async () => { test("fails if all stat stages involved are at max", async () => {
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
@ -91,7 +91,7 @@ describe("Moves - FILLET AWAY", () => {
}); });
test("fails if the user's health is less than 1/2", async () => { test("fails if the user's health is less than 1/2", async () => {
await game.startBattle([Species.MAGIKARP]); await game.classicMode.startBattle([Species.MAGIKARP]);
const leadPokemon = game.scene.getPlayerPokemon()!; const leadPokemon = game.scene.getPlayerPokemon()!;
const hpLost = toDmgValue(leadPokemon.getMaxHp() / RATIO); const hpLost = toDmgValue(leadPokemon.getMaxHp() / RATIO);

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