Merge branch 'beta' into chilly-reception-msg
19
.github/test-filters.yml
vendored
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
all:
|
||||||
|
- "src/**"
|
||||||
|
- "test/**"
|
||||||
|
- "public/**"
|
||||||
|
# Workflows that can impact tests
|
||||||
|
- ".github/workflows/test*.yml"
|
||||||
|
- ".github/test-filters.yml"
|
||||||
|
# top-level files
|
||||||
|
- "package*.json"
|
||||||
|
- ".nvrmc" # Updates to node version can break tests
|
||||||
|
- "vite*" # vite.config.ts, vite.vitest.config.ts, vitest.workspace.ts
|
||||||
|
- "tsconfig*.json" # tsconfig.json tweaking can impact compilation
|
||||||
|
- "global.d.ts"
|
||||||
|
- ".env*"
|
||||||
|
# Blanket negations for files that cannot impact tests
|
||||||
|
- "!**/*.py" # No .py files
|
||||||
|
- "!**/*.sh" # No .sh files
|
||||||
|
- "!**/*.md" # No .md files
|
||||||
|
- "!**/.git*" # .gitkeep and family
|
5
.github/workflows/test-shard-template.yml
vendored
@ -12,11 +12,16 @@ on:
|
|||||||
totalShards:
|
totalShards:
|
||||||
required: true
|
required: true
|
||||||
type: number
|
type: number
|
||||||
|
skip:
|
||||||
|
required: true
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
test:
|
test:
|
||||||
name: Shard ${{ inputs.shard }} of ${{ inputs.totalShards }}
|
name: Shard ${{ inputs.shard }} of ${{ inputs.totalShards }}
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
if: ${{ !inputs.skip }}
|
||||||
steps:
|
steps:
|
||||||
- name: Check out Git repository
|
- name: Check out Git repository
|
||||||
uses: actions/checkout@v4.2.2
|
uses: actions/checkout@v4.2.2
|
||||||
|
57
.github/workflows/tests.yml
vendored
@ -7,58 +7,30 @@ on:
|
|||||||
branches:
|
branches:
|
||||||
- main # Trigger on push events to the main branch
|
- main # Trigger on push events to the main branch
|
||||||
- beta # Trigger on push events to the beta branch
|
- beta # Trigger on push events to the beta branch
|
||||||
- release # Trigger on push events to the release branch
|
|
||||||
# go upvote https://github.com/actions/runner/issues/1182 and yell at microsoft until they fix this or ditch yml for workflows
|
|
||||||
paths:
|
|
||||||
# src and test files
|
|
||||||
- "src/**"
|
|
||||||
- "test/**"
|
|
||||||
- "public/**"
|
|
||||||
# Workflows that can impact tests
|
|
||||||
- ".github/workflows/test*.yml"
|
|
||||||
# top-level files
|
|
||||||
- "package*.json"
|
|
||||||
- ".nvrmc" # Updates to node version can break tests
|
|
||||||
- "vite.*.ts" # vite.config.ts, vite.vitest.config.ts, vitest.workspace.ts
|
|
||||||
- "tsconfig*.json" # tsconfig.json tweaking can impact compilation
|
|
||||||
- "global.d.ts"
|
|
||||||
- ".env.*"
|
|
||||||
# Blanket negations for files that cannot impact tests
|
|
||||||
- "!**/*.py" # No .py files
|
|
||||||
- "!**/*.sh" # No .sh files
|
|
||||||
- "!**/*.md" # No .md files
|
|
||||||
- "!**/.git*" # .gitkeep and family
|
|
||||||
|
|
||||||
pull_request:
|
pull_request:
|
||||||
branches:
|
branches:
|
||||||
- main # Trigger on pull request events targeting the main branch
|
- main # Trigger on pull request events targeting the main branch
|
||||||
- beta # Trigger on pull request events targeting the beta branch
|
- beta # Trigger on pull request events targeting the beta branch
|
||||||
- release # Trigger on pull request events targeting the release branch
|
|
||||||
paths: # go upvote https://github.com/actions/runner/issues/1182 and yell at microsoft because until then we have to duplicate this
|
|
||||||
# src and test files
|
|
||||||
- "src/**"
|
|
||||||
- "test/**"
|
|
||||||
- "public/**"
|
|
||||||
# Workflows that can impact tests
|
|
||||||
- ".github/workflows/test*.yml"
|
|
||||||
# top-level files
|
|
||||||
- "package*.json"
|
|
||||||
- ".nvrmc" # Updates to node version can break tests
|
|
||||||
- "vite*" # vite.config.ts, vite.vitest.config.ts, vitest.workspace.ts
|
|
||||||
- "tsconfig*.json" # tsconfig.json tweaking can impact compilation
|
|
||||||
- "global.d.ts"
|
|
||||||
- ".env.*"
|
|
||||||
# Blanket negations for files that cannot impact tests
|
|
||||||
- "!**/*.py" # No .py files
|
|
||||||
- "!**/*.sh" # No .sh files
|
|
||||||
- "!**/*.md" # No .md files
|
|
||||||
- "!**/.git*" # .gitkeep and family
|
|
||||||
merge_group:
|
merge_group:
|
||||||
types: [checks_requested]
|
types: [checks_requested]
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
check-path-change-filter:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
pull-requests: read
|
||||||
|
outputs:
|
||||||
|
all: ${{ steps.filter.outputs.all }}
|
||||||
|
steps:
|
||||||
|
- name: checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36
|
||||||
|
with:
|
||||||
|
filters: .github/test-filters.yml
|
||||||
|
|
||||||
run-tests:
|
run-tests:
|
||||||
name: Run Tests
|
name: Run Tests
|
||||||
|
needs: check-path-change-filter
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
shard: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
|
shard: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
|
||||||
@ -67,3 +39,4 @@ jobs:
|
|||||||
project: main
|
project: main
|
||||||
shard: ${{ matrix.shard }}
|
shard: ${{ matrix.shard }}
|
||||||
totalShards: 10
|
totalShards: 10
|
||||||
|
skip: ${{ needs.check-path-change-filter.outputs.all == 'false'}}
|
||||||
|
@ -542,6 +542,79 @@
|
|||||||
"volume": 100,
|
"volume": 100,
|
||||||
"pitch": 55,
|
"pitch": 55,
|
||||||
"eventType": "AnimTimedSoundEvent"
|
"eventType": "AnimTimedSoundEvent"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frameIndex": 0,
|
||||||
|
"resourceName": "PRAS- Sandstorm",
|
||||||
|
"bgX": -50,
|
||||||
|
"bgY": 0,
|
||||||
|
"opacity": 0,
|
||||||
|
"duration": 5,
|
||||||
|
"eventType": "AnimTimedAddBgEvent"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frameIndex": 0,
|
||||||
|
"resourceName": "",
|
||||||
|
"bgX": -50,
|
||||||
|
"bgY": 0,
|
||||||
|
"opacity": 96,
|
||||||
|
"duration": 3,
|
||||||
|
"eventType": "AnimTimedUpdateBgEvent"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"3": [
|
||||||
|
{
|
||||||
|
"frameIndex": 3,
|
||||||
|
"resourceName": "",
|
||||||
|
"bgX": -25,
|
||||||
|
"bgY": 0,
|
||||||
|
"opacity": 128,
|
||||||
|
"duration": 3,
|
||||||
|
"eventType": "AnimTimedUpdateBgEvent"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"6": [
|
||||||
|
{
|
||||||
|
"frameIndex": 6,
|
||||||
|
"resourceName": "",
|
||||||
|
"bgX": 0,
|
||||||
|
"bgY": 0,
|
||||||
|
"opacity": 192,
|
||||||
|
"duration": 3,
|
||||||
|
"eventType": "AnimTimedUpdateBgEvent"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"9": [
|
||||||
|
{
|
||||||
|
"frameIndex": 9,
|
||||||
|
"resourceName": "",
|
||||||
|
"bgX": 25,
|
||||||
|
"bgY": 0,
|
||||||
|
"opacity": 128,
|
||||||
|
"duration": 3,
|
||||||
|
"eventType": "AnimTimedUpdateBgEvent"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"12": [
|
||||||
|
{
|
||||||
|
"frameIndex": 12,
|
||||||
|
"resourceName": "",
|
||||||
|
"bgX": 50,
|
||||||
|
"bgY": 0,
|
||||||
|
"opacity": 96,
|
||||||
|
"duration": 3,
|
||||||
|
"eventType": "AnimTimedUpdateBgEvent"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"15": [
|
||||||
|
{
|
||||||
|
"frameIndex": 15,
|
||||||
|
"resourceName": "",
|
||||||
|
"bgX": 50,
|
||||||
|
"bgY": 0,
|
||||||
|
"opacity": 0,
|
||||||
|
"duration": 3,
|
||||||
|
"eventType": "AnimTimedUpdateBgEvent"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -179,8 +179,6 @@
|
|||||||
"483-origin",
|
"483-origin",
|
||||||
"484-origin",
|
"484-origin",
|
||||||
"484-origin",
|
"484-origin",
|
||||||
"487-origin",
|
|
||||||
"487-origin",
|
|
||||||
"531-mega",
|
"531-mega",
|
||||||
"531-mega",
|
"531-mega",
|
||||||
"569-gigantamax",
|
"569-gigantamax",
|
||||||
@ -1293,8 +1291,6 @@
|
|||||||
"483b-origin",
|
"483b-origin",
|
||||||
"484b-origin",
|
"484b-origin",
|
||||||
"484b-origin",
|
"484b-origin",
|
||||||
"487b-origin",
|
|
||||||
"487b-origin",
|
|
||||||
"531b-mega",
|
"531b-mega",
|
||||||
"531b-mega",
|
"531b-mega",
|
||||||
"569b-gigantamax",
|
"569b-gigantamax",
|
||||||
@ -2407,8 +2403,6 @@
|
|||||||
"483sb-origin",
|
"483sb-origin",
|
||||||
"484sb-origin",
|
"484sb-origin",
|
||||||
"484sb-origin",
|
"484sb-origin",
|
||||||
"487sb-origin",
|
|
||||||
"487sb-origin",
|
|
||||||
"531sb-mega",
|
"531sb-mega",
|
||||||
"531sb-mega",
|
"531sb-mega",
|
||||||
"569sb-gigantamax",
|
"569sb-gigantamax",
|
||||||
@ -3526,8 +3520,6 @@
|
|||||||
"483s-origin",
|
"483s-origin",
|
||||||
"484s-origin",
|
"484s-origin",
|
||||||
"484s-origin",
|
"484s-origin",
|
||||||
"487s-origin",
|
|
||||||
"487s-origin",
|
|
||||||
"531s-mega",
|
"531s-mega",
|
||||||
"531s-mega",
|
"531s-mega",
|
||||||
"569s-gigantamax",
|
"569s-gigantamax",
|
||||||
|
@ -1,566 +0,0 @@
|
|||||||
{
|
|
||||||
"textures": [
|
|
||||||
{
|
|
||||||
"image": "487-origin.png",
|
|
||||||
"format": "RGBA8888",
|
|
||||||
"size": {
|
|
||||||
"w": 318,
|
|
||||||
"h": 318
|
|
||||||
},
|
|
||||||
"scale": 1,
|
|
||||||
"frames": [
|
|
||||||
{
|
|
||||||
"filename": "0023.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 91,
|
|
||||||
"h": 87
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 0,
|
|
||||||
"y": 8,
|
|
||||||
"w": 91,
|
|
||||||
"h": 77
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 0,
|
|
||||||
"y": 0,
|
|
||||||
"w": 91,
|
|
||||||
"h": 77
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0024.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 91,
|
|
||||||
"h": 87
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 0,
|
|
||||||
"y": 8,
|
|
||||||
"w": 91,
|
|
||||||
"h": 77
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 0,
|
|
||||||
"y": 0,
|
|
||||||
"w": 91,
|
|
||||||
"h": 77
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0020.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 91,
|
|
||||||
"h": 87
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 0,
|
|
||||||
"y": 9,
|
|
||||||
"w": 91,
|
|
||||||
"h": 74
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 91,
|
|
||||||
"y": 0,
|
|
||||||
"w": 91,
|
|
||||||
"h": 74
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0021.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 91,
|
|
||||||
"h": 87
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 0,
|
|
||||||
"y": 10,
|
|
||||||
"w": 91,
|
|
||||||
"h": 74
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 91,
|
|
||||||
"y": 0,
|
|
||||||
"w": 91,
|
|
||||||
"h": 74
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0022.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 91,
|
|
||||||
"h": 87
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 0,
|
|
||||||
"y": 10,
|
|
||||||
"w": 91,
|
|
||||||
"h": 74
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 91,
|
|
||||||
"y": 0,
|
|
||||||
"w": 91,
|
|
||||||
"h": 74
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0017.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 91,
|
|
||||||
"h": 87
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 0,
|
|
||||||
"y": 6,
|
|
||||||
"w": 89,
|
|
||||||
"h": 75
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 182,
|
|
||||||
"y": 0,
|
|
||||||
"w": 89,
|
|
||||||
"h": 75
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0018.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 91,
|
|
||||||
"h": 87
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 0,
|
|
||||||
"y": 7,
|
|
||||||
"w": 89,
|
|
||||||
"h": 75
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 182,
|
|
||||||
"y": 0,
|
|
||||||
"w": 89,
|
|
||||||
"h": 75
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0019.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 91,
|
|
||||||
"h": 87
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 0,
|
|
||||||
"y": 7,
|
|
||||||
"w": 89,
|
|
||||||
"h": 75
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 182,
|
|
||||||
"y": 0,
|
|
||||||
"w": 89,
|
|
||||||
"h": 75
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0025.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 91,
|
|
||||||
"h": 87
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 3,
|
|
||||||
"y": 7,
|
|
||||||
"w": 86,
|
|
||||||
"h": 79
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 91,
|
|
||||||
"y": 74,
|
|
||||||
"w": 86,
|
|
||||||
"h": 79
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0026.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 91,
|
|
||||||
"h": 87
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 3,
|
|
||||||
"y": 8,
|
|
||||||
"w": 86,
|
|
||||||
"h": 79
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 91,
|
|
||||||
"y": 74,
|
|
||||||
"w": 86,
|
|
||||||
"h": 79
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0009.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 91,
|
|
||||||
"h": 87
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 3,
|
|
||||||
"y": 1,
|
|
||||||
"w": 85,
|
|
||||||
"h": 83
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 0,
|
|
||||||
"y": 77,
|
|
||||||
"w": 85,
|
|
||||||
"h": 83
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0010.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 91,
|
|
||||||
"h": 87
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 3,
|
|
||||||
"y": 0,
|
|
||||||
"w": 85,
|
|
||||||
"h": 83
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 0,
|
|
||||||
"y": 77,
|
|
||||||
"w": 85,
|
|
||||||
"h": 83
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0011.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 91,
|
|
||||||
"h": 87
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 3,
|
|
||||||
"y": 0,
|
|
||||||
"w": 85,
|
|
||||||
"h": 82
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 177,
|
|
||||||
"y": 75,
|
|
||||||
"w": 85,
|
|
||||||
"h": 82
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0007.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 91,
|
|
||||||
"h": 87
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 4,
|
|
||||||
"y": 2,
|
|
||||||
"w": 83,
|
|
||||||
"h": 83
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 85,
|
|
||||||
"y": 153,
|
|
||||||
"w": 83,
|
|
||||||
"h": 83
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0008.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 91,
|
|
||||||
"h": 87
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 4,
|
|
||||||
"y": 1,
|
|
||||||
"w": 83,
|
|
||||||
"h": 83
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 85,
|
|
||||||
"y": 153,
|
|
||||||
"w": 83,
|
|
||||||
"h": 83
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0004.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 91,
|
|
||||||
"h": 87
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 6,
|
|
||||||
"y": 5,
|
|
||||||
"w": 80,
|
|
||||||
"h": 82
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 0,
|
|
||||||
"y": 236,
|
|
||||||
"w": 80,
|
|
||||||
"h": 82
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0005.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 91,
|
|
||||||
"h": 87
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 6,
|
|
||||||
"y": 4,
|
|
||||||
"w": 80,
|
|
||||||
"h": 82
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 0,
|
|
||||||
"y": 236,
|
|
||||||
"w": 80,
|
|
||||||
"h": 82
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0006.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 91,
|
|
||||||
"h": 87
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 6,
|
|
||||||
"y": 3,
|
|
||||||
"w": 80,
|
|
||||||
"h": 82
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 0,
|
|
||||||
"y": 236,
|
|
||||||
"w": 80,
|
|
||||||
"h": 82
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0015.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 91,
|
|
||||||
"h": 87
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 2,
|
|
||||||
"y": 4,
|
|
||||||
"w": 83,
|
|
||||||
"h": 76
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 0,
|
|
||||||
"y": 160,
|
|
||||||
"w": 83,
|
|
||||||
"h": 76
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0016.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 91,
|
|
||||||
"h": 87
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 2,
|
|
||||||
"y": 5,
|
|
||||||
"w": 83,
|
|
||||||
"h": 76
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 0,
|
|
||||||
"y": 160,
|
|
||||||
"w": 83,
|
|
||||||
"h": 76
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0003.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 91,
|
|
||||||
"h": 87
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 5,
|
|
||||||
"y": 6,
|
|
||||||
"w": 81,
|
|
||||||
"h": 81
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 80,
|
|
||||||
"y": 236,
|
|
||||||
"w": 81,
|
|
||||||
"h": 81
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0001.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 91,
|
|
||||||
"h": 87
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 5,
|
|
||||||
"y": 7,
|
|
||||||
"w": 81,
|
|
||||||
"h": 80
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 161,
|
|
||||||
"y": 236,
|
|
||||||
"w": 81,
|
|
||||||
"h": 80
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0002.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 91,
|
|
||||||
"h": 87
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 5,
|
|
||||||
"y": 7,
|
|
||||||
"w": 81,
|
|
||||||
"h": 80
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 161,
|
|
||||||
"y": 236,
|
|
||||||
"w": 81,
|
|
||||||
"h": 80
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0012.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 91,
|
|
||||||
"h": 87
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 5,
|
|
||||||
"y": 3,
|
|
||||||
"w": 81,
|
|
||||||
"h": 79
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 168,
|
|
||||||
"y": 157,
|
|
||||||
"w": 81,
|
|
||||||
"h": 79
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0013.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 91,
|
|
||||||
"h": 87
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 5,
|
|
||||||
"y": 2,
|
|
||||||
"w": 81,
|
|
||||||
"h": 79
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 168,
|
|
||||||
"y": 157,
|
|
||||||
"w": 81,
|
|
||||||
"h": 79
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0014.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 91,
|
|
||||||
"h": 87
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 5,
|
|
||||||
"y": 2,
|
|
||||||
"w": 81,
|
|
||||||
"h": 79
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 168,
|
|
||||||
"y": 157,
|
|
||||||
"w": 81,
|
|
||||||
"h": 79
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"meta": {
|
|
||||||
"app": "https://www.codeandweb.com/texturepacker",
|
|
||||||
"version": "3.0",
|
|
||||||
"smartupdate": "$TexturePacker:SmartUpdate:f669baef18fc6ae83124ad81c9b726f9:b705ee5bfe7dc7d92c348ffa4a4d6ce2:5d19509f6557fe13b0b6311434ba7e2d$"
|
|
||||||
}
|
|
||||||
}
|
|
Before Width: | Height: | Size: 9.1 KiB |
Before Width: | Height: | Size: 900 B After Width: | Height: | Size: 1.5 KiB |
@ -1,566 +0,0 @@
|
|||||||
{
|
|
||||||
"textures": [
|
|
||||||
{
|
|
||||||
"image": "487-origin.png",
|
|
||||||
"format": "RGBA8888",
|
|
||||||
"size": {
|
|
||||||
"w": 326,
|
|
||||||
"h": 326
|
|
||||||
},
|
|
||||||
"scale": 1,
|
|
||||||
"frames": [
|
|
||||||
{
|
|
||||||
"filename": "0007.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 101,
|
|
||||||
"h": 88
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 2,
|
|
||||||
"y": 2,
|
|
||||||
"w": 95,
|
|
||||||
"h": 84
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 0,
|
|
||||||
"y": 0,
|
|
||||||
"w": 95,
|
|
||||||
"h": 84
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0008.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 101,
|
|
||||||
"h": 88
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 2,
|
|
||||||
"y": 1,
|
|
||||||
"w": 95,
|
|
||||||
"h": 84
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 0,
|
|
||||||
"y": 0,
|
|
||||||
"w": 95,
|
|
||||||
"h": 84
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0023.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 101,
|
|
||||||
"h": 88
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 2,
|
|
||||||
"y": 7,
|
|
||||||
"w": 97,
|
|
||||||
"h": 79
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 0,
|
|
||||||
"y": 84,
|
|
||||||
"w": 97,
|
|
||||||
"h": 79
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0024.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 101,
|
|
||||||
"h": 88
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 2,
|
|
||||||
"y": 7,
|
|
||||||
"w": 97,
|
|
||||||
"h": 79
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 0,
|
|
||||||
"y": 84,
|
|
||||||
"w": 97,
|
|
||||||
"h": 79
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0020.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 101,
|
|
||||||
"h": 88
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 4,
|
|
||||||
"y": 6,
|
|
||||||
"w": 97,
|
|
||||||
"h": 78
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 95,
|
|
||||||
"y": 0,
|
|
||||||
"w": 97,
|
|
||||||
"h": 78
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0021.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 101,
|
|
||||||
"h": 88
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 4,
|
|
||||||
"y": 7,
|
|
||||||
"w": 97,
|
|
||||||
"h": 78
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 95,
|
|
||||||
"y": 0,
|
|
||||||
"w": 97,
|
|
||||||
"h": 78
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0022.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 101,
|
|
||||||
"h": 88
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 4,
|
|
||||||
"y": 7,
|
|
||||||
"w": 97,
|
|
||||||
"h": 78
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 95,
|
|
||||||
"y": 0,
|
|
||||||
"w": 97,
|
|
||||||
"h": 78
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0004.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 101,
|
|
||||||
"h": 88
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 1,
|
|
||||||
"y": 4,
|
|
||||||
"w": 94,
|
|
||||||
"h": 84
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 97,
|
|
||||||
"y": 78,
|
|
||||||
"w": 94,
|
|
||||||
"h": 84
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0005.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 101,
|
|
||||||
"h": 88
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 1,
|
|
||||||
"y": 3,
|
|
||||||
"w": 94,
|
|
||||||
"h": 84
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 97,
|
|
||||||
"y": 78,
|
|
||||||
"w": 94,
|
|
||||||
"h": 84
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0006.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 101,
|
|
||||||
"h": 88
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 1,
|
|
||||||
"y": 2,
|
|
||||||
"w": 94,
|
|
||||||
"h": 84
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 97,
|
|
||||||
"y": 78,
|
|
||||||
"w": 94,
|
|
||||||
"h": 84
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0025.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 101,
|
|
||||||
"h": 88
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 1,
|
|
||||||
"y": 6,
|
|
||||||
"w": 95,
|
|
||||||
"h": 81
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 97,
|
|
||||||
"y": 162,
|
|
||||||
"w": 95,
|
|
||||||
"h": 81
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0026.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 101,
|
|
||||||
"h": 88
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 1,
|
|
||||||
"y": 7,
|
|
||||||
"w": 95,
|
|
||||||
"h": 81
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 97,
|
|
||||||
"y": 162,
|
|
||||||
"w": 95,
|
|
||||||
"h": 81
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0009.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 101,
|
|
||||||
"h": 88
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 4,
|
|
||||||
"y": 1,
|
|
||||||
"w": 94,
|
|
||||||
"h": 84
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 191,
|
|
||||||
"y": 78,
|
|
||||||
"w": 94,
|
|
||||||
"h": 84
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0010.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 101,
|
|
||||||
"h": 88
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 4,
|
|
||||||
"y": 0,
|
|
||||||
"w": 94,
|
|
||||||
"h": 84
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 191,
|
|
||||||
"y": 78,
|
|
||||||
"w": 94,
|
|
||||||
"h": 84
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0017.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 101,
|
|
||||||
"h": 88
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 5,
|
|
||||||
"y": 5,
|
|
||||||
"w": 94,
|
|
||||||
"h": 77
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 192,
|
|
||||||
"y": 0,
|
|
||||||
"w": 94,
|
|
||||||
"h": 77
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0018.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 101,
|
|
||||||
"h": 88
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 5,
|
|
||||||
"y": 6,
|
|
||||||
"w": 94,
|
|
||||||
"h": 77
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 192,
|
|
||||||
"y": 0,
|
|
||||||
"w": 94,
|
|
||||||
"h": 77
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0019.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 101,
|
|
||||||
"h": 88
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 5,
|
|
||||||
"y": 6,
|
|
||||||
"w": 94,
|
|
||||||
"h": 77
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 192,
|
|
||||||
"y": 0,
|
|
||||||
"w": 94,
|
|
||||||
"h": 77
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0011.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 101,
|
|
||||||
"h": 88
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 4,
|
|
||||||
"y": 0,
|
|
||||||
"w": 94,
|
|
||||||
"h": 83
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 0,
|
|
||||||
"y": 163,
|
|
||||||
"w": 94,
|
|
||||||
"h": 83
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0003.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 101,
|
|
||||||
"h": 88
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 0,
|
|
||||||
"y": 5,
|
|
||||||
"w": 92,
|
|
||||||
"h": 83
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 192,
|
|
||||||
"y": 162,
|
|
||||||
"w": 92,
|
|
||||||
"h": 83
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0001.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 101,
|
|
||||||
"h": 88
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 0,
|
|
||||||
"y": 6,
|
|
||||||
"w": 92,
|
|
||||||
"h": 82
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 94,
|
|
||||||
"y": 243,
|
|
||||||
"w": 92,
|
|
||||||
"h": 82
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0002.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 101,
|
|
||||||
"h": 88
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 0,
|
|
||||||
"y": 6,
|
|
||||||
"w": 92,
|
|
||||||
"h": 82
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 94,
|
|
||||||
"y": 243,
|
|
||||||
"w": 92,
|
|
||||||
"h": 82
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0015.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 101,
|
|
||||||
"h": 88
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 7,
|
|
||||||
"y": 3,
|
|
||||||
"w": 90,
|
|
||||||
"h": 78
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 0,
|
|
||||||
"y": 246,
|
|
||||||
"w": 90,
|
|
||||||
"h": 78
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0016.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 101,
|
|
||||||
"h": 88
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 7,
|
|
||||||
"y": 4,
|
|
||||||
"w": 90,
|
|
||||||
"h": 78
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 0,
|
|
||||||
"y": 246,
|
|
||||||
"w": 90,
|
|
||||||
"h": 78
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0012.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 101,
|
|
||||||
"h": 88
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 5,
|
|
||||||
"y": 2,
|
|
||||||
"w": 91,
|
|
||||||
"h": 81
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 186,
|
|
||||||
"y": 245,
|
|
||||||
"w": 91,
|
|
||||||
"h": 81
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0013.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 101,
|
|
||||||
"h": 88
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 5,
|
|
||||||
"y": 1,
|
|
||||||
"w": 91,
|
|
||||||
"h": 81
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 186,
|
|
||||||
"y": 245,
|
|
||||||
"w": 91,
|
|
||||||
"h": 81
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0014.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 101,
|
|
||||||
"h": 88
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 5,
|
|
||||||
"y": 1,
|
|
||||||
"w": 91,
|
|
||||||
"h": 81
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 186,
|
|
||||||
"y": 245,
|
|
||||||
"w": 91,
|
|
||||||
"h": 81
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"meta": {
|
|
||||||
"app": "https://www.codeandweb.com/texturepacker",
|
|
||||||
"version": "3.0",
|
|
||||||
"smartupdate": "$TexturePacker:SmartUpdate:d1a63c2aac4c99e778e6efb9fa120e53:11f49886c328fc8474daefc2533a7f5d:5d19509f6557fe13b0b6311434ba7e2d$"
|
|
||||||
}
|
|
||||||
}
|
|
Before Width: | Height: | Size: 11 KiB |
@ -1,293 +0,0 @@
|
|||||||
{
|
|
||||||
"textures": [
|
|
||||||
{
|
|
||||||
"image": "487-origin.png",
|
|
||||||
"format": "RGBA8888",
|
|
||||||
"size": {
|
|
||||||
"w": 326,
|
|
||||||
"h": 326
|
|
||||||
},
|
|
||||||
"scale": 1,
|
|
||||||
"frames": [
|
|
||||||
{
|
|
||||||
"filename": "0004.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 101,
|
|
||||||
"h": 88
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 2,
|
|
||||||
"y": 2,
|
|
||||||
"w": 95,
|
|
||||||
"h": 84
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 0,
|
|
||||||
"y": 0,
|
|
||||||
"w": 95,
|
|
||||||
"h": 84
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0012.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 101,
|
|
||||||
"h": 88
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 2,
|
|
||||||
"y": 7,
|
|
||||||
"w": 97,
|
|
||||||
"h": 79
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 0,
|
|
||||||
"y": 84,
|
|
||||||
"w": 97,
|
|
||||||
"h": 79
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0011.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 101,
|
|
||||||
"h": 88
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 4,
|
|
||||||
"y": 7,
|
|
||||||
"w": 97,
|
|
||||||
"h": 78
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 95,
|
|
||||||
"y": 0,
|
|
||||||
"w": 97,
|
|
||||||
"h": 78
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0003.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 101,
|
|
||||||
"h": 88
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 1,
|
|
||||||
"y": 3,
|
|
||||||
"w": 94,
|
|
||||||
"h": 84
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 97,
|
|
||||||
"y": 78,
|
|
||||||
"w": 94,
|
|
||||||
"h": 84
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0013.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 101,
|
|
||||||
"h": 88
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 1,
|
|
||||||
"y": 6,
|
|
||||||
"w": 95,
|
|
||||||
"h": 81
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 97,
|
|
||||||
"y": 162,
|
|
||||||
"w": 95,
|
|
||||||
"h": 81
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0005.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 101,
|
|
||||||
"h": 88
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 4,
|
|
||||||
"y": 1,
|
|
||||||
"w": 94,
|
|
||||||
"h": 84
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 191,
|
|
||||||
"y": 78,
|
|
||||||
"w": 94,
|
|
||||||
"h": 84
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0009.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 101,
|
|
||||||
"h": 88
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 5,
|
|
||||||
"y": 5,
|
|
||||||
"w": 94,
|
|
||||||
"h": 77
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 192,
|
|
||||||
"y": 0,
|
|
||||||
"w": 94,
|
|
||||||
"h": 77
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0010.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 101,
|
|
||||||
"h": 88
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 5,
|
|
||||||
"y": 6,
|
|
||||||
"w": 94,
|
|
||||||
"h": 77
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 192,
|
|
||||||
"y": 0,
|
|
||||||
"w": 94,
|
|
||||||
"h": 77
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0006.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 101,
|
|
||||||
"h": 88
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 4,
|
|
||||||
"y": 0,
|
|
||||||
"w": 94,
|
|
||||||
"h": 83
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 0,
|
|
||||||
"y": 163,
|
|
||||||
"w": 94,
|
|
||||||
"h": 83
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0002.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 101,
|
|
||||||
"h": 88
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 0,
|
|
||||||
"y": 5,
|
|
||||||
"w": 92,
|
|
||||||
"h": 83
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 192,
|
|
||||||
"y": 162,
|
|
||||||
"w": 92,
|
|
||||||
"h": 83
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0001.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 101,
|
|
||||||
"h": 88
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 0,
|
|
||||||
"y": 6,
|
|
||||||
"w": 92,
|
|
||||||
"h": 82
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 94,
|
|
||||||
"y": 243,
|
|
||||||
"w": 92,
|
|
||||||
"h": 82
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0008.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 101,
|
|
||||||
"h": 88
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 7,
|
|
||||||
"y": 3,
|
|
||||||
"w": 90,
|
|
||||||
"h": 78
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 0,
|
|
||||||
"y": 246,
|
|
||||||
"w": 90,
|
|
||||||
"h": 78
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0007.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 101,
|
|
||||||
"h": 88
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 5,
|
|
||||||
"y": 1,
|
|
||||||
"w": 91,
|
|
||||||
"h": 81
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 186,
|
|
||||||
"y": 245,
|
|
||||||
"w": 91,
|
|
||||||
"h": 81
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"meta": {
|
|
||||||
"app": "https://www.codeandweb.com/texturepacker",
|
|
||||||
"version": "3.0",
|
|
||||||
"smartupdate": "$TexturePacker:SmartUpdate:47e13c1a7a77825c7cf7e9fb039c2587:68949a6c55126e61a0a82829cd6ac5a8:5d19509f6557fe13b0b6311434ba7e2d$"
|
|
||||||
}
|
|
||||||
}
|
|
Before Width: | Height: | Size: 11 KiB |
@ -1,293 +0,0 @@
|
|||||||
{
|
|
||||||
"textures": [
|
|
||||||
{
|
|
||||||
"image": "487-origin.png",
|
|
||||||
"format": "RGBA8888",
|
|
||||||
"size": {
|
|
||||||
"w": 318,
|
|
||||||
"h": 318
|
|
||||||
},
|
|
||||||
"scale": 1,
|
|
||||||
"frames": [
|
|
||||||
{
|
|
||||||
"filename": "0012.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 91,
|
|
||||||
"h": 87
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 0,
|
|
||||||
"y": 8,
|
|
||||||
"w": 91,
|
|
||||||
"h": 77
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 0,
|
|
||||||
"y": 0,
|
|
||||||
"w": 91,
|
|
||||||
"h": 77
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0011.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 91,
|
|
||||||
"h": 87
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 0,
|
|
||||||
"y": 10,
|
|
||||||
"w": 91,
|
|
||||||
"h": 74
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 91,
|
|
||||||
"y": 0,
|
|
||||||
"w": 91,
|
|
||||||
"h": 74
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0009.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 91,
|
|
||||||
"h": 87
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 0,
|
|
||||||
"y": 6,
|
|
||||||
"w": 89,
|
|
||||||
"h": 75
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 182,
|
|
||||||
"y": 0,
|
|
||||||
"w": 89,
|
|
||||||
"h": 75
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0010.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 91,
|
|
||||||
"h": 87
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 0,
|
|
||||||
"y": 7,
|
|
||||||
"w": 89,
|
|
||||||
"h": 75
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 182,
|
|
||||||
"y": 0,
|
|
||||||
"w": 89,
|
|
||||||
"h": 75
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0013.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 91,
|
|
||||||
"h": 87
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 3,
|
|
||||||
"y": 7,
|
|
||||||
"w": 86,
|
|
||||||
"h": 79
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 91,
|
|
||||||
"y": 74,
|
|
||||||
"w": 86,
|
|
||||||
"h": 79
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0005.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 91,
|
|
||||||
"h": 87
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 3,
|
|
||||||
"y": 1,
|
|
||||||
"w": 85,
|
|
||||||
"h": 83
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 0,
|
|
||||||
"y": 77,
|
|
||||||
"w": 85,
|
|
||||||
"h": 83
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0006.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 91,
|
|
||||||
"h": 87
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 3,
|
|
||||||
"y": 0,
|
|
||||||
"w": 85,
|
|
||||||
"h": 82
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 177,
|
|
||||||
"y": 75,
|
|
||||||
"w": 85,
|
|
||||||
"h": 82
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0004.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 91,
|
|
||||||
"h": 87
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 4,
|
|
||||||
"y": 2,
|
|
||||||
"w": 83,
|
|
||||||
"h": 83
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 85,
|
|
||||||
"y": 153,
|
|
||||||
"w": 83,
|
|
||||||
"h": 83
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0003.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 91,
|
|
||||||
"h": 87
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 6,
|
|
||||||
"y": 4,
|
|
||||||
"w": 80,
|
|
||||||
"h": 82
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 0,
|
|
||||||
"y": 236,
|
|
||||||
"w": 80,
|
|
||||||
"h": 82
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0008.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 91,
|
|
||||||
"h": 87
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 2,
|
|
||||||
"y": 4,
|
|
||||||
"w": 83,
|
|
||||||
"h": 76
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 0,
|
|
||||||
"y": 160,
|
|
||||||
"w": 83,
|
|
||||||
"h": 76
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0002.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 91,
|
|
||||||
"h": 87
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 5,
|
|
||||||
"y": 6,
|
|
||||||
"w": 81,
|
|
||||||
"h": 81
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 80,
|
|
||||||
"y": 236,
|
|
||||||
"w": 81,
|
|
||||||
"h": 81
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0001.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 91,
|
|
||||||
"h": 87
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 5,
|
|
||||||
"y": 7,
|
|
||||||
"w": 81,
|
|
||||||
"h": 80
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 161,
|
|
||||||
"y": 236,
|
|
||||||
"w": 81,
|
|
||||||
"h": 80
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename": "0007.png",
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": true,
|
|
||||||
"sourceSize": {
|
|
||||||
"w": 91,
|
|
||||||
"h": 87
|
|
||||||
},
|
|
||||||
"spriteSourceSize": {
|
|
||||||
"x": 5,
|
|
||||||
"y": 2,
|
|
||||||
"w": 81,
|
|
||||||
"h": 79
|
|
||||||
},
|
|
||||||
"frame": {
|
|
||||||
"x": 168,
|
|
||||||
"y": 157,
|
|
||||||
"w": 81,
|
|
||||||
"h": 79
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"meta": {
|
|
||||||
"app": "https://www.codeandweb.com/texturepacker",
|
|
||||||
"version": "3.0",
|
|
||||||
"smartupdate": "$TexturePacker:SmartUpdate:00abebb007c47ada81d4e754581d7146:4691e19364eb9392dbee1ee37d737c8b:5d19509f6557fe13b0b6311434ba7e2d$"
|
|
||||||
}
|
|
||||||
}
|
|
Before Width: | Height: | Size: 9.1 KiB |
Before Width: | Height: | Size: 868 B After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 32 KiB |
@ -8,11 +8,11 @@ export type SignatureSpecies = {
|
|||||||
* The signature species for each Gym Leader, Elite Four member, and Champion.
|
* The signature species for each Gym Leader, Elite Four member, and Champion.
|
||||||
* The key is the trainer type, and the value is an array of Species or Species arrays.
|
* The key is the trainer type, and the value is an array of Species or Species arrays.
|
||||||
* This is in a separate const so it can be accessed from other places and not just the trainerConfigs
|
* This is in a separate const so it can be accessed from other places and not just the trainerConfigs
|
||||||
*
|
*
|
||||||
* @remarks
|
* @remarks
|
||||||
* The `Proxy` object allows us to define a handler that will intercept
|
* The `Proxy` object allows us to define a handler that will intercept
|
||||||
* the property access and return an empty array if the property does not exist in the object.
|
* the property access and return an empty array if the property does not exist in the object.
|
||||||
*
|
*
|
||||||
* This means that accessing `signatureSpecies` will not throw an error if the property does not exist,
|
* This means that accessing `signatureSpecies` will not throw an error if the property does not exist,
|
||||||
* but instead default to an empty array.
|
* but instead default to an empty array.
|
||||||
*/
|
*/
|
||||||
|
@ -19057,8 +19057,15 @@ export const tmSpecies: TmSpecies = {
|
|||||||
Species.SLAKING,
|
Species.SLAKING,
|
||||||
Species.HARIYAMA,
|
Species.HARIYAMA,
|
||||||
Species.NOSEPASS,
|
Species.NOSEPASS,
|
||||||
|
Species.ARON,
|
||||||
|
Species.LAIRON,
|
||||||
|
Species.AGGRON,
|
||||||
|
Species.ELECTRIKE,
|
||||||
|
Species.MANECTRIC,
|
||||||
Species.GULPIN,
|
Species.GULPIN,
|
||||||
Species.SWALOT,
|
Species.SWALOT,
|
||||||
|
Species.WAILMER,
|
||||||
|
Species.WAILORD,
|
||||||
Species.NUMEL,
|
Species.NUMEL,
|
||||||
Species.CAMERUPT,
|
Species.CAMERUPT,
|
||||||
Species.TORKOAL,
|
Species.TORKOAL,
|
||||||
@ -19067,18 +19074,28 @@ export const tmSpecies: TmSpecies = {
|
|||||||
Species.ZANGOOSE,
|
Species.ZANGOOSE,
|
||||||
Species.SEVIPER,
|
Species.SEVIPER,
|
||||||
Species.WHISCASH,
|
Species.WHISCASH,
|
||||||
|
Species.LILEEP,
|
||||||
|
Species.CRADILY,
|
||||||
|
Species.ANORITH,
|
||||||
|
Species.ARMALDO,
|
||||||
Species.SHUPPET,
|
Species.SHUPPET,
|
||||||
Species.BANETTE,
|
Species.BANETTE,
|
||||||
Species.DUSKULL,
|
Species.DUSKULL,
|
||||||
Species.DUSCLOPS,
|
Species.DUSCLOPS,
|
||||||
Species.TROPIUS,
|
Species.TROPIUS,
|
||||||
Species.CHIMECHO,
|
Species.CHIMECHO,
|
||||||
|
Species.ABSOL,
|
||||||
|
Species.SPHEAL,
|
||||||
|
Species.SEALEO,
|
||||||
|
Species.WALREIN,
|
||||||
Species.REGIROCK,
|
Species.REGIROCK,
|
||||||
Species.REGICE,
|
Species.REGICE,
|
||||||
Species.REGISTEEL,
|
Species.REGISTEEL,
|
||||||
Species.TURTWIG,
|
Species.TURTWIG,
|
||||||
Species.GROTLE,
|
Species.GROTLE,
|
||||||
Species.TORTERRA,
|
Species.TORTERRA,
|
||||||
|
Species.BIDOOF,
|
||||||
|
Species.BIBAREL,
|
||||||
Species.CRANIDOS,
|
Species.CRANIDOS,
|
||||||
Species.RAMPARDOS,
|
Species.RAMPARDOS,
|
||||||
Species.SHIELDON,
|
Species.SHIELDON,
|
||||||
@ -19120,6 +19137,11 @@ export const tmSpecies: TmSpecies = {
|
|||||||
Species.TEPIG,
|
Species.TEPIG,
|
||||||
Species.PIGNITE,
|
Species.PIGNITE,
|
||||||
Species.EMBOAR,
|
Species.EMBOAR,
|
||||||
|
Species.MUNNA,
|
||||||
|
Species.MUSHARNA,
|
||||||
|
Species.ROGGENROLA,
|
||||||
|
Species.BOLDORE,
|
||||||
|
Species.GIGALITH,
|
||||||
Species.DRILBUR,
|
Species.DRILBUR,
|
||||||
Species.EXCADRILL,
|
Species.EXCADRILL,
|
||||||
Species.TIMBURR,
|
Species.TIMBURR,
|
||||||
@ -19128,28 +19150,44 @@ export const tmSpecies: TmSpecies = {
|
|||||||
Species.SANDILE,
|
Species.SANDILE,
|
||||||
Species.KROKOROK,
|
Species.KROKOROK,
|
||||||
Species.KROOKODILE,
|
Species.KROOKODILE,
|
||||||
|
Species.DWEBBLE,
|
||||||
|
Species.CRUSTLE,
|
||||||
Species.SCRAGGY,
|
Species.SCRAGGY,
|
||||||
Species.SCRAFTY,
|
Species.SCRAFTY,
|
||||||
Species.YAMASK,
|
Species.YAMASK,
|
||||||
Species.COFAGRIGUS,
|
Species.COFAGRIGUS,
|
||||||
|
Species.TRUBBISH,
|
||||||
|
Species.GARBODOR,
|
||||||
Species.SAWSBUCK,
|
Species.SAWSBUCK,
|
||||||
|
Species.FERROSEED,
|
||||||
|
Species.FERROTHORN,
|
||||||
Species.LITWICK,
|
Species.LITWICK,
|
||||||
Species.LAMPENT,
|
Species.LAMPENT,
|
||||||
Species.CHANDELURE,
|
Species.CHANDELURE,
|
||||||
Species.BEARTIC,
|
Species.BEARTIC,
|
||||||
|
Species.SHELMET,
|
||||||
|
Species.ACCELGOR,
|
||||||
|
Species.STUNFISK,
|
||||||
Species.GOLETT,
|
Species.GOLETT,
|
||||||
Species.GOLURK,
|
Species.GOLURK,
|
||||||
|
Species.HEATMOR,
|
||||||
Species.CHESPIN,
|
Species.CHESPIN,
|
||||||
Species.QUILLADIN,
|
Species.QUILLADIN,
|
||||||
Species.CHESNAUGHT,
|
Species.CHESNAUGHT,
|
||||||
|
Species.TYRUNT,
|
||||||
|
Species.TYRANTRUM,
|
||||||
Species.SYLVEON,
|
Species.SYLVEON,
|
||||||
Species.GOOMY,
|
Species.GOOMY,
|
||||||
Species.SLIGGOO,
|
Species.SLIGGOO,
|
||||||
Species.GOODRA,
|
Species.GOODRA,
|
||||||
Species.PHANTUMP,
|
Species.PHANTUMP,
|
||||||
Species.TREVENANT,
|
Species.TREVENANT,
|
||||||
|
Species.PUMPKABOO,
|
||||||
|
Species.GOURGEIST,
|
||||||
Species.BERGMITE,
|
Species.BERGMITE,
|
||||||
Species.AVALUGG,
|
Species.AVALUGG,
|
||||||
|
Species.ROWLET,
|
||||||
|
Species.DARTRIX,
|
||||||
Species.DECIDUEYE,
|
Species.DECIDUEYE,
|
||||||
Species.GUMSHOOS,
|
Species.GUMSHOOS,
|
||||||
Species.MUDBRAY,
|
Species.MUDBRAY,
|
||||||
@ -19157,7 +19195,9 @@ export const tmSpecies: TmSpecies = {
|
|||||||
Species.PASSIMIAN,
|
Species.PASSIMIAN,
|
||||||
Species.SANDYGAST,
|
Species.SANDYGAST,
|
||||||
Species.PALOSSAND,
|
Species.PALOSSAND,
|
||||||
|
Species.PYUKUMUKU,
|
||||||
Species.KOMALA,
|
Species.KOMALA,
|
||||||
|
Species.TURTONATOR,
|
||||||
Species.MIMIKYU,
|
Species.MIMIKYU,
|
||||||
Species.SKWOVET,
|
Species.SKWOVET,
|
||||||
Species.GREEDENT,
|
Species.GREEDENT,
|
||||||
@ -19169,6 +19209,7 @@ export const tmSpecies: TmSpecies = {
|
|||||||
Species.SINISTEA,
|
Species.SINISTEA,
|
||||||
Species.POLTEAGEIST,
|
Species.POLTEAGEIST,
|
||||||
Species.PERRSERKER,
|
Species.PERRSERKER,
|
||||||
|
Species.CURSOLA,
|
||||||
Species.RUNERIGUS,
|
Species.RUNERIGUS,
|
||||||
Species.PINCURCHIN,
|
Species.PINCURCHIN,
|
||||||
Species.STONJOURNER,
|
Species.STONJOURNER,
|
||||||
@ -19236,6 +19277,7 @@ export const tmSpecies: TmSpecies = {
|
|||||||
Species.GALAR_WEEZING,
|
Species.GALAR_WEEZING,
|
||||||
Species.GALAR_SLOWKING,
|
Species.GALAR_SLOWKING,
|
||||||
Species.GALAR_YAMASK,
|
Species.GALAR_YAMASK,
|
||||||
|
Species.GALAR_STUNFISK,
|
||||||
Species.HISUI_ELECTRODE,
|
Species.HISUI_ELECTRODE,
|
||||||
Species.HISUI_TYPHLOSION,
|
Species.HISUI_TYPHLOSION,
|
||||||
Species.HISUI_QWILFISH,
|
Species.HISUI_QWILFISH,
|
||||||
@ -67062,7 +67104,7 @@ export const tmSpecies: TmSpecies = {
|
|||||||
Species.CHEWTLE,
|
Species.CHEWTLE,
|
||||||
Species.DREDNAW,
|
Species.DREDNAW,
|
||||||
Species.YAMPER,
|
Species.YAMPER,
|
||||||
Species.BOLTUND,
|
Species.BOLTUND,
|
||||||
Species.ROLYCOLY,
|
Species.ROLYCOLY,
|
||||||
Species.CARKOL,
|
Species.CARKOL,
|
||||||
Species.COALOSSAL,
|
Species.COALOSSAL,
|
||||||
@ -67079,7 +67121,7 @@ export const tmSpecies: TmSpecies = {
|
|||||||
Species.SIZZLIPEDE,
|
Species.SIZZLIPEDE,
|
||||||
Species.CENTISKORCH,
|
Species.CENTISKORCH,
|
||||||
Species.CLOBBOPUS,
|
Species.CLOBBOPUS,
|
||||||
Species.GRAPPLOCT,
|
Species.GRAPPLOCT,
|
||||||
Species.SINISTEA,
|
Species.SINISTEA,
|
||||||
Species.POLTEAGEIST,
|
Species.POLTEAGEIST,
|
||||||
Species.HATENNA,
|
Species.HATENNA,
|
||||||
|
@ -6405,8 +6405,23 @@ export class ForceSwitchOutAttr extends MoveEffectAttr {
|
|||||||
return (user, target, move) => {
|
return (user, target, move) => {
|
||||||
const switchOutTarget = (this.selfSwitch ? user : target);
|
const switchOutTarget = (this.selfSwitch ? user : target);
|
||||||
const player = switchOutTarget instanceof PlayerPokemon;
|
const player = switchOutTarget instanceof PlayerPokemon;
|
||||||
|
const forceSwitchAttr = move.getAttrs(ForceSwitchOutAttr).find(attr => attr.switchType === SwitchType.FORCE_SWITCH);
|
||||||
|
|
||||||
if (!this.selfSwitch) {
|
if (!this.selfSwitch) {
|
||||||
|
if (move.hitsSubstitute(user, target)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if the move is Roar or Whirlwind and if there is a trainer with only Pokémon left.
|
||||||
|
if (forceSwitchAttr && globalScene.currentBattle.trainer) {
|
||||||
|
const enemyParty = globalScene.getEnemyParty();
|
||||||
|
// Filter out any Pokémon that are not allowed in battle (e.g. fainted ones)
|
||||||
|
const remainingPokemon = enemyParty.filter(p => p.hp > 0 && p.isAllowedInBattle());
|
||||||
|
if (remainingPokemon.length <= 1) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Dondozo with an allied Tatsugiri in its mouth cannot be forced out
|
// Dondozo with an allied Tatsugiri in its mouth cannot be forced out
|
||||||
const commandedTag = switchOutTarget.getTag(BattlerTagType.COMMANDED);
|
const commandedTag = switchOutTarget.getTag(BattlerTagType.COMMANDED);
|
||||||
if (commandedTag?.getSourcePokemon()?.isActive(true)) {
|
if (commandedTag?.getSourcePokemon()?.isActive(true)) {
|
||||||
@ -8067,10 +8082,10 @@ export class UpperHandCondition extends MoveCondition {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export class hitsSameTypeAttr extends VariableMoveTypeMultiplierAttr {
|
export class HitsSameTypeAttr extends VariableMoveTypeMultiplierAttr {
|
||||||
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
|
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
|
||||||
const multiplier = args[0] as NumberHolder;
|
const multiplier = args[0] as NumberHolder;
|
||||||
if (!user.getTypes().some(type => target.getTypes().includes(type))) {
|
if (!user.getTypes(true).some(type => target.getTypes(true).includes(type))) {
|
||||||
multiplier.value = 0;
|
multiplier.value = 0;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -9771,7 +9786,7 @@ export function initMoves() {
|
|||||||
new AttackMove(Moves.SYNCHRONOISE, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 120, 100, 10, -1, 0, 5)
|
new AttackMove(Moves.SYNCHRONOISE, PokemonType.PSYCHIC, MoveCategory.SPECIAL, 120, 100, 10, -1, 0, 5)
|
||||||
.target(MoveTarget.ALL_NEAR_OTHERS)
|
.target(MoveTarget.ALL_NEAR_OTHERS)
|
||||||
.condition(unknownTypeCondition)
|
.condition(unknownTypeCondition)
|
||||||
.attr(hitsSameTypeAttr),
|
.attr(HitsSameTypeAttr),
|
||||||
new AttackMove(Moves.ELECTRO_BALL, PokemonType.ELECTRIC, MoveCategory.SPECIAL, -1, 100, 10, -1, 0, 5)
|
new AttackMove(Moves.ELECTRO_BALL, PokemonType.ELECTRIC, MoveCategory.SPECIAL, -1, 100, 10, -1, 0, 5)
|
||||||
.attr(ElectroBallPowerAttr)
|
.attr(ElectroBallPowerAttr)
|
||||||
.ballBombMove(),
|
.ballBombMove(),
|
||||||
|
@ -3500,11 +3500,11 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
|
|||||||
}
|
}
|
||||||
let weight = levelMove[0];
|
let weight = levelMove[0];
|
||||||
// Evolution Moves
|
// Evolution Moves
|
||||||
if (weight === 0) {
|
if (weight === EVOLVE_MOVE) {
|
||||||
weight = 50;
|
weight = 50;
|
||||||
}
|
}
|
||||||
// Assume level 1 moves with 80+ BP are "move reminder" moves and bump their weight
|
// Assume level 1 moves with 80+ BP are "move reminder" moves and bump their weight. Trainers use actual relearn moves.
|
||||||
if (weight === 1 && allMoves[levelMove[1]].power >= 80) {
|
if (weight === 1 && allMoves[levelMove[1]].power >= 80 || weight === RELEARN_MOVE && this.hasTrainer()) {
|
||||||
weight = 40;
|
weight = 40;
|
||||||
}
|
}
|
||||||
if (
|
if (
|
||||||
@ -3609,9 +3609,9 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
|
|||||||
|
|
||||||
// Bosses never get self ko moves or Pain Split
|
// Bosses never get self ko moves or Pain Split
|
||||||
if (this.isBoss()) {
|
if (this.isBoss()) {
|
||||||
movePool = movePool.filter(m => !allMoves[m[0]].hasAttr(SacrificialAttr));
|
movePool = movePool.filter(m => !allMoves[m[0]].hasAttr(SacrificialAttr) && !allMoves[m[0]].hasAttr(HpSplitAttr));
|
||||||
movePool = movePool.filter(m => !allMoves[m[0]].hasAttr(HpSplitAttr));
|
|
||||||
}
|
}
|
||||||
|
// No one gets Memento or Final Gambit
|
||||||
movePool = movePool.filter(
|
movePool = movePool.filter(
|
||||||
m => !allMoves[m[0]].hasAttr(SacrificialAttrOnHit),
|
m => !allMoves[m[0]].hasAttr(SacrificialAttrOnHit),
|
||||||
);
|
);
|
||||||
@ -3623,10 +3623,6 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
|
|||||||
m[0],
|
m[0],
|
||||||
m[1] * (allMoves[m[0]].hasAttr(SacrificialAttr) ? 0.5 : 1),
|
m[1] * (allMoves[m[0]].hasAttr(SacrificialAttr) ? 0.5 : 1),
|
||||||
]);
|
]);
|
||||||
movePool = movePool.map(m => [
|
|
||||||
m[0],
|
|
||||||
m[1] * (allMoves[m[0]].hasAttr(SacrificialAttrOnHit) ? 0.5 : 1),
|
|
||||||
]);
|
|
||||||
// Trainers get a weight bump to stat buffing moves
|
// Trainers get a weight bump to stat buffing moves
|
||||||
movePool = movePool.map(m => [
|
movePool = movePool.map(m => [
|
||||||
m[0],
|
m[0],
|
||||||
@ -3687,10 +3683,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
|
|||||||
]);
|
]);
|
||||||
|
|
||||||
/** The higher this is the more the game weights towards higher level moves. At `0` all moves are equal weight. */
|
/** The higher this is the more the game weights towards higher level moves. At `0` all moves are equal weight. */
|
||||||
let weightMultiplier = 0.9;
|
let weightMultiplier = 1.6;
|
||||||
if (this.hasTrainer()) {
|
|
||||||
weightMultiplier += 0.7;
|
|
||||||
}
|
|
||||||
if (this.isBoss()) {
|
if (this.isBoss()) {
|
||||||
weightMultiplier += 0.4;
|
weightMultiplier += 0.4;
|
||||||
}
|
}
|
||||||
@ -3699,37 +3692,21 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
|
|||||||
Math.ceil(Math.pow(m[1], weightMultiplier) * 100),
|
Math.ceil(Math.pow(m[1], weightMultiplier) * 100),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// Trainers and bosses always force a stab move
|
// All Pokemon force a STAB move first
|
||||||
if (this.hasTrainer() || this.isBoss()) {
|
const stabMovePool = baseWeights.filter(
|
||||||
const stabMovePool = baseWeights.filter(
|
m =>
|
||||||
m =>
|
allMoves[m[0]].category !== MoveCategory.STATUS &&
|
||||||
allMoves[m[0]].category !== MoveCategory.STATUS &&
|
this.isOfType(allMoves[m[0]].type),
|
||||||
this.isOfType(allMoves[m[0]].type),
|
);
|
||||||
);
|
|
||||||
|
|
||||||
if (stabMovePool.length) {
|
if (stabMovePool.length) {
|
||||||
const totalWeight = stabMovePool.reduce((v, m) => v + m[1], 0);
|
const totalWeight = stabMovePool.reduce((v, m) => v + m[1], 0);
|
||||||
let rand = randSeedInt(totalWeight);
|
let rand = randSeedInt(totalWeight);
|
||||||
let index = 0;
|
let index = 0;
|
||||||
while (rand > stabMovePool[index][1]) {
|
while (rand > stabMovePool[index][1]) {
|
||||||
rand -= stabMovePool[index++][1];
|
rand -= stabMovePool[index++][1];
|
||||||
}
|
|
||||||
this.moveset.push(new PokemonMove(stabMovePool[index][0], 0, 0));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// Normal wild pokemon just force a random damaging move
|
|
||||||
const attackMovePool = baseWeights.filter(
|
|
||||||
m => allMoves[m[0]].category !== MoveCategory.STATUS,
|
|
||||||
);
|
|
||||||
if (attackMovePool.length) {
|
|
||||||
const totalWeight = attackMovePool.reduce((v, m) => v + m[1], 0);
|
|
||||||
let rand = randSeedInt(totalWeight);
|
|
||||||
let index = 0;
|
|
||||||
while (rand > attackMovePool[index][1]) {
|
|
||||||
rand -= attackMovePool[index++][1];
|
|
||||||
}
|
|
||||||
this.moveset.push(new PokemonMove(attackMovePool[index][0], 0, 0));
|
|
||||||
}
|
}
|
||||||
|
this.moveset.push(new PokemonMove(stabMovePool[index][0], 0, 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
while (
|
while (
|
||||||
@ -3741,7 +3718,11 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
|
|||||||
// Other damaging moves 2x weight if 0-1 damaging moves, 0.5x if 2, 0.125x if 3. These weights get 20x if STAB.
|
// Other damaging moves 2x weight if 0-1 damaging moves, 0.5x if 2, 0.125x if 3. These weights get 20x if STAB.
|
||||||
// Status moves remain unchanged on weight, this encourages 1-2
|
// Status moves remain unchanged on weight, this encourages 1-2
|
||||||
movePool = baseWeights
|
movePool = baseWeights
|
||||||
.filter(m => !this.moveset.some(mo => m[0] === mo.moveId))
|
.filter(m => !this.moveset.some(
|
||||||
|
mo =>
|
||||||
|
m[0] === mo.moveId ||
|
||||||
|
(allMoves[m[0]].hasAttr(SacrificialAttr) && mo.getMove().hasAttr(SacrificialAttr)) // Only one self-KO move allowed
|
||||||
|
))
|
||||||
.map(m => {
|
.map(m => {
|
||||||
let ret: number;
|
let ret: number;
|
||||||
if (
|
if (
|
||||||
@ -3772,7 +3753,11 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
|
|||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
// Non-trainer pokemon just use normal weights
|
// Non-trainer pokemon just use normal weights
|
||||||
movePool = baseWeights.filter(m => !this.moveset.some(mo => m[0] === mo.moveId));
|
movePool = baseWeights.filter(m => !this.moveset.some(
|
||||||
|
mo =>
|
||||||
|
m[0] === mo.moveId ||
|
||||||
|
(allMoves[m[0]].hasAttr(SacrificialAttr) && mo.getMove().hasAttr(SacrificialAttr)) // Only one self-KO move allowed
|
||||||
|
));
|
||||||
}
|
}
|
||||||
const totalWeight = movePool.reduce((v, m) => v + m[1], 0);
|
const totalWeight = movePool.reduce((v, m) => v + m[1], 0);
|
||||||
let rand = randSeedInt(totalWeight);
|
let rand = randSeedInt(totalWeight);
|
||||||
@ -5678,7 +5663,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Performs the action of clearing a Pokemon's status
|
* Performs the action of clearing a Pokemon's status
|
||||||
*
|
*
|
||||||
* This is a helper to {@linkcode resetStatus}, which should be called directly instead of this method
|
* This is a helper to {@linkcode resetStatus}, which should be called directly instead of this method
|
||||||
*/
|
*/
|
||||||
public clearStatus(confusion: boolean, reloadAssets: boolean) {
|
public clearStatus(confusion: boolean, reloadAssets: boolean) {
|
||||||
@ -7104,7 +7089,6 @@ export class EnemyPokemon extends Pokemon {
|
|||||||
|
|
||||||
if (!dataSource) {
|
if (!dataSource) {
|
||||||
this.generateAndPopulateMoveset();
|
this.generateAndPopulateMoveset();
|
||||||
|
|
||||||
if (shinyLock || Overrides.OPP_SHINY_OVERRIDE === false) {
|
if (shinyLock || Overrides.OPP_SHINY_OVERRIDE === false) {
|
||||||
this.shiny = false;
|
this.shiny = false;
|
||||||
} else {
|
} else {
|
||||||
|
@ -1888,7 +1888,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
|
|||||||
if (!(passiveAttr & PassiveAttr.UNLOCKED)) {
|
if (!(passiveAttr & PassiveAttr.UNLOCKED)) {
|
||||||
const passiveCost = getPassiveCandyCount(speciesStarterCosts[this.starterId]);
|
const passiveCost = getPassiveCandyCount(speciesStarterCosts[this.starterId]);
|
||||||
options.push({
|
options.push({
|
||||||
label: `x${passiveCost} ${i18next.t("pokedexUiHandler:unlockPassive")} (${allAbilities[this.passive].name})`,
|
label: `x${passiveCost} ${i18next.t("pokedexUiHandler:unlockPassive")}`,
|
||||||
handler: () => {
|
handler: () => {
|
||||||
if (Overrides.FREE_CANDY_UPGRADE_OVERRIDE || candyCount >= passiveCost) {
|
if (Overrides.FREE_CANDY_UPGRADE_OVERRIDE || candyCount >= passiveCost) {
|
||||||
starterData.passiveAttr |= PassiveAttr.UNLOCKED | PassiveAttr.ENABLED;
|
starterData.passiveAttr |= PassiveAttr.UNLOCKED | PassiveAttr.ENABLED;
|
||||||
|
@ -151,8 +151,10 @@ const languageSettings: { [key: string]: LanguageSetting } = {
|
|||||||
starterInfoXPos: 30,
|
starterInfoXPos: 30,
|
||||||
},
|
},
|
||||||
ja: {
|
ja: {
|
||||||
starterInfoTextSize: "51px",
|
starterInfoTextSize: "62px",
|
||||||
instructionTextSize: "38px",
|
instructionTextSize: "38px",
|
||||||
|
starterInfoYOffset: 0.5,
|
||||||
|
starterInfoXPos: 33,
|
||||||
},
|
},
|
||||||
"ca-ES": {
|
"ca-ES": {
|
||||||
starterInfoTextSize: "52px",
|
starterInfoTextSize: "52px",
|
||||||
@ -2182,7 +2184,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
|
|||||||
if (!(passiveAttr & PassiveAttr.UNLOCKED)) {
|
if (!(passiveAttr & PassiveAttr.UNLOCKED)) {
|
||||||
const passiveCost = getPassiveCandyCount(speciesStarterCosts[this.lastSpecies.speciesId]);
|
const passiveCost = getPassiveCandyCount(speciesStarterCosts[this.lastSpecies.speciesId]);
|
||||||
options.push({
|
options.push({
|
||||||
label: `x${passiveCost} ${i18next.t("starterSelectUiHandler:unlockPassive")} (${allAbilities[this.lastSpecies.getPassiveAbility()].name})`,
|
label: `x${passiveCost} ${i18next.t("starterSelectUiHandler:unlockPassive")}`,
|
||||||
handler: () => {
|
handler: () => {
|
||||||
if (Overrides.FREE_CANDY_UPGRADE_OVERRIDE || candyCount >= passiveCost) {
|
if (Overrides.FREE_CANDY_UPGRADE_OVERRIDE || candyCount >= passiveCost) {
|
||||||
starterData.passiveAttr |= PassiveAttr.UNLOCKED | PassiveAttr.ENABLED;
|
starterData.passiveAttr |= PassiveAttr.UNLOCKED | PassiveAttr.ENABLED;
|
||||||
|
47
test/moves/synchronoise.test.ts
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
import { Abilities } from "#enums/abilities";
|
||||||
|
import { Moves } from "#enums/moves";
|
||||||
|
import { PokemonType } from "#enums/pokemon-type";
|
||||||
|
import { Species } from "#enums/species";
|
||||||
|
import GameManager from "#test/testUtils/gameManager";
|
||||||
|
import Phaser from "phaser";
|
||||||
|
import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest";
|
||||||
|
|
||||||
|
describe("Moves - Synchronoise", () => {
|
||||||
|
let phaserGame: Phaser.Game;
|
||||||
|
let game: GameManager;
|
||||||
|
|
||||||
|
beforeAll(() => {
|
||||||
|
phaserGame = new Phaser.Game({
|
||||||
|
type: Phaser.HEADLESS,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(() => {
|
||||||
|
game.phaseInterceptor.restoreOg();
|
||||||
|
});
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
game = new GameManager(phaserGame);
|
||||||
|
game.override
|
||||||
|
.moveset([Moves.SYNCHRONOISE])
|
||||||
|
.ability(Abilities.BALL_FETCH)
|
||||||
|
.battleStyle("single")
|
||||||
|
.disableCrits()
|
||||||
|
.enemySpecies(Species.MAGIKARP)
|
||||||
|
.enemyAbility(Abilities.BALL_FETCH)
|
||||||
|
.enemyMoveset(Moves.SPLASH);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should consider the user's tera type if it is terastallized", async () => {
|
||||||
|
await game.classicMode.startBattle([Species.BIDOOF]);
|
||||||
|
const playerPokemon = game.scene.getPlayerPokemon()!;
|
||||||
|
const enemyPokemon = game.scene.getEnemyPokemon()!;
|
||||||
|
|
||||||
|
// force the player to be terastallized
|
||||||
|
playerPokemon.teraType = PokemonType.WATER;
|
||||||
|
playerPokemon.isTerastallized = true;
|
||||||
|
game.move.select(Moves.SYNCHRONOISE);
|
||||||
|
await game.phaseInterceptor.to("BerryPhase");
|
||||||
|
expect(enemyPokemon.hp).toBeLessThan(enemyPokemon.getMaxHp());
|
||||||
|
});
|
||||||
|
});
|
@ -10,6 +10,7 @@ import Phaser from "phaser";
|
|||||||
import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
|
import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
|
||||||
import { Status } from "#app/data/status-effect";
|
import { Status } from "#app/data/status-effect";
|
||||||
import { StatusEffect } from "#enums/status-effect";
|
import { StatusEffect } from "#enums/status-effect";
|
||||||
|
import { globalScene } from "#app/global-scene";
|
||||||
import { BattlerIndex } from "#app/battle";
|
import { BattlerIndex } from "#app/battle";
|
||||||
import { BattleType } from "#enums/battle-type";
|
import { BattleType } from "#enums/battle-type";
|
||||||
import { TrainerType } from "#enums/trainer-type";
|
import { TrainerType } from "#enums/trainer-type";
|
||||||
@ -161,6 +162,37 @@ describe("Moves - Whirlwind", () => {
|
|||||||
expect(eevee.isOnField()).toBe(false);
|
expect(eevee.isOnField()).toBe(false);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("should fail when player uses Whirlwind against an opponent with only one available Pokémon", async () => {
|
||||||
|
// Set up the battle scenario with the player knowing Whirlwind
|
||||||
|
game.override.startingWave(5).enemySpecies(Species.PIDGEY).moveset([Moves.WHIRLWIND]);
|
||||||
|
await game.classicMode.startBattle();
|
||||||
|
|
||||||
|
const enemyParty = game.scene.getEnemyParty();
|
||||||
|
|
||||||
|
// Ensure the opponent has only one available Pokémon
|
||||||
|
if (enemyParty.length > 1) {
|
||||||
|
enemyParty.slice(1).forEach(p => {
|
||||||
|
p.hp = 0;
|
||||||
|
p.status = new Status(StatusEffect.FAINT);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
const eligibleEnemy = enemyParty.filter(p => p.hp > 0 && p.isAllowedInBattle());
|
||||||
|
expect(eligibleEnemy.length).toBe(1);
|
||||||
|
|
||||||
|
// Spy on the queueMessage function
|
||||||
|
const queueSpy = vi.spyOn(globalScene, "queueMessage");
|
||||||
|
|
||||||
|
// Player uses Whirlwind; opponent uses Splash
|
||||||
|
game.move.select(Moves.WHIRLWIND);
|
||||||
|
await game.forceEnemyMove(Moves.SPLASH);
|
||||||
|
await game.toNextTurn();
|
||||||
|
|
||||||
|
// Verify that the failure message is displayed for Whirlwind
|
||||||
|
expect(queueSpy).toHaveBeenCalledWith(expect.stringContaining("But it failed"));
|
||||||
|
// Verify the opponent's Splash message
|
||||||
|
expect(queueSpy).toHaveBeenCalledWith(expect.stringContaining("But nothing happened!"));
|
||||||
|
});
|
||||||
|
|
||||||
it("should not pull in the other trainer's pokemon in a partner trainer battle", async () => {
|
it("should not pull in the other trainer's pokemon in a partner trainer battle", async () => {
|
||||||
game.override
|
game.override
|
||||||
.startingWave(2)
|
.startingWave(2)
|
||||||
|