Merge branch 'beta' into natural-gift-implementation
12
.editorconfig
Normal file
@ -0,0 +1,12 @@
|
||||
# EditorConfig is awesome: https://EditorConfig.org
|
||||
|
||||
# top-most EditorConfig file
|
||||
root = true
|
||||
|
||||
[src/*.{js,ts}]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
end_of_line = lf
|
||||
charset = utf-8
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
42
CREDITS.md
@ -343,34 +343,39 @@ In addition to the lists below, please check [the PokéRogue wiki](https://wiki.
|
||||
|
||||
# 💻 Development
|
||||
|
||||
## Server Owner/Administrator
|
||||
## Server Developers
|
||||
- pancakes aka patapancakes
|
||||
|
||||
## Senior Developers
|
||||
- Walker
|
||||
- NightKev
|
||||
- Moka
|
||||
- Temp aka Tempo-anon
|
||||
- Madmadness65
|
||||
|
||||
## Developers
|
||||
## Current and former Development Team members
|
||||
- bennybroseph
|
||||
- Brain Frog
|
||||
- CodeTappert
|
||||
- Dakurei
|
||||
- flx-sta
|
||||
- innerthunder
|
||||
- frutescens
|
||||
- Greenlamp
|
||||
- ImperialSympathizer
|
||||
- innerthunder
|
||||
- KimJeongSun
|
||||
- Madmadness65
|
||||
- Moka
|
||||
- Navori
|
||||
- NightKev
|
||||
- Opaquer
|
||||
- OrangeRed
|
||||
- Sam aka Flashfyre (initial developer, started PokéRogue)
|
||||
- sirzento
|
||||
- SN34KZ
|
||||
- Swain aka torranx
|
||||
|
||||
## Junior Developers
|
||||
- KimJeongSun
|
||||
- ImperialSympathizer
|
||||
- Temp aka Tempo-anon
|
||||
- Walker
|
||||
- Xavion
|
||||
|
||||
## Bug/Issue Managers
|
||||
- Snailman
|
||||
- Daleks
|
||||
- Lily
|
||||
- PigeonBar
|
||||
- Snailman
|
||||
|
||||
## Other Code Contributors
|
||||
- Admiral-Billy
|
||||
@ -378,10 +383,7 @@ In addition to the lists below, please check [the PokéRogue wiki](https://wiki.
|
||||
- arColm
|
||||
- Arxalc
|
||||
- AsdarDevelops
|
||||
- bennybroseph
|
||||
- Brain Frog
|
||||
- Corrade
|
||||
- Dakurei
|
||||
- DustinLin
|
||||
- ElizaAlex
|
||||
- EmberCM
|
||||
@ -391,7 +393,6 @@ In addition to the lists below, please check [the PokéRogue wiki](https://wiki.
|
||||
- francktrouillez
|
||||
- FredeX
|
||||
- geeilhan
|
||||
- Greenlamp
|
||||
- happinyz
|
||||
- hayuna
|
||||
- InfernoVulpix
|
||||
@ -411,7 +412,6 @@ In addition to the lists below, please check [the PokéRogue wiki](https://wiki.
|
||||
- Neverblade
|
||||
- NxKarim
|
||||
- okimin
|
||||
- OrangeRed
|
||||
- PigeonBar
|
||||
- PrabbyDD
|
||||
- prateau
|
||||
@ -421,10 +421,8 @@ In addition to the lists below, please check [the PokéRogue wiki](https://wiki.
|
||||
- RedstonewolfX
|
||||
- ReneGV
|
||||
- rnicar245
|
||||
- Sam aka Flashfyre (initial developer, started PokéRogue)
|
||||
- schmidtc1
|
||||
- shayebeadling
|
||||
- sirzento
|
||||
- snoozbuster
|
||||
- sodaMelon
|
||||
- td76099
|
||||
|
@ -80,8 +80,8 @@ As part of the move selection process, the enemy Pokémon must compute a **targe
|
||||
A move's UBS and TBS are computed with the respective functions in the `Move` class:
|
||||
|
||||
```ts
|
||||
getUserBenefitScore(user: Pokemon, target: Pokemon, move: Move): integer;
|
||||
getTargetBenefitScore(user: Pokemon, target: Pokemon, move: Move): integer;
|
||||
getUserBenefitScore(user: Pokemon, target: Pokemon, move: Move): number;
|
||||
getTargetBenefitScore(user: Pokemon, target: Pokemon, move: Move): number;
|
||||
```
|
||||
|
||||
Logically, these functions are very similar – they add up their respective benefit scores from each of the move's attributes (as determined by `attr.getUserBenefitScore`, and `attr.getTargetBenefitScore`, respectively) and return the total benefit score. However, there are two key functional differences in how the UBS and TBS of a move are handled:
|
||||
|
4
package-lock.json
generated
@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "pokemon-rogue-battle",
|
||||
"version": "1.5.0",
|
||||
"version": "1.5.2",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "pokemon-rogue-battle",
|
||||
"version": "1.5.0",
|
||||
"version": "1.5.2",
|
||||
"hasInstallScript": true,
|
||||
"dependencies": {
|
||||
"@material/material-color-utilities": "^0.2.7",
|
||||
|
13
package.json
@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "pokemon-rogue-battle",
|
||||
"private": true,
|
||||
"version": "1.5.0",
|
||||
"version": "1.5.2",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"start": "vite",
|
||||
@ -20,7 +20,10 @@
|
||||
"depcruise": "depcruise src",
|
||||
"depcruise:graph": "depcruise src --output-type dot | node dependency-graph.js > dependency-graph.svg",
|
||||
"create-test": "node ./create-test-boilerplate.js",
|
||||
"postinstall": "npx lefthook install && npx lefthook run post-merge"
|
||||
"postinstall": "npx lefthook install && npx lefthook run post-merge",
|
||||
"update-version:patch": "npm version patch --force --no-git-tag-version",
|
||||
"update-version:minor": "npm version minor --force --no-git-tag-version",
|
||||
"update-locales:remote": "git submodule update --progress --init --recursive --force --remote"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@eslint/js": "^9.3.0",
|
||||
@ -61,11 +64,5 @@
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=20.0.0"
|
||||
},
|
||||
"imports": {
|
||||
"#enums/*": "./enums/*",
|
||||
"#app": "./src/main.js",
|
||||
"#app/*": "./src/*",
|
||||
"#test/*": "./src/test/*"
|
||||
}
|
||||
}
|
||||
|
BIN
public/audio/bgm/battle_champion_kukui.mp3
Normal file
BIN
public/audio/bgm/battle_colress.mp3
Normal file
BIN
public/audio/bgm/battle_mustard.mp3
Normal file
@ -4,8 +4,8 @@
|
||||
"image": "aether_grunt_f.png",
|
||||
"format": "RGBA8888",
|
||||
"size": {
|
||||
"w": 69,
|
||||
"h": 69
|
||||
"w": 70,
|
||||
"h": 70
|
||||
},
|
||||
"scale": 1,
|
||||
"frames": [
|
||||
@ -14,20 +14,20 @@
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
"w": 39,
|
||||
"h": 70
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 23,
|
||||
"y": 10,
|
||||
"w": 35,
|
||||
"h": 69
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 39,
|
||||
"h": 70
|
||||
},
|
||||
"frame": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 35,
|
||||
"h": 69
|
||||
"w": 39,
|
||||
"h": 70
|
||||
}
|
||||
}
|
||||
]
|
||||
@ -36,6 +36,6 @@
|
||||
"meta": {
|
||||
"app": "https://www.codeandweb.com/texturepacker",
|
||||
"version": "3.0",
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:0c9e77856d3b434e719021572bcb93de:f9c45dc5d67009b134dd1bbc5593f6ec:a694f8828aff21c718e5161e2fd63ade$"
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:0a678d2035c82d3741f2de29e01d42d3:374042fde99a4ff05c5e90cedbc5bd1f:a694f8828aff21c718e5161e2fd63ade$"
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 849 B After Width: | Height: | Size: 787 B |
@ -4,8 +4,8 @@
|
||||
"image": "aether_grunt_m.png",
|
||||
"format": "RGBA8888",
|
||||
"size": {
|
||||
"w": 65,
|
||||
"h": 65
|
||||
"w": 69,
|
||||
"h": 69
|
||||
},
|
||||
"scale": 1,
|
||||
"frames": [
|
||||
@ -14,20 +14,20 @@
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
"w": 45,
|
||||
"h": 69
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 16,
|
||||
"y": 14,
|
||||
"w": 47,
|
||||
"h": 65
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 45,
|
||||
"h": 69
|
||||
},
|
||||
"frame": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 47,
|
||||
"h": 65
|
||||
"w": 45,
|
||||
"h": 69
|
||||
}
|
||||
}
|
||||
]
|
||||
@ -36,6 +36,6 @@
|
||||
"meta": {
|
||||
"app": "https://www.codeandweb.com/texturepacker",
|
||||
"version": "3.0",
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:963887cf29549ad3c123b8055cb4d701:68004c4a6e04c93bd21c26a6f8921f0c:d2241fc11d0fc31b26ecbedae6da74f4$"
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:f7ad29bea8c4a179c08958890cadb04b:741fc1b2e43d2da720c249c6f81910bc:d2241fc11d0fc31b26ecbedae6da74f4$"
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 819 B After Width: | Height: | Size: 782 B |
@ -4,8 +4,8 @@
|
||||
"image": "aqua_grunt_f.png",
|
||||
"format": "RGBA8888",
|
||||
"size": {
|
||||
"w": 71,
|
||||
"h": 71
|
||||
"w": 73,
|
||||
"h": 73
|
||||
},
|
||||
"scale": 1,
|
||||
"frames": [
|
||||
@ -14,20 +14,20 @@
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
"w": 34,
|
||||
"h": 73
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 22,
|
||||
"y": 8,
|
||||
"w": 36,
|
||||
"h": 71
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 34,
|
||||
"h": 73
|
||||
},
|
||||
"frame": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 36,
|
||||
"h": 71
|
||||
"w": 34,
|
||||
"h": 73
|
||||
}
|
||||
}
|
||||
]
|
||||
@ -36,6 +36,6 @@
|
||||
"meta": {
|
||||
"app": "https://www.codeandweb.com/texturepacker",
|
||||
"version": "3.0",
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:6db25cb5753163d19bca8e2db45849ae:7d8f51509862bfdf8a78bf42dd0005cd:af0aa9494be37941522487032b556989$"
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:99d76e35df4b09fc9d312218d8fa8cc7:8ad846929ea03b5fb70fd16144e5e2fa:af0aa9494be37941522487032b556989$"
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 767 B After Width: | Height: | Size: 803 B |
@ -4,8 +4,8 @@
|
||||
"image": "aqua_grunt_m.png",
|
||||
"format": "RGBA8888",
|
||||
"size": {
|
||||
"w": 73,
|
||||
"h": 73
|
||||
"w": 74,
|
||||
"h": 74
|
||||
},
|
||||
"scale": 1,
|
||||
"frames": [
|
||||
@ -14,20 +14,20 @@
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
"w": 38,
|
||||
"h": 74
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 17,
|
||||
"y": 6,
|
||||
"w": 46,
|
||||
"h": 73
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 38,
|
||||
"h": 74
|
||||
},
|
||||
"frame": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 46,
|
||||
"h": 73
|
||||
"w": 38,
|
||||
"h": 74
|
||||
}
|
||||
}
|
||||
]
|
||||
@ -36,6 +36,6 @@
|
||||
"meta": {
|
||||
"app": "https://www.codeandweb.com/texturepacker",
|
||||
"version": "3.0",
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:efd07ff3ed1e610150a4b8ca18974343:d9b85b9eb11182e9e4669e2bd8b08694:72b7b50231708a9486d5f315824e4df1$"
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:ea2cdca90584089079af92307948ecdc:331e1f5314abbfcf58331ab0b9fd1c40:72b7b50231708a9486d5f315824e4df1$"
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 787 B After Width: | Height: | Size: 797 B |
@ -4,8 +4,8 @@
|
||||
"image": "archie.png",
|
||||
"format": "RGBA8888",
|
||||
"size": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
"w": 79,
|
||||
"h": 79
|
||||
},
|
||||
"scale": 1,
|
||||
"frames": [
|
||||
@ -14,20 +14,20 @@
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
"w": 58,
|
||||
"h": 79
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 21,
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 42,
|
||||
"h": 80
|
||||
"w": 58,
|
||||
"h": 79
|
||||
},
|
||||
"frame": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 42,
|
||||
"h": 80
|
||||
"w": 58,
|
||||
"h": 79
|
||||
}
|
||||
}
|
||||
]
|
||||
@ -36,6 +36,6 @@
|
||||
"meta": {
|
||||
"app": "https://www.codeandweb.com/texturepacker",
|
||||
"version": "3.0",
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:bfa7fdd7b6ac9be68dc9dc562fb8339f:06f87a279450b21b19294ba956b69c26:4b7980be4e3ac1d20c9eaf970913ec63$"
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:1edc051db037c1742819ac8674ebe4be:bfaa715c0faf707c1b20ab8259d42a35:4b7980be4e3ac1d20c9eaf970913ec63$"
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.0 KiB |
@ -4,8 +4,8 @@
|
||||
"image": "atticus.png",
|
||||
"format": "RGBA8888",
|
||||
"size": {
|
||||
"w": 46,
|
||||
"h": 46
|
||||
"w": 55,
|
||||
"h": 55
|
||||
},
|
||||
"scale": 1,
|
||||
"frames": [
|
||||
@ -14,20 +14,20 @@
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
"w": 55,
|
||||
"h": 49
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 21,
|
||||
"y": 33,
|
||||
"w": 43,
|
||||
"h": 46
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 55,
|
||||
"h": 49
|
||||
},
|
||||
"frame": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 43,
|
||||
"h": 46
|
||||
"w": 55,
|
||||
"h": 49
|
||||
}
|
||||
}
|
||||
]
|
||||
@ -36,6 +36,6 @@
|
||||
"meta": {
|
||||
"app": "https://www.codeandweb.com/texturepacker",
|
||||
"version": "3.0",
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:6dcd7c3d3982793cbca0d6fcd1f9260e:19c44634629fadd9d039d23dc71ec987:d26ede35f15aa571d5a7a2dd2fb868e1$"
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:2c1a2ecebeac4770c51422bede6add57:5c82bf231c27d62e440081f186eb1da9:d26ede35f15aa571d5a7a2dd2fb868e1$"
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 741 B After Width: | Height: | Size: 740 B |
@ -4,8 +4,8 @@
|
||||
"image": "courtney.png",
|
||||
"format": "RGBA8888",
|
||||
"size": {
|
||||
"w": 52,
|
||||
"h": 80
|
||||
"w": 72,
|
||||
"h": 72
|
||||
},
|
||||
"scale": 1,
|
||||
"frames": [
|
||||
@ -14,20 +14,20 @@
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"sourceSize": {
|
||||
"w": 52,
|
||||
"h": 80
|
||||
"w": 44,
|
||||
"h": 72
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 52,
|
||||
"h": 80
|
||||
"w": 44,
|
||||
"h": 72
|
||||
},
|
||||
"frame": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 52,
|
||||
"h": 80
|
||||
"w": 44,
|
||||
"h": 72
|
||||
}
|
||||
}
|
||||
]
|
||||
@ -36,6 +36,6 @@
|
||||
"meta": {
|
||||
"app": "https://www.codeandweb.com/texturepacker",
|
||||
"version": "3.0",
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:831f5748dad92911b10a1cb358ee2dae:a3bf81bbaa3b49cad5e0e549cf94563b:bb6befc9383c9c08837183ae2a7a80c1$"
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:c39b0f300dc09114fba490e6ab68b2b5:a24a6dbdd0e3f4d4b7a567673b73316a:b0c7d3a5747d1c7edafa00c8e6d1257e$"
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 888 B After Width: | Height: | Size: 869 B |
@ -4,8 +4,8 @@
|
||||
"image": "eri.png",
|
||||
"format": "RGBA8888",
|
||||
"size": {
|
||||
"w": 74,
|
||||
"h": 74
|
||||
"w": 78,
|
||||
"h": 78
|
||||
},
|
||||
"scale": 1,
|
||||
"frames": [
|
||||
@ -14,20 +14,20 @@
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
"w": 52,
|
||||
"h": 78
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 15,
|
||||
"y": 5,
|
||||
"w": 45,
|
||||
"h": 74
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 52,
|
||||
"h": 78
|
||||
},
|
||||
"frame": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 45,
|
||||
"h": 74
|
||||
"w": 52,
|
||||
"h": 78
|
||||
}
|
||||
}
|
||||
]
|
||||
@ -36,6 +36,6 @@
|
||||
"meta": {
|
||||
"app": "https://www.codeandweb.com/texturepacker",
|
||||
"version": "3.0",
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:59594ac27e74ec85e2949d12ff680dc2:d65b6b00858ac47b26ef8393a8fa6795:d7f4cd3ff755f8074c14d3006b0c8301$"
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:d413fdffea2ec50087a67019a6ce4063:66a18e7a21ca3a1953778dbc09074ab6:d7f4cd3ff755f8074c14d3006b0c8301$"
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 946 B After Width: | Height: | Size: 1.1 KiB |
@ -4,8 +4,8 @@
|
||||
"image": "faba.png",
|
||||
"format": "RGBA8888",
|
||||
"size": {
|
||||
"w": 74,
|
||||
"h": 74
|
||||
"w": 76,
|
||||
"h": 76
|
||||
},
|
||||
"scale": 1,
|
||||
"frames": [
|
||||
@ -14,20 +14,20 @@
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
"w": 29,
|
||||
"h": 76
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 25,
|
||||
"y": 5,
|
||||
"w": 31,
|
||||
"h": 74
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 29,
|
||||
"h": 76
|
||||
},
|
||||
"frame": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 31,
|
||||
"h": 74
|
||||
"w": 29,
|
||||
"h": 76
|
||||
}
|
||||
}
|
||||
]
|
||||
@ -36,6 +36,6 @@
|
||||
"meta": {
|
||||
"app": "https://www.codeandweb.com/texturepacker",
|
||||
"version": "3.0",
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:47622708d99a504998950bd9c389a504:fe1c51be191dd9fafb5b6f309c08ae1a:8d64db18930325b8b513740c1d83ce4c$"
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:bbfce6e1ed69401694ce8c2537dd1fea:a2c9351e4ba08d44cafa66ecdf509866:8d64db18930325b8b513740c1d83ce4c$"
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 814 B After Width: | Height: | Size: 772 B |
@ -4,8 +4,8 @@
|
||||
"image": "flare_grunt_f.png",
|
||||
"format": "RGBA8888",
|
||||
"size": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
"w": 85,
|
||||
"h": 85
|
||||
},
|
||||
"scale": 1,
|
||||
"frames": [
|
||||
@ -14,20 +14,20 @@
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
"w": 23,
|
||||
"h": 85
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 31,
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 23,
|
||||
"h": 80
|
||||
"h": 85
|
||||
},
|
||||
"frame": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 23,
|
||||
"h": 80
|
||||
"h": 85
|
||||
}
|
||||
}
|
||||
]
|
||||
@ -36,6 +36,6 @@
|
||||
"meta": {
|
||||
"app": "https://www.codeandweb.com/texturepacker",
|
||||
"version": "3.0",
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:c30bf82452209a923f4becf13d275a9a:a6355b09f92c9c0388d0b919010f587f:0638dbf213f8a974eb5af76eb1e5ddeb$"
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:88d242a8c3b9859307ecdd290c30ce7d:acd04d60ab09f18e86e4e5727132dac2:0638dbf213f8a974eb5af76eb1e5ddeb$"
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 613 B After Width: | Height: | Size: 634 B |
@ -14,12 +14,12 @@
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
"w": 31,
|
||||
"h": 77
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 24,
|
||||
"y": 2,
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 31,
|
||||
"h": 77
|
||||
},
|
||||
@ -36,6 +36,6 @@
|
||||
"meta": {
|
||||
"app": "https://www.codeandweb.com/texturepacker",
|
||||
"version": "3.0",
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:a26606e70778f88a1a7053b2f2420dde:84abf0d0f6bc90c6a60f660567b2d641:adc35a4070bac9fe828c2605a3b15744$"
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:8683e52bbd1a42992f4d7ab8aa65a2a1:e8279cd322279bc5f8e2bb5797e6f818:adc35a4070bac9fe828c2605a3b15744$"
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 662 B After Width: | Height: | Size: 662 B |
@ -4,8 +4,8 @@
|
||||
"image": "giacomo.png",
|
||||
"format": "RGBA8888",
|
||||
"size": {
|
||||
"w": 75,
|
||||
"h": 75
|
||||
"w": 71,
|
||||
"h": 71
|
||||
},
|
||||
"scale": 1,
|
||||
"frames": [
|
||||
@ -14,20 +14,20 @@
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
"w": 37,
|
||||
"h": 71
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 23,
|
||||
"y": 4,
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 37,
|
||||
"h": 75
|
||||
"h": 71
|
||||
},
|
||||
"frame": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 37,
|
||||
"h": 75
|
||||
"h": 71
|
||||
}
|
||||
}
|
||||
]
|
||||
@ -36,6 +36,6 @@
|
||||
"meta": {
|
||||
"app": "https://www.codeandweb.com/texturepacker",
|
||||
"version": "3.0",
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:8c4e7da48e5667abc6d364330268c092:0fa43e58d8a746d3b86cb2dd763719f4:8603cc19e888c8c8de62177f4011577c$"
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:8d4b9bca01f3729556cd02a8795c3e89:cb2840cbbd1e5a614bfa6bcb23db5b62:8603cc19e888c8c8de62177f4011577c$"
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 846 B |
@ -4,8 +4,8 @@
|
||||
"image": "guzma.png",
|
||||
"format": "RGBA8888",
|
||||
"size": {
|
||||
"w": 58,
|
||||
"h": 58
|
||||
"w": 64,
|
||||
"h": 64
|
||||
},
|
||||
"scale": 1,
|
||||
"frames": [
|
||||
@ -14,20 +14,20 @@
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
"w": 34,
|
||||
"h": 64
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 21,
|
||||
"y": 20,
|
||||
"w": 37,
|
||||
"h": 58
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 34,
|
||||
"h": 64
|
||||
},
|
||||
"frame": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 37,
|
||||
"h": 58
|
||||
"w": 34,
|
||||
"h": 64
|
||||
}
|
||||
}
|
||||
]
|
||||
@ -36,6 +36,6 @@
|
||||
"meta": {
|
||||
"app": "https://www.codeandweb.com/texturepacker",
|
||||
"version": "3.0",
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:c3b08a562a2882d1ca8b5e031e245da9:72a8305e547f091d15abccd2b142e401:3b302c7f9eb6ea81b65bcaeead4a95a9$"
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:90cfe8ae514c30ddf48840678b251141:87a93d268c61327ad913bba3b052686b:3b302c7f9eb6ea81b65bcaeead4a95a9$"
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 874 B |
@ -4,8 +4,8 @@
|
||||
"image": "hala.png",
|
||||
"format": "RGBA8888",
|
||||
"size": {
|
||||
"w": 78,
|
||||
"h": 78
|
||||
"w": 82,
|
||||
"h": 82
|
||||
},
|
||||
"scale": 1,
|
||||
"frames": [
|
||||
@ -14,20 +14,20 @@
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"sourceSize": {
|
||||
"w": 59,
|
||||
"h": 78
|
||||
"w": 58,
|
||||
"h": 82
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 59,
|
||||
"h": 78
|
||||
"w": 58,
|
||||
"h": 82
|
||||
},
|
||||
"frame": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 59,
|
||||
"h": 78
|
||||
"w": 58,
|
||||
"h": 82
|
||||
}
|
||||
}
|
||||
]
|
||||
@ -36,6 +36,6 @@
|
||||
"meta": {
|
||||
"app": "https://www.codeandweb.com/texturepacker",
|
||||
"version": "3.0",
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:b6547cc9975d92a02b99fd63122d740b:0a72e0ac4fcbfe4329a7dcdad284ab36:7c2af56b9a9851f2e2eaeaf0cdca9370$"
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:57dc13db648785ad4694bf67c40fa21d:ee2bc7184f4f48ab8ba3c10c89bfc8f0:7c2af56b9a9851f2e2eaeaf0cdca9370$"
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.2 KiB |
@ -4,8 +4,8 @@
|
||||
"image": "hau.png",
|
||||
"format": "RGBA8888",
|
||||
"size": {
|
||||
"w": 70,
|
||||
"h": 70
|
||||
"w": 71,
|
||||
"h": 71
|
||||
},
|
||||
"scale": 1,
|
||||
"frames": [
|
||||
@ -14,20 +14,20 @@
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
"w": 24,
|
||||
"h": 71
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 27,
|
||||
"y": 9,
|
||||
"w": 29,
|
||||
"h": 70
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 24,
|
||||
"h": 71
|
||||
},
|
||||
"frame": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 29,
|
||||
"h": 70
|
||||
"w": 24,
|
||||
"h": 71
|
||||
}
|
||||
}
|
||||
]
|
||||
@ -36,6 +36,6 @@
|
||||
"meta": {
|
||||
"app": "https://www.codeandweb.com/texturepacker",
|
||||
"version": "3.0",
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:688d6d27e686efec45b144ba4544f248:676457a4e9dfbcad0510f6e7bfa73514:d4c7e8b349477c2295b49b0e99b91bb3$"
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:0d500afd9a36f32a23b5a316dcf397d9:aa5d3e58d6df67b90e484ec7f345a4cf:d4c7e8b349477c2295b49b0e99b91bb3$"
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 725 B After Width: | Height: | Size: 693 B |
@ -4,8 +4,8 @@
|
||||
"image": "korrina.png",
|
||||
"format": "RGBA8888",
|
||||
"size": {
|
||||
"w": 75,
|
||||
"h": 75
|
||||
"w": 83,
|
||||
"h": 83
|
||||
},
|
||||
"scale": 1,
|
||||
"frames": [
|
||||
@ -14,20 +14,20 @@
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
"w": 57,
|
||||
"h": 83
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 10,
|
||||
"y": 4,
|
||||
"w": 56,
|
||||
"h": 75
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 57,
|
||||
"h": 83
|
||||
},
|
||||
"frame": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 56,
|
||||
"h": 75
|
||||
"w": 57,
|
||||
"h": 83
|
||||
}
|
||||
}
|
||||
]
|
||||
@ -36,6 +36,6 @@
|
||||
"meta": {
|
||||
"app": "https://www.codeandweb.com/texturepacker",
|
||||
"version": "3.0",
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:43a6564beec2569a58110232e9752b64:0decef066ae75dc7f3bd0c811f9a92d1:ed5be09cd8b82ed6439ff8617ffa74c0$"
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:1dc28e18e99698fbfd8a110a1dc737f2:79d24176afd3059dc69ce785ce672bbb:ed5be09cd8b82ed6439ff8617ffa74c0$"
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.1 KiB |
41
public/images/trainer/kukui.json
Normal file
@ -0,0 +1,41 @@
|
||||
{
|
||||
"textures": [
|
||||
{
|
||||
"image": "kukui.png",
|
||||
"format": "RGBA8888",
|
||||
"size": {
|
||||
"w": 74,
|
||||
"h": 74
|
||||
},
|
||||
"scale": 1,
|
||||
"frames": [
|
||||
{
|
||||
"filename": "0001.png",
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"sourceSize": {
|
||||
"w": 37,
|
||||
"h": 74
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 37,
|
||||
"h": 74
|
||||
},
|
||||
"frame": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 37,
|
||||
"h": 74
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"app": "https://www.codeandweb.com/texturepacker",
|
||||
"version": "3.0",
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:bccd7af37a8608585716e34d0acb49af:8e1ebc6f022707fbb1e6b4f7d1dbb00c:70bdbf4bca082082ae121aa8ef03c2be$"
|
||||
}
|
||||
}
|
BIN
public/images/trainer/kukui.png
Normal file
After Width: | Height: | Size: 838 B |
@ -4,8 +4,8 @@
|
||||
"image": "lusamine.png",
|
||||
"format": "RGBA8888",
|
||||
"size": {
|
||||
"w": 74,
|
||||
"h": 74
|
||||
"w": 80,
|
||||
"h": 80
|
||||
},
|
||||
"scale": 1,
|
||||
"frames": [
|
||||
@ -14,20 +14,20 @@
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"w": 52,
|
||||
"h": 80
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 22,
|
||||
"y": 5,
|
||||
"w": 36,
|
||||
"h": 74
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 52,
|
||||
"h": 80
|
||||
},
|
||||
"frame": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 36,
|
||||
"h": 74
|
||||
"w": 52,
|
||||
"h": 80
|
||||
}
|
||||
}
|
||||
]
|
||||
@ -36,6 +36,6 @@
|
||||
"meta": {
|
||||
"app": "https://www.codeandweb.com/texturepacker",
|
||||
"version": "3.0",
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:41da3a1299e3831be70016dc91e49313:2413ba06767fb10fdc6fde8cc736c51c:4012333084c529872232c8d052561dc1$"
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:52c5f9beccbfe68b9861b8fc393ba674:35d25e8bad6c7212e330a0e3d0c88315:4012333084c529872232c8d052561dc1$"
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 996 B After Width: | Height: | Size: 976 B |
@ -4,8 +4,8 @@
|
||||
"image": "lysandre.png",
|
||||
"format": "RGBA8888",
|
||||
"size": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
"w": 82,
|
||||
"h": 82
|
||||
},
|
||||
"scale": 1,
|
||||
"frames": [
|
||||
@ -14,20 +14,20 @@
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
"w": 50,
|
||||
"h": 82
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 14,
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 52,
|
||||
"h": 80
|
||||
"w": 50,
|
||||
"h": 82
|
||||
},
|
||||
"frame": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 52,
|
||||
"h": 80
|
||||
"w": 50,
|
||||
"h": 82
|
||||
}
|
||||
}
|
||||
]
|
||||
@ -36,6 +36,6 @@
|
||||
"meta": {
|
||||
"app": "https://www.codeandweb.com/texturepacker",
|
||||
"version": "3.0",
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:6b887c8bab74885a1b05f2b382759db6:ba102d9d25ddd794a3a17f029b971daf:e6066149f6ec4ccb9fc28faea3d64a7f$"
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:b09528fe2d3137bba8ce5c667d2a962f:7c522eefcc85ee87df485d34b58e814b:e6066149f6ec4ccb9fc28faea3d64a7f$"
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 797 B After Width: | Height: | Size: 824 B |
@ -14,19 +14,19 @@
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
"w": 33,
|
||||
"h": 74
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 24,
|
||||
"y": 5,
|
||||
"w": 31,
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 33,
|
||||
"h": 74
|
||||
},
|
||||
"frame": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 31,
|
||||
"w": 33,
|
||||
"h": 74
|
||||
}
|
||||
}
|
||||
@ -36,6 +36,6 @@
|
||||
"meta": {
|
||||
"app": "https://www.codeandweb.com/texturepacker",
|
||||
"version": "3.0",
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:a015c43d80f8fd1932758e0e2cfcec61:59fc8205ea5ca04295831b4a2eb623ec:30df2ea8e9dac9e95f70534ec43d5ecd$"
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:7449212fcdbfb4a600364bd3761e4fb6:37c81a387501a047cff84cabdeedb496:d1412ef32f1904a102cf70569806f3b7$"
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 837 B After Width: | Height: | Size: 807 B |
@ -4,8 +4,8 @@
|
||||
"image": "macro_grunt_m.png",
|
||||
"format": "RGBA8888",
|
||||
"size": {
|
||||
"w": 75,
|
||||
"h": 75
|
||||
"w": 76,
|
||||
"h": 76
|
||||
},
|
||||
"scale": 1,
|
||||
"frames": [
|
||||
@ -14,20 +14,20 @@
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
"w": 35,
|
||||
"h": 76
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 15,
|
||||
"y": 4,
|
||||
"w": 48,
|
||||
"h": 75
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 35,
|
||||
"h": 76
|
||||
},
|
||||
"frame": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 48,
|
||||
"h": 75
|
||||
"w": 35,
|
||||
"h": 76
|
||||
}
|
||||
}
|
||||
]
|
||||
@ -36,6 +36,6 @@
|
||||
"meta": {
|
||||
"app": "https://www.codeandweb.com/texturepacker",
|
||||
"version": "3.0",
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:52fccff2a0675b4e10139ddb7067d4cf:10d254175d2d8a9111cce096ffb55fa3:d57016467aa07cafdfaf13e0ff643c1b$"
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:5800bf6888eb6dd61ea39e1c9a1f93e3:25a930b7c50e2d7832bd3c30402d7544:1f76f2e682f472208a45e187250a6a3d$"
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 919 B After Width: | Height: | Size: 868 B |
@ -4,30 +4,30 @@
|
||||
"image": "magma_grunt_f.png",
|
||||
"format": "RGBA8888",
|
||||
"size": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
"w": 72,
|
||||
"h": 72
|
||||
},
|
||||
"scale": 1,
|
||||
"frames": [
|
||||
{
|
||||
"filename": "0001.png",
|
||||
"rotated": false,
|
||||
"trimmed": true,
|
||||
"trimmed": false,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
"w": 43,
|
||||
"h": 72
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 10,
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 60,
|
||||
"h": 80
|
||||
"w": 43,
|
||||
"h": 72
|
||||
},
|
||||
"frame": {
|
||||
"x": 10,
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 60,
|
||||
"h": 80
|
||||
"w": 43,
|
||||
"h": 72
|
||||
}
|
||||
}
|
||||
]
|
||||
@ -36,6 +36,6 @@
|
||||
"meta": {
|
||||
"app": "https://www.codeandweb.com/texturepacker",
|
||||
"version": "3.0",
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:f63ad48affc076f60fae78992c96a2bf:80928b32710abcb28c07c6fc5a425d99:3b961d8852b62aaf24ceb2030c036515$"
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:219462e400564a65012cda9dbc31ab22:4e0070239d24311df52a263271698c59:3b961d8852b62aaf24ceb2030c036515$"
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 727 B After Width: | Height: | Size: 727 B |
@ -4,30 +4,30 @@
|
||||
"image": "magma_grunt_m.png",
|
||||
"format": "RGBA8888",
|
||||
"size": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
"w": 72,
|
||||
"h": 72
|
||||
},
|
||||
"scale": 1,
|
||||
"frames": [
|
||||
{
|
||||
"filename": "0001.png",
|
||||
"rotated": false,
|
||||
"trimmed": true,
|
||||
"trimmed": false,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
"w": 44,
|
||||
"h": 72
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 10,
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 60,
|
||||
"h": 80
|
||||
"w": 44,
|
||||
"h": 72
|
||||
},
|
||||
"frame": {
|
||||
"x": 10,
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 60,
|
||||
"h": 80
|
||||
"w": 44,
|
||||
"h": 72
|
||||
}
|
||||
}
|
||||
]
|
||||
@ -36,6 +36,6 @@
|
||||
"meta": {
|
||||
"app": "https://www.codeandweb.com/texturepacker",
|
||||
"version": "3.0",
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:96aa833d987a01bcdcb6f0e7809f5daf:791cce8d026f92b2e52f0b66df8b8e11:35532fd5d9aea30957d50d06f2d2f9a6$"
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:46f6e6e1aef8e2e7640c67116e548c5d:34cb6b7f64b0d3c294fcdde45097575d:35532fd5d9aea30957d50d06f2d2f9a6$"
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 756 B After Width: | Height: | Size: 698 B |
@ -4,8 +4,8 @@
|
||||
"image": "mela.png",
|
||||
"format": "RGBA8888",
|
||||
"size": {
|
||||
"w": 78,
|
||||
"h": 78
|
||||
"w": 75,
|
||||
"h": 75
|
||||
},
|
||||
"scale": 1,
|
||||
"frames": [
|
||||
@ -14,20 +14,20 @@
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
"w": 41,
|
||||
"h": 75
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 18,
|
||||
"y": 1,
|
||||
"w": 46,
|
||||
"h": 78
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 41,
|
||||
"h": 75
|
||||
},
|
||||
"frame": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 46,
|
||||
"h": 78
|
||||
"w": 41,
|
||||
"h": 75
|
||||
}
|
||||
}
|
||||
]
|
||||
@ -36,6 +36,6 @@
|
||||
"meta": {
|
||||
"app": "https://www.codeandweb.com/texturepacker",
|
||||
"version": "3.0",
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:e26d8c926c54c848cef673b3f59f35e7:ff040c2cebb1a92d2ef61dc91c018390:68668cf06383ff459cccaafb6bf56215$"
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:96e97b165e8ca706b7838616d32ab81f:89c577db41f4b610520823e876066e35:68668cf06383ff459cccaafb6bf56215$"
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1014 B |
@ -4,8 +4,8 @@
|
||||
"image": "molayne.png",
|
||||
"format": "RGBA8888",
|
||||
"size": {
|
||||
"w": 79,
|
||||
"h": 79
|
||||
"w": 78,
|
||||
"h": 78
|
||||
},
|
||||
"scale": 1,
|
||||
"frames": [
|
||||
@ -15,19 +15,19 @@
|
||||
"trimmed": false,
|
||||
"sourceSize": {
|
||||
"w": 31,
|
||||
"h": 79
|
||||
"h": 78
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 31,
|
||||
"h": 79
|
||||
"h": 78
|
||||
},
|
||||
"frame": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 31,
|
||||
"h": 79
|
||||
"h": 78
|
||||
}
|
||||
}
|
||||
]
|
||||
@ -36,6 +36,6 @@
|
||||
"meta": {
|
||||
"app": "https://www.codeandweb.com/texturepacker",
|
||||
"version": "3.0",
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:056720ae56077b81375b258850332053:774e1c8463f26fac3be55ed88c8b48b9:11092260a376b1a46e696927361b6498$"
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:190386db101d4bd1ef5ed1f4f7b5bb1c:c8bc1b069ceb2707738b9178fb6aea0f:11092260a376b1a46e696927361b6498$"
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 816 B After Width: | Height: | Size: 743 B |
41
public/images/trainer/mustard.json
Normal file
@ -0,0 +1,41 @@
|
||||
{
|
||||
"textures": [
|
||||
{
|
||||
"image": "mustard.png",
|
||||
"format": "RGBA8888",
|
||||
"size": {
|
||||
"w": 71,
|
||||
"h": 71
|
||||
},
|
||||
"scale": 1,
|
||||
"frames": [
|
||||
{
|
||||
"filename": "0001.png",
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"sourceSize": {
|
||||
"w": 57,
|
||||
"h": 71
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 57,
|
||||
"h": 71
|
||||
},
|
||||
"frame": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 57,
|
||||
"h": 71
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"app": "https://www.codeandweb.com/texturepacker",
|
||||
"version": "3.0",
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:8e2d109ee2cb1b2a6dda840c5bba1d4e:8116b1de2fd7bc0ca08e2d3e618b3dae:ac5d03e7cabff8ff660969c2bc2f3b36$"
|
||||
}
|
||||
}
|
BIN
public/images/trainer/mustard.png
Normal file
After Width: | Height: | Size: 917 B |
@ -4,8 +4,8 @@
|
||||
"image": "oleana.png",
|
||||
"format": "RGBA8888",
|
||||
"size": {
|
||||
"w": 79,
|
||||
"h": 79
|
||||
"w": 78,
|
||||
"h": 78
|
||||
},
|
||||
"scale": 1,
|
||||
"frames": [
|
||||
@ -14,20 +14,20 @@
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
"w": 56,
|
||||
"h": 78
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 10,
|
||||
"y": 1,
|
||||
"w": 53,
|
||||
"h": 79
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 56,
|
||||
"h": 78
|
||||
},
|
||||
"frame": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 53,
|
||||
"h": 79
|
||||
"w": 56,
|
||||
"h": 78
|
||||
}
|
||||
}
|
||||
]
|
||||
@ -36,6 +36,6 @@
|
||||
"meta": {
|
||||
"app": "https://www.codeandweb.com/texturepacker",
|
||||
"version": "3.0",
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:30987a671771127a38491a588c465964:38b28effcfd5c6cbc0f358912a775af3:82e2a1f8afed29be57f6c2473f4c5be2$"
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:3f088913cab1db14067e247bd92e82ce:b32e1ef6ef289564b39fd326346002c6:82e2a1f8afed29be57f6c2473f4c5be2$"
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 918 B |
@ -4,8 +4,8 @@
|
||||
"image": "ortega.png",
|
||||
"format": "RGBA8888",
|
||||
"size": {
|
||||
"w": 69,
|
||||
"h": 69
|
||||
"w": 70,
|
||||
"h": 70
|
||||
},
|
||||
"scale": 1,
|
||||
"frames": [
|
||||
@ -14,20 +14,20 @@
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
"w": 47,
|
||||
"h": 70
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 8,
|
||||
"y": 10,
|
||||
"w": 53,
|
||||
"h": 69
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 47,
|
||||
"h": 70
|
||||
},
|
||||
"frame": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 53,
|
||||
"h": 69
|
||||
"w": 47,
|
||||
"h": 70
|
||||
}
|
||||
}
|
||||
]
|
||||
@ -36,6 +36,6 @@
|
||||
"meta": {
|
||||
"app": "https://www.codeandweb.com/texturepacker",
|
||||
"version": "3.0",
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:c6ff92d90ed884222095de81d1db9166:a91cf3c83a063f549c52afb42f7ba3b0:c3f9fcec121c8bc93f2b230b20b79c57$"
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:f69a1067315885ed736a07362122f371:717e3f134eb10424f0f0fa724500ba63:c3f9fcec121c8bc93f2b230b20b79c57$"
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 937 B After Width: | Height: | Size: 909 B |
@ -4,8 +4,8 @@
|
||||
"image": "penny.png",
|
||||
"format": "RGBA8888",
|
||||
"size": {
|
||||
"w": 75,
|
||||
"h": 75
|
||||
"w": 67,
|
||||
"h": 67
|
||||
},
|
||||
"scale": 1,
|
||||
"frames": [
|
||||
@ -14,20 +14,20 @@
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
"w": 30,
|
||||
"h": 67
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 24,
|
||||
"y": 4,
|
||||
"w": 34,
|
||||
"h": 75
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 30,
|
||||
"h": 67
|
||||
},
|
||||
"frame": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 34,
|
||||
"h": 75
|
||||
"w": 30,
|
||||
"h": 67
|
||||
}
|
||||
}
|
||||
]
|
||||
@ -36,6 +36,6 @@
|
||||
"meta": {
|
||||
"app": "https://www.codeandweb.com/texturepacker",
|
||||
"version": "3.0",
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:54f184bf1995a94a78aff33c9a851e6b:a6c9b3fe428b0cd0344b5cf14b999f36:cf221da9747cb8cb356053d3042d8d22$"
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:cb4d76912d528afe986ac5cad775f455:cc70d9738c9c7347b2ac9afec4ec9290:cf221da9747cb8cb356053d3042d8d22$"
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 955 B After Width: | Height: | Size: 739 B |
@ -4,30 +4,408 @@
|
||||
"image": "plasma_grunt_f.png",
|
||||
"format": "RGBA8888",
|
||||
"size": {
|
||||
"w": 75,
|
||||
"h": 75
|
||||
"w": 186,
|
||||
"h": 186
|
||||
},
|
||||
"scale": 1,
|
||||
"frames": [
|
||||
{
|
||||
"filename": "0001.png",
|
||||
"filename": "0002.png",
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"trimmed": true,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 21,
|
||||
"y": 4,
|
||||
"w": 37,
|
||||
"h": 75
|
||||
"x": 16,
|
||||
"y": 31,
|
||||
"w": 49,
|
||||
"h": 49
|
||||
},
|
||||
"frame": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 37,
|
||||
"h": 75
|
||||
"w": 49,
|
||||
"h": 49
|
||||
}
|
||||
},
|
||||
{
|
||||
"filename": "0003.png",
|
||||
"rotated": false,
|
||||
"trimmed": true,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 16,
|
||||
"y": 31,
|
||||
"w": 49,
|
||||
"h": 49
|
||||
},
|
||||
"frame": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 49,
|
||||
"h": 49
|
||||
}
|
||||
},
|
||||
{
|
||||
"filename": "0015.png",
|
||||
"rotated": false,
|
||||
"trimmed": true,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 17,
|
||||
"y": 27,
|
||||
"w": 46,
|
||||
"h": 53
|
||||
},
|
||||
"frame": {
|
||||
"x": 49,
|
||||
"y": 0,
|
||||
"w": 46,
|
||||
"h": 53
|
||||
}
|
||||
},
|
||||
{
|
||||
"filename": "0001.png",
|
||||
"rotated": false,
|
||||
"trimmed": true,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 17,
|
||||
"y": 27,
|
||||
"w": 45,
|
||||
"h": 53
|
||||
},
|
||||
"frame": {
|
||||
"x": 0,
|
||||
"y": 49,
|
||||
"w": 45,
|
||||
"h": 53
|
||||
}
|
||||
},
|
||||
{
|
||||
"filename": "0017.png",
|
||||
"rotated": false,
|
||||
"trimmed": true,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 17,
|
||||
"y": 27,
|
||||
"w": 45,
|
||||
"h": 53
|
||||
},
|
||||
"frame": {
|
||||
"x": 0,
|
||||
"y": 49,
|
||||
"w": 45,
|
||||
"h": 53
|
||||
}
|
||||
},
|
||||
{
|
||||
"filename": "0018.png",
|
||||
"rotated": false,
|
||||
"trimmed": true,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 17,
|
||||
"y": 27,
|
||||
"w": 45,
|
||||
"h": 53
|
||||
},
|
||||
"frame": {
|
||||
"x": 0,
|
||||
"y": 49,
|
||||
"w": 45,
|
||||
"h": 53
|
||||
}
|
||||
},
|
||||
{
|
||||
"filename": "0019.png",
|
||||
"rotated": false,
|
||||
"trimmed": true,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 17,
|
||||
"y": 27,
|
||||
"w": 45,
|
||||
"h": 53
|
||||
},
|
||||
"frame": {
|
||||
"x": 0,
|
||||
"y": 49,
|
||||
"w": 45,
|
||||
"h": 53
|
||||
}
|
||||
},
|
||||
{
|
||||
"filename": "0004.png",
|
||||
"rotated": false,
|
||||
"trimmed": true,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 15,
|
||||
"y": 33,
|
||||
"w": 50,
|
||||
"h": 47
|
||||
},
|
||||
"frame": {
|
||||
"x": 45,
|
||||
"y": 53,
|
||||
"w": 50,
|
||||
"h": 47
|
||||
}
|
||||
},
|
||||
{
|
||||
"filename": "0005.png",
|
||||
"rotated": false,
|
||||
"trimmed": true,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 15,
|
||||
"y": 33,
|
||||
"w": 50,
|
||||
"h": 47
|
||||
},
|
||||
"frame": {
|
||||
"x": 45,
|
||||
"y": 53,
|
||||
"w": 50,
|
||||
"h": 47
|
||||
}
|
||||
},
|
||||
{
|
||||
"filename": "0006.png",
|
||||
"rotated": false,
|
||||
"trimmed": true,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 15,
|
||||
"y": 36,
|
||||
"w": 50,
|
||||
"h": 44
|
||||
},
|
||||
"frame": {
|
||||
"x": 45,
|
||||
"y": 100,
|
||||
"w": 50,
|
||||
"h": 44
|
||||
}
|
||||
},
|
||||
{
|
||||
"filename": "0007.png",
|
||||
"rotated": false,
|
||||
"trimmed": true,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 15,
|
||||
"y": 36,
|
||||
"w": 50,
|
||||
"h": 44
|
||||
},
|
||||
"frame": {
|
||||
"x": 45,
|
||||
"y": 100,
|
||||
"w": 50,
|
||||
"h": 44
|
||||
}
|
||||
},
|
||||
{
|
||||
"filename": "0016.png",
|
||||
"rotated": false,
|
||||
"trimmed": true,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 17,
|
||||
"y": 27,
|
||||
"w": 45,
|
||||
"h": 53
|
||||
},
|
||||
"frame": {
|
||||
"x": 0,
|
||||
"y": 102,
|
||||
"w": 45,
|
||||
"h": 53
|
||||
}
|
||||
},
|
||||
{
|
||||
"filename": "0008.png",
|
||||
"rotated": false,
|
||||
"trimmed": true,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 15,
|
||||
"y": 38,
|
||||
"w": 50,
|
||||
"h": 42
|
||||
},
|
||||
"frame": {
|
||||
"x": 45,
|
||||
"y": 144,
|
||||
"w": 50,
|
||||
"h": 42
|
||||
}
|
||||
},
|
||||
{
|
||||
"filename": "0009.png",
|
||||
"rotated": false,
|
||||
"trimmed": true,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 15,
|
||||
"y": 38,
|
||||
"w": 50,
|
||||
"h": 42
|
||||
},
|
||||
"frame": {
|
||||
"x": 45,
|
||||
"y": 144,
|
||||
"w": 50,
|
||||
"h": 42
|
||||
}
|
||||
},
|
||||
{
|
||||
"filename": "0013.png",
|
||||
"rotated": false,
|
||||
"trimmed": true,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 17,
|
||||
"y": 27,
|
||||
"w": 43,
|
||||
"h": 53
|
||||
},
|
||||
"frame": {
|
||||
"x": 95,
|
||||
"y": 0,
|
||||
"w": 43,
|
||||
"h": 53
|
||||
}
|
||||
},
|
||||
{
|
||||
"filename": "0014.png",
|
||||
"rotated": false,
|
||||
"trimmed": true,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 17,
|
||||
"y": 27,
|
||||
"w": 43,
|
||||
"h": 53
|
||||
},
|
||||
"frame": {
|
||||
"x": 95,
|
||||
"y": 53,
|
||||
"w": 43,
|
||||
"h": 53
|
||||
}
|
||||
},
|
||||
{
|
||||
"filename": "0010.png",
|
||||
"rotated": false,
|
||||
"trimmed": true,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 16,
|
||||
"y": 31,
|
||||
"w": 49,
|
||||
"h": 49
|
||||
},
|
||||
"frame": {
|
||||
"x": 95,
|
||||
"y": 106,
|
||||
"w": 49,
|
||||
"h": 49
|
||||
}
|
||||
},
|
||||
{
|
||||
"filename": "0011.png",
|
||||
"rotated": false,
|
||||
"trimmed": true,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 16,
|
||||
"y": 31,
|
||||
"w": 49,
|
||||
"h": 49
|
||||
},
|
||||
"frame": {
|
||||
"x": 95,
|
||||
"y": 106,
|
||||
"w": 49,
|
||||
"h": 49
|
||||
}
|
||||
},
|
||||
{
|
||||
"filename": "0012.png",
|
||||
"rotated": false,
|
||||
"trimmed": true,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 16,
|
||||
"y": 29,
|
||||
"w": 46,
|
||||
"h": 51
|
||||
},
|
||||
"frame": {
|
||||
"x": 138,
|
||||
"y": 0,
|
||||
"w": 46,
|
||||
"h": 51
|
||||
}
|
||||
}
|
||||
]
|
||||
@ -36,6 +414,6 @@
|
||||
"meta": {
|
||||
"app": "https://www.codeandweb.com/texturepacker",
|
||||
"version": "3.0",
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:c3001e18f1878c01a4825697200e823e:2003e0d4db249f7020c3471872198ac8:b01645b9e941158814978f2126e7e995$"
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:e8e867ad78b993918fba435e10511740:758a95ecd97e2607ff6ab81f85e665e6:b01645b9e941158814978f2126e7e995$"
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 764 B After Width: | Height: | Size: 3.3 KiB |
@ -4,30 +4,555 @@
|
||||
"image": "plasma_grunt_m.png",
|
||||
"format": "RGBA8888",
|
||||
"size": {
|
||||
"w": 72,
|
||||
"h": 72
|
||||
"w": 262,
|
||||
"h": 262
|
||||
},
|
||||
"scale": 1,
|
||||
"frames": [
|
||||
{
|
||||
"filename": "0001.png",
|
||||
"filename": "0021.png",
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"trimmed": true,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 13,
|
||||
"y": 11,
|
||||
"w": 54,
|
||||
"h": 69
|
||||
},
|
||||
"frame": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 54,
|
||||
"h": 69
|
||||
}
|
||||
},
|
||||
{
|
||||
"filename": "0022.png",
|
||||
"rotated": false,
|
||||
"trimmed": true,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 13,
|
||||
"y": 11,
|
||||
"w": 54,
|
||||
"h": 69
|
||||
},
|
||||
"frame": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 54,
|
||||
"h": 69
|
||||
}
|
||||
},
|
||||
{
|
||||
"filename": "0023.png",
|
||||
"rotated": false,
|
||||
"trimmed": true,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 16,
|
||||
"y": 7,
|
||||
"w": 47,
|
||||
"h": 72
|
||||
"y": 11,
|
||||
"w": 51,
|
||||
"h": 69
|
||||
},
|
||||
"frame": {
|
||||
"x": 0,
|
||||
"y": 69,
|
||||
"w": 51,
|
||||
"h": 69
|
||||
}
|
||||
},
|
||||
{
|
||||
"filename": "0001.png",
|
||||
"rotated": false,
|
||||
"trimmed": true,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 17,
|
||||
"y": 11,
|
||||
"w": 50,
|
||||
"h": 69
|
||||
},
|
||||
"frame": {
|
||||
"x": 0,
|
||||
"y": 138,
|
||||
"w": 50,
|
||||
"h": 69
|
||||
}
|
||||
},
|
||||
{
|
||||
"filename": "0024.png",
|
||||
"rotated": false,
|
||||
"trimmed": true,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 17,
|
||||
"y": 11,
|
||||
"w": 50,
|
||||
"h": 69
|
||||
},
|
||||
"frame": {
|
||||
"x": 0,
|
||||
"y": 138,
|
||||
"w": 50,
|
||||
"h": 69
|
||||
}
|
||||
},
|
||||
{
|
||||
"filename": "0025.png",
|
||||
"rotated": false,
|
||||
"trimmed": true,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 17,
|
||||
"y": 11,
|
||||
"w": 50,
|
||||
"h": 69
|
||||
},
|
||||
"frame": {
|
||||
"x": 0,
|
||||
"y": 138,
|
||||
"w": 50,
|
||||
"h": 69
|
||||
}
|
||||
},
|
||||
{
|
||||
"filename": "0026.png",
|
||||
"rotated": false,
|
||||
"trimmed": true,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 17,
|
||||
"y": 11,
|
||||
"w": 50,
|
||||
"h": 69
|
||||
},
|
||||
"frame": {
|
||||
"x": 0,
|
||||
"y": 138,
|
||||
"w": 50,
|
||||
"h": 69
|
||||
}
|
||||
},
|
||||
{
|
||||
"filename": "0002.png",
|
||||
"rotated": false,
|
||||
"trimmed": true,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 17,
|
||||
"y": 11,
|
||||
"w": 50,
|
||||
"h": 69
|
||||
},
|
||||
"frame": {
|
||||
"x": 50,
|
||||
"y": 138,
|
||||
"w": 50,
|
||||
"h": 69
|
||||
}
|
||||
},
|
||||
{
|
||||
"filename": "0003.png",
|
||||
"rotated": false,
|
||||
"trimmed": true,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 17,
|
||||
"y": 11,
|
||||
"w": 50,
|
||||
"h": 69
|
||||
},
|
||||
"frame": {
|
||||
"x": 50,
|
||||
"y": 138,
|
||||
"w": 50,
|
||||
"h": 69
|
||||
}
|
||||
},
|
||||
{
|
||||
"filename": "0016.png",
|
||||
"rotated": false,
|
||||
"trimmed": true,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 17,
|
||||
"y": 11,
|
||||
"w": 50,
|
||||
"h": 69
|
||||
},
|
||||
"frame": {
|
||||
"x": 51,
|
||||
"y": 69,
|
||||
"w": 50,
|
||||
"h": 69
|
||||
}
|
||||
},
|
||||
{
|
||||
"filename": "0017.png",
|
||||
"rotated": false,
|
||||
"trimmed": true,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 17,
|
||||
"y": 11,
|
||||
"w": 50,
|
||||
"h": 69
|
||||
},
|
||||
"frame": {
|
||||
"x": 54,
|
||||
"y": 0,
|
||||
"w": 47,
|
||||
"h": 72
|
||||
"w": 50,
|
||||
"h": 69
|
||||
}
|
||||
},
|
||||
{
|
||||
"filename": "0018.png",
|
||||
"rotated": false,
|
||||
"trimmed": true,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 17,
|
||||
"y": 11,
|
||||
"w": 50,
|
||||
"h": 69
|
||||
},
|
||||
"frame": {
|
||||
"x": 54,
|
||||
"y": 0,
|
||||
"w": 50,
|
||||
"h": 69
|
||||
}
|
||||
},
|
||||
{
|
||||
"filename": "0019.png",
|
||||
"rotated": false,
|
||||
"trimmed": true,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 18,
|
||||
"y": 11,
|
||||
"w": 49,
|
||||
"h": 69
|
||||
},
|
||||
"frame": {
|
||||
"x": 100,
|
||||
"y": 138,
|
||||
"w": 49,
|
||||
"h": 69
|
||||
}
|
||||
},
|
||||
{
|
||||
"filename": "0020.png",
|
||||
"rotated": false,
|
||||
"trimmed": true,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 18,
|
||||
"y": 11,
|
||||
"w": 49,
|
||||
"h": 69
|
||||
},
|
||||
"frame": {
|
||||
"x": 100,
|
||||
"y": 138,
|
||||
"w": 49,
|
||||
"h": 69
|
||||
}
|
||||
},
|
||||
{
|
||||
"filename": "0004.png",
|
||||
"rotated": false,
|
||||
"trimmed": true,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 14,
|
||||
"y": 13,
|
||||
"w": 52,
|
||||
"h": 67
|
||||
},
|
||||
"frame": {
|
||||
"x": 101,
|
||||
"y": 69,
|
||||
"w": 52,
|
||||
"h": 67
|
||||
}
|
||||
},
|
||||
{
|
||||
"filename": "0005.png",
|
||||
"rotated": false,
|
||||
"trimmed": true,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 14,
|
||||
"y": 13,
|
||||
"w": 52,
|
||||
"h": 67
|
||||
},
|
||||
"frame": {
|
||||
"x": 101,
|
||||
"y": 69,
|
||||
"w": 52,
|
||||
"h": 67
|
||||
}
|
||||
},
|
||||
{
|
||||
"filename": "0015.png",
|
||||
"rotated": false,
|
||||
"trimmed": true,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 14,
|
||||
"y": 13,
|
||||
"w": 52,
|
||||
"h": 67
|
||||
},
|
||||
"frame": {
|
||||
"x": 104,
|
||||
"y": 0,
|
||||
"w": 52,
|
||||
"h": 67
|
||||
}
|
||||
},
|
||||
{
|
||||
"filename": "0006.png",
|
||||
"rotated": false,
|
||||
"trimmed": true,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 12,
|
||||
"y": 15,
|
||||
"w": 53,
|
||||
"h": 65
|
||||
},
|
||||
"frame": {
|
||||
"x": 156,
|
||||
"y": 0,
|
||||
"w": 53,
|
||||
"h": 65
|
||||
}
|
||||
},
|
||||
{
|
||||
"filename": "0007.png",
|
||||
"rotated": false,
|
||||
"trimmed": true,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 12,
|
||||
"y": 15,
|
||||
"w": 53,
|
||||
"h": 65
|
||||
},
|
||||
"frame": {
|
||||
"x": 156,
|
||||
"y": 0,
|
||||
"w": 53,
|
||||
"h": 65
|
||||
}
|
||||
},
|
||||
{
|
||||
"filename": "0008.png",
|
||||
"rotated": false,
|
||||
"trimmed": true,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 12,
|
||||
"y": 15,
|
||||
"w": 53,
|
||||
"h": 65
|
||||
},
|
||||
"frame": {
|
||||
"x": 209,
|
||||
"y": 0,
|
||||
"w": 53,
|
||||
"h": 65
|
||||
}
|
||||
},
|
||||
{
|
||||
"filename": "0009.png",
|
||||
"rotated": false,
|
||||
"trimmed": true,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 12,
|
||||
"y": 15,
|
||||
"w": 53,
|
||||
"h": 65
|
||||
},
|
||||
"frame": {
|
||||
"x": 156,
|
||||
"y": 65,
|
||||
"w": 53,
|
||||
"h": 65
|
||||
}
|
||||
},
|
||||
{
|
||||
"filename": "0010.png",
|
||||
"rotated": false,
|
||||
"trimmed": true,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 12,
|
||||
"y": 15,
|
||||
"w": 53,
|
||||
"h": 65
|
||||
},
|
||||
"frame": {
|
||||
"x": 209,
|
||||
"y": 65,
|
||||
"w": 53,
|
||||
"h": 65
|
||||
}
|
||||
},
|
||||
{
|
||||
"filename": "0011.png",
|
||||
"rotated": false,
|
||||
"trimmed": true,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 12,
|
||||
"y": 15,
|
||||
"w": 53,
|
||||
"h": 65
|
||||
},
|
||||
"frame": {
|
||||
"x": 153,
|
||||
"y": 130,
|
||||
"w": 53,
|
||||
"h": 65
|
||||
}
|
||||
},
|
||||
{
|
||||
"filename": "0012.png",
|
||||
"rotated": false,
|
||||
"trimmed": true,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 12,
|
||||
"y": 15,
|
||||
"w": 53,
|
||||
"h": 65
|
||||
},
|
||||
"frame": {
|
||||
"x": 149,
|
||||
"y": 195,
|
||||
"w": 53,
|
||||
"h": 65
|
||||
}
|
||||
},
|
||||
{
|
||||
"filename": "0013.png",
|
||||
"rotated": false,
|
||||
"trimmed": true,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 12,
|
||||
"y": 15,
|
||||
"w": 53,
|
||||
"h": 65
|
||||
},
|
||||
"frame": {
|
||||
"x": 202,
|
||||
"y": 195,
|
||||
"w": 53,
|
||||
"h": 65
|
||||
}
|
||||
},
|
||||
{
|
||||
"filename": "0014.png",
|
||||
"rotated": false,
|
||||
"trimmed": true,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 12,
|
||||
"y": 15,
|
||||
"w": 53,
|
||||
"h": 65
|
||||
},
|
||||
"frame": {
|
||||
"x": 206,
|
||||
"y": 130,
|
||||
"w": 53,
|
||||
"h": 65
|
||||
}
|
||||
}
|
||||
]
|
||||
@ -36,6 +561,6 @@
|
||||
"meta": {
|
||||
"app": "https://www.codeandweb.com/texturepacker",
|
||||
"version": "3.0",
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:61f195ebbcde93ab7442408edad7fe7a:28ae203b3cb42a94c4ba4420fdebdccc:9ae0ee174d431d48052a2f6b74e9d40c$"
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:8e214218a81b826b2cecce3e41f6eee8:2b88638dcf4559e6aad7c14cd730b7c3:9ae0ee174d431d48052a2f6b74e9d40c$"
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 914 B After Width: | Height: | Size: 4.4 KiB |
@ -4,8 +4,8 @@
|
||||
"image": "plumeria.png",
|
||||
"format": "RGBA8888",
|
||||
"size": {
|
||||
"w": 72,
|
||||
"h": 72
|
||||
"w": 76,
|
||||
"h": 76
|
||||
},
|
||||
"scale": 1,
|
||||
"frames": [
|
||||
@ -14,20 +14,20 @@
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
"w": 40,
|
||||
"h": 76
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 23,
|
||||
"y": 7,
|
||||
"w": 36,
|
||||
"h": 72
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 40,
|
||||
"h": 76
|
||||
},
|
||||
"frame": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 36,
|
||||
"h": 72
|
||||
"w": 40,
|
||||
"h": 76
|
||||
}
|
||||
}
|
||||
]
|
||||
@ -36,6 +36,6 @@
|
||||
"meta": {
|
||||
"app": "https://www.codeandweb.com/texturepacker",
|
||||
"version": "3.0",
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:5527e7b646932d429928b53f055e9d27:c0640510780d2974f9b74a7f8e6b29aa:7bfec029bae78c9d483f59c35b73afad$"
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:d0e080a4dcc30b39616c49dfd96c98f7:47c6a714be68fabdf11801166e154db6:7bfec029bae78c9d483f59c35b73afad$"
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 934 B After Width: | Height: | Size: 835 B |
@ -4,8 +4,8 @@
|
||||
"image": "rose.png",
|
||||
"format": "RGBA8888",
|
||||
"size": {
|
||||
"w": 79,
|
||||
"h": 79
|
||||
"w": 77,
|
||||
"h": 77
|
||||
},
|
||||
"scale": 1,
|
||||
"frames": [
|
||||
@ -14,20 +14,20 @@
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
"w": 31,
|
||||
"h": 77
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 16,
|
||||
"y": 1,
|
||||
"w": 52,
|
||||
"h": 79
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 31,
|
||||
"h": 77
|
||||
},
|
||||
"frame": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 52,
|
||||
"h": 79
|
||||
"w": 31,
|
||||
"h": 77
|
||||
}
|
||||
}
|
||||
]
|
||||
@ -36,6 +36,6 @@
|
||||
"meta": {
|
||||
"app": "https://www.codeandweb.com/texturepacker",
|
||||
"version": "3.0",
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:2b4ccaff7255c7d72661eac13de83ff8:72ee3660cdf470bd67375d355307e19d:8d35b104fc841baa4443581e6cea979e$"
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:be2215e7232e2260242613e54c91c3c4:852fb3fda379db104106f8888649d9d5:8d35b104fc841baa4443581e6cea979e$"
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 750 B |
@ -4,8 +4,8 @@
|
||||
"image": "shelly.png",
|
||||
"format": "RGBA8888",
|
||||
"size": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
"w": 78,
|
||||
"h": 78
|
||||
},
|
||||
"scale": 1,
|
||||
"frames": [
|
||||
@ -14,20 +14,20 @@
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
"w": 45,
|
||||
"h": 78
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 80,
|
||||
"h": 80
|
||||
"w": 45,
|
||||
"h": 78
|
||||
},
|
||||
"frame": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 80,
|
||||
"h": 80
|
||||
"w": 45,
|
||||
"h": 78
|
||||
}
|
||||
}
|
||||
]
|
||||
@ -36,6 +36,6 @@
|
||||
"meta": {
|
||||
"app": "https://www.codeandweb.com/texturepacker",
|
||||
"version": "3.0",
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:831f5748dad92911b10a1cb358ee2dae:a3bf81bbaa3b49cad5e0e549cf94563b:bb6befc9383c9c08837183ae2a7a80c1$"
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:601dbcee82b14bde5072df26ddd7d684:a0d576e65d8e3ff549dde75f0a82bc94:a277ff67eb669e1dac57ad29940004ac$"
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 985 B After Width: | Height: | Size: 898 B |
@ -4,8 +4,8 @@
|
||||
"image": "skull_grunt_f.png",
|
||||
"format": "RGBA8888",
|
||||
"size": {
|
||||
"w": 74,
|
||||
"h": 74
|
||||
"w": 69,
|
||||
"h": 69
|
||||
},
|
||||
"scale": 1,
|
||||
"frames": [
|
||||
@ -14,20 +14,20 @@
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"sourceSize": {
|
||||
"w": 31,
|
||||
"h": 74
|
||||
"w": 44,
|
||||
"h": 69
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 31,
|
||||
"h": 74
|
||||
"w": 44,
|
||||
"h": 69
|
||||
},
|
||||
"frame": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 31,
|
||||
"h": 74
|
||||
"w": 44,
|
||||
"h": 69
|
||||
}
|
||||
}
|
||||
]
|
||||
@ -36,6 +36,6 @@
|
||||
"meta": {
|
||||
"app": "https://www.codeandweb.com/texturepacker",
|
||||
"version": "3.0",
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:71a1f5b1981674c6e81163ac8ea576c3:a5e612d58e5f0a1489e111212baea09d:dd369353af16e4c5eb6547e129dfac18$"
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:b9685517b9674887653c84a03f3781c0:894dcd88bf117d48750df82b7bfac644:9035f560a0ab0d45bcc084aba7172990$"
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 905 B After Width: | Height: | Size: 729 B |
@ -4,8 +4,8 @@
|
||||
"image": "skull_grunt_m.png",
|
||||
"format": "RGBA8888",
|
||||
"size": {
|
||||
"w": 72,
|
||||
"h": 72
|
||||
"w": 64,
|
||||
"h": 64
|
||||
},
|
||||
"scale": 1,
|
||||
"frames": [
|
||||
@ -14,20 +14,20 @@
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"sourceSize": {
|
||||
"w": 51,
|
||||
"h": 72
|
||||
"w": 39,
|
||||
"h": 64
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 51,
|
||||
"h": 72
|
||||
"w": 39,
|
||||
"h": 64
|
||||
},
|
||||
"frame": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 51,
|
||||
"h": 72
|
||||
"w": 39,
|
||||
"h": 64
|
||||
}
|
||||
}
|
||||
]
|
||||
@ -36,6 +36,6 @@
|
||||
"meta": {
|
||||
"app": "https://www.codeandweb.com/texturepacker",
|
||||
"version": "3.0",
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:4deb2a68e4d168bb1a40cb5d190a7d1f:be3d7b29f4b544ba51cf907691fef51d:df57ca2c9bf5f80d930306e15a851d4d$"
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:c39ac1d47c8cbe300cffe98bda48c590:b400e0c6286f0e20dfbc383f7453e35b:1ff10b395daf6ebfa377680a6404f816$"
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 966 B After Width: | Height: | Size: 700 B |
@ -14,12 +14,12 @@
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
"w": 30,
|
||||
"h": 68
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 24,
|
||||
"y": 11,
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 30,
|
||||
"h": 68
|
||||
},
|
||||
@ -36,6 +36,6 @@
|
||||
"meta": {
|
||||
"app": "https://www.codeandweb.com/texturepacker",
|
||||
"version": "3.0",
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:b542a1bdd6995584fc776f75d578b434:f03fddece4494ab59698002fe6671972:c6f0e54e24ec5ffaa711700431b1955e$"
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:a5493363086a57d0f145cf61c42475de:2e4d3b330bb89e05e93f34d605eee203:c6f0e54e24ec5ffaa711700431b1955e$"
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 756 B After Width: | Height: | Size: 936 B |
@ -4,8 +4,8 @@
|
||||
"image": "star_grunt_m.png",
|
||||
"format": "RGBA8888",
|
||||
"size": {
|
||||
"w": 70,
|
||||
"h": 70
|
||||
"w": 64,
|
||||
"h": 64
|
||||
},
|
||||
"scale": 1,
|
||||
"frames": [
|
||||
@ -14,20 +14,20 @@
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"sourceSize": {
|
||||
"w": 80,
|
||||
"h": 80
|
||||
"w": 36,
|
||||
"h": 64
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 24,
|
||||
"y": 9,
|
||||
"w": 31,
|
||||
"h": 70
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 36,
|
||||
"h": 64
|
||||
},
|
||||
"frame": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 31,
|
||||
"h": 70
|
||||
"w": 36,
|
||||
"h": 64
|
||||
}
|
||||
}
|
||||
]
|
||||
@ -36,6 +36,6 @@
|
||||
"meta": {
|
||||
"app": "https://www.codeandweb.com/texturepacker",
|
||||
"version": "3.0",
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:abc4b0424c37fd55a2bf2e9f5142adce:41a140aa68a1eda61d9a00cab4e07721:a0796711f9e0333796b6629cd43ff8e8$"
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:11da63c3829d44356a3c26d094212d64:45ebf021548ac0e12b6f25093c5bf0db:a0796711f9e0333796b6629cd43ff8e8$"
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 803 B After Width: | Height: | Size: 755 B |
@ -1 +1 @@
|
||||
Subproject commit 5ef993b95fa8248adc0fb7d9489baccf546bf8e3
|
||||
Subproject commit 2d3765a4f035b4916523bf75b754e153e9d65134
|
@ -11,8 +11,8 @@ export function initLoggedInUser(): void {
|
||||
loggedInUser = { username: "Guest", lastSessionSlot: -1, discordId: "", googleId: "", hasAdminRole: false };
|
||||
}
|
||||
|
||||
export function updateUserInfo(): Promise<[boolean, integer]> {
|
||||
return new Promise<[boolean, integer]>(resolve => {
|
||||
export function updateUserInfo(): Promise<[boolean, number]> {
|
||||
return new Promise<[boolean, number]>(resolve => {
|
||||
if (bypassLogin) {
|
||||
loggedInUser = { username: "Guest", lastSessionSlot: -1, discordId: "", googleId: "", hasAdminRole: false };
|
||||
let lastSessionSlot = -1;
|
||||
|
@ -118,7 +118,7 @@ export const bypassLogin = import.meta.env.VITE_BYPASS_LOGIN === "1";
|
||||
|
||||
const DEBUG_RNG = false;
|
||||
|
||||
const OPP_IVS_OVERRIDE_VALIDATED : integer[] = (
|
||||
const OPP_IVS_OVERRIDE_VALIDATED : number[] = (
|
||||
Array.isArray(Overrides.OPP_IVS_OVERRIDE) ?
|
||||
Overrides.OPP_IVS_OVERRIDE :
|
||||
new Array(6).fill(Overrides.OPP_IVS_OVERRIDE)
|
||||
@ -134,7 +134,7 @@ interface StarterColors {
|
||||
}
|
||||
|
||||
export interface PokeballCounts {
|
||||
[pb: string]: integer;
|
||||
[pb: string]: number;
|
||||
}
|
||||
|
||||
export type AnySound = Phaser.Sound.WebAudioSound | Phaser.Sound.HTML5AudioSound | Phaser.Sound.NoAudioSound;
|
||||
@ -149,15 +149,15 @@ export default class BattleScene extends SceneBase {
|
||||
public inputController: InputsController;
|
||||
public uiInputs: UiInputs;
|
||||
|
||||
public sessionPlayTime: integer | null = null;
|
||||
public lastSavePlayTime: integer | null = null;
|
||||
public sessionPlayTime: number | null = null;
|
||||
public lastSavePlayTime: number | null = null;
|
||||
public masterVolume: number = 0.5;
|
||||
public bgmVolume: number = 1;
|
||||
public fieldVolume: number = 1;
|
||||
public seVolume: number = 1;
|
||||
public uiVolume: number = 1;
|
||||
public gameSpeed: integer = 1;
|
||||
public damageNumbersMode: integer = 0;
|
||||
public gameSpeed: number = 1;
|
||||
public damageNumbersMode: number = 0;
|
||||
public reroll: boolean = false;
|
||||
public shopCursorTarget: number = ShopCursorTarget.REWARDS;
|
||||
public commandCursorMemory: boolean = false;
|
||||
@ -176,16 +176,16 @@ export default class BattleScene extends SceneBase {
|
||||
* - 1 = 'Passives Only'
|
||||
* - 2 = 'On'
|
||||
*/
|
||||
public candyUpgradeNotification: integer = 0;
|
||||
public candyUpgradeNotification: number = 0;
|
||||
/**
|
||||
* Determines what type of notification is used for Candy Upgrades
|
||||
* - 0 = 'Icon'
|
||||
* - 1 = 'Animation'
|
||||
*/
|
||||
public candyUpgradeDisplay: integer = 0;
|
||||
public candyUpgradeDisplay: number = 0;
|
||||
public moneyFormat: MoneyFormat = MoneyFormat.NORMAL;
|
||||
public uiTheme: UiTheme = UiTheme.DEFAULT;
|
||||
public windowType: integer = 0;
|
||||
public windowType: number = 0;
|
||||
public experimentalSprites: boolean = false;
|
||||
public musicPreference: number = MusicPreference.ALLGENS;
|
||||
public moveAnimations: boolean = true;
|
||||
@ -212,7 +212,7 @@ export default class BattleScene extends SceneBase {
|
||||
* @default 0 - Uses the default normal experience gain display.
|
||||
*/
|
||||
public expParty: ExpNotification = 0;
|
||||
public hpBarSpeed: integer = 0;
|
||||
public hpBarSpeed: number = 0;
|
||||
public fusionPaletteSwaps: boolean = true;
|
||||
public enableTouchControls: boolean = false;
|
||||
public enableVibration: boolean = false;
|
||||
@ -223,7 +223,7 @@ export default class BattleScene extends SceneBase {
|
||||
* - 0 = 'Switch'
|
||||
* - 1 = 'Set' - The option to switch the active pokemon at the start of a battle will not display.
|
||||
*/
|
||||
public battleStyle: integer = BattleStyle.SWITCH;
|
||||
public battleStyle: number = BattleStyle.SWITCH;
|
||||
|
||||
/**
|
||||
* Defines whether or not to show type effectiveness hints
|
||||
@ -235,7 +235,7 @@ export default class BattleScene extends SceneBase {
|
||||
public disableMenu: boolean = false;
|
||||
|
||||
public gameData: GameData;
|
||||
public sessionSlotId: integer;
|
||||
public sessionSlotId: number;
|
||||
|
||||
/** PhaseQueue: dequeue/remove the first element to get the next phase */
|
||||
public phaseQueue: Phase[];
|
||||
@ -244,7 +244,7 @@ export default class BattleScene extends SceneBase {
|
||||
private phaseQueuePrepend: Phase[];
|
||||
|
||||
/** overrides default of inserting phases to end of phaseQueuePrepend array, useful or inserting Phases "out of order" */
|
||||
private phaseQueuePrependSpliceIndex: integer;
|
||||
private phaseQueuePrependSpliceIndex: number;
|
||||
private nextCommandPhaseQueue: Phase[];
|
||||
|
||||
private currentPhase: Phase | null;
|
||||
@ -265,13 +265,13 @@ export default class BattleScene extends SceneBase {
|
||||
public arenaNextEnemy: ArenaBase;
|
||||
public arena: Arena;
|
||||
public gameMode: GameMode;
|
||||
public score: integer;
|
||||
public score: number;
|
||||
public lockModifierTiers: boolean;
|
||||
public trainer: Phaser.GameObjects.Sprite;
|
||||
public lastEnemyTrainer: Trainer | null;
|
||||
public currentBattle: Battle;
|
||||
public pokeballCounts: PokeballCounts;
|
||||
public money: integer;
|
||||
public money: number;
|
||||
public pokemonInfoContainer: PokemonInfoContainer;
|
||||
private party: PlayerPokemon[];
|
||||
/** Session save data that pertains to Mystery Encounters */
|
||||
@ -300,7 +300,7 @@ export default class BattleScene extends SceneBase {
|
||||
|
||||
public seed: string;
|
||||
public waveSeed: string;
|
||||
public waveCycleOffset: integer;
|
||||
public waveCycleOffset: number;
|
||||
public offsetGym: boolean;
|
||||
|
||||
public damageNumberHandler: DamageNumberHandler;
|
||||
@ -314,9 +314,9 @@ export default class BattleScene extends SceneBase {
|
||||
private bgmCache: Set<string> = new Set();
|
||||
private playTimeTimer: Phaser.Time.TimerEvent;
|
||||
|
||||
public rngCounter: integer = 0;
|
||||
public rngCounter: number = 0;
|
||||
public rngSeedOverride: string = "";
|
||||
public rngOffset: integer = 0;
|
||||
public rngOffset: number = 0;
|
||||
|
||||
public inputMethod: string;
|
||||
private infoToggles: InfoToggle[] = [];
|
||||
@ -717,7 +717,7 @@ export default class BattleScene extends SceneBase {
|
||||
const traverseVariantData = (keys: string[]) => {
|
||||
let variantTree = variantData;
|
||||
let expTree = expVariantData;
|
||||
keys.map((k: string, i: integer) => {
|
||||
keys.map((k: string, i: number) => {
|
||||
if (i < keys.length - 1) {
|
||||
variantTree = variantTree[k];
|
||||
expTree = expTree[k];
|
||||
@ -869,6 +869,12 @@ export default class BattleScene extends SceneBase {
|
||||
return party.slice(0, Math.min(party.length, this.currentBattle?.double ? 2 : 1));
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an array of Pokemon on both sides of the battle - player first, then enemy.
|
||||
* Does not actually check if the pokemon are on the field or not, and always has length 4 regardless of battle type.
|
||||
* @param activeOnly Whether to consider only active pokemon
|
||||
* @returns array of {@linkcode Pokemon}
|
||||
*/
|
||||
public getField(activeOnly: boolean = false): Pokemon[] {
|
||||
const ret = new Array(4).fill(null);
|
||||
const playerField = this.getPlayerField();
|
||||
@ -920,12 +926,12 @@ export default class BattleScene extends SceneBase {
|
||||
return activeOnly ? this.infoToggles.filter(t => t?.isActive()) : this.infoToggles;
|
||||
}
|
||||
|
||||
getPokemonById(pokemonId: integer): Pokemon | null {
|
||||
getPokemonById(pokemonId: number): Pokemon | null {
|
||||
const findInParty = (party: Pokemon[]) => party.find(p => p.id === pokemonId);
|
||||
return (findInParty(this.getPlayerParty()) || findInParty(this.getEnemyParty())) ?? null;
|
||||
}
|
||||
|
||||
addPlayerPokemon(species: PokemonSpecies, level: integer, abilityIndex?: integer, formIndex?: integer, gender?: Gender, shiny?: boolean, variant?: Variant, ivs?: integer[], nature?: Nature, dataSource?: Pokemon | PokemonData, postProcess?: (playerPokemon: PlayerPokemon) => void): PlayerPokemon {
|
||||
addPlayerPokemon(species: PokemonSpecies, level: number, abilityIndex?: number, formIndex?: number, gender?: Gender, shiny?: boolean, variant?: Variant, ivs?: number[], nature?: Nature, dataSource?: Pokemon | PokemonData, postProcess?: (playerPokemon: PlayerPokemon) => void): PlayerPokemon {
|
||||
const pokemon = new PlayerPokemon(species, level, abilityIndex, formIndex, gender, shiny, variant, ivs, nature, dataSource);
|
||||
if (postProcess) {
|
||||
postProcess(pokemon);
|
||||
@ -934,7 +940,7 @@ export default class BattleScene extends SceneBase {
|
||||
return pokemon;
|
||||
}
|
||||
|
||||
addEnemyPokemon(species: PokemonSpecies, level: integer, trainerSlot: TrainerSlot, boss: boolean = false, shinyLock: boolean = false, dataSource?: PokemonData, postProcess?: (enemyPokemon: EnemyPokemon) => void): EnemyPokemon {
|
||||
addEnemyPokemon(species: PokemonSpecies, level: number, trainerSlot: TrainerSlot, boss: boolean = false, shinyLock: boolean = false, dataSource?: PokemonData, postProcess?: (enemyPokemon: EnemyPokemon) => void): EnemyPokemon {
|
||||
if (Overrides.OPP_LEVEL_OVERRIDE > 0) {
|
||||
level = Overrides.OPP_LEVEL_OVERRIDE;
|
||||
}
|
||||
@ -1086,7 +1092,7 @@ export default class BattleScene extends SceneBase {
|
||||
* @param min The minimum integer to pick, default `0`
|
||||
* @returns A random integer between {@linkcode min} and ({@linkcode min} + {@linkcode range} - 1)
|
||||
*/
|
||||
randBattleSeedInt(range: integer, min: integer = 0): integer {
|
||||
randBattleSeedInt(range: number, min: number = 0): number {
|
||||
return this.currentBattle?.randSeedInt(range, min);
|
||||
}
|
||||
|
||||
@ -1211,7 +1217,7 @@ export default class BattleScene extends SceneBase {
|
||||
return Math.max(doubleChance.value, 1);
|
||||
}
|
||||
|
||||
newBattle(waveIndex?: integer, battleType?: BattleType, trainerData?: TrainerData, double?: boolean, mysteryEncounterType?: MysteryEncounterType): Battle | null {
|
||||
newBattle(waveIndex?: number, battleType?: BattleType, trainerData?: TrainerData, double?: boolean, mysteryEncounterType?: MysteryEncounterType): Battle | null {
|
||||
const _startingWave = Overrides.STARTING_WAVE_OVERRIDE || startingWave;
|
||||
const newWaveIndex = waveIndex || ((this.currentBattle?.waveIndex || (_startingWave - 1)) + 1);
|
||||
let newDouble: boolean | undefined;
|
||||
@ -1437,7 +1443,7 @@ export default class BattleScene extends SceneBase {
|
||||
});
|
||||
}
|
||||
|
||||
getSpeciesFormIndex(species: PokemonSpecies, gender?: Gender, nature?: Nature, ignoreArena?: boolean): integer {
|
||||
getSpeciesFormIndex(species: PokemonSpecies, gender?: Gender, nature?: Nature, ignoreArena?: boolean): number {
|
||||
if (!species.forms?.length) {
|
||||
return 0;
|
||||
}
|
||||
@ -1484,6 +1490,8 @@ export default class BattleScene extends SceneBase {
|
||||
return 0; // Don't give trainers Battle Bond Greninja
|
||||
}
|
||||
return Utils.randSeedInt(2);
|
||||
case Species.URSHIFU:
|
||||
return Utils.randSeedInt(2);
|
||||
case Species.ZYGARDE:
|
||||
return Utils.randSeedInt(4);
|
||||
case Species.MINIOR:
|
||||
@ -1532,7 +1540,7 @@ export default class BattleScene extends SceneBase {
|
||||
return ret;
|
||||
}
|
||||
|
||||
private getGeneratedWaveCycleOffset(): integer {
|
||||
private getGeneratedWaveCycleOffset(): number {
|
||||
let ret = 0;
|
||||
this.executeWithSeedOffset(() => {
|
||||
ret = Utils.randSeedInt(8) * 5;
|
||||
@ -1540,7 +1548,7 @@ export default class BattleScene extends SceneBase {
|
||||
return ret;
|
||||
}
|
||||
|
||||
getEncounterBossSegments(waveIndex: integer, level: integer, species?: PokemonSpecies, forceBoss: boolean = false): integer {
|
||||
getEncounterBossSegments(waveIndex: number, level: number, species?: PokemonSpecies, forceBoss: boolean = false): number {
|
||||
if (Overrides.OPP_HEALTH_SEGMENTS_OVERRIDE > 1) {
|
||||
return Overrides.OPP_HEALTH_SEGMENTS_OVERRIDE;
|
||||
} else if (Overrides.OPP_HEALTH_SEGMENTS_OVERRIDE === 1) {
|
||||
@ -1564,7 +1572,7 @@ export default class BattleScene extends SceneBase {
|
||||
return 0;
|
||||
}
|
||||
|
||||
let ret: integer = 2;
|
||||
let ret: number = 2;
|
||||
|
||||
if (level >= 100) {
|
||||
ret++;
|
||||
@ -1581,7 +1589,7 @@ export default class BattleScene extends SceneBase {
|
||||
|
||||
trySpreadPokerus(): void {
|
||||
const party = this.getPlayerParty();
|
||||
const infectedIndexes: integer[] = [];
|
||||
const infectedIndexes: number[] = [];
|
||||
const spread = (index: number, spreadTo: number) => {
|
||||
const partyMember = party[index + spreadTo];
|
||||
if (!partyMember.pokerus && !Utils.randSeedInt(10)) {
|
||||
@ -1605,7 +1613,7 @@ export default class BattleScene extends SceneBase {
|
||||
});
|
||||
}
|
||||
|
||||
resetSeed(waveIndex?: integer): void {
|
||||
resetSeed(waveIndex?: number): void {
|
||||
const wave = waveIndex || this.currentBattle?.waveIndex || 0;
|
||||
this.waveSeed = Utils.shiftCharCodes(this.seed, wave);
|
||||
Phaser.Math.RND.sow([ this.waveSeed ]);
|
||||
@ -1613,7 +1621,7 @@ export default class BattleScene extends SceneBase {
|
||||
this.rngCounter = 0;
|
||||
}
|
||||
|
||||
executeWithSeedOffset(func: Function, offset: integer, seedOverride?: string): void {
|
||||
executeWithSeedOffset(func: Function, offset: number, seedOverride?: string): void {
|
||||
if (!func) {
|
||||
return;
|
||||
}
|
||||
@ -1661,7 +1669,7 @@ export default class BattleScene extends SceneBase {
|
||||
this.arenaFlyout.toggleFlyout(pressed);
|
||||
}
|
||||
|
||||
showFieldOverlay(duration: integer): Promise<void> {
|
||||
showFieldOverlay(duration: number): Promise<void> {
|
||||
return new Promise(resolve => {
|
||||
this.tweens.add({
|
||||
targets: this.fieldOverlay,
|
||||
@ -1673,7 +1681,7 @@ export default class BattleScene extends SceneBase {
|
||||
});
|
||||
}
|
||||
|
||||
hideFieldOverlay(duration: integer): Promise<void> {
|
||||
hideFieldOverlay(duration: number): Promise<void> {
|
||||
return new Promise(resolve => {
|
||||
this.tweens.add({
|
||||
targets: this.fieldOverlay,
|
||||
@ -1693,7 +1701,7 @@ export default class BattleScene extends SceneBase {
|
||||
}
|
||||
}
|
||||
|
||||
showShopOverlay(duration: integer): Promise<void> {
|
||||
showShopOverlay(duration: number): Promise<void> {
|
||||
this.shopOverlayShown = true;
|
||||
return new Promise(resolve => {
|
||||
this.tweens.add({
|
||||
@ -1706,7 +1714,7 @@ export default class BattleScene extends SceneBase {
|
||||
});
|
||||
}
|
||||
|
||||
hideShopOverlay(duration: integer): Promise<void> {
|
||||
hideShopOverlay(duration: number): Promise<void> {
|
||||
this.shopOverlayShown = false;
|
||||
return new Promise(resolve => {
|
||||
this.tweens.add({
|
||||
@ -1795,7 +1803,7 @@ export default class BattleScene extends SceneBase {
|
||||
});
|
||||
}
|
||||
|
||||
hideLuckText(duration: integer): void {
|
||||
hideLuckText(duration: number): void {
|
||||
if (this.reroll) {
|
||||
return;
|
||||
}
|
||||
@ -1835,7 +1843,7 @@ export default class BattleScene extends SceneBase {
|
||||
}
|
||||
|
||||
addFaintedEnemyScore(enemy: EnemyPokemon): void {
|
||||
let scoreIncrease = enemy.getSpeciesForm().getBaseExp() * (enemy.level / this.getMaxExpLevel()) * ((enemy.ivs.reduce((iv: integer, total: integer) => total += iv, 0) / 93) * 0.2 + 0.8);
|
||||
let scoreIncrease = enemy.getSpeciesForm().getBaseExp() * (enemy.level / this.getMaxExpLevel()) * ((enemy.ivs.reduce((iv: number, total: number) => total += iv, 0) / 93) * 0.2 + 0.8);
|
||||
this.findModifiers(m => m instanceof PokemonHeldItemModifier && m.pokemonId === enemy.id, false).map(m => scoreIncrease *= (m as PokemonHeldItemModifier).getScoreMultiplier());
|
||||
if (enemy.isBoss()) {
|
||||
scoreIncrease *= Math.sqrt(enemy.bossSegments);
|
||||
@ -1843,7 +1851,7 @@ export default class BattleScene extends SceneBase {
|
||||
this.currentBattle.battleScore += Math.ceil(scoreIncrease);
|
||||
}
|
||||
|
||||
getMaxExpLevel(ignoreLevelCap: boolean = false): integer {
|
||||
getMaxExpLevel(ignoreLevelCap: boolean = false): number {
|
||||
if (Overrides.LEVEL_CAP_OVERRIDE > 0) {
|
||||
return Overrides.LEVEL_CAP_OVERRIDE;
|
||||
} else if (ignoreLevelCap || Overrides.LEVEL_CAP_OVERRIDE < 0) {
|
||||
@ -1855,7 +1863,7 @@ export default class BattleScene extends SceneBase {
|
||||
return Math.ceil(baseLevel / 2) * 2 + 2;
|
||||
}
|
||||
|
||||
randomSpecies(waveIndex: integer, level: integer, fromArenaPool?: boolean, speciesFilter?: PokemonSpeciesFilter, filterAllEvolutions?: boolean): PokemonSpecies {
|
||||
randomSpecies(waveIndex: number, level: number, fromArenaPool?: boolean, speciesFilter?: PokemonSpeciesFilter, filterAllEvolutions?: boolean): PokemonSpecies {
|
||||
if (fromArenaPool) {
|
||||
return this.arena.randomSpecies(waveIndex, level, undefined, getPartyLuckValue(this.party));
|
||||
}
|
||||
@ -1870,13 +1878,13 @@ export default class BattleScene extends SceneBase {
|
||||
return filteredSpecies[Utils.randSeedInt(filteredSpecies.length)];
|
||||
}
|
||||
|
||||
generateRandomBiome(waveIndex: integer): Biome {
|
||||
generateRandomBiome(waveIndex: number): Biome {
|
||||
const relWave = waveIndex % 250;
|
||||
const biomes = Utils.getEnumValues(Biome).filter(b => b !== Biome.TOWN && b !== Biome.END);
|
||||
const maxDepth = biomeDepths[Biome.END][0] - 2;
|
||||
const depthWeights = new Array(maxDepth + 1).fill(null)
|
||||
.map((_, i: integer) => ((1 - Math.min(Math.abs((i / (maxDepth - 1)) - (relWave / 250)) + 0.25, 1)) / 0.75) * 250);
|
||||
const biomeThresholds: integer[] = [];
|
||||
.map((_, i: number) => ((1 - Math.min(Math.abs((i / (maxDepth - 1)) - (relWave / 250)) + 0.25, 1)) / 0.75) * 250);
|
||||
const biomeThresholds: number[] = [];
|
||||
let totalWeight = 0;
|
||||
for (const biome of biomes) {
|
||||
totalWeight += Math.ceil(depthWeights[biomeDepths[biome][0] - 1] / biomeDepths[biome][1]);
|
||||
@ -2000,7 +2008,7 @@ export default class BattleScene extends SceneBase {
|
||||
}
|
||||
}
|
||||
|
||||
fadeOutBgm(duration: integer = 500, destroy: boolean = true): boolean {
|
||||
fadeOutBgm(duration: number = 500, destroy: boolean = true): boolean {
|
||||
if (!this.bgm) {
|
||||
return false;
|
||||
}
|
||||
@ -2067,7 +2075,7 @@ export default class BattleScene extends SceneBase {
|
||||
}
|
||||
}
|
||||
|
||||
playSoundWithoutBgm(soundName: string, pauseDuration?: integer): AnySound {
|
||||
playSoundWithoutBgm(soundName: string, pauseDuration?: number): AnySound {
|
||||
this.bgmCache.add(soundName);
|
||||
const resumeBgm = this.pauseBgm();
|
||||
this.playSound(soundName);
|
||||
@ -2084,8 +2092,11 @@ export default class BattleScene extends SceneBase {
|
||||
return sound;
|
||||
}
|
||||
|
||||
/** The loop point of any given battle, mystery encounter, or title track, read as seconds and milliseconds. */
|
||||
getBgmLoopPoint(bgmName: string): number {
|
||||
switch (bgmName) {
|
||||
case "title": //Firel PokéRogue Title
|
||||
return 46.500;
|
||||
case "battle_kanto_champion": //B2W2 Kanto Champion Battle
|
||||
return 13.950;
|
||||
case "battle_johto_champion": //B2W2 Johto Champion Battle
|
||||
@ -2102,10 +2113,14 @@ export default class BattleScene extends SceneBase {
|
||||
return 10.145;
|
||||
case "battle_kalos_champion": //XY Kalos Champion Battle
|
||||
return 10.380;
|
||||
case "battle_champion_kukui": //SM Kukui Battle
|
||||
return 15.784;
|
||||
case "battle_alola_champion": //USUM Alola Champion Battle
|
||||
return 13.025;
|
||||
case "battle_galar_champion": //SWSH Galar Champion Battle
|
||||
return 61.635;
|
||||
case "battle_mustard": //SWSH Mustard Battle
|
||||
return 22.442;
|
||||
case "battle_champion_geeta": //SV Champion Geeta Battle
|
||||
return 37.447;
|
||||
case "battle_champion_nemona": //SV Champion Nemona Battle
|
||||
@ -2240,8 +2255,8 @@ export default class BattleScene extends SceneBase {
|
||||
return 12.062;
|
||||
case "battle_galactic_grunt": //BDSP Team Galactic Battle
|
||||
return 13.043;
|
||||
case "battle_plasma_grunt": //BW Team Plasma Battle
|
||||
return 12.974;
|
||||
case "battle_plasma_grunt": //B2W2 Team Plasma Battle
|
||||
return 14.758;
|
||||
case "battle_flare_grunt": //XY Team Flare Battle
|
||||
return 4.228;
|
||||
case "battle_aether_grunt": // SM Aether Foundation Battle
|
||||
@ -2254,6 +2269,8 @@ export default class BattleScene extends SceneBase {
|
||||
return 133.362;
|
||||
case "battle_galactic_admin": //BDSP Team Galactic Admin Battle
|
||||
return 11.997;
|
||||
case "battle_colress": //B2W2 Colress Battle
|
||||
return 12.234;
|
||||
case "battle_skull_admin": //SM Team Skull Admin Battle
|
||||
return 15.463;
|
||||
case "battle_oleana": //SWSH Oleana Battle
|
||||
@ -2518,7 +2535,7 @@ export default class BattleScene extends SceneBase {
|
||||
* @param promptDelay optional param for MessagePhase constructor
|
||||
* @param defer boolean for which queue to add it to, false -> add to PhaseQueuePrepend, true -> nextCommandPhaseQueue
|
||||
*/
|
||||
queueMessage(message: string, callbackDelay?: integer | null, prompt?: boolean | null, promptDelay?: integer | null, defer?: boolean | null) {
|
||||
queueMessage(message: string, callbackDelay?: number | null, prompt?: boolean | null, promptDelay?: number | null, defer?: boolean | null) {
|
||||
const phase = new MessagePhase(message, callbackDelay, prompt, promptDelay);
|
||||
if (!defer) {
|
||||
// adds to the end of PhaseQueuePrepend
|
||||
@ -2540,14 +2557,14 @@ export default class BattleScene extends SceneBase {
|
||||
this.phaseQueue.push(new TurnInitPhase());
|
||||
}
|
||||
|
||||
addMoney(amount: integer): void {
|
||||
addMoney(amount: number): void {
|
||||
this.money = Math.min(this.money + amount, Number.MAX_SAFE_INTEGER);
|
||||
this.updateMoneyText();
|
||||
this.animateMoneyChanged(true);
|
||||
this.validateAchvs(MoneyAchv);
|
||||
}
|
||||
|
||||
getWaveMoneyAmount(moneyMultiplier: number): integer {
|
||||
getWaveMoneyAmount(moneyMultiplier: number): number {
|
||||
const waveIndex = this.currentBattle.waveIndex;
|
||||
const waveSetIndex = Math.ceil(waveIndex / 10) - 1;
|
||||
const moneyValue = Math.pow((waveSetIndex + 1 + (0.75 + (((waveIndex - 1) % 10) + 1) / 10)) * 100, 1 + 0.005 * waveSetIndex) * moneyMultiplier;
|
||||
@ -2744,7 +2761,7 @@ export default class BattleScene extends SceneBase {
|
||||
});
|
||||
}
|
||||
|
||||
removePartyMemberModifiers(partyMemberIndex: integer): Promise<void> {
|
||||
removePartyMemberModifiers(partyMemberIndex: number): Promise<void> {
|
||||
return new Promise(resolve => {
|
||||
const pokemonId = this.getPlayerParty()[partyMemberIndex].id;
|
||||
const modifiersToRemove = this.modifiers.filter(m => m instanceof PokemonHeldItemModifier && (m as PokemonHeldItemModifier).pokemonId === pokemonId);
|
||||
@ -2776,7 +2793,7 @@ export default class BattleScene extends SceneBase {
|
||||
}
|
||||
}
|
||||
|
||||
party.forEach((enemyPokemon: EnemyPokemon, i: integer) => {
|
||||
party.forEach((enemyPokemon: EnemyPokemon, i: number) => {
|
||||
if (heldModifiersConfigs && i < heldModifiersConfigs.length && heldModifiersConfigs[i]) {
|
||||
heldModifiersConfigs[i].forEach(mt => {
|
||||
let modifier: PokemonHeldItemModifier;
|
||||
|
@ -578,14 +578,14 @@ export const classicFixedBattles: FixedBattleConfigs = {
|
||||
[ClassicFixedBossWaves.EVIL_GRUNT_3]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(ClassicFixedBossWaves.EVIL_GRUNT_1)
|
||||
.setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.ROCKET_GRUNT, TrainerType.MAGMA_GRUNT, TrainerType.AQUA_GRUNT, TrainerType.GALACTIC_GRUNT, TrainerType.PLASMA_GRUNT, TrainerType.FLARE_GRUNT, TrainerType.AETHER_GRUNT, TrainerType.SKULL_GRUNT, TrainerType.MACRO_GRUNT, TrainerType.STAR_GRUNT ], true)),
|
||||
[ClassicFixedBossWaves.EVIL_ADMIN_1]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(ClassicFixedBossWaves.EVIL_GRUNT_1)
|
||||
.setGetTrainerFunc(getRandomTrainerFunc([[ TrainerType.ARCHER, TrainerType.ARIANA, TrainerType.PROTON, TrainerType.PETREL ], [ TrainerType.TABITHA, TrainerType.COURTNEY ], [ TrainerType.MATT, TrainerType.SHELLY ], [ TrainerType.JUPITER, TrainerType.MARS, TrainerType.SATURN ], [ TrainerType.ZINZOLIN, TrainerType.ROOD ], [ TrainerType.XEROSIC, TrainerType.BRYONY ], TrainerType.FABA, TrainerType.PLUMERIA, TrainerType.OLEANA, [ TrainerType.GIACOMO, TrainerType.MELA, TrainerType.ATTICUS, TrainerType.ORTEGA, TrainerType.ERI ]], true)),
|
||||
.setGetTrainerFunc(getRandomTrainerFunc([[ TrainerType.ARCHER, TrainerType.ARIANA, TrainerType.PROTON, TrainerType.PETREL ], [ TrainerType.TABITHA, TrainerType.COURTNEY ], [ TrainerType.MATT, TrainerType.SHELLY ], [ TrainerType.JUPITER, TrainerType.MARS, TrainerType.SATURN ], [ TrainerType.ZINZOLIN, TrainerType.COLRESS ], [ TrainerType.XEROSIC, TrainerType.BRYONY ], TrainerType.FABA, TrainerType.PLUMERIA, TrainerType.OLEANA, [ TrainerType.GIACOMO, TrainerType.MELA, TrainerType.ATTICUS, TrainerType.ORTEGA, TrainerType.ERI ]], true)),
|
||||
[ClassicFixedBossWaves.RIVAL_4]: new FixedBattleConfig().setBattleType(BattleType.TRAINER)
|
||||
.setGetTrainerFunc(() => new Trainer(TrainerType.RIVAL_4, globalScene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT))
|
||||
.setCustomModifierRewards({ guaranteedModifierTiers: [ ModifierTier.ULTRA, ModifierTier.ULTRA, ModifierTier.ULTRA, ModifierTier.ULTRA ], allowLuckUpgrades: false }),
|
||||
[ClassicFixedBossWaves.EVIL_GRUNT_4]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(ClassicFixedBossWaves.EVIL_GRUNT_1)
|
||||
.setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.ROCKET_GRUNT, TrainerType.MAGMA_GRUNT, TrainerType.AQUA_GRUNT, TrainerType.GALACTIC_GRUNT, TrainerType.PLASMA_GRUNT, TrainerType.FLARE_GRUNT, TrainerType.AETHER_GRUNT, TrainerType.SKULL_GRUNT, TrainerType.MACRO_GRUNT, TrainerType.STAR_GRUNT ], true)),
|
||||
[ClassicFixedBossWaves.EVIL_ADMIN_2]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(ClassicFixedBossWaves.EVIL_GRUNT_1)
|
||||
.setGetTrainerFunc(getRandomTrainerFunc([[ TrainerType.ARCHER, TrainerType.ARIANA, TrainerType.PROTON, TrainerType.PETREL ], [ TrainerType.TABITHA, TrainerType.COURTNEY ], [ TrainerType.MATT, TrainerType.SHELLY ], [ TrainerType.JUPITER, TrainerType.MARS, TrainerType.SATURN ], [ TrainerType.ZINZOLIN, TrainerType.ROOD ], [ TrainerType.XEROSIC, TrainerType.BRYONY ], TrainerType.FABA, TrainerType.PLUMERIA, TrainerType.OLEANA, [ TrainerType.GIACOMO, TrainerType.MELA, TrainerType.ATTICUS, TrainerType.ORTEGA, TrainerType.ERI ]], true, 1)),
|
||||
.setGetTrainerFunc(getRandomTrainerFunc([[ TrainerType.ARCHER, TrainerType.ARIANA, TrainerType.PROTON, TrainerType.PETREL ], [ TrainerType.TABITHA, TrainerType.COURTNEY ], [ TrainerType.MATT, TrainerType.SHELLY ], [ TrainerType.JUPITER, TrainerType.MARS, TrainerType.SATURN ], [ TrainerType.ZINZOLIN, TrainerType.COLRESS ], [ TrainerType.XEROSIC, TrainerType.BRYONY ], TrainerType.FABA, TrainerType.PLUMERIA, TrainerType.OLEANA, [ TrainerType.GIACOMO, TrainerType.MELA, TrainerType.ATTICUS, TrainerType.ORTEGA, TrainerType.ERI ]], true, 1)),
|
||||
[ClassicFixedBossWaves.EVIL_BOSS_1]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(ClassicFixedBossWaves.EVIL_GRUNT_1)
|
||||
.setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.ROCKET_BOSS_GIOVANNI_1, TrainerType.MAXIE, TrainerType.ARCHIE, TrainerType.CYRUS, TrainerType.GHETSIS, TrainerType.LYSANDRE, TrainerType.LUSAMINE, TrainerType.GUZMA, TrainerType.ROSE, TrainerType.PENNY ]))
|
||||
.setCustomModifierRewards({ guaranteedModifierTiers: [ ModifierTier.ROGUE, ModifierTier.ROGUE, ModifierTier.ULTRA, ModifierTier.ULTRA, ModifierTier.ULTRA ], allowLuckUpgrades: false }),
|
||||
@ -604,7 +604,7 @@ export const classicFixedBattles: FixedBattleConfigs = {
|
||||
[ClassicFixedBossWaves.ELITE_FOUR_4]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(ClassicFixedBossWaves.ELITE_FOUR_1)
|
||||
.setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.LANCE, TrainerType.KAREN, TrainerType.DRAKE, TrainerType.LUCIAN, TrainerType.CAITLIN, TrainerType.DRASNA, TrainerType.KAHILI, TrainerType.RAIHAN_ELITE, TrainerType.HASSEL, TrainerType.DRAYTON ])),
|
||||
[ClassicFixedBossWaves.CHAMPION]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(ClassicFixedBossWaves.ELITE_FOUR_1)
|
||||
.setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.BLUE, [ TrainerType.RED, TrainerType.LANCE_CHAMPION ], [ TrainerType.STEVEN, TrainerType.WALLACE ], TrainerType.CYNTHIA, [ TrainerType.ALDER, TrainerType.IRIS ], TrainerType.DIANTHA, TrainerType.HAU, TrainerType.LEON, [ TrainerType.GEETA, TrainerType.NEMONA ], TrainerType.KIERAN ])),
|
||||
.setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.BLUE, [ TrainerType.RED, TrainerType.LANCE_CHAMPION ], [ TrainerType.STEVEN, TrainerType.WALLACE ], TrainerType.CYNTHIA, [ TrainerType.ALDER, TrainerType.IRIS ], TrainerType.DIANTHA, [ TrainerType.KUKUI, TrainerType.HAU ], [ TrainerType.LEON, TrainerType.MUSTARD ], [ TrainerType.GEETA, TrainerType.NEMONA ], TrainerType.KIERAN ])),
|
||||
[ClassicFixedBossWaves.RIVAL_6]: new FixedBattleConfig().setBattleType(BattleType.TRAINER)
|
||||
.setGetTrainerFunc(() => new Trainer(TrainerType.RIVAL_6, globalScene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT))
|
||||
.setCustomModifierRewards({ guaranteedModifierTiers: [ ModifierTier.ROGUE, ModifierTier.ROGUE, ModifierTier.ULTRA, ModifierTier.ULTRA, ModifierTier.GREAT, ModifierTier.GREAT ], allowLuckUpgrades: false })
|
||||
|
@ -51,13 +51,13 @@ export class Ability implements Localizable {
|
||||
private nameAppend: string;
|
||||
public name: string;
|
||||
public description: string;
|
||||
public generation: integer;
|
||||
public generation: number;
|
||||
public isBypassFaint: boolean;
|
||||
public isIgnorable: boolean;
|
||||
public attrs: AbAttr[];
|
||||
public conditions: AbAttrCondition[];
|
||||
|
||||
constructor(id: Abilities, generation: integer) {
|
||||
constructor(id: Abilities, generation: number) {
|
||||
this.id = id;
|
||||
|
||||
this.nameAppend = "";
|
||||
@ -221,9 +221,9 @@ export class PostBattleInitAbAttr extends AbAttr {
|
||||
}
|
||||
|
||||
export class PostBattleInitFormChangeAbAttr extends PostBattleInitAbAttr {
|
||||
private formFunc: (p: Pokemon) => integer;
|
||||
private formFunc: (p: Pokemon) => number;
|
||||
|
||||
constructor(formFunc: ((p: Pokemon) => integer)) {
|
||||
constructor(formFunc: ((p: Pokemon) => number)) {
|
||||
super(true);
|
||||
|
||||
this.formFunc = formFunc;
|
||||
@ -491,9 +491,9 @@ class TypeImmunityStatStageChangeAbAttr extends TypeImmunityAbAttr {
|
||||
|
||||
class TypeImmunityAddBattlerTagAbAttr extends TypeImmunityAbAttr {
|
||||
private tagType: BattlerTagType;
|
||||
private turnCount: integer;
|
||||
private turnCount: number;
|
||||
|
||||
constructor(immuneType: Type, tagType: BattlerTagType, turnCount: integer, condition?: AbAttrCondition) {
|
||||
constructor(immuneType: Type, tagType: BattlerTagType, turnCount: number, condition?: AbAttrCondition) {
|
||||
super(immuneType, condition);
|
||||
|
||||
this.tagType = tagType;
|
||||
@ -605,7 +605,7 @@ export class FieldPriorityMoveImmunityAbAttr extends PreDefendAbAttr {
|
||||
}
|
||||
|
||||
export class PostStatStageChangeAbAttr extends AbAttr {
|
||||
applyPostStatStageChange(pokemon: Pokemon, simulated: boolean, statsChanged: BattleStat[], stagesChanged: integer, selfTarget: boolean, args: any[]): boolean | Promise<boolean> {
|
||||
applyPostStatStageChange(pokemon: Pokemon, simulated: boolean, statsChanged: BattleStat[], stagesChanged: number, selfTarget: boolean, args: any[]): boolean | Promise<boolean> {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -866,10 +866,10 @@ export class PostDefendTerrainChangeAbAttr extends PostDefendAbAttr {
|
||||
}
|
||||
|
||||
export class PostDefendContactApplyStatusEffectAbAttr extends PostDefendAbAttr {
|
||||
public chance: integer;
|
||||
public chance: number;
|
||||
private effects: StatusEffect[];
|
||||
|
||||
constructor(chance: integer, ...effects: StatusEffect[]) {
|
||||
constructor(chance: number, ...effects: StatusEffect[]) {
|
||||
super();
|
||||
|
||||
this.chance = chance;
|
||||
@ -905,11 +905,11 @@ export class EffectSporeAbAttr extends PostDefendContactApplyStatusEffectAbAttr
|
||||
}
|
||||
|
||||
export class PostDefendContactApplyTagChanceAbAttr extends PostDefendAbAttr {
|
||||
private chance: integer;
|
||||
private chance: number;
|
||||
private tagType: BattlerTagType;
|
||||
private turnCount: integer | undefined;
|
||||
private turnCount: number | undefined;
|
||||
|
||||
constructor(chance: integer, tagType: BattlerTagType, turnCount?: integer) {
|
||||
constructor(chance: number, tagType: BattlerTagType, turnCount?: number) {
|
||||
super();
|
||||
|
||||
this.tagType = tagType;
|
||||
@ -959,9 +959,9 @@ export class PostDefendCritStatStageChangeAbAttr extends PostDefendAbAttr {
|
||||
}
|
||||
|
||||
export class PostDefendContactDamageAbAttr extends PostDefendAbAttr {
|
||||
private damageRatio: integer;
|
||||
private damageRatio: number;
|
||||
|
||||
constructor(damageRatio: integer) {
|
||||
constructor(damageRatio: number) {
|
||||
super();
|
||||
|
||||
this.damageRatio = damageRatio;
|
||||
@ -993,9 +993,9 @@ export class PostDefendContactDamageAbAttr extends PostDefendAbAttr {
|
||||
* @extends {PostDefendAbAttr}
|
||||
*/
|
||||
export class PostDefendPerishSongAbAttr extends PostDefendAbAttr {
|
||||
private turns: integer;
|
||||
private turns: number;
|
||||
|
||||
constructor(turns: integer) {
|
||||
constructor(turns: number) {
|
||||
super();
|
||||
|
||||
this.turns = turns;
|
||||
@ -1101,11 +1101,11 @@ export class PostDefendAbilityGiveAbAttr extends PostDefendAbAttr {
|
||||
}
|
||||
|
||||
export class PostDefendMoveDisableAbAttr extends PostDefendAbAttr {
|
||||
private chance: integer;
|
||||
private chance: number;
|
||||
private attacker: Pokemon;
|
||||
private move: Move;
|
||||
|
||||
constructor(chance: integer) {
|
||||
constructor(chance: number) {
|
||||
super();
|
||||
|
||||
this.chance = chance;
|
||||
@ -1688,10 +1688,10 @@ export class PostAttackStealHeldItemAbAttr extends PostAttackAbAttr {
|
||||
|
||||
export class PostAttackApplyStatusEffectAbAttr extends PostAttackAbAttr {
|
||||
private contactRequired: boolean;
|
||||
private chance: integer;
|
||||
private chance: number;
|
||||
private effects: StatusEffect[];
|
||||
|
||||
constructor(contactRequired: boolean, chance: integer, ...effects: StatusEffect[]) {
|
||||
constructor(contactRequired: boolean, chance: number, ...effects: StatusEffect[]) {
|
||||
super();
|
||||
|
||||
this.contactRequired = contactRequired;
|
||||
@ -1715,18 +1715,18 @@ export class PostAttackApplyStatusEffectAbAttr extends PostAttackAbAttr {
|
||||
}
|
||||
|
||||
export class PostAttackContactApplyStatusEffectAbAttr extends PostAttackApplyStatusEffectAbAttr {
|
||||
constructor(chance: integer, ...effects: StatusEffect[]) {
|
||||
constructor(chance: number, ...effects: StatusEffect[]) {
|
||||
super(true, chance, ...effects);
|
||||
}
|
||||
}
|
||||
|
||||
export class PostAttackApplyBattlerTagAbAttr extends PostAttackAbAttr {
|
||||
private contactRequired: boolean;
|
||||
private chance: (user: Pokemon, target: Pokemon, move: Move) => integer;
|
||||
private chance: (user: Pokemon, target: Pokemon, move: Move) => number;
|
||||
private effects: BattlerTagType[];
|
||||
|
||||
|
||||
constructor(contactRequired: boolean, chance: (user: Pokemon, target: Pokemon, move: Move) => integer, ...effects: BattlerTagType[]) {
|
||||
constructor(contactRequired: boolean, chance: (user: Pokemon, target: Pokemon, move: Move) => number, ...effects: BattlerTagType[]) {
|
||||
super();
|
||||
|
||||
this.contactRequired = contactRequired;
|
||||
@ -1863,9 +1863,9 @@ class PostVictoryStatStageChangeAbAttr extends PostVictoryAbAttr {
|
||||
}
|
||||
|
||||
export class PostVictoryFormChangeAbAttr extends PostVictoryAbAttr {
|
||||
private formFunc: (p: Pokemon) => integer;
|
||||
private formFunc: (p: Pokemon) => number;
|
||||
|
||||
constructor(formFunc: ((p: Pokemon) => integer)) {
|
||||
constructor(formFunc: ((p: Pokemon) => number)) {
|
||||
super(true);
|
||||
|
||||
this.formFunc = formFunc;
|
||||
@ -2081,9 +2081,9 @@ export class PostSummonUnnamedMessageAbAttr extends PostSummonAbAttr {
|
||||
|
||||
export class PostSummonAddBattlerTagAbAttr extends PostSummonAbAttr {
|
||||
private tagType: BattlerTagType;
|
||||
private turnCount: integer;
|
||||
private turnCount: number;
|
||||
|
||||
constructor(tagType: BattlerTagType, turnCount: integer, showAbility?: boolean) {
|
||||
constructor(tagType: BattlerTagType, turnCount: number, showAbility?: boolean) {
|
||||
super(showAbility);
|
||||
|
||||
this.tagType = tagType;
|
||||
@ -2209,9 +2209,9 @@ export class PostSummonClearAllyStatStagesAbAttr extends PostSummonAbAttr {
|
||||
* @see {applyPostSummon}
|
||||
*/
|
||||
export class DownloadAbAttr extends PostSummonAbAttr {
|
||||
private enemyDef: integer;
|
||||
private enemySpDef: integer;
|
||||
private enemyCountTally: integer;
|
||||
private enemyDef: number;
|
||||
private enemySpDef: number;
|
||||
private enemyCountTally: number;
|
||||
private stats: BattleStat[];
|
||||
|
||||
/**
|
||||
@ -2295,9 +2295,9 @@ export class PostSummonTerrainChangeAbAttr extends PostSummonAbAttr {
|
||||
}
|
||||
|
||||
export class PostSummonFormChangeAbAttr extends PostSummonAbAttr {
|
||||
private formFunc: (p: Pokemon) => integer;
|
||||
private formFunc: (p: Pokemon) => number;
|
||||
|
||||
constructor(formFunc: ((p: Pokemon) => integer)) {
|
||||
constructor(formFunc: ((p: Pokemon) => number)) {
|
||||
super(true);
|
||||
|
||||
this.formFunc = formFunc;
|
||||
@ -2643,18 +2643,75 @@ export class PreSwitchOutResetStatusAbAttr extends PreSwitchOutAbAttr {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
export class PreSwitchOutHealAbAttr extends PreSwitchOutAbAttr {
|
||||
applyPreSwitchOut(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean | Promise<boolean> {
|
||||
if (!pokemon.isFullHp()) {
|
||||
if (!simulated) {
|
||||
const healAmount = Utils.toDmgValue(pokemon.getMaxHp() * 0.33);
|
||||
pokemon.heal(healAmount);
|
||||
pokemon.updateInfo();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Attribute for form changes that occur on switching out
|
||||
* @extends PreSwitchOutAbAttr
|
||||
* @see {@linkcode applyPreSwitchOut}
|
||||
*/
|
||||
export class PreSwitchOutFormChangeAbAttr extends PreSwitchOutAbAttr {
|
||||
private formFunc: (p: Pokemon) => number;
|
||||
|
||||
constructor(formFunc: ((p: Pokemon) => number)) {
|
||||
super();
|
||||
|
||||
this.formFunc = formFunc;
|
||||
}
|
||||
|
||||
/**
|
||||
* On switch out, trigger the form change to the one defined in the ability
|
||||
* @param pokemon The pokemon switching out and changing form {@linkcode Pokemon}
|
||||
* @param passive N/A
|
||||
* @param args N/A
|
||||
* @returns true if the form change was successful
|
||||
*/
|
||||
applyPreSwitchOut(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean | Promise<boolean> {
|
||||
const formIndex = this.formFunc(pokemon);
|
||||
if (formIndex !== pokemon.formIndex) {
|
||||
if (!simulated) {
|
||||
globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeAbilityTrigger, false);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export class PreLeaveFieldAbAttr extends AbAttr {
|
||||
applyPreLeaveField(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean | Promise<boolean> {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Clears Desolate Land/Primordial Sea/Delta Stream upon the Pokemon switching out.
|
||||
*/
|
||||
export class PreSwitchOutClearWeatherAbAttr extends PreSwitchOutAbAttr {
|
||||
|
||||
export class PreLeaveFieldClearWeatherAbAttr extends PreLeaveFieldAbAttr {
|
||||
/**
|
||||
* @param pokemon The {@linkcode Pokemon} with the ability
|
||||
* @param passive N/A
|
||||
* @param args N/A
|
||||
* @returns {boolean} Returns true if the weather clears, otherwise false.
|
||||
* @returns Returns `true` if the weather clears, otherwise `false`.
|
||||
*/
|
||||
applyPreSwitchOut(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean | Promise<boolean> {
|
||||
applyPreLeaveField(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean | Promise<boolean> {
|
||||
const weatherType = globalScene.arena.weather?.weatherType;
|
||||
let turnOffWeather = false;
|
||||
|
||||
@ -2693,57 +2750,6 @@ export class PreSwitchOutClearWeatherAbAttr extends PreSwitchOutAbAttr {
|
||||
}
|
||||
}
|
||||
|
||||
export class PreSwitchOutHealAbAttr extends PreSwitchOutAbAttr {
|
||||
applyPreSwitchOut(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean | Promise<boolean> {
|
||||
if (!pokemon.isFullHp()) {
|
||||
if (!simulated) {
|
||||
const healAmount = Utils.toDmgValue(pokemon.getMaxHp() * 0.33);
|
||||
pokemon.heal(healAmount);
|
||||
pokemon.updateInfo();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Attribute for form changes that occur on switching out
|
||||
* @extends PreSwitchOutAbAttr
|
||||
* @see {@linkcode applyPreSwitchOut}
|
||||
*/
|
||||
export class PreSwitchOutFormChangeAbAttr extends PreSwitchOutAbAttr {
|
||||
private formFunc: (p: Pokemon) => integer;
|
||||
|
||||
constructor(formFunc: ((p: Pokemon) => integer)) {
|
||||
super();
|
||||
|
||||
this.formFunc = formFunc;
|
||||
}
|
||||
|
||||
/**
|
||||
* On switch out, trigger the form change to the one defined in the ability
|
||||
* @param pokemon The pokemon switching out and changing form {@linkcode Pokemon}
|
||||
* @param passive N/A
|
||||
* @param args N/A
|
||||
* @returns true if the form change was successful
|
||||
*/
|
||||
applyPreSwitchOut(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean | Promise<boolean> {
|
||||
const formIndex = this.formFunc(pokemon);
|
||||
if (formIndex !== pokemon.formIndex) {
|
||||
if (!simulated) {
|
||||
globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeAbilityTrigger, false);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export class PreStatStageChangeAbAttr extends AbAttr {
|
||||
applyPreStatStageChange(pokemon: Pokemon | null, passive: boolean, simulated: boolean, stat: BattleStat, cancelled: Utils.BooleanHolder, args: any[]): boolean | Promise<boolean> {
|
||||
return false;
|
||||
@ -2861,7 +2867,7 @@ export class PreSetStatusEffectImmunityAbAttr extends PreSetStatusAbAttr {
|
||||
* @returns A boolean indicating the result of the status application.
|
||||
*/
|
||||
applyPreSetStatus(pokemon: Pokemon, passive: boolean, simulated: boolean, effect: StatusEffect, cancelled: Utils.BooleanHolder, args: any[]): boolean {
|
||||
if (this.immuneEffects.length < 1 || this.immuneEffects.includes(effect)) {
|
||||
if (effect !== StatusEffect.FAINT && this.immuneEffects.length < 1 || this.immuneEffects.includes(effect)) {
|
||||
cancelled.value = true;
|
||||
return true;
|
||||
}
|
||||
@ -3338,10 +3344,10 @@ export class PostWeatherChangeFormChangeAbAttr extends PostWeatherChangeAbAttr {
|
||||
|
||||
export class PostWeatherChangeAddBattlerTagAttr extends PostWeatherChangeAbAttr {
|
||||
private tagType: BattlerTagType;
|
||||
private turnCount: integer;
|
||||
private turnCount: number;
|
||||
private weatherTypes: WeatherType[];
|
||||
|
||||
constructor(tagType: BattlerTagType, turnCount: integer, ...weatherTypes: WeatherType[]) {
|
||||
constructor(tagType: BattlerTagType, turnCount: number, ...weatherTypes: WeatherType[]) {
|
||||
super();
|
||||
|
||||
this.tagType = tagType;
|
||||
@ -3382,9 +3388,9 @@ export class PostWeatherLapseAbAttr extends AbAttr {
|
||||
}
|
||||
|
||||
export class PostWeatherLapseHealAbAttr extends PostWeatherLapseAbAttr {
|
||||
private healFactor: integer;
|
||||
private healFactor: number;
|
||||
|
||||
constructor(healFactor: integer, ...weatherTypes: WeatherType[]) {
|
||||
constructor(healFactor: number, ...weatherTypes: WeatherType[]) {
|
||||
super(...weatherTypes);
|
||||
|
||||
this.healFactor = healFactor;
|
||||
@ -3405,9 +3411,9 @@ export class PostWeatherLapseHealAbAttr extends PostWeatherLapseAbAttr {
|
||||
}
|
||||
|
||||
export class PostWeatherLapseDamageAbAttr extends PostWeatherLapseAbAttr {
|
||||
private damageFactor: integer;
|
||||
private damageFactor: number;
|
||||
|
||||
constructor(damageFactor: integer, ...weatherTypes: WeatherType[]) {
|
||||
constructor(damageFactor: number, ...weatherTypes: WeatherType[]) {
|
||||
super(...weatherTypes);
|
||||
|
||||
this.damageFactor = damageFactor;
|
||||
@ -3436,10 +3442,10 @@ export class PostTerrainChangeAbAttr extends AbAttr {
|
||||
|
||||
export class PostTerrainChangeAddBattlerTagAttr extends PostTerrainChangeAbAttr {
|
||||
private tagType: BattlerTagType;
|
||||
private turnCount: integer;
|
||||
private turnCount: number;
|
||||
private terrainTypes: TerrainType[];
|
||||
|
||||
constructor(tagType: BattlerTagType, turnCount: integer, ...terrainTypes: TerrainType[]) {
|
||||
constructor(tagType: BattlerTagType, turnCount: number, ...terrainTypes: TerrainType[]) {
|
||||
super();
|
||||
|
||||
this.tagType = tagType;
|
||||
@ -3692,9 +3698,9 @@ export class PostTurnHealAbAttr extends PostTurnAbAttr {
|
||||
}
|
||||
|
||||
export class PostTurnFormChangeAbAttr extends PostTurnAbAttr {
|
||||
private formFunc: (p: Pokemon) => integer;
|
||||
private formFunc: (p: Pokemon) => number;
|
||||
|
||||
constructor(formFunc: ((p: Pokemon) => integer)) {
|
||||
constructor(formFunc: ((p: Pokemon) => number)) {
|
||||
super(true);
|
||||
|
||||
this.formFunc = formFunc;
|
||||
@ -3916,9 +3922,9 @@ export class PostItemLostApplyBattlerTagAbAttr extends PostItemLostAbAttr {
|
||||
}
|
||||
|
||||
export class StatStageChangeMultiplierAbAttr extends AbAttr {
|
||||
private multiplier: integer;
|
||||
private multiplier: number;
|
||||
|
||||
constructor(multiplier: integer) {
|
||||
constructor(multiplier: number) {
|
||||
super(true);
|
||||
|
||||
this.multiplier = multiplier;
|
||||
@ -4171,63 +4177,10 @@ export class PostFaintUnsuppressedWeatherFormChangeAbAttr extends PostFaintAbAtt
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Clears Desolate Land/Primordial Sea/Delta Stream upon the Pokemon fainting
|
||||
*/
|
||||
export class PostFaintClearWeatherAbAttr extends PostFaintAbAttr {
|
||||
|
||||
/**
|
||||
* @param pokemon The {@linkcode Pokemon} with the ability
|
||||
* @param passive N/A
|
||||
* @param attacker N/A
|
||||
* @param move N/A
|
||||
* @param hitResult N/A
|
||||
* @param args N/A
|
||||
* @returns {boolean} Returns true if the weather clears, otherwise false.
|
||||
*/
|
||||
applyPostFaint(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker?: Pokemon, move?: Move, hitResult?: HitResult, ...args: any[]): boolean {
|
||||
const weatherType = globalScene.arena.weather?.weatherType;
|
||||
let turnOffWeather = false;
|
||||
|
||||
// Clear weather only if user's ability matches the weather and no other pokemon has the ability.
|
||||
switch (weatherType) {
|
||||
case (WeatherType.HARSH_SUN):
|
||||
if (pokemon.hasAbility(Abilities.DESOLATE_LAND)
|
||||
&& globalScene.getField(true).filter(p => p.hasAbility(Abilities.DESOLATE_LAND)).length === 0) {
|
||||
turnOffWeather = true;
|
||||
}
|
||||
break;
|
||||
case (WeatherType.HEAVY_RAIN):
|
||||
if (pokemon.hasAbility(Abilities.PRIMORDIAL_SEA)
|
||||
&& globalScene.getField(true).filter(p => p.hasAbility(Abilities.PRIMORDIAL_SEA)).length === 0) {
|
||||
turnOffWeather = true;
|
||||
}
|
||||
break;
|
||||
case (WeatherType.STRONG_WINDS):
|
||||
if (pokemon.hasAbility(Abilities.DELTA_STREAM)
|
||||
&& globalScene.getField(true).filter(p => p.hasAbility(Abilities.DELTA_STREAM)).length === 0) {
|
||||
turnOffWeather = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (simulated) {
|
||||
return turnOffWeather;
|
||||
}
|
||||
|
||||
if (turnOffWeather) {
|
||||
globalScene.arena.trySetWeather(WeatherType.NONE, false);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
export class PostFaintContactDamageAbAttr extends PostFaintAbAttr {
|
||||
private damageRatio: integer;
|
||||
private damageRatio: number;
|
||||
|
||||
constructor(damageRatio: integer) {
|
||||
constructor(damageRatio: number) {
|
||||
super();
|
||||
|
||||
this.damageRatio = damageRatio;
|
||||
@ -4404,9 +4357,9 @@ export class ReduceBerryUseThresholdAbAttr extends AbAttr {
|
||||
* Used for Heavy Metal (doubling weight) and Light Metal (halving weight)
|
||||
*/
|
||||
export class WeightMultiplierAbAttr extends AbAttr {
|
||||
private multiplier: integer;
|
||||
private multiplier: number;
|
||||
|
||||
constructor(multiplier: integer) {
|
||||
constructor(multiplier: number) {
|
||||
super();
|
||||
|
||||
this.multiplier = multiplier;
|
||||
@ -4700,12 +4653,12 @@ export class FormBlockDamageAbAttr extends ReceivedMoveDamageMultiplierAbAttr {
|
||||
* @extends AbAttr
|
||||
*/
|
||||
export class BypassSpeedChanceAbAttr extends AbAttr {
|
||||
public chance: integer;
|
||||
public chance: number;
|
||||
|
||||
/**
|
||||
* @param {integer} chance probability of ability being active.
|
||||
* @param {number} chance probability of ability being active.
|
||||
*/
|
||||
constructor(chance: integer) {
|
||||
constructor(chance: number) {
|
||||
super(true);
|
||||
this.chance = chance;
|
||||
}
|
||||
@ -5229,13 +5182,18 @@ export function applyPreSwitchOutAbAttrs(attrType: Constructor<PreSwitchOutAbAtt
|
||||
return applyAbAttrsInternal<PreSwitchOutAbAttr>(attrType, pokemon, (attr, passive) => attr.applyPreSwitchOut(pokemon, passive, simulated, args), args, true, simulated);
|
||||
}
|
||||
|
||||
export function applyPreLeaveFieldAbAttrs(attrType: Constructor<PreLeaveFieldAbAttr>,
|
||||
pokemon: Pokemon, simulated: boolean = false, ...args: any[]): Promise<void> {
|
||||
return applyAbAttrsInternal<PreLeaveFieldAbAttr>(attrType, pokemon, (attr, passive) => attr.applyPreLeaveField(pokemon, passive, simulated, args), args, true, simulated);
|
||||
}
|
||||
|
||||
export function applyPreStatStageChangeAbAttrs(attrType: Constructor<PreStatStageChangeAbAttr>,
|
||||
pokemon: Pokemon | null, stat: BattleStat, cancelled: Utils.BooleanHolder, simulated: boolean = false, ...args: any[]): Promise<void> {
|
||||
return applyAbAttrsInternal<PreStatStageChangeAbAttr>(attrType, pokemon, (attr, passive) => attr.applyPreStatStageChange(pokemon, passive, simulated, stat, cancelled, args), args, false, simulated);
|
||||
}
|
||||
|
||||
export function applyPostStatStageChangeAbAttrs(attrType: Constructor<PostStatStageChangeAbAttr>,
|
||||
pokemon: Pokemon, stats: BattleStat[], stages: integer, selfTarget: boolean, simulated: boolean = false, ...args: any[]): Promise<void> {
|
||||
pokemon: Pokemon, stats: BattleStat[], stages: number, selfTarget: boolean, simulated: boolean = false, ...args: any[]): Promise<void> {
|
||||
return applyAbAttrsInternal<PostStatStageChangeAbAttr>(attrType, pokemon, (attr, _passive) => attr.applyPostStatStageChange(pokemon, simulated, stats, stages, selfTarget, args), args, false, simulated);
|
||||
}
|
||||
|
||||
@ -5912,20 +5870,17 @@ export function initAbilities() {
|
||||
new Ability(Abilities.PRIMORDIAL_SEA, 6)
|
||||
.attr(PostSummonWeatherChangeAbAttr, WeatherType.HEAVY_RAIN)
|
||||
.attr(PostBiomeChangeWeatherChangeAbAttr, WeatherType.HEAVY_RAIN)
|
||||
.attr(PreSwitchOutClearWeatherAbAttr)
|
||||
.attr(PostFaintClearWeatherAbAttr)
|
||||
.attr(PreLeaveFieldClearWeatherAbAttr)
|
||||
.bypassFaint(),
|
||||
new Ability(Abilities.DESOLATE_LAND, 6)
|
||||
.attr(PostSummonWeatherChangeAbAttr, WeatherType.HARSH_SUN)
|
||||
.attr(PostBiomeChangeWeatherChangeAbAttr, WeatherType.HARSH_SUN)
|
||||
.attr(PreSwitchOutClearWeatherAbAttr)
|
||||
.attr(PostFaintClearWeatherAbAttr)
|
||||
.attr(PreLeaveFieldClearWeatherAbAttr)
|
||||
.bypassFaint(),
|
||||
new Ability(Abilities.DELTA_STREAM, 6)
|
||||
.attr(PostSummonWeatherChangeAbAttr, WeatherType.STRONG_WINDS)
|
||||
.attr(PostBiomeChangeWeatherChangeAbAttr, WeatherType.STRONG_WINDS)
|
||||
.attr(PreSwitchOutClearWeatherAbAttr)
|
||||
.attr(PostFaintClearWeatherAbAttr)
|
||||
.attr(PreLeaveFieldClearWeatherAbAttr)
|
||||
.bypassFaint(),
|
||||
new Ability(Abilities.STAMINA, 7)
|
||||
.attr(PostDefendStatStageChangeAbAttr, (target, user, move) => move.category !== MoveCategory.STATUS, Stat.DEF, 1),
|
||||
@ -5943,12 +5898,14 @@ export function initAbilities() {
|
||||
.attr(PostBattleInitFormChangeAbAttr, () => 0)
|
||||
.attr(PostSummonFormChangeAbAttr, p => p.formIndex % 7 + (p.getHpRatio() <= 0.5 ? 7 : 0))
|
||||
.attr(PostTurnFormChangeAbAttr, p => p.formIndex % 7 + (p.getHpRatio() <= 0.5 ? 7 : 0))
|
||||
.conditionalAttr(p => p.formIndex !== 7, StatusEffectImmunityAbAttr)
|
||||
.conditionalAttr(p => p.formIndex !== 7, BattlerTagImmunityAbAttr, BattlerTagType.DROWSY)
|
||||
.attr(UncopiableAbilityAbAttr)
|
||||
.attr(UnswappableAbilityAbAttr)
|
||||
.attr(UnsuppressableAbilityAbAttr)
|
||||
.attr(NoFusionAbilityAbAttr)
|
||||
.bypassFaint()
|
||||
.partial(), // Meteor form should protect against status effects and yawn
|
||||
.attr(NoTransformAbilityAbAttr)
|
||||
.bypassFaint(),
|
||||
new Ability(Abilities.STAKEOUT, 7)
|
||||
.attr(MovePowerBoostAbAttr, (user, target, move) => !!target?.turnData.switchedInThisTurn, 2),
|
||||
new Ability(Abilities.WATER_BUBBLE, 7)
|
||||
@ -6287,9 +6244,8 @@ export function initAbilities() {
|
||||
.attr(NoTransformAbilityAbAttr)
|
||||
.partial(), // While setting the tag, the getbattlestat should ignore all modifiers to stats except stat stages
|
||||
new Ability(Abilities.GOOD_AS_GOLD, 9)
|
||||
.attr(MoveImmunityAbAttr, (pokemon, attacker, move) => pokemon !== attacker && move.category === MoveCategory.STATUS)
|
||||
.ignorable()
|
||||
.partial(), // Lots of weird interactions with moves and abilities such as negating status moves that target the field
|
||||
.attr(MoveImmunityAbAttr, (pokemon, attacker, move) => pokemon !== attacker && move.category === MoveCategory.STATUS && ![ MoveTarget.ENEMY_SIDE, MoveTarget.BOTH_SIDES, MoveTarget.USER_SIDE ].includes(move.moveTarget))
|
||||
.ignorable(),
|
||||
new Ability(Abilities.VESSEL_OF_RUIN, 9)
|
||||
.attr(FieldMultiplyStatAbAttr, Stat.SPATK, 0.75)
|
||||
.attr(PostSummonMessageAbAttr, (user) => i18next.t("abilityTriggers:postSummonVesselOfRuin", { pokemonNameWithAffix: getPokemonNameWithAffix(user), statName: i18next.t(getStatKey(Stat.SPATK)) }))
|
||||
|
@ -26,11 +26,11 @@ export function getBiomeName(biome: Biome | -1) {
|
||||
}
|
||||
|
||||
interface BiomeLinks {
|
||||
[key: integer]: Biome | (Biome | [Biome, integer])[]
|
||||
[key: number]: Biome | (Biome | [Biome, number])[]
|
||||
}
|
||||
|
||||
interface BiomeDepths {
|
||||
[key: integer]: [integer, integer]
|
||||
[key: number]: [number, number]
|
||||
}
|
||||
|
||||
export const biomeLinks: BiomeLinks = {
|
||||
@ -87,27 +87,39 @@ export enum BiomePoolTier {
|
||||
export const uncatchableSpecies: Species[] = [];
|
||||
|
||||
export interface SpeciesTree {
|
||||
[key: integer]: Species[]
|
||||
[key: number]: Species[]
|
||||
}
|
||||
|
||||
export interface PokemonPools {
|
||||
[key: integer]: (Species | SpeciesTree)[]
|
||||
[key: number]: (Species | SpeciesTree)[]
|
||||
}
|
||||
|
||||
export interface BiomeTierPokemonPools {
|
||||
[key: integer]: PokemonPools
|
||||
[key: number]: PokemonPools
|
||||
}
|
||||
|
||||
export interface BiomePokemonPools {
|
||||
[key: integer]: BiomeTierPokemonPools
|
||||
[key: number]: BiomeTierPokemonPools
|
||||
}
|
||||
|
||||
export interface BiomeTierTod {
|
||||
biome: Biome,
|
||||
tier: BiomePoolTier,
|
||||
tod: TimeOfDay[]
|
||||
}
|
||||
|
||||
export interface CatchableSpecies{
|
||||
[key: number]: BiomeTierTod[]
|
||||
}
|
||||
|
||||
export const catchableSpecies: CatchableSpecies = {};
|
||||
|
||||
export interface BiomeTierTrainerPools {
|
||||
[key: integer]: TrainerType[]
|
||||
[key: number]: TrainerType[]
|
||||
}
|
||||
|
||||
export interface BiomeTrainerPools {
|
||||
[key: integer]: BiomeTierTrainerPools
|
||||
[key: number]: BiomeTierTrainerPools
|
||||
}
|
||||
|
||||
export const biomePokemonPools: BiomePokemonPools = {
|
||||
@ -7663,15 +7675,15 @@ export function initBiomes() {
|
||||
|
||||
biomeDepths[Biome.TOWN] = [ 0, 1 ];
|
||||
|
||||
const traverseBiome = (biome: Biome, depth: integer) => {
|
||||
const traverseBiome = (biome: Biome, depth: number) => {
|
||||
if (biome === Biome.END) {
|
||||
const biomeList = Object.keys(Biome).filter(key => !isNaN(Number(key)));
|
||||
biomeList.pop(); // Removes Biome.END from the list
|
||||
const randIndex = Utils.randSeedInt(biomeList.length, 1); // Will never be Biome.TOWN
|
||||
biome = Biome[biomeList[randIndex]];
|
||||
}
|
||||
const linkedBiomes: (Biome | [ Biome, integer ])[] = Array.isArray(biomeLinks[biome])
|
||||
? biomeLinks[biome] as (Biome | [ Biome, integer ])[]
|
||||
const linkedBiomes: (Biome | [ Biome, number ])[] = Array.isArray(biomeLinks[biome])
|
||||
? biomeLinks[biome] as (Biome | [ Biome, number ])[]
|
||||
: [ biomeLinks[biome] as Biome ];
|
||||
for (const linkedBiomeEntry of linkedBiomes) {
|
||||
const linkedBiome = !Array.isArray(linkedBiomeEntry)
|
||||
@ -7688,7 +7700,7 @@ export function initBiomes() {
|
||||
};
|
||||
|
||||
traverseBiome(Biome.TOWN, 0);
|
||||
biomeDepths[Biome.END] = [ Object.values(biomeDepths).map(d => d[0]).reduce((max: integer, value: integer) => Math.max(max, value), 0) + 1, 1 ];
|
||||
biomeDepths[Biome.END] = [ Object.values(biomeDepths).map(d => d[0]).reduce((max: number, value: number) => Math.max(max, value), 0) + 1, 1 ];
|
||||
|
||||
for (const biome of Utils.getEnumValues(Biome)) {
|
||||
biomePokemonPools[biome] = {};
|
||||
@ -7716,6 +7728,9 @@ export function initBiomes() {
|
||||
uncatchableSpecies.push(speciesId);
|
||||
}
|
||||
|
||||
// array of biome options for the current species
|
||||
catchableSpecies[speciesId] = [];
|
||||
|
||||
for (const b of biomeEntries) {
|
||||
const biome = b[0];
|
||||
const tier = b[1];
|
||||
@ -7725,6 +7740,12 @@ export function initBiomes() {
|
||||
: [ b[2] ]
|
||||
: [ TimeOfDay.ALL ];
|
||||
|
||||
catchableSpecies[speciesId].push({
|
||||
biome: biome as Biome,
|
||||
tier: tier as BiomePoolTier,
|
||||
tod: timesOfDay as TimeOfDay[]
|
||||
});
|
||||
|
||||
for (const tod of timesOfDay) {
|
||||
if (!biomePokemonPools.hasOwnProperty(biome) || !biomePokemonPools[biome].hasOwnProperty(tier) || !biomePokemonPools[biome][tier].hasOwnProperty(tod)) {
|
||||
continue;
|
||||
|
@ -77,9 +77,9 @@ export enum EvolutionItem {
|
||||
/**
|
||||
* Pokemon Evolution tuple type consisting of:
|
||||
* @property 0 {@linkcode Species} The species of the Pokemon.
|
||||
* @property 1 {@linkcode integer} The level at which the Pokemon evolves.
|
||||
* @property 1 {@linkcode number} The level at which the Pokemon evolves.
|
||||
*/
|
||||
export type EvolutionLevel = [species: Species, level: integer];
|
||||
export type EvolutionLevel = [species: Species, level: number];
|
||||
|
||||
export type EvolutionConditionPredicate = (p: Pokemon) => boolean;
|
||||
export type EvolutionConditionEnforceFunc = (p: Pokemon) => void;
|
||||
@ -88,12 +88,12 @@ export class SpeciesFormEvolution {
|
||||
public speciesId: Species;
|
||||
public preFormKey: string | null;
|
||||
public evoFormKey: string | null;
|
||||
public level: integer;
|
||||
public level: number;
|
||||
public item: EvolutionItem | null;
|
||||
public condition: SpeciesEvolutionCondition | null;
|
||||
public wildDelay: SpeciesWildEvolutionDelay;
|
||||
|
||||
constructor(speciesId: Species, preFormKey: string | null, evoFormKey: string | null, level: integer, item: EvolutionItem | null, condition: SpeciesEvolutionCondition | null, wildDelay?: SpeciesWildEvolutionDelay) {
|
||||
constructor(speciesId: Species, preFormKey: string | null, evoFormKey: string | null, level: number, item: EvolutionItem | null, condition: SpeciesEvolutionCondition | null, wildDelay?: SpeciesWildEvolutionDelay) {
|
||||
this.speciesId = speciesId;
|
||||
this.preFormKey = preFormKey;
|
||||
this.evoFormKey = evoFormKey;
|
||||
@ -105,7 +105,7 @@ export class SpeciesFormEvolution {
|
||||
}
|
||||
|
||||
export class SpeciesEvolution extends SpeciesFormEvolution {
|
||||
constructor(speciesId: Species, level: integer, item: EvolutionItem | null, condition: SpeciesEvolutionCondition | null, wildDelay?: SpeciesWildEvolutionDelay) {
|
||||
constructor(speciesId: Species, level: number, item: EvolutionItem | null, condition: SpeciesEvolutionCondition | null, wildDelay?: SpeciesWildEvolutionDelay) {
|
||||
super(speciesId, null, null, level, item, condition, wildDelay);
|
||||
}
|
||||
}
|
||||
@ -169,7 +169,7 @@ class MoveEvolutionCondition extends SpeciesEvolutionCondition {
|
||||
}
|
||||
|
||||
class FriendshipEvolutionCondition extends SpeciesEvolutionCondition {
|
||||
public amount: integer;
|
||||
public amount: number;
|
||||
constructor(amount: number) {
|
||||
super(p => p.friendship >= amount);
|
||||
this.amount = amount;
|
||||
@ -178,7 +178,7 @@ class FriendshipEvolutionCondition extends SpeciesEvolutionCondition {
|
||||
}
|
||||
|
||||
class FriendshipTimeOfDayEvolutionCondition extends SpeciesEvolutionCondition {
|
||||
public amount: integer;
|
||||
public amount: number;
|
||||
public timesOfDay: TimeOfDay[];
|
||||
constructor(amount: number, tod: "day" | "night") {
|
||||
if (tod === "day") {
|
||||
@ -197,7 +197,7 @@ class FriendshipTimeOfDayEvolutionCondition extends SpeciesEvolutionCondition {
|
||||
}
|
||||
|
||||
class FriendshipMoveTypeEvolutionCondition extends SpeciesEvolutionCondition {
|
||||
public amount: integer;
|
||||
public amount: number;
|
||||
public type: Type;
|
||||
constructor(amount: number, type: Type) {
|
||||
super(p => p.friendship >= amount && !!p.getMoveset().find(m => m?.getMove().type === type));
|
||||
|
@ -1,18 +1,18 @@
|
||||
import { Moves } from "#enums/moves";
|
||||
import { Species } from "#enums/species";
|
||||
|
||||
export type LevelMoves = ([integer, Moves])[];
|
||||
export type LevelMoves = ([number, Moves])[];
|
||||
|
||||
interface PokemonSpeciesLevelMoves {
|
||||
[key: integer]: LevelMoves
|
||||
[key: number]: LevelMoves
|
||||
}
|
||||
|
||||
interface PokemonFormLevelMoves {
|
||||
[key: integer]: LevelMoves
|
||||
[key: number]: LevelMoves
|
||||
}
|
||||
|
||||
interface PokemonSpeciesFormLevelMoves {
|
||||
[key: integer]: PokemonFormLevelMoves
|
||||
[key: number]: PokemonFormLevelMoves
|
||||
}
|
||||
|
||||
/** Moves that can only be learned with a memory-mushroom */
|
||||
|
@ -3,7 +3,7 @@ import { Moves } from "#enums/moves";
|
||||
import { Species } from "#enums/species";
|
||||
|
||||
interface TmSpecies {
|
||||
[key: integer]: Array<Species | Array<Species | string>>
|
||||
[key: number]: Array<Species | Array<Species | string>>
|
||||
}
|
||||
|
||||
export const reverseCompatibleTms: Moves[] = [];/*[
|
||||
@ -68433,8 +68433,48 @@ export const tmSpecies: TmSpecies = {
|
||||
],
|
||||
};
|
||||
|
||||
interface SpeciesTmMoves {
|
||||
[key: number]: (Moves | [string | Species, Moves])[];
|
||||
}
|
||||
|
||||
function transposeTmSpecies(): SpeciesTmMoves {
|
||||
const flipped: SpeciesTmMoves = {};
|
||||
|
||||
for (const move in tmSpecies) {
|
||||
const moveKey = Number(move);
|
||||
const speciesList = tmSpecies[move];
|
||||
|
||||
for (const species of speciesList) {
|
||||
|
||||
if (Array.isArray(species)) {
|
||||
// Extract base species and all associated forms
|
||||
const [ baseSpecies, ...forms ] = species;
|
||||
const speciesKey = Number(baseSpecies);
|
||||
|
||||
if (!flipped[speciesKey]) {
|
||||
flipped[speciesKey] = [];
|
||||
}
|
||||
|
||||
for (const form of forms) {
|
||||
flipped[speciesKey].push([ form, moveKey ]);
|
||||
}
|
||||
|
||||
} else {
|
||||
const speciesKey = Number(species);
|
||||
if (!flipped[speciesKey]) {
|
||||
flipped[speciesKey] = [];
|
||||
}
|
||||
flipped[speciesKey].push(moveKey);
|
||||
}
|
||||
}
|
||||
}
|
||||
return flipped;
|
||||
}
|
||||
|
||||
export const speciesTmMoves: SpeciesTmMoves = transposeTmSpecies();
|
||||
|
||||
interface TmPoolTiers {
|
||||
[key: integer]: ModifierTier
|
||||
[key: number]: ModifierTier
|
||||
}
|
||||
|
||||
export const tmPoolTiers: TmPoolTiers = {
|
||||
|
@ -106,15 +106,15 @@ export enum CommonAnim {
|
||||
}
|
||||
|
||||
export class AnimConfig {
|
||||
public id: integer;
|
||||
public id: number;
|
||||
public graphic: string;
|
||||
public frames: AnimFrame[][];
|
||||
public frameTimedEvents: Map<integer, AnimTimedEvent[]>;
|
||||
public position: integer;
|
||||
public hue: integer;
|
||||
public frameTimedEvents: Map<number, AnimTimedEvent[]>;
|
||||
public position: number;
|
||||
public hue: number;
|
||||
|
||||
constructor(source?: any) {
|
||||
this.frameTimedEvents = new Map<integer, AnimTimedEvent[]>;
|
||||
this.frameTimedEvents = new Map<number, AnimTimedEvent[]>;
|
||||
|
||||
if (source) {
|
||||
this.id = source.id;
|
||||
@ -195,18 +195,18 @@ class AnimFrame {
|
||||
public visible: boolean;
|
||||
public blendType: AnimBlendType;
|
||||
public target: AnimFrameTarget;
|
||||
public graphicFrame: integer;
|
||||
public opacity: integer;
|
||||
public color: integer[];
|
||||
public tone: integer[];
|
||||
public flash: integer[];
|
||||
public graphicFrame: number;
|
||||
public opacity: number;
|
||||
public color: number[];
|
||||
public tone: number[];
|
||||
public flash: number[];
|
||||
public locked: boolean;
|
||||
public priority: integer;
|
||||
public priority: number;
|
||||
public focus: AnimFocus;
|
||||
|
||||
constructor(x: number, y: number, zoomX: number, zoomY: number, angle: number, mirror: boolean, visible: boolean, blendType: AnimBlendType, pattern: integer,
|
||||
opacity: integer, colorR: integer, colorG: integer, colorB: integer, colorA: integer, toneR: integer, toneG: integer, toneB: integer, toneA: integer,
|
||||
flashR: integer, flashG: integer, flashB: integer, flashA: integer, locked: boolean, priority: integer, focus: AnimFocus, init?: boolean) {
|
||||
constructor(x: number, y: number, zoomX: number, zoomY: number, angle: number, mirror: boolean, visible: boolean, blendType: AnimBlendType, pattern: number,
|
||||
opacity: number, colorR: number, colorG: number, colorB: number, colorA: number, toneR: number, toneG: number, toneB: number, toneA: number,
|
||||
flashR: number, flashG: number, flashB: number, flashA: number, locked: boolean, priority: number, focus: AnimFocus, init?: boolean) {
|
||||
this.x = !init ? ((x || 0) - 128) * 0.5 : x;
|
||||
this.y = !init ? ((y || 0) - 224) * 0.5 : y;
|
||||
if (zoomX) {
|
||||
@ -288,9 +288,9 @@ class AnimFrame {
|
||||
|
||||
class ImportedAnimFrame extends AnimFrame {
|
||||
constructor(source: any) {
|
||||
const color: integer[] = source.color || [ 0, 0, 0, 0 ];
|
||||
const tone: integer[] = source.tone || [ 0, 0, 0, 0 ];
|
||||
const flash: integer[] = source.flash || [ 0, 0, 0, 0 ];
|
||||
const color: number[] = source.color || [ 0, 0, 0, 0 ];
|
||||
const tone: number[] = source.tone || [ 0, 0, 0, 0 ];
|
||||
const flash: number[] = source.flash || [ 0, 0, 0, 0 ];
|
||||
super(source.x, source.y, source.zoomX, source.zoomY, source.angle, source.mirror, source.visible, source.blendType, source.graphicFrame, source.opacity, color[0], color[1], color[2], color[3], tone[0], tone[1], tone[2], tone[3], flash[0], flash[1], flash[2], flash[3], source.locked, source.priority, source.focus, true);
|
||||
this.target = source.target;
|
||||
this.graphicFrame = source.graphicFrame;
|
||||
@ -298,15 +298,15 @@ class ImportedAnimFrame extends AnimFrame {
|
||||
}
|
||||
|
||||
abstract class AnimTimedEvent {
|
||||
public frameIndex: integer;
|
||||
public frameIndex: number;
|
||||
public resourceName: string;
|
||||
|
||||
constructor(frameIndex: integer, resourceName: string) {
|
||||
constructor(frameIndex: number, resourceName: string) {
|
||||
this.frameIndex = frameIndex;
|
||||
this.resourceName = resourceName;
|
||||
}
|
||||
|
||||
abstract execute(battleAnim: BattleAnim, priority?: number): integer;
|
||||
abstract execute(battleAnim: BattleAnim, priority?: number): number;
|
||||
|
||||
abstract getEventType(): string;
|
||||
}
|
||||
@ -315,7 +315,7 @@ class AnimTimedSoundEvent extends AnimTimedEvent {
|
||||
public volume: number = 100;
|
||||
public pitch: number = 100;
|
||||
|
||||
constructor(frameIndex: integer, resourceName: string, source?: any) {
|
||||
constructor(frameIndex: number, resourceName: string, source?: any) {
|
||||
super(frameIndex, resourceName);
|
||||
|
||||
if (source) {
|
||||
@ -324,7 +324,7 @@ class AnimTimedSoundEvent extends AnimTimedEvent {
|
||||
}
|
||||
}
|
||||
|
||||
execute(battleAnim: BattleAnim, priority?: number): integer {
|
||||
execute(battleAnim: BattleAnim, priority?: number): number {
|
||||
const soundConfig = { rate: (this.pitch * 0.01), volume: (this.volume * 0.01) };
|
||||
if (this.resourceName) {
|
||||
try {
|
||||
@ -346,20 +346,20 @@ class AnimTimedSoundEvent extends AnimTimedEvent {
|
||||
abstract class AnimTimedBgEvent extends AnimTimedEvent {
|
||||
public bgX: number = 0;
|
||||
public bgY: number = 0;
|
||||
public opacity: integer = 0;
|
||||
/*public colorRed: integer = 0;
|
||||
public colorGreen: integer = 0;
|
||||
public colorBlue: integer = 0;
|
||||
public colorAlpha: integer = 0;*/
|
||||
public duration: integer = 0;
|
||||
/*public flashScope: integer = 0;
|
||||
public flashRed: integer = 0;
|
||||
public flashGreen: integer = 0;
|
||||
public flashBlue: integer = 0;
|
||||
public flashAlpha: integer = 0;
|
||||
public flashDuration: integer = 0;*/
|
||||
public opacity: number = 0;
|
||||
/*public colorRed: number = 0;
|
||||
public colorGreen: number = 0;
|
||||
public colorBlue: number = 0;
|
||||
public colorAlpha: number = 0;*/
|
||||
public duration: number = 0;
|
||||
/*public flashScope: number = 0;
|
||||
public flashRed: number = 0;
|
||||
public flashGreen: number = 0;
|
||||
public flashBlue: number = 0;
|
||||
public flashAlpha: number = 0;
|
||||
public flashDuration: number = 0;*/
|
||||
|
||||
constructor(frameIndex: integer, resourceName: string, source: any) {
|
||||
constructor(frameIndex: number, resourceName: string, source: any) {
|
||||
super(frameIndex, resourceName);
|
||||
|
||||
if (source) {
|
||||
@ -382,11 +382,11 @@ abstract class AnimTimedBgEvent extends AnimTimedEvent {
|
||||
}
|
||||
|
||||
class AnimTimedUpdateBgEvent extends AnimTimedBgEvent {
|
||||
constructor(frameIndex: integer, resourceName: string, source?: any) {
|
||||
constructor(frameIndex: number, resourceName: string, source?: any) {
|
||||
super(frameIndex, resourceName, source);
|
||||
}
|
||||
|
||||
execute(moveAnim: MoveAnim, priority?: number): integer {
|
||||
execute(moveAnim: MoveAnim, priority?: number): number {
|
||||
const tweenProps = {};
|
||||
if (this.bgX !== undefined) {
|
||||
tweenProps["x"] = (this.bgX * 0.5) - 320;
|
||||
@ -412,11 +412,11 @@ class AnimTimedUpdateBgEvent extends AnimTimedBgEvent {
|
||||
}
|
||||
|
||||
class AnimTimedAddBgEvent extends AnimTimedBgEvent {
|
||||
constructor(frameIndex: integer, resourceName: string, source?: any) {
|
||||
constructor(frameIndex: number, resourceName: string, source?: any) {
|
||||
super(frameIndex, resourceName, source);
|
||||
}
|
||||
|
||||
execute(moveAnim: MoveAnim, priority?: number): integer {
|
||||
execute(moveAnim: MoveAnim, priority?: number): number {
|
||||
if (moveAnim.bgSprite) {
|
||||
moveAnim.bgSprite.destroy();
|
||||
}
|
||||
@ -737,7 +737,7 @@ function isReversed(src1: number, src2: number, dst1: number, dst2: number) {
|
||||
}
|
||||
|
||||
interface SpriteCache {
|
||||
[key: integer]: Phaser.GameObjects.Sprite[]
|
||||
[key: number]: Phaser.GameObjects.Sprite[]
|
||||
}
|
||||
|
||||
export abstract class BattleAnim {
|
||||
@ -774,8 +774,8 @@ export abstract class BattleAnim {
|
||||
return false;
|
||||
}
|
||||
|
||||
private getGraphicFrameData(frames: AnimFrame[], onSubstitute?: boolean): Map<integer, Map<AnimFrameTarget, GraphicFrameData>> {
|
||||
const ret: Map<integer, Map<AnimFrameTarget, GraphicFrameData>> = new Map([
|
||||
private getGraphicFrameData(frames: AnimFrame[], onSubstitute?: boolean): Map<number, Map<AnimFrameTarget, GraphicFrameData>> {
|
||||
const ret: Map<number, Map<AnimFrameTarget, GraphicFrameData>> = new Map([
|
||||
[ AnimFrameTarget.GRAPHIC, new Map<AnimFrameTarget, GraphicFrameData>() ],
|
||||
[ AnimFrameTarget.USER, new Map<AnimFrameTarget, GraphicFrameData>() ],
|
||||
[ AnimFrameTarget.TARGET, new Map<AnimFrameTarget, GraphicFrameData>() ]
|
||||
@ -853,7 +853,7 @@ export abstract class BattleAnim {
|
||||
[AnimFrameTarget.USER]: [],
|
||||
[AnimFrameTarget.TARGET]: []
|
||||
};
|
||||
const spritePriorities: integer[] = [];
|
||||
const spritePriorities: number[] = [];
|
||||
|
||||
const cleanUpAndComplete = () => {
|
||||
userSprite.setPosition(0, 0);
|
||||
@ -993,7 +993,7 @@ export abstract class BattleAnim {
|
||||
const moveSprite = sprites[graphicIndex];
|
||||
if (spritePriorities[graphicIndex] !== frame.priority) {
|
||||
spritePriorities[graphicIndex] = frame.priority;
|
||||
const setSpritePriority = (priority: integer) => {
|
||||
const setSpritePriority = (priority: number) => {
|
||||
switch (priority) {
|
||||
case 0:
|
||||
globalScene.field.moveBelow(moveSprite as Phaser.GameObjects.GameObject, globalScene.getEnemyPokemon(false) ?? globalScene.getPlayerPokemon(false)!); // TODO: is this bang correct?
|
||||
@ -1093,8 +1093,8 @@ export abstract class BattleAnim {
|
||||
});
|
||||
}
|
||||
|
||||
private getGraphicFrameDataWithoutTarget(frames: AnimFrame[], targetInitialX: number, targetInitialY: number): Map<integer, Map<AnimFrameTarget, GraphicFrameData>> {
|
||||
const ret: Map<integer, Map<AnimFrameTarget, GraphicFrameData>> = new Map([
|
||||
private getGraphicFrameDataWithoutTarget(frames: AnimFrame[], targetInitialX: number, targetInitialY: number): Map<number, Map<AnimFrameTarget, GraphicFrameData>> {
|
||||
const ret: Map<number, Map<AnimFrameTarget, GraphicFrameData>> = new Map([
|
||||
[ AnimFrameTarget.GRAPHIC, new Map<AnimFrameTarget, GraphicFrameData>() ],
|
||||
[ AnimFrameTarget.USER, new Map<AnimFrameTarget, GraphicFrameData>() ],
|
||||
[ AnimFrameTarget.TARGET, new Map<AnimFrameTarget, GraphicFrameData>() ]
|
||||
@ -1188,7 +1188,7 @@ export abstract class BattleAnim {
|
||||
const graphicIndex = graphicFrameCount++;
|
||||
const moveSprite = sprites[graphicIndex];
|
||||
if (!isNullOrUndefined(frame.priority)) {
|
||||
const setSpritePriority = (priority: integer) => {
|
||||
const setSpritePriority = (priority: number) => {
|
||||
if (existingFieldSprites.length > priority) {
|
||||
// Move to specified priority index
|
||||
const index = globalScene.field.getIndex(existingFieldSprites[priority]);
|
||||
|
@ -137,7 +137,7 @@ export interface TerrainBattlerTag {
|
||||
* to select restricted moves.
|
||||
*/
|
||||
export abstract class MoveRestrictionBattlerTag extends BattlerTag {
|
||||
constructor(tagType: BattlerTagType, lapseType: BattlerTagLapseType | BattlerTagLapseType[], turnCount: integer, sourceMove?: Moves, sourceId?: integer) {
|
||||
constructor(tagType: BattlerTagType, lapseType: BattlerTagLapseType | BattlerTagLapseType[], turnCount: number, sourceMove?: Moves, sourceId?: number) {
|
||||
super(tagType, lapseType, turnCount, sourceMove, sourceId);
|
||||
}
|
||||
|
||||
@ -2559,7 +2559,7 @@ export class SubstituteTag extends BattlerTag {
|
||||
/** Is the source Pokemon "in focus," i.e. is it fully visible on the field? */
|
||||
public sourceInFocus: boolean;
|
||||
|
||||
constructor(sourceMove: Moves, sourceId: integer) {
|
||||
constructor(sourceMove: Moves, sourceId: number) {
|
||||
super(BattlerTagType.SUBSTITUTE, [ BattlerTagLapseType.PRE_MOVE, BattlerTagLapseType.AFTER_MOVE, BattlerTagLapseType.HIT ], 0, sourceMove, sourceId, true);
|
||||
}
|
||||
|
||||
@ -2871,7 +2871,7 @@ export class SyrupBombTag extends BattlerTag {
|
||||
/**
|
||||
* Telekinesis raises the target into the air for three turns and causes all moves used against the target (aside from OHKO moves) to hit the target unless the target is in a semi-invulnerable state from Fly/Dig.
|
||||
* The first effect is provided by {@linkcode FloatingTag}, the accuracy-bypass effect is provided by TelekinesisTag
|
||||
* The effects of Telekinesis can be baton passed to a teammate. Unlike the mainline games, Telekinesis can be baton-passed to Mega Gengar.
|
||||
* The effects of Telekinesis can be baton passed to a teammate.
|
||||
* @see {@link https://bulbapedia.bulbagarden.net/wiki/Telekinesis_(move) | Moves.TELEKINESIS}
|
||||
*/
|
||||
export class TelekinesisTag extends BattlerTag {
|
||||
|
@ -115,17 +115,17 @@ export enum MoveSourceType {
|
||||
export abstract class Challenge {
|
||||
public id: Challenges; // The id of the challenge
|
||||
|
||||
public value: integer; // The "strength" of the challenge, all challenges have a numerical value.
|
||||
public maxValue: integer; // The maximum strength of the challenge.
|
||||
public severity: integer; // The current severity of the challenge. Some challenges have multiple severities in addition to strength.
|
||||
public maxSeverity: integer; // The maximum severity of the challenge.
|
||||
public value: number; // The "strength" of the challenge, all challenges have a numerical value.
|
||||
public maxValue: number; // The maximum strength of the challenge.
|
||||
public severity: number; // The current severity of the challenge. Some challenges have multiple severities in addition to strength.
|
||||
public maxSeverity: number; // The maximum severity of the challenge.
|
||||
|
||||
public conditions: ChallengeCondition[];
|
||||
|
||||
/**
|
||||
* @param id {@link Challenges} The enum value for the challenge
|
||||
*/
|
||||
constructor(id: Challenges, maxValue: integer = Number.MAX_SAFE_INTEGER) {
|
||||
constructor(id: Challenges, maxValue: number = Number.MAX_SAFE_INTEGER) {
|
||||
this.id = id;
|
||||
|
||||
this.value = 0;
|
||||
@ -180,7 +180,7 @@ export abstract class Challenge {
|
||||
|
||||
/**
|
||||
* Returns the textual representation of a challenge's current value.
|
||||
* @param overrideValue {@link integer} The value to check for. If undefined, gets the current value.
|
||||
* @param overrideValue {@link number} The value to check for. If undefined, gets the current value.
|
||||
* @returns {@link string} The localised name for the current value.
|
||||
*/
|
||||
getValue(overrideValue?: number): string {
|
||||
@ -190,7 +190,7 @@ export abstract class Challenge {
|
||||
|
||||
/**
|
||||
* Returns the description of a challenge's current value.
|
||||
* @param overrideValue {@link integer} The value to check for. If undefined, gets the current value.
|
||||
* @param overrideValue {@link number} The value to check for. If undefined, gets the current value.
|
||||
* @returns {@link string} The localised description for the current value.
|
||||
*/
|
||||
getDescription(overrideValue?: number): string {
|
||||
@ -257,7 +257,7 @@ export abstract class Challenge {
|
||||
* Gets the "difficulty" value of this challenge.
|
||||
* @returns {@link integer} The difficulty value.
|
||||
*/
|
||||
getDifficulty(): integer {
|
||||
getDifficulty(): number {
|
||||
return this.value;
|
||||
}
|
||||
|
||||
@ -265,7 +265,7 @@ export abstract class Challenge {
|
||||
* Gets the minimum difficulty added by this challenge.
|
||||
* @returns {@link integer} The difficulty value.
|
||||
*/
|
||||
getMinDifficulty(): integer {
|
||||
getMinDifficulty(): number {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -469,7 +469,7 @@ export class SingleGenerationChallenge extends Challenge {
|
||||
let trainerTypes: (TrainerType | TrainerType[])[] = [];
|
||||
const evilTeamWaves: number[] = [ ClassicFixedBossWaves.EVIL_GRUNT_1, ClassicFixedBossWaves.EVIL_GRUNT_2, ClassicFixedBossWaves.EVIL_GRUNT_3, ClassicFixedBossWaves.EVIL_ADMIN_1, ClassicFixedBossWaves.EVIL_GRUNT_4, ClassicFixedBossWaves.EVIL_ADMIN_2, ClassicFixedBossWaves.EVIL_BOSS_1, ClassicFixedBossWaves.EVIL_BOSS_2 ];
|
||||
const evilTeamGrunts = [[ TrainerType.ROCKET_GRUNT ], [ TrainerType.ROCKET_GRUNT ], [ TrainerType.MAGMA_GRUNT, TrainerType.AQUA_GRUNT ], [ TrainerType.GALACTIC_GRUNT ], [ TrainerType.PLASMA_GRUNT ], [ TrainerType.FLARE_GRUNT ], [ TrainerType.AETHER_GRUNT, TrainerType.SKULL_GRUNT ], [ TrainerType.MACRO_GRUNT ], [ TrainerType.STAR_GRUNT ]];
|
||||
const evilTeamAdmins = [[ TrainerType.ARCHER, TrainerType.ARIANA, TrainerType.PROTON, TrainerType.PETREL ], [ TrainerType.ARCHER, TrainerType.ARIANA, TrainerType.PROTON, TrainerType.PETREL ], [[ TrainerType.TABITHA, TrainerType.COURTNEY ], [ TrainerType.MATT, TrainerType.SHELLY ]], [ TrainerType.JUPITER, TrainerType.MARS, TrainerType.SATURN ], [ TrainerType.ZINZOLIN, TrainerType.ROOD ], [ TrainerType.XEROSIC, TrainerType.BRYONY ], [ TrainerType.FABA, TrainerType.PLUMERIA ], [ TrainerType.OLEANA ], [ TrainerType.GIACOMO, TrainerType.MELA, TrainerType.ATTICUS, TrainerType.ORTEGA, TrainerType.ERI ]];
|
||||
const evilTeamAdmins = [[ TrainerType.ARCHER, TrainerType.ARIANA, TrainerType.PROTON, TrainerType.PETREL ], [ TrainerType.ARCHER, TrainerType.ARIANA, TrainerType.PROTON, TrainerType.PETREL ], [[ TrainerType.TABITHA, TrainerType.COURTNEY ], [ TrainerType.MATT, TrainerType.SHELLY ]], [ TrainerType.JUPITER, TrainerType.MARS, TrainerType.SATURN ], [ TrainerType.ZINZOLIN, TrainerType.COLRESS ], [ TrainerType.XEROSIC, TrainerType.BRYONY ], [ TrainerType.FABA, TrainerType.PLUMERIA ], [ TrainerType.OLEANA ], [ TrainerType.GIACOMO, TrainerType.MELA, TrainerType.ATTICUS, TrainerType.ORTEGA, TrainerType.ERI ]];
|
||||
const evilTeamBosses = [[ TrainerType.ROCKET_BOSS_GIOVANNI_1 ], [ TrainerType.ROCKET_BOSS_GIOVANNI_1 ], [ TrainerType.MAXIE, TrainerType.ARCHIE ], [ TrainerType.CYRUS ], [ TrainerType.GHETSIS ], [ TrainerType.LYSANDRE ], [ TrainerType.LUSAMINE, TrainerType.GUZMA ], [ TrainerType.ROSE ], [ TrainerType.PENNY ]];
|
||||
const evilTeamBossRematches = [[ TrainerType.ROCKET_BOSS_GIOVANNI_2 ], [ TrainerType.ROCKET_BOSS_GIOVANNI_2 ], [ TrainerType.MAXIE_2, TrainerType.ARCHIE_2 ], [ TrainerType.CYRUS_2 ], [ TrainerType.GHETSIS_2 ], [ TrainerType.LYSANDRE_2 ], [ TrainerType.LUSAMINE_2, TrainerType.GUZMA_2 ], [ TrainerType.ROSE_2 ], [ TrainerType.PENNY_2 ]];
|
||||
switch (waveIndex) {
|
||||
@ -509,7 +509,7 @@ export class SingleGenerationChallenge extends Challenge {
|
||||
trainerTypes = [ TrainerType.LANCE, TrainerType.KAREN, TrainerType.DRAKE, TrainerType.LUCIAN, TrainerType.CAITLIN, TrainerType.DRASNA, TrainerType.KAHILI, TrainerType.RAIHAN_ELITE, TrainerType.HASSEL ];
|
||||
break;
|
||||
case ClassicFixedBossWaves.CHAMPION:
|
||||
trainerTypes = [ TrainerType.BLUE, Utils.randSeedItem([ TrainerType.RED, TrainerType.LANCE_CHAMPION ]), Utils.randSeedItem([ TrainerType.STEVEN, TrainerType.WALLACE ]), TrainerType.CYNTHIA, Utils.randSeedItem([ TrainerType.ALDER, TrainerType.IRIS ]), TrainerType.DIANTHA, TrainerType.HAU, TrainerType.LEON, Utils.randSeedItem([ TrainerType.GEETA, TrainerType.NEMONA ]) ];
|
||||
trainerTypes = [ TrainerType.BLUE, Utils.randSeedItem([ TrainerType.RED, TrainerType.LANCE_CHAMPION ]), Utils.randSeedItem([ TrainerType.STEVEN, TrainerType.WALLACE ]), TrainerType.CYNTHIA, Utils.randSeedItem([ TrainerType.ALDER, TrainerType.IRIS ]), TrainerType.DIANTHA, Utils.randSeedItem([ TrainerType.KUKUI, TrainerType.HAU ]), Utils.randSeedItem([ TrainerType.LEON, TrainerType.MUSTARD ]), Utils.randSeedItem([ TrainerType.GEETA, TrainerType.NEMONA ]) ];
|
||||
break;
|
||||
}
|
||||
if (trainerTypes.length === 0) {
|
||||
@ -643,7 +643,7 @@ export class SingleTypeChallenge extends Challenge {
|
||||
* @param {value} overrideValue The value to check for. If undefined, gets the current value.
|
||||
* @returns {string} The localised name for the current value.
|
||||
*/
|
||||
getValue(overrideValue?: integer): string {
|
||||
getValue(overrideValue?: number): string {
|
||||
if (overrideValue === undefined) {
|
||||
overrideValue = this.value;
|
||||
}
|
||||
@ -655,7 +655,7 @@ export class SingleTypeChallenge extends Challenge {
|
||||
* @param {value} overrideValue The value to check for. If undefined, gets the current value.
|
||||
* @returns {string} The localised description for the current value.
|
||||
*/
|
||||
getDescription(overrideValue?: integer): string {
|
||||
getDescription(overrideValue?: number): string {
|
||||
if (overrideValue === undefined) {
|
||||
overrideValue = this.value;
|
||||
}
|
||||
@ -793,7 +793,7 @@ export class LowerStarterMaxCostChallenge extends Challenge {
|
||||
/**
|
||||
* @override
|
||||
*/
|
||||
getValue(overrideValue?: integer): string {
|
||||
getValue(overrideValue?: number): string {
|
||||
if (overrideValue === undefined) {
|
||||
overrideValue = this.value;
|
||||
}
|
||||
@ -827,7 +827,7 @@ export class LowerStarterPointsChallenge extends Challenge {
|
||||
/**
|
||||
* @override
|
||||
*/
|
||||
getValue(overrideValue?: integer): string {
|
||||
getValue(overrideValue?: number): string {
|
||||
if (overrideValue === undefined) {
|
||||
overrideValue = this.value;
|
||||
}
|
||||
|