From de126dc35c850e5c99e08e1db0a536e59f84618e Mon Sep 17 00:00:00 2001 From: Flashfyre Date: Fri, 27 Oct 2023 08:45:47 -0400 Subject: [PATCH 01/15] Add Struggle logic --- src/battle-phases.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/battle-phases.ts b/src/battle-phases.ts index fee08ed71..73f844668 100644 --- a/src/battle-phases.ts +++ b/src/battle-phases.ts @@ -968,10 +968,12 @@ export class CommandPhase extends FieldPhase { switch (command) { case Command.FIGHT: - if (cursor === -1 || playerPokemon.trySelectMove(cursor, args[0] as boolean)) { + let useStruggle = false; + if (cursor === -1 || playerPokemon.trySelectMove(cursor, args[0] as boolean) || (useStruggle = cursor > -1 && !playerPokemon.getMoveset().filter(m => m.isUsable(playerPokemon)).length)) { + const moveId = !useStruggle ? playerPokemon.moveset[cursor].moveId : Moves.STRUGGLE; const turnCommand: TurnCommand = { command: Command.FIGHT, cursor: cursor, - move: cursor > -1 ? { move: playerPokemon.moveset[cursor].moveId, targets: [] } : null, args: args }; // TODO: Struggle logic - const moveTargets: MoveTargetSet = args.length < 3 ? getMoveTargets(playerPokemon, cursor > -1 ? playerPokemon.moveset[cursor].moveId : Moves.NONE) : args[2]; + move: cursor > -1 ? { move: moveId, targets: [] } : null, args: args }; + const moveTargets: MoveTargetSet = args.length < 3 ? getMoveTargets(playerPokemon, cursor > -1 ? moveId : Moves.NONE) : args[2]; console.log(moveTargets, playerPokemon.name); if (moveTargets.targets.length <= 1 || moveTargets.multiple) turnCommand.move.targets = moveTargets.targets; @@ -989,7 +991,6 @@ export class CommandPhase extends FieldPhase { }, null, true); } } - break; case Command.BALL: if (this.scene.arena.biomeType === Biome.END) { From 970d014bfda9656d9aad07ac81c64d498a4a6b4d Mon Sep 17 00:00:00 2001 From: Flashfyre Date: Fri, 27 Oct 2023 16:20:51 -0400 Subject: [PATCH 02/15] Fix issue with generating enemy modifiers --- src/battle-phases.ts | 2 +- src/modifier/modifier-type.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/battle-phases.ts b/src/battle-phases.ts index 73f844668..59d5979ac 100644 --- a/src/battle-phases.ts +++ b/src/battle-phases.ts @@ -635,7 +635,7 @@ export class SummonPhase extends PartyMemberPokemonPhase { this.scene.field.add(pokemon); if (!this.player) { const playerPokemon = this.scene.getPlayerPokemon() as Pokemon; - if (playerPokemon.visible) + if (playerPokemon?.visible) this.scene.field.moveBelow(pokemon, playerPokemon); this.scene.currentBattle.seenEnemyPartyMemberIds.add(pokemon.id); this.scene.updateModifiers(false); diff --git a/src/modifier/modifier-type.ts b/src/modifier/modifier-type.ts index 76b636194..017fd90a7 100644 --- a/src/modifier/modifier-type.ts +++ b/src/modifier/modifier-type.ts @@ -813,8 +813,8 @@ export function regenerateModifierPoolThresholds(party: Pokemon[], poolType: Mod let i = 0; pool[t].reduce((total: integer, modifierType: WeightedModifierType) => { const weightedModifierType = modifierType as WeightedModifierType; - const existingModifier = party[0].scene.findModifier(m => (m.type.generatorId || m.type.id) === weightedModifierType.modifierType.id); - const weight = !existingModifier || existingModifier.stackCount < existingModifier.getMaxStackCount() + const existingModifiers = party[0].scene.findModifiers(m => (m.type.generatorId || m.type.id) === weightedModifierType.modifierType.id, player); + const weight = !existingModifiers.length || existingModifiers.filter(m => m.stackCount < m.getMaxStackCount()) ? weightedModifierType.weight instanceof Function ? (weightedModifierType.weight as Function)(party) : weightedModifierType.weight as integer From cc435284ec174910f7e33810e36c8df6d17240e6 Mon Sep 17 00:00:00 2001 From: Flashfyre Date: Fri, 27 Oct 2023 17:43:53 -0400 Subject: [PATCH 03/15] Update implementation of Pokeball and run commands --- src/battle-phases.ts | 48 ++++++++++++++++++++++++++++----------- src/battle.ts | 3 +-- src/ui/ball-ui-handler.ts | 6 ++--- 3 files changed, 39 insertions(+), 18 deletions(-) diff --git a/src/battle-phases.ts b/src/battle-phases.ts index 59d5979ac..b49d4661d 100644 --- a/src/battle-phases.ts +++ b/src/battle-phases.ts @@ -937,6 +937,15 @@ export class CommandPhase extends FieldPhase { start() { super.start(); + if (this.fieldIndex) { + const allyCommand = this.scene.currentBattle.turnCommands[this.fieldIndex - 1]; + if (allyCommand.command === Command.BALL || allyCommand.command === Command.RUN) + this.scene.currentBattle.turnCommands[this.fieldIndex] = { command: allyCommand.command, skip: true }; + } + + if (this.scene.currentBattle.turnCommands[this.fieldIndex]?.skip) + return this.end(); + const playerPokemon = this.scene.getPlayerField()[this.fieldIndex]; const moveQueue = playerPokemon.getMoveQueue(); @@ -1007,15 +1016,26 @@ export class CommandPhase extends FieldPhase { this.scene.ui.showText(null, 0); this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); }, null, true); - } else if (cursor < 4) { + } else { const targets = this.scene.getEnemyField().filter(p => p.isActive(true)).map(p => p.getBattlerIndex()); - this.scene.currentBattle.turnCommands[this.fieldIndex] = { command: Command.BALL, cursor: cursor }; - this.scene.currentBattle.turnPokeballCounts[cursor as PokeballType]--; - if (targets.length > 1) - this.scene.unshiftPhase(new SelectTargetPhase(this.scene, this.fieldIndex)); - else - this.scene.currentBattle.turnCommands[this.fieldIndex].targets = targets; - success = true; + if (targets.length > 1) { + this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); + this.scene.ui.setMode(Mode.MESSAGE); + this.scene.ui.showText(`You can only throw a Poké Ball\nwhen there is one Pokémon remaining!`, null, () => { + this.scene.ui.showText(null, 0); + this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); + }, null, true); + } else if (cursor < 4) { + this.scene.currentBattle.turnCommands[this.fieldIndex] = { command: Command.BALL, cursor: cursor }; + if (targets.length > 1) + this.scene.unshiftPhase(new SelectTargetPhase(this.scene, this.fieldIndex)); + else { + this.scene.currentBattle.turnCommands[this.fieldIndex].targets = targets; + if (this.fieldIndex) + this.scene.currentBattle.turnCommands[this.fieldIndex - 1].skip = true; + } + success = true; + } } break; case Command.POKEMON: @@ -1039,6 +1059,8 @@ export class CommandPhase extends FieldPhase { ? { command: Command.POKEMON, cursor: cursor, args: args } : { command: Command.RUN }; success = true; + if (this.fieldIndex) + this.scene.currentBattle.turnCommands[this.fieldIndex - 1].skip = true; } else if (trapTag) { this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); this.scene.ui.setMode(Mode.MESSAGE); @@ -1059,9 +1081,6 @@ export class CommandPhase extends FieldPhase { cancel() { if (this.fieldIndex) { - const lastCommand = this.scene.currentBattle.turnCommands[0]; - if (lastCommand.command === Command.BALL) - this.scene.currentBattle.turnPokeballCounts[lastCommand.cursor]++; this.scene.unshiftPhase(new CommandPhase(this.scene, 0)); this.scene.unshiftPhase(new CommandPhase(this.scene, 1)); this.end(); @@ -1117,12 +1136,12 @@ export class SelectTargetPhase extends PokemonPhase { this.scene.ui.setMode(Mode.TARGET_SELECT, this.fieldIndex, move, (cursor: integer) => { this.scene.ui.setMode(Mode.MESSAGE); if (cursor === -1) { - if (turnCommand.command === Command.BALL) - this.scene.currentBattle.turnPokeballCounts[turnCommand.cursor]++; this.scene.currentBattle.turnCommands[this.fieldIndex] = null; this.scene.unshiftPhase(new CommandPhase(this.scene, this.fieldIndex)); } else turnCommand.targets = [ cursor ]; + if (this.scene.currentBattle.turnCommands[this.fieldIndex].command === Command.BALL && this.fieldIndex) + this.scene.currentBattle.turnCommands[this.fieldIndex - 1].skip = true; this.end(); }); } @@ -1169,6 +1188,9 @@ export class TurnStartPhase extends FieldPhase { const pokemon = field[o]; const turnCommand = this.scene.currentBattle.turnCommands[o]; + if (turnCommand.skip) + continue; + switch (turnCommand.command) { case Command.FIGHT: const queuedMove = turnCommand.move; diff --git a/src/battle.ts b/src/battle.ts index c15b9d5cf..0e6120842 100644 --- a/src/battle.ts +++ b/src/battle.ts @@ -24,6 +24,7 @@ export interface TurnCommand { cursor?: integer; move?: QueuedMove; targets?: BattlerIndex[]; + skip?: boolean; args?: any[]; }; @@ -42,7 +43,6 @@ export default class Battle { public started: boolean; public turn: integer; public turnCommands: TurnCommands; - public turnPokeballCounts: PokeballCounts; public playerParticipantIds: Set = new Set(); public escapeAttempts: integer = 0; public lastMove: Moves; @@ -94,7 +94,6 @@ export default class Battle { incrementTurn(scene: BattleScene): void { this.turn++; this.turnCommands = Object.fromEntries(Utils.getEnumValues(BattlerIndex).map(bt => [ bt, null ])); - this.turnPokeballCounts = Object.assign({}, scene.pokeballCounts); } addParticipant(playerPokemon: PlayerPokemon): void { diff --git a/src/ui/ball-ui-handler.ts b/src/ui/ball-ui-handler.ts index bee1d7b46..cab771664 100644 --- a/src/ui/ball-ui-handler.ts +++ b/src/ui/ball-ui-handler.ts @@ -60,13 +60,13 @@ export default class BallUiHandler extends UiHandler { let success = false; - const pokeballTypeCount = Object.keys(this.scene.currentBattle.turnPokeballCounts).length; + const pokeballTypeCount = Object.keys(this.scene.pokeballCounts).length; if (button === Button.ACTION || button === Button.CANCEL) { const commandPhase = this.scene.getCurrentPhase() as CommandPhase; success = true; if (button === Button.ACTION && this.cursor < pokeballTypeCount) { - if (this.scene.currentBattle.turnPokeballCounts[this.cursor]) { + if (this.scene.pokeballCounts[this.cursor]) { if (commandPhase.handleCommand(Command.BALL, this.cursor)) { this.scene.ui.setMode(Mode.COMMAND, commandPhase.getFieldIndex()); this.scene.ui.setMode(Mode.MESSAGE); @@ -94,7 +94,7 @@ export default class BallUiHandler extends UiHandler { } updateCounts() { - this.countsText.setText(Object.values(this.scene.currentBattle.turnPokeballCounts).map(c => `x${c}`).join('\n')); + this.countsText.setText(Object.values(this.scene.pokeballCounts).map(c => `x${c}`).join('\n')); } setCursor(cursor: integer): boolean { From 2a7ebaf89e35353328b60571840cf083f8ab033c Mon Sep 17 00:00:00 2001 From: Flashfyre Date: Fri, 27 Oct 2023 19:34:55 -0400 Subject: [PATCH 04/15] Fix crash in double battles with target selection --- src/battle-phases.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/battle-phases.ts b/src/battle-phases.ts index b49d4661d..8532ad0c1 100644 --- a/src/battle-phases.ts +++ b/src/battle-phases.ts @@ -1140,7 +1140,7 @@ export class SelectTargetPhase extends PokemonPhase { this.scene.unshiftPhase(new CommandPhase(this.scene, this.fieldIndex)); } else turnCommand.targets = [ cursor ]; - if (this.scene.currentBattle.turnCommands[this.fieldIndex].command === Command.BALL && this.fieldIndex) + if (turnCommand.command === Command.BALL && this.fieldIndex) this.scene.currentBattle.turnCommands[this.fieldIndex - 1].skip = true; this.end(); }); From 9684eb2be0363f7a9029d870718917d92357c99c Mon Sep 17 00:00:00 2001 From: Flashfyre Date: Fri, 27 Oct 2023 19:56:15 -0400 Subject: [PATCH 05/15] Fix being able to run in the end biome --- src/battle-phases.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/battle-phases.ts b/src/battle-phases.ts index 8532ad0c1..1a70d1b70 100644 --- a/src/battle-phases.ts +++ b/src/battle-phases.ts @@ -1005,7 +1005,7 @@ export class CommandPhase extends FieldPhase { if (this.scene.arena.biomeType === Biome.END) { this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); this.scene.ui.setMode(Mode.MESSAGE); - this.scene.ui.showText(`A strange force\nprevents using Poké Balls.`, null, () => { + this.scene.ui.showText(`An unseen force\nprevents using Poké Balls.`, null, () => { this.scene.ui.showText(null, 0); this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); }, null, true); @@ -1041,7 +1041,14 @@ export class CommandPhase extends FieldPhase { case Command.POKEMON: case Command.RUN: const isSwitch = command === Command.POKEMON; - if (!isSwitch && this.scene.currentBattle.battleType === BattleType.TRAINER) { + if (!isSwitch && this.scene.arena.biomeType === Biome.END) { + this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); + this.scene.ui.setMode(Mode.MESSAGE); + this.scene.ui.showText(`An unseen force\nprevents escape.`, null, () => { + this.scene.ui.showText(null, 0); + this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); + }, null, true); + } else if (!isSwitch && this.scene.currentBattle.battleType === BattleType.TRAINER) { this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); this.scene.ui.setMode(Mode.MESSAGE); this.scene.ui.showText(`You can't run\nfrom a trainer battle!`, null, () => { From e0a7e88c171628be4681c878622949ca40a5c6d4 Mon Sep 17 00:00:00 2001 From: Flashfyre Date: Fri, 27 Oct 2023 20:30:57 -0400 Subject: [PATCH 06/15] Fix high priority on Giga Drain instead of Endure --- src/data/move.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/data/move.ts b/src/data/move.ts index 79e909311..f27c69509 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -2744,9 +2744,9 @@ export function initMoves() { new StatusMove(Moves.SANDSTORM, "Sandstorm", Type.ROCK, -1, 10, 51, "Creates a sandstorm for 5 turns.", -1, 0, 2) .attr(WeatherChangeAttr, WeatherType.SANDSTORM) .target(MoveTarget.BOTH_SIDES), - new AttackMove(Moves.GIGA_DRAIN, "Giga Drain", Type.GRASS, MoveCategory.SPECIAL, 75, 100, 10, 111, "User recovers half the HP inflicted on opponent.", -1, 4, 2) + new AttackMove(Moves.GIGA_DRAIN, "Giga Drain", Type.GRASS, MoveCategory.SPECIAL, 75, 100, 10, 111, "User recovers half the HP inflicted on opponent.", -1, 0, 2) .attr(HitHealAttr), - new SelfStatusMove(Moves.ENDURE, "Endure (N)", Type.NORMAL, -1, 10, 47, "Always left with at least 1 HP, but may fail if used consecutively.", -1, 0, 2), + new SelfStatusMove(Moves.ENDURE, "Endure (N)", Type.NORMAL, -1, 10, 47, "Always left with at least 1 HP, but may fail if used consecutively.", -1, 4, 2), new StatusMove(Moves.CHARM, "Charm", Type.FAIRY, 100, 20, 2, "Sharply lowers opponent's Attack.", -1, 0, 2) .attr(StatChangeAttr, BattleStat.ATK, -2), new AttackMove(Moves.ROLLOUT, "Rollout", Type.ROCK, MoveCategory.PHYSICAL, 30, 90, 20, -1, "Doubles in power each turn for 5 turns.", -1, 0, 2) From cf6f30cccab02d93327e2f1b6be8dce8c290ed32 Mon Sep 17 00:00:00 2001 From: Flashfyre Date: Fri, 27 Oct 2023 22:04:09 -0400 Subject: [PATCH 07/15] Fix trainer pools not evolving Pokemon --- src/data/move.ts | 2 +- src/trainer.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/data/move.ts b/src/data/move.ts index f27c69509..b3d60d9f3 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -2919,7 +2919,7 @@ export function initMoves() { new AttackMove(Moves.SECRET_POWER, "Secret Power (N)", Type.NORMAL, MoveCategory.PHYSICAL, 70, 100, 20, -1, "Effects of the attack vary with the location.", 30, 0, 3) .makesContact(false), new AttackMove(Moves.DIVE, "Dive", Type.WATER, MoveCategory.PHYSICAL, 80, 100, 10, -1, "Dives underwater on first turn, attacks on second turn.", -1, 0, 3) - .attr(ChargeAttr, ChargeAnim.DIVE_CHARGING, 'hid\nunderwater!') + .attr(ChargeAttr, ChargeAnim.DIVE_CHARGING, 'hid\nunderwater!', BattlerTagType.UNDERGROUND) .ignoresVirtual(), new AttackMove(Moves.ARM_THRUST, "Arm Thrust", Type.FIGHTING, MoveCategory.PHYSICAL, 15, 100, 20, -1, "Hits 2-5 times in one turn.", -1, 0, 3) .attr(MultiHitAttr), diff --git a/src/trainer.ts b/src/trainer.ts index 62df6f4af..d901b482f 100644 --- a/src/trainer.ts +++ b/src/trainer.ts @@ -151,7 +151,7 @@ export default class Trainer extends Phaser.GameObjects.Container { tier--; } const tierPool = this.config.speciesPools[tier]; - ret = getPokemonSpecies(getPokemonSpecies(Phaser.Math.RND.pick(tierPool)).getSpeciesForLevel(level)); + ret = getPokemonSpecies(getPokemonSpecies(Phaser.Math.RND.pick(tierPool)).getSpeciesForLevel(level, true)); } else ret = getPokemonSpecies(this.scene.randomSpecies(battle.waveIndex, level, this.config.speciesFilter).getSpeciesForLevel(level)); From 57f869cf615b3c814671c55f2be281565c706c94 Mon Sep 17 00:00:00 2001 From: Flashfyre Date: Fri, 27 Oct 2023 22:18:54 -0400 Subject: [PATCH 08/15] Change rest to override status --- src/data/move.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/data/move.ts b/src/data/move.ts index b3d60d9f3..1541a6b15 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -1155,18 +1155,22 @@ export class MultiHitAttr extends MoveAttr { export class StatusEffectAttr extends MoveEffectAttr { public effect: StatusEffect; public cureTurn: integer; + public overrideStatus: boolean; - constructor(effect: StatusEffect, selfTarget?: boolean, cureTurn?: integer) { + constructor(effect: StatusEffect, selfTarget?: boolean, cureTurn?: integer, overrideStatus?: boolean) { super(selfTarget, MoveEffectTrigger.HIT); this.effect = effect; this.cureTurn = cureTurn; + this.overrideStatus = !!overrideStatus; } apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { const statusCheck = move.chance < 0 || move.chance === 100 || Utils.randInt(100) < move.chance; if (statusCheck) { const pokemon = this.selfTarget ? user : target; + if (pokemon.status) + pokemon.resetStatus(); if (!pokemon.status || (pokemon.status.effect === this.effect && move.chance < 0)) { user.scene.unshiftPhase(new ObtainStatusEffectPhase(user.scene, pokemon.getBattlerIndex(), this.effect, this.cureTurn)); return true; @@ -2632,7 +2636,7 @@ export function initMoves() { .attr(MultiHitAttr, MultiHitType._2) .makesContact(false), new SelfStatusMove(Moves.REST, "Rest", Type.PSYCHIC, -1, 5, 85, "User sleeps for 2 turns, but user is fully healed.", -1, 0, 1) - .attr(StatusEffectAttr, StatusEffect.SLEEP, true, 3) + .attr(StatusEffectAttr, StatusEffect.SLEEP, true, 3, true) .attr(HealAttr, 1, true) .condition((user: Pokemon, target: Pokemon, move: Move) => user.status?.effect !== StatusEffect.SLEEP), new AttackMove(Moves.ROCK_SLIDE, "Rock Slide", Type.ROCK, MoveCategory.PHYSICAL, 75, 90, 10, 86, "May cause flinching.", 30, 0, 1) From 62f464c81c765b9efaf2f046462df2f403c4734b Mon Sep 17 00:00:00 2001 From: Flashfyre Date: Fri, 27 Oct 2023 22:25:48 -0400 Subject: [PATCH 09/15] Change one-hit KO moves to just do 250 power on final boss --- src/data/move.ts | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/data/move.ts b/src/data/move.ts index 1541a6b15..e104915d2 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -13,6 +13,7 @@ import { BlockRecoilDamageAttr, applyAbAttrs } from "./ability"; import { PokemonHeldItemModifier } from "../modifier/modifier"; import { BattlerIndex } from "../battle"; import { Stat } from "./pokemon-stat"; +import { Species } from "./species"; export enum MoveCategory { PHYSICAL, @@ -1300,6 +1301,8 @@ export class OneHitKOAttr extends MoveEffectAttr { } apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { + if (target.species.speciesId === Species.ETERNATUS && target.formIndex === 1) + return false; target.damage(target.hp, true); user.scene.queueMessage('It\'s a one-hit KO!'); return true; @@ -2303,7 +2306,7 @@ export function initMoves() { .attr(StatusEffectAttr, StatusEffect.PARALYSIS), new AttackMove(Moves.SCRATCH, "Scratch", Type.NORMAL, MoveCategory.PHYSICAL, 40, 100, 35, -1, "", -1, 0, 1), new AttackMove(Moves.VISE_GRIP, "Vise Grip", Type.NORMAL, MoveCategory.PHYSICAL, 55, 100, 30, -1, "", -1, 0, 1), - new AttackMove(Moves.GUILLOTINE, "Guillotine", Type.NORMAL, MoveCategory.PHYSICAL, -1, 30, 5, -1, "One-Hit-KO, if it hits.", -1, 0, 1) + new AttackMove(Moves.GUILLOTINE, "Guillotine", Type.NORMAL, MoveCategory.PHYSICAL, 250, 30, 5, -1, "One-Hit-KO, if it hits.", -1, 0, 1) .attr(OneHitKOAttr), new AttackMove(Moves.RAZOR_WIND, "Razor Wind", Type.NORMAL, MoveCategory.SPECIAL, 80, 100, 10, -1, "Charges on first turn, attacks on second. High critical hit ratio.", -1, 0, 1) .attr(ChargeAttr, ChargeAnim.RAZOR_WIND_CHARGING, 'whipped\nup a whirlwind!') @@ -2344,7 +2347,7 @@ export function initMoves() { new AttackMove(Moves.HORN_ATTACK, "Horn Attack", Type.NORMAL, MoveCategory.PHYSICAL, 65, 100, 25, -1, "", -1, 0, 1), new AttackMove(Moves.FURY_ATTACK, "Fury Attack", Type.NORMAL, MoveCategory.PHYSICAL, 15, 85, 20, -1, "Hits 2-5 times in one turn.", -1, 0, 1) .attr(MultiHitAttr), - new AttackMove(Moves.HORN_DRILL, "Horn Drill", Type.NORMAL, MoveCategory.PHYSICAL, -1, 30, 5, -1, "One-Hit-KO, if it hits.", -1, 0, 1) + new AttackMove(Moves.HORN_DRILL, "Horn Drill", Type.NORMAL, MoveCategory.PHYSICAL, 250, 30, 5, -1, "One-Hit-KO, if it hits.", -1, 0, 1) .attr(OneHitKOAttr), new AttackMove(Moves.TACKLE, "Tackle", Type.NORMAL, MoveCategory.PHYSICAL, 40, 100, 35, -1, "", -1, 0, 1), new AttackMove(Moves.BODY_SLAM, "Body Slam", Type.NORMAL, MoveCategory.PHYSICAL, 85, 100, 15, 66, "May paralyze opponent.", 30, 0, 1) @@ -2482,7 +2485,7 @@ export function initMoves() { .attr(HitsTagAttr, BattlerTagType.UNDERGROUND, true) .makesContact(false) .target(MoveTarget.ALL_NEAR_OTHERS), - new AttackMove(Moves.FISSURE, "Fissure", Type.GROUND, MoveCategory.PHYSICAL, -1, 30, 5, -1, "One-Hit-KO, if it hits.", -1, 0, 1) + new AttackMove(Moves.FISSURE, "Fissure", Type.GROUND, MoveCategory.PHYSICAL, 250, 30, 5, -1, "One-Hit-KO, if it hits.", -1, 0, 1) .attr(OneHitKOAttr) .makesContact(false), new AttackMove(Moves.DIG, "Dig", Type.GROUND, MoveCategory.PHYSICAL, 80, 100, 10, 55, "Digs underground on first turn, attacks on second. Can also escape from caves.", -1, 0, 1) @@ -3004,7 +3007,7 @@ export function initMoves() { new AttackMove(Moves.SAND_TOMB, "Sand Tomb", Type.GROUND, MoveCategory.PHYSICAL, 35, 85, 15, -1, "Traps opponent, damaging them for 4-5 turns.", 100, 0, 3) .attr(TrapAttr, BattlerTagType.SAND_TOMB) .makesContact(false), - new AttackMove(Moves.SHEER_COLD, "Sheer Cold", Type.ICE, MoveCategory.SPECIAL, -1, 30, 5, -1, "One-Hit-KO, if it hits.", -1, 0, 3) + new AttackMove(Moves.SHEER_COLD, "Sheer Cold", Type.ICE, MoveCategory.SPECIAL, 250, 30, 5, -1, "One-Hit-KO, if it hits.", -1, 0, 3) .attr(OneHitKOAttr), new AttackMove(Moves.MUDDY_WATER, "Muddy Water", Type.WATER, MoveCategory.SPECIAL, 90, 85, 10, -1, "May lower opponent's Accuracy.", 30, 0, 3) .attr(StatChangeAttr, BattleStat.ACC, -1) From 29b0f046a648bfbc1a2607ae2cf95225f66237d3 Mon Sep 17 00:00:00 2001 From: Flashfyre Date: Fri, 27 Oct 2023 23:18:18 -0400 Subject: [PATCH 10/15] Lower Berry Pouch cap to 3 --- src/battle-phases.ts | 2 +- src/modifier/modifier.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/battle-phases.ts b/src/battle-phases.ts index 1a70d1b70..2f0b20c3f 100644 --- a/src/battle-phases.ts +++ b/src/battle-phases.ts @@ -256,7 +256,7 @@ export class EncounterPhase extends BattlePhase { this.scene.gameData.setPokemonSeen(enemyPokemon); } - if (this.scene.gameMode === GameMode.CLASSIC && battle.waveIndex === 200 && enemyPokemon.species.speciesId === Species.ETERNATUS) + if (this.scene.gameMode === GameMode.CLASSIC && (battle.waveIndex === 200 || !(battle.waveIndex % 250)) && enemyPokemon.species.speciesId === Species.ETERNATUS) enemyPokemon.formIndex = 1; loadEnemyAssets.push(enemyPokemon.loadAssets()); diff --git a/src/modifier/modifier.ts b/src/modifier/modifier.ts index 18e3a0df1..22ffbec06 100644 --- a/src/modifier/modifier.ts +++ b/src/modifier/modifier.ts @@ -671,13 +671,13 @@ export class PreserveBerryModifier extends PersistentModifier { apply(args: any[]): boolean { if (!(args[0] as Utils.BooleanHolder).value) - (args[0] as Utils.BooleanHolder).value = this.getStackCount() === this.getMaxStackCount() || Utils.randInt(this.getMaxStackCount()) < this.getStackCount(); + (args[0] as Utils.BooleanHolder).value = Utils.randInt(this.getMaxStackCount()) < this.getStackCount(); return true; } getMaxStackCount(): integer { - return 4; + return 3; } } From 20a10c488cee2ae1caeac89837fa3d3aec315f06 Mon Sep 17 00:00:00 2001 From: Flashfyre Date: Fri, 27 Oct 2023 23:39:16 -0400 Subject: [PATCH 11/15] Fix Darmanitan in party with a held item crashing the game --- public/images/ui/pokemon_icons_5.json | 68 +++++++++++++-------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/public/images/ui/pokemon_icons_5.json b/public/images/ui/pokemon_icons_5.json index 462d1e001..5ab5a613f 100644 --- a/public/images/ui/pokemon_icons_5.json +++ b/public/images/ui/pokemon_icons_5.json @@ -49024,7 +49024,7 @@ } }, { - "filename": "555standard_01.png", + "filename": "555_01.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -49045,7 +49045,7 @@ } }, { - "filename": "555standard_02.png", + "filename": "555_02.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -49066,7 +49066,7 @@ } }, { - "filename": "555standard_03.png", + "filename": "555_03.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -49087,7 +49087,7 @@ } }, { - "filename": "555standard_04.png", + "filename": "555_04.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -49108,7 +49108,7 @@ } }, { - "filename": "555standard_05.png", + "filename": "555_05.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -49129,7 +49129,7 @@ } }, { - "filename": "555standard_06.png", + "filename": "555_06.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -49150,7 +49150,7 @@ } }, { - "filename": "555standard_07.png", + "filename": "555_07.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -49171,7 +49171,7 @@ } }, { - "filename": "555standard_08.png", + "filename": "555_08.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -49192,7 +49192,7 @@ } }, { - "filename": "555standard_09.png", + "filename": "555_09.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -49213,7 +49213,7 @@ } }, { - "filename": "555standard_10.png", + "filename": "555_10.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -49234,7 +49234,7 @@ } }, { - "filename": "555standard_11.png", + "filename": "555_11.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -49255,7 +49255,7 @@ } }, { - "filename": "555standard_12.png", + "filename": "555_12.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -49276,7 +49276,7 @@ } }, { - "filename": "555standard_13.png", + "filename": "555_13.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -49297,7 +49297,7 @@ } }, { - "filename": "555standard_14.png", + "filename": "555_14.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -49318,7 +49318,7 @@ } }, { - "filename": "555standard_15.png", + "filename": "555_15.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -49339,7 +49339,7 @@ } }, { - "filename": "555standard_16.png", + "filename": "555_16.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -49360,7 +49360,7 @@ } }, { - "filename": "555standard_17.png", + "filename": "555_17.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -50809,7 +50809,7 @@ } }, { - "filename": "555standard_18.png", + "filename": "555_18.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -50830,7 +50830,7 @@ } }, { - "filename": "555standard_19.png", + "filename": "555_19.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -50851,7 +50851,7 @@ } }, { - "filename": "555standard_20.png", + "filename": "555_20.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -50872,7 +50872,7 @@ } }, { - "filename": "555standard_21.png", + "filename": "555_21.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -50893,7 +50893,7 @@ } }, { - "filename": "555standard_22.png", + "filename": "555_22.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -50914,7 +50914,7 @@ } }, { - "filename": "555standard_23.png", + "filename": "555_23.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -50935,7 +50935,7 @@ } }, { - "filename": "555standard_24.png", + "filename": "555_24.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -50956,7 +50956,7 @@ } }, { - "filename": "555standard_25.png", + "filename": "555_25.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -50977,7 +50977,7 @@ } }, { - "filename": "555standard_26.png", + "filename": "555_26.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -50998,7 +50998,7 @@ } }, { - "filename": "555standard_27.png", + "filename": "555_27.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -51019,7 +51019,7 @@ } }, { - "filename": "555standard_28.png", + "filename": "555_28.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -51040,7 +51040,7 @@ } }, { - "filename": "555standard_29.png", + "filename": "555_29.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -51061,7 +51061,7 @@ } }, { - "filename": "555standard_30.png", + "filename": "555_30.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -51082,7 +51082,7 @@ } }, { - "filename": "555standard_31.png", + "filename": "555_31.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -51103,7 +51103,7 @@ } }, { - "filename": "555standard_32.png", + "filename": "555_32.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -51124,7 +51124,7 @@ } }, { - "filename": "555standard_33.png", + "filename": "555_33.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -51145,7 +51145,7 @@ } }, { - "filename": "555standard_34.png", + "filename": "555_34.png", "rotated": false, "trimmed": true, "sourceSize": { From d6ee340c5911796ffc8032d0c9609029126a8239 Mon Sep 17 00:00:00 2001 From: Flashfyre Date: Sat, 28 Oct 2023 00:18:44 -0400 Subject: [PATCH 12/15] Minor changes and fixes --- src/arena.ts | 13 ++++++++++++- src/battle-scene.ts | 4 +--- src/data/trainer-type.ts | 2 +- src/modifier/modifier-type.ts | 4 ++-- 4 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/arena.ts b/src/arena.ts index c2aaa648f..8cf9c736d 100644 --- a/src/arena.ts +++ b/src/arena.ts @@ -119,7 +119,18 @@ export class Arena { getFormIndex(species: PokemonSpecies) { if (!species.canChangeForm && species.forms?.length) - return Utils.randSeedInt(species.forms.length); // TODO: Base on biome + return Utils.randSeedInt(species.forms.length); + switch (species.speciesId) { + case Species.BURMY: + case Species.WORMADAM: + switch (this.biomeType) { + case Biome.BEACH: + return 1; + case Biome.CITY: + return 2; + } + break; + } return 0; } diff --git a/src/battle-scene.ts b/src/battle-scene.ts index cf594568b..b070ad303 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -1233,12 +1233,10 @@ export default class BattleScene extends Phaser.Scene { for (let c = 0; c < chances; c++) { if (!Utils.randSeedInt(modifierChance)) count++; - if (count === 12) - break; } if (isBoss) count = Math.max(count, Math.floor(chances / 2)); - getEnemyModifierTypesForWave(waveIndex, count, [ enemyPokemon ], this.currentBattle.battleType === BattleType.TRAINER ? ModifierPoolType.TRAINER : ModifierPoolType.WILD) + getEnemyModifierTypesForWave(waveIndex, count, [ enemyPokemon ], this.currentBattle.battleType === BattleType.TRAINER ? ModifierPoolType.TRAINER : ModifierPoolType.WILD, this.gameMode) .map(mt => mt.newModifier(enemyPokemon).add(this.enemyModifiers, false)); }); diff --git a/src/data/trainer-type.ts b/src/data/trainer-type.ts index 953e4788c..8eebf9cf7 100644 --- a/src/data/trainer-type.ts +++ b/src/data/trainer-type.ts @@ -735,7 +735,7 @@ export const trainerConfigs: TrainerConfigs = { .setPartyMemberFunc(1, getRandomPartyMemberFunc([ Species.PIDGEOT, Species.NOCTOWL, Species.SWELLOW, Species.STARAPTOR, Species.UNFEZANT ])) .setPartyMemberFunc(2, getSpeciesFilterRandomPartyMemberFunc((species: PokemonSpecies) => !pokemonEvolutions.hasOwnProperty(species.speciesId) && !pokemonPrevolutions.hasOwnProperty(species.speciesId) && species.baseTotal >= 450)) .setSpeciesFilter(species => species.baseTotal >= 540) - .setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.RAYQUAZA ])), + .setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.RAYQUAZA ], p => p.formIndex = 0)), [TrainerType.RIVAL_6]: new TrainerConfig(++t).setBoss().setStaticParty().setEncounterBgm('final').setBattleBgm('battle_rival_3').setPartyTemplates(trainerPartyTemplates.RIVAL_6) .setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.VENUSAUR, Species.CHARIZARD, Species.BLASTOISE, Species.MEGANIUM, Species.TYPHLOSION, Species.FERALIGATR, Species.SCEPTILE, Species.BLAZIKEN, Species.SWAMPERT, Species.TORTERRA, Species.INFERNAPE, Species.EMPOLEON, Species.SERPERIOR, Species.EMBOAR, Species.SAMUROTT ])) .setPartyMemberFunc(1, getRandomPartyMemberFunc([ Species.PIDGEOT, Species.NOCTOWL, Species.SWELLOW, Species.STARAPTOR, Species.UNFEZANT ])) diff --git a/src/modifier/modifier-type.ts b/src/modifier/modifier-type.ts index 017fd90a7..a31d6e8f6 100644 --- a/src/modifier/modifier-type.ts +++ b/src/modifier/modifier-type.ts @@ -858,9 +858,9 @@ export function getPlayerModifierTypeOptionsForWave(waveIndex: integer, count: i return options; } -export function getEnemyModifierTypesForWave(waveIndex: integer, count: integer, party: EnemyPokemon[], poolType: ModifierPoolType.WILD | ModifierPoolType.TRAINER): PokemonHeldItemModifierType[] { +export function getEnemyModifierTypesForWave(waveIndex: integer, count: integer, party: EnemyPokemon[], poolType: ModifierPoolType.WILD | ModifierPoolType.TRAINER, gameMode: GameMode): PokemonHeldItemModifierType[] { const ret = new Array(count).fill(0).map(() => getNewModifierTypeOption(party, poolType).type as PokemonHeldItemModifierType); - if (waveIndex === 200) { + if ((gameMode === GameMode.CLASSIC && waveIndex === 200) || !(waveIndex % 1000)) { const miniBlackHole = modifierTypes.MINI_BLACK_HOLE(); miniBlackHole.id = 'MINI_BLACK_HOLE'; ret.push(miniBlackHole); From 1a488d421c72a1abc49ceac849e061cb65202089 Mon Sep 17 00:00:00 2001 From: Flashfyre Date: Sat, 28 Oct 2023 00:36:41 -0400 Subject: [PATCH 13/15] Fix Psywave causing decimal damage --- src/data/move.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/move.ts b/src/data/move.ts index e104915d2..b2a6a0796 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -978,7 +978,7 @@ export class RandomLevelDamageAttr extends FixedDamageAttr { } getDamage(user: Pokemon, target: Pokemon, move: Move): number { - return user.level * (Utils.randIntRange(50, 150) * 0.01); + return Math.max(Math.floor(user.level * (Utils.randIntRange(50, 150) * 0.01)), 1); } } From ae6d4d0ea05add4913a15c9bc86ec0f61592812b Mon Sep 17 00:00:00 2001 From: Flashfyre Date: Sat, 28 Oct 2023 10:51:34 -0400 Subject: [PATCH 14/15] Don't boost enemy trainer shiny odds with shiny charm --- src/battle-phases.ts | 2 +- src/data/trainer-type.ts | 4 +-- src/pokemon.ts | 54 +++++++++++++++++++++++++------------- src/system/game-data.ts | 2 +- src/system/pokemon-data.ts | 5 ++-- src/trainer.ts | 2 +- 6 files changed, 44 insertions(+), 25 deletions(-) diff --git a/src/battle-phases.ts b/src/battle-phases.ts index 2f0b20c3f..c0c7a167e 100644 --- a/src/battle-phases.ts +++ b/src/battle-phases.ts @@ -246,7 +246,7 @@ export class EncounterPhase extends BattlePhase { battle.enemyParty[e] = battle.trainer.genPartyMember(e); else { const enemySpecies = this.scene.randomSpecies(battle.waveIndex, level, null, true); - battle.enemyParty[e] = new EnemyPokemon(this.scene, enemySpecies, level); + battle.enemyParty[e] = new EnemyPokemon(this.scene, enemySpecies, level, false); } } const enemyPokemon = this.scene.getEnemyParty()[e]; diff --git a/src/data/trainer-type.ts b/src/data/trainer-type.ts index 8eebf9cf7..61bfabb3f 100644 --- a/src/data/trainer-type.ts +++ b/src/data/trainer-type.ts @@ -521,7 +521,7 @@ function getGymLeaderPartyTemplate(scene: BattleScene) { function getRandomPartyMemberFunc(speciesPool: Species[], postProcess?: (enemyPokemon: EnemyPokemon) => void): PartyMemberFunc { return (scene: BattleScene, level: integer) => { const species = getPokemonSpecies(Phaser.Math.RND.pick(speciesPool)).getSpeciesForLevel(level, true); - const ret = new EnemyPokemon(scene, getPokemonSpecies(species), level); + const ret = new EnemyPokemon(scene, getPokemonSpecies(species), level, true); if (postProcess) postProcess(ret); return ret; @@ -532,7 +532,7 @@ function getSpeciesFilterRandomPartyMemberFunc(speciesFilter: PokemonSpeciesFilt const originalSpeciesFilter = speciesFilter; speciesFilter = (species: PokemonSpecies) => allowLegendaries || (!species.legendary && !species.pseudoLegendary && !species.mythical) && originalSpeciesFilter(species); return (scene: BattleScene, level: integer) => { - const ret = new EnemyPokemon(scene, scene.randomSpecies(scene.currentBattle.waveIndex, level, speciesFilter), level); + const ret = new EnemyPokemon(scene, scene.randomSpecies(scene.currentBattle.waveIndex, level, speciesFilter), level, true); if (postProcess) postProcess(ret); return ret; diff --git a/src/pokemon.ts b/src/pokemon.ts index 5498a1933..4ee9b2941 100644 --- a/src/pokemon.ts +++ b/src/pokemon.ts @@ -125,23 +125,8 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } } - const rand1 = Utils.binToDec(Utils.decToBin(this.id).substring(0, 16)); - const rand2 = Utils.binToDec(Utils.decToBin(this.id).substring(16, 32)); - - const E = this.scene.gameData.trainerId ^ this.scene.gameData.secretId; - const F = rand1 ^ rand2; - - if (this.shiny === undefined) { - let shinyThreshold = new Utils.IntegerHolder(32); - this.scene.applyModifiers(ShinyRateBoosterModifier, true, shinyThreshold); - console.log(shinyThreshold.value); - - this.shiny = (E ^ F) < shinyThreshold.value; - if ((E ^ F) < 32) - console.log('REAL SHINY!!'); - if (this.shiny) - console.log((E ^ F), shinyThreshold.value); - } + if (this.shiny === undefined) + this.trySetShiny(); this.winCount = 0; this.pokerus = false; @@ -207,6 +192,8 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { abstract isPlayer(): boolean; + abstract hasTrainer(): boolean; + abstract getFieldIndex(): integer; abstract getBattlerIndex(): BattlerIndex; @@ -507,6 +494,26 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { this.summonData.moveset[moveIndex] = move; } + trySetShiny(): boolean { + const rand1 = Utils.binToDec(Utils.decToBin(this.id).substring(0, 16)); + const rand2 = Utils.binToDec(Utils.decToBin(this.id).substring(16, 32)); + + const E = this.scene.gameData.trainerId ^ this.scene.gameData.secretId; + const F = rand1 ^ rand2; + + let shinyThreshold = new Utils.IntegerHolder(32); + if (!this.hasTrainer()) { + this.scene.applyModifiers(ShinyRateBoosterModifier, true, shinyThreshold); + console.log(shinyThreshold.value); + } + + this.shiny = (E ^ F) < shinyThreshold.value; + if ((E ^ F) < 32) + console.log('REAL SHINY!!'); + + return this.shiny; + } + generateAndPopulateMoveset(): void { this.moveset = []; const movePool = []; @@ -1097,6 +1104,10 @@ export class PlayerPokemon extends Pokemon { return true; } + hasTrainer(): boolean { + return true; + } + getFieldIndex(): integer { return this.scene.getPlayerField().indexOf(this); } @@ -1165,12 +1176,15 @@ export class PlayerPokemon extends Pokemon { } export class EnemyPokemon extends Pokemon { + public trainer: boolean; public aiType: AiType; - constructor(scene: BattleScene, species: PokemonSpecies, level: integer, dataSource?: PokemonData) { + constructor(scene: BattleScene, species: PokemonSpecies, level: integer, trainer: boolean, dataSource?: PokemonData) { super(scene, 236, 84, species, level, dataSource?.abilityIndex, dataSource ? dataSource.formIndex : scene.arena.getFormIndex(species), dataSource?.gender, dataSource?.shiny, dataSource); + this.trainer = trainer; + if (!dataSource) { let prevolution: Species; let speciesId = species.speciesId; @@ -1323,6 +1337,10 @@ export class EnemyPokemon extends Pokemon { return false; } + hasTrainer(): boolean { + return this.trainer; + } + getFieldIndex(): integer { return this.scene.getEnemyField().indexOf(this); } diff --git a/src/system/game-data.ts b/src/system/game-data.ts index 28ba02c4d..fc988fa8f 100644 --- a/src/system/game-data.ts +++ b/src/system/game-data.ts @@ -253,7 +253,7 @@ export class GameData { scene.newArena(sessionData.arena.biome, true); sessionData.enemyParty.forEach((enemyData, e) => { - const enemyPokemon = enemyData.toPokemon(scene) as EnemyPokemon; + const enemyPokemon = enemyData.toPokemon(scene, battleType) as EnemyPokemon; battle.enemyParty[e] = enemyPokemon; if (battleType === BattleType.WILD) battle.seenEnemyPartyMemberIds.add(enemyPokemon.id); diff --git a/src/system/pokemon-data.ts b/src/system/pokemon-data.ts index 5c89fd5f7..5c768e020 100644 --- a/src/system/pokemon-data.ts +++ b/src/system/pokemon-data.ts @@ -1,3 +1,4 @@ +import { BattleType } from "../battle"; import BattleScene from "../battle-scene"; import { Gender } from "../data/gender"; import { PokeballType } from "../data/pokeball"; @@ -69,10 +70,10 @@ export default class PokemonData { } } - toPokemon(scene: BattleScene): Pokemon { + toPokemon(scene: BattleScene, battleType?: BattleType): Pokemon { const species = getPokemonSpecies(this.species); if (this.player) return new PlayerPokemon(scene, species, this.level, this.abilityIndex, this.formIndex, this.gender, this.shiny, this); - return new EnemyPokemon(scene, species, this.level, this); + return new EnemyPokemon(scene, species, this.level, battleType === BattleType.TRAINER, this); } } \ No newline at end of file diff --git a/src/trainer.ts b/src/trainer.ts index d901b482f..a2e674126 100644 --- a/src/trainer.ts +++ b/src/trainer.ts @@ -131,7 +131,7 @@ export default class Trainer extends Phaser.GameObjects.Container { ? getPokemonSpecies(battle.enemyParty[offset].species.getSpeciesForLevel(level)) : this.genNewPartyMemberSpecies(level); - ret = new EnemyPokemon(this.scene, species, level); + ret = new EnemyPokemon(this.scene, species, level, true); }, this.config.hasStaticParty ? this.config.getDerivedType() + ((index + 1) << 8) : this.scene.currentBattle.waveIndex + (this.config.getDerivedType() << 10) + ((index + 1) << 8)); return ret; From d1c58224bc2e39810b54f6dfd14897813d2ffa43 Mon Sep 17 00:00:00 2001 From: Flashfyre Date: Sat, 28 Oct 2023 13:24:57 -0400 Subject: [PATCH 15/15] Add base logic for enemy buff modifiers --- public/images/items.json | 3553 ++++++++++++---------- public/images/items.png | Bin 52034 -> 57699 bytes public/images/items/ability_capsule.png | Bin 0 -> 257 bytes public/images/items/big_mushroom.png | Bin 0 -> 273 bytes public/images/items/wl_ability_urge.png | Bin 0 -> 280 bytes public/images/items/wl_antidote.png | Bin 0 -> 272 bytes public/images/items/wl_awakening.png | Bin 0 -> 281 bytes public/images/items/wl_burn_heal.png | Bin 0 -> 275 bytes public/images/items/wl_ether.png | Bin 0 -> 278 bytes public/images/items/wl_full_heal.png | Bin 0 -> 276 bytes public/images/items/wl_full_restore.png | Bin 0 -> 277 bytes public/images/items/wl_guard_spec.png | Bin 0 -> 276 bytes public/images/items/wl_hyper_potion.png | Bin 0 -> 276 bytes public/images/items/wl_ice_heal.png | Bin 0 -> 270 bytes public/images/items/wl_item_drop.png | Bin 0 -> 274 bytes public/images/items/wl_item_urge.png | Bin 0 -> 267 bytes public/images/items/wl_max_potion.png | Bin 0 -> 278 bytes public/images/items/wl_max_revive.png | Bin 0 -> 277 bytes public/images/items/wl_paralyze_heal.png | Bin 0 -> 272 bytes public/images/items/wl_potion.png | Bin 0 -> 279 bytes public/images/items/wl_reset_urge.png | Bin 0 -> 276 bytes public/images/items/wl_revive.png | Bin 0 -> 264 bytes public/images/items/wl_super_potion.png | Bin 0 -> 284 bytes src/battle-phases.ts | 10 +- src/battle-scene.ts | 21 +- src/data/ability.ts | 6 +- src/modifier/modifier-type.ts | 17 +- src/modifier/modifier.ts | 87 +- src/pokemon.ts | 26 +- src/system/game-data.ts | 2 +- 30 files changed, 2134 insertions(+), 1588 deletions(-) create mode 100644 public/images/items/ability_capsule.png create mode 100644 public/images/items/big_mushroom.png create mode 100644 public/images/items/wl_ability_urge.png create mode 100644 public/images/items/wl_antidote.png create mode 100644 public/images/items/wl_awakening.png create mode 100644 public/images/items/wl_burn_heal.png create mode 100644 public/images/items/wl_ether.png create mode 100644 public/images/items/wl_full_heal.png create mode 100644 public/images/items/wl_full_restore.png create mode 100644 public/images/items/wl_guard_spec.png create mode 100644 public/images/items/wl_hyper_potion.png create mode 100644 public/images/items/wl_ice_heal.png create mode 100644 public/images/items/wl_item_drop.png create mode 100644 public/images/items/wl_item_urge.png create mode 100644 public/images/items/wl_max_potion.png create mode 100644 public/images/items/wl_max_revive.png create mode 100644 public/images/items/wl_paralyze_heal.png create mode 100644 public/images/items/wl_potion.png create mode 100644 public/images/items/wl_reset_urge.png create mode 100644 public/images/items/wl_revive.png create mode 100644 public/images/items/wl_super_potion.png diff --git a/public/images/items.json b/public/images/items.json index 9ba66e483..95f716f18 100644 --- a/public/images/items.json +++ b/public/images/items.json @@ -4,8 +4,8 @@ "image": "items.png", "format": "RGBA8888", "size": { - "w": 267, - "h": 267 + "w": 281, + "h": 281 }, "scale": 1, "frames": [ @@ -324,6 +324,27 @@ "h": 23 } }, + { + "filename": "max_revive", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 22, + "h": 24 + }, + "frame": { + "x": 259, + "y": 0, + "w": 22, + "h": 24 + } + }, { "filename": "catching_charm", "rotated": false, @@ -409,7 +430,7 @@ } }, { - "filename": "max_revive", + "filename": "rare_candy", "rotated": false, "trimmed": true, "sourceSize": { @@ -417,20 +438,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 5, - "y": 4, - "w": 22, - "h": 24 + "x": 4, + "y": 5, + "w": 23, + "h": 23 }, "frame": { "x": 0, "y": 174, - "w": 22, - "h": 24 + "w": 23, + "h": 23 } }, { - "filename": "black_belt", + "filename": "rarer_candy", "rotated": false, "trimmed": true, "sourceSize": { @@ -438,36 +459,15 @@ "h": 32 }, "spriteSourceSize": { - "x": 5, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 0, - "y": 198, - "w": 22, - "h": 23 - } - }, - { - "filename": "fire_stone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, + "x": 4, "y": 5, - "w": 22, + "w": 23, "h": 23 }, "frame": { "x": 0, - "y": 221, - "w": 22, + "y": 197, + "w": 23, "h": 23 } }, @@ -487,11 +487,53 @@ }, "frame": { "x": 0, - "y": 244, + "y": 220, "w": 24, "h": 23 } }, + { + "filename": "twisted_spoon", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 5, + "w": 24, + "h": 23 + }, + "frame": { + "x": 0, + "y": 243, + "w": 24, + "h": 23 + } + }, + { + "filename": "silver_powder", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 24, + "h": 15 + }, + "frame": { + "x": 0, + "y": 266, + "w": 24, + "h": 15 + } + }, { "filename": "oval_charm", "rotated": false, @@ -535,7 +577,28 @@ } }, { - "filename": "dragon_fang", + "filename": "black_belt", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 23, + "y": 120, + "w": 22, + "h": 23 + } + }, + { + "filename": "fire_stone", "rotated": false, "trimmed": true, "sourceSize": { @@ -545,13 +608,13 @@ "spriteSourceSize": { "x": 5, "y": 5, - "w": 21, + "w": 22, "h": 23 }, "frame": { "x": 23, - "y": 120, - "w": 21, + "y": 143, + "w": 22, "h": 23 } }, @@ -571,11 +634,95 @@ }, "frame": { "x": 23, - "y": 143, + "y": 166, "w": 22, "h": 23 } }, + { + "filename": "never_melt_ice", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 23 + }, + "frame": { + "x": 23, + "y": 189, + "w": 22, + "h": 23 + } + }, + { + "filename": "dragon_fang", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 21, + "h": 23 + }, + "frame": { + "x": 24, + "y": 212, + "w": 21, + "h": 23 + } + }, + { + "filename": "lansat_berry", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 21, + "h": 23 + }, + "frame": { + "x": 24, + "y": 235, + "w": 21, + "h": 23 + } + }, + { + "filename": "stick", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 5, + "w": 23, + "h": 23 + }, + "frame": { + "x": 24, + "y": 258, + "w": 23, + "h": 23 + } + }, { "filename": "calcium", "rotated": false, @@ -681,27 +828,6 @@ "h": 24 } }, - { - "filename": "twisted_spoon", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 24, - "h": 23 - }, - "frame": { - "x": 44, - "y": 96, - "w": 24, - "h": 23 - } - }, { "filename": "exp_balance", "rotated": false, @@ -718,32 +844,11 @@ }, "frame": { "x": 44, - "y": 119, + "y": 96, "w": 24, "h": 22 } }, - { - "filename": "rare_candy", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 23, - "h": 23 - }, - "frame": { - "x": 45, - "y": 141, - "w": 23, - "h": 23 - } - }, { "filename": "exp_share", "rotated": false, @@ -759,8 +864,8 @@ "h": 22 }, "frame": { - "x": 74, - "y": 24, + "x": 45, + "y": 118, "w": 24, "h": 22 } @@ -780,75 +885,12 @@ "h": 22 }, "frame": { - "x": 98, - "y": 24, + "x": 45, + "y": 140, "w": 23, "h": 22 } }, - { - "filename": "rarer_candy", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 23, - "h": 23 - }, - "frame": { - "x": 121, - "y": 24, - "w": 23, - "h": 23 - } - }, - { - "filename": "stick", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 23, - "h": 23 - }, - "frame": { - "x": 144, - "y": 24, - "w": 23, - "h": 23 - } - }, - { - "filename": "never_melt_ice", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 23 - }, - "frame": { - "x": 167, - "y": 24, - "w": 22, - "h": 23 - } - }, { "filename": "petaya_berry", "rotated": false, @@ -864,8 +906,8 @@ "h": 23 }, "frame": { - "x": 189, - "y": 24, + "x": 45, + "y": 162, "w": 22, "h": 23 } @@ -885,8 +927,8 @@ "h": 23 }, "frame": { - "x": 211, - "y": 23, + "x": 45, + "y": 185, "w": 22, "h": 23 } @@ -906,8 +948,8 @@ "h": 22 }, "frame": { - "x": 233, - "y": 23, + "x": 45, + "y": 208, "w": 22, "h": 22 } @@ -926,13 +968,202 @@ "w": 22, "h": 22 }, + "frame": { + "x": 45, + "y": 230, + "w": 22, + "h": 22 + } + }, + { + "filename": "electirizer", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 74, + "y": 24, + "w": 22, + "h": 22 + } + }, + { + "filename": "enigma_berry", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 96, + "y": 24, + "w": 22, + "h": 22 + } + }, + { + "filename": "ganlon_berry", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 118, + "y": 24, + "w": 22, + "h": 22 + } + }, + { + "filename": "guard_spec", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 140, + "y": 24, + "w": 22, + "h": 22 + } + }, + { + "filename": "ice_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 162, + "y": 24, + "w": 22, + "h": 22 + } + }, + { + "filename": "magmarizer", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 184, + "y": 24, + "w": 22, + "h": 22 + } + }, + { + "filename": "leaf_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 21, + "h": 23 + }, "frame": { "x": 75, "y": 46, + "w": 21, + "h": 23 + } + }, + { + "filename": "mini_black_hole", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 96, + "y": 46, "w": 22, "h": 22 } }, + { + "filename": "moon_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 6, + "w": 23, + "h": 21 + }, + "frame": { + "x": 118, + "y": 46, + "w": 23, + "h": 21 + } + }, { "filename": "sacred_ash", "rotated": false, @@ -948,7 +1179,7 @@ "h": 20 }, "frame": { - "x": 97, + "x": 141, "y": 46, "w": 24, "h": 20 @@ -969,56 +1200,14 @@ "h": 20 }, "frame": { - "x": 121, - "y": 47, + "x": 165, + "y": 46, "w": 24, "h": 20 } }, { - "filename": "binding_band", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 23, - "h": 20 - }, - "frame": { - "x": 145, - "y": 47, - "w": 23, - "h": 20 - } - }, - { - "filename": "moon_stone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 6, - "w": 23, - "h": 21 - }, - "frame": { - "x": 168, - "y": 47, - "w": 23, - "h": 21 - } - }, - { - "filename": "dawn_stone", + "filename": "mystic_water", "rotated": false, "trimmed": true, "sourceSize": { @@ -1027,374 +1216,17 @@ }, "spriteSourceSize": { "x": 6, - "y": 6, - "w": 20, - "h": 21 - }, - "frame": { - "x": 191, - "y": 47, - "w": 20, - "h": 21 - } - }, - { - "filename": "electirizer", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 211, - "y": 46, - "w": 22, - "h": 22 - } - }, - { - "filename": "enigma_berry", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 233, - "y": 45, - "w": 22, - "h": 22 - } - }, - { - "filename": "lansat_berry", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 4, - "w": 21, + "w": 20, "h": 23 }, "frame": { "x": 76, - "y": 68, - "w": 21, + "y": 69, + "w": 20, "h": 23 } }, - { - "filename": "ganlon_berry", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 97, - "y": 66, - "w": 22, - "h": 22 - } - }, - { - "filename": "deep_sea_tooth", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 22, - "h": 21 - }, - "frame": { - "x": 119, - "y": 67, - "w": 22, - "h": 21 - } - }, - { - "filename": "guard_spec", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 141, - "y": 67, - "w": 22, - "h": 22 - } - }, - { - "filename": "ice_stone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 163, - "y": 68, - "w": 22, - "h": 22 - } - }, - { - "filename": "magmarizer", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 185, - "y": 68, - "w": 22, - "h": 22 - } - }, - { - "filename": "mini_black_hole", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 207, - "y": 68, - "w": 22, - "h": 22 - } - }, - { - "filename": "revive", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 10, - "y": 8, - "w": 12, - "h": 17 - }, - "frame": { - "x": 255, - "y": 23, - "w": 12, - "h": 17 - } - }, - { - "filename": "full_restore", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 18, - "h": 24 - }, - "frame": { - "x": 68, - "y": 96, - "w": 18, - "h": 24 - } - }, - { - "filename": "max_elixir", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 18, - "h": 24 - }, - "frame": { - "x": 68, - "y": 120, - "w": 18, - "h": 24 - } - }, - { - "filename": "apicot_berry", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 19, - "h": 20 - }, - "frame": { - "x": 68, - "y": 144, - "w": 19, - "h": 20 - } - }, - { - "filename": "choice_specs", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 8, - "w": 24, - "h": 18 - }, - "frame": { - "x": 23, - "y": 166, - "w": 24, - "h": 18 - } - }, - { - "filename": "leaf_stone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 21, - "h": 23 - }, - "frame": { - "x": 22, - "y": 184, - "w": 21, - "h": 23 - } - }, - { - "filename": "sharp_beak", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 21, - "h": 23 - }, - "frame": { - "x": 22, - "y": 207, - "w": 21, - "h": 23 - } - }, - { - "filename": "reviver_seed", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 8, - "w": 23, - "h": 20 - }, - "frame": { - "x": 47, - "y": 164, - "w": 23, - "h": 20 - } - }, { "filename": "protector", "rotated": false, @@ -1410,12 +1242,138 @@ "h": 22 }, "frame": { - "x": 43, - "y": 184, + "x": 96, + "y": 68, "w": 22, "h": 22 } }, + { + "filename": "sharp_beak", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 21, + "h": 23 + }, + "frame": { + "x": 118, + "y": 67, + "w": 21, + "h": 23 + } + }, + { + "filename": "apicot_berry", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 19, + "h": 20 + }, + "frame": { + "x": 189, + "y": 46, + "w": 19, + "h": 20 + } + }, + { + "filename": "full_restore", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 4, + "w": 18, + "h": 24 + }, + "frame": { + "x": 47, + "y": 252, + "w": 18, + "h": 24 + } + }, + { + "filename": "leftovers", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 5, + "w": 15, + "h": 22 + }, + "frame": { + "x": 68, + "y": 96, + "w": 15, + "h": 22 + } + }, + { + "filename": "full_heal", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 9, + "y": 4, + "w": 15, + "h": 23 + }, + "frame": { + "x": 69, + "y": 118, + "w": 15, + "h": 23 + } + }, + { + "filename": "dawn_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 20, + "h": 21 + }, + "frame": { + "x": 68, + "y": 141, + "w": 20, + "h": 21 + } + }, { "filename": "shed_shell", "rotated": false, @@ -1431,33 +1389,12 @@ "h": 22 }, "frame": { - "x": 43, - "y": 206, + "x": 67, + "y": 162, "w": 22, "h": 22 } }, - { - "filename": "candy_jar", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 19, - "h": 20 - }, - "frame": { - "x": 70, - "y": 164, - "w": 19, - "h": 20 - } - }, { "filename": "starf_berry", "rotated": false, @@ -1473,7 +1410,7 @@ "h": 22 }, "frame": { - "x": 65, + "x": 67, "y": 184, "w": 22, "h": 22 @@ -1494,12 +1431,33 @@ "h": 22 }, "frame": { - "x": 65, + "x": 67, "y": 206, "w": 22, "h": 22 } }, + { + "filename": "tm_bug", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 67, + "y": 228, + "w": 22, + "h": 22 + } + }, { "filename": "hp_up", "rotated": false, @@ -1515,54 +1473,12 @@ "h": 24 }, "frame": { - "x": 86, - "y": 91, + "x": 83, + "y": 92, "w": 16, "h": 24 } }, - { - "filename": "tm_bug", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 102, - "y": 88, - "w": 22, - "h": 22 - } - }, - { - "filename": "hyper_potion", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 17, - "h": 23 - }, - "frame": { - "x": 124, - "y": 88, - "w": 17, - "h": 23 - } - }, { "filename": "tm_dark", "rotated": false, @@ -1578,14 +1494,14 @@ "h": 22 }, "frame": { - "x": 141, - "y": 89, + "x": 99, + "y": 90, "w": 22, "h": 22 } }, { - "filename": "liechi_berry", + "filename": "max_elixir", "rotated": false, "trimmed": true, "sourceSize": { @@ -1593,58 +1509,16 @@ "h": 32 }, "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 22, - "h": 21 + "x": 7, + "y": 4, + "w": 18, + "h": 24 }, "frame": { - "x": 163, + "x": 121, "y": 90, - "w": 22, - "h": 21 - } - }, - { - "filename": "shell_bell", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 7, - "w": 23, - "h": 20 - }, - "frame": { - "x": 185, - "y": 90, - "w": 23, - "h": 20 - } - }, - { - "filename": "deep_sea_scale", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 22, - "h": 20 - }, - "frame": { - "x": 208, - "y": 90, - "w": 22, - "h": 20 + "w": 18, + "h": 24 } }, { @@ -1662,12 +1536,138 @@ "h": 24 }, "frame": { - "x": 86, - "y": 115, + "x": 84, + "y": 116, "w": 16, "h": 24 } }, + { + "filename": "dusk_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 21, + "h": 21 + }, + "frame": { + "x": 100, + "y": 112, + "w": 21, + "h": 21 + } + }, + { + "filename": "big_mushroom", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 19, + "h": 19 + }, + "frame": { + "x": 121, + "y": 114, + "w": 19, + "h": 19 + } + }, + { + "filename": "metal_coat", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 5, + "w": 19, + "h": 22 + }, + "frame": { + "x": 88, + "y": 140, + "w": 19, + "h": 22 + } + }, + { + "filename": "max_ether", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 4, + "w": 18, + "h": 24 + }, + "frame": { + "x": 89, + "y": 162, + "w": 18, + "h": 24 + } + }, + { + "filename": "max_potion", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 4, + "w": 18, + "h": 24 + }, + "frame": { + "x": 89, + "y": 186, + "w": 18, + "h": 24 + } + }, + { + "filename": "lure", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 17, + "h": 24 + }, + "frame": { + "x": 89, + "y": 210, + "w": 17, + "h": 24 + } + }, { "filename": "tm_dragon", "rotated": false, @@ -1683,8 +1683,8 @@ "h": 22 }, "frame": { - "x": 102, - "y": 110, + "x": 107, + "y": 133, "w": 22, "h": 22 } @@ -1704,8 +1704,8 @@ "h": 22 }, "frame": { - "x": 124, - "y": 111, + "x": 107, + "y": 155, "w": 22, "h": 22 } @@ -1725,14 +1725,14 @@ "h": 22 }, "frame": { - "x": 146, - "y": 111, + "x": 107, + "y": 177, "w": 22, "h": 22 } }, { - "filename": "lure", + "filename": "max_lure", "rotated": false, "trimmed": true, "sourceSize": { @@ -1746,12 +1746,201 @@ "h": 24 }, "frame": { - "x": 168, - "y": 111, + "x": 129, + "y": 133, "w": 17, "h": 24 } }, + { + "filename": "super_lure", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 17, + "h": 24 + }, + "frame": { + "x": 129, + "y": 157, + "w": 17, + "h": 24 + } + }, + { + "filename": "binding_band", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 23, + "h": 20 + }, + "frame": { + "x": 129, + "y": 181, + "w": 23, + "h": 20 + } + }, + { + "filename": "deep_sea_scale", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 22, + "h": 20 + }, + "frame": { + "x": 107, + "y": 199, + "w": 22, + "h": 20 + } + }, + { + "filename": "choice_specs", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 24, + "h": 18 + }, + "frame": { + "x": 129, + "y": 201, + "w": 24, + "h": 18 + } + }, + { + "filename": "dragon_scale", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 24, + "h": 18 + }, + "frame": { + "x": 106, + "y": 219, + "w": 24, + "h": 18 + } + }, + { + "filename": "reviver_seed", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 8, + "w": 23, + "h": 20 + }, + "frame": { + "x": 130, + "y": 219, + "w": 23, + "h": 20 + } + }, + { + "filename": "golden_egg", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 6, + "w": 17, + "h": 20 + }, + "frame": { + "x": 89, + "y": 234, + "w": 17, + "h": 20 + } + }, + { + "filename": "ability_capsule", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 9, + "w": 24, + "h": 14 + }, + "frame": { + "x": 106, + "y": 237, + "w": 24, + "h": 14 + } + }, + { + "filename": "shell_bell", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 7, + "w": 23, + "h": 20 + }, + "frame": { + "x": 130, + "y": 239, + "w": 23, + "h": 20 + } + }, { "filename": "tm_fighting", "rotated": false, @@ -1767,8 +1956,8 @@ "h": 22 }, "frame": { - "x": 185, - "y": 110, + "x": 65, + "y": 259, "w": 22, "h": 22 } @@ -1788,54 +1977,12 @@ "h": 22 }, "frame": { - "x": 207, - "y": 110, + "x": 87, + "y": 259, "w": 22, "h": 22 } }, - { - "filename": "max_ether", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 18, - "h": 24 - }, - "frame": { - "x": 87, - "y": 139, - "w": 18, - "h": 24 - } - }, - { - "filename": "dusk_stone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 21, - "h": 21 - }, - "frame": { - "x": 89, - "y": 163, - "w": 21, - "h": 21 - } - }, { "filename": "tm_flying", "rotated": false, @@ -1851,8 +1998,8 @@ "h": 22 }, "frame": { - "x": 87, - "y": 184, + "x": 109, + "y": 259, "w": 22, "h": 22 } @@ -1872,470 +2019,8 @@ "h": 22 }, "frame": { - "x": 87, - "y": 206, - "w": 22, - "h": 22 - } - }, - { - "filename": "max_potion", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 18, - "h": 24 - }, - "frame": { - "x": 105, - "y": 132, - "w": 18, - "h": 24 - } - }, - { - "filename": "tm_grass", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 123, - "y": 133, - "w": 22, - "h": 22 - } - }, - { - "filename": "tm_ground", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 145, - "y": 133, - "w": 22, - "h": 22 - } - }, - { - "filename": "gb", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 20, - "h": 20 - }, - "frame": { - "x": 167, - "y": 135, - "w": 20, - "h": 20 - } - }, - { - "filename": "tm_ice", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 187, - "y": 132, - "w": 22, - "h": 22 - } - }, - { - "filename": "mystic_water", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 5, - "w": 20, - "h": 23 - }, - "frame": { - "x": 209, - "y": 132, - "w": 20, - "h": 23 - } - }, - { - "filename": "max_lure", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 17, - "h": 24 - }, - "frame": { - "x": 110, - "y": 156, - "w": 17, - "h": 24 - } - }, - { - "filename": "tm_normal", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 127, - "y": 155, - "w": 22, - "h": 22 - } - }, - { - "filename": "tm_poison", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 149, - "y": 155, - "w": 22, - "h": 22 - } - }, - { - "filename": "metal_coat", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 5, - "w": 19, - "h": 22 - }, - "frame": { - "x": 171, - "y": 155, - "w": 19, - "h": 22 - } - }, - { - "filename": "spell_tag", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 6, - "w": 19, - "h": 21 - }, - "frame": { - "x": 190, - "y": 154, - "w": 19, - "h": 21 - } - }, - { - "filename": "magnet", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 20, - "h": 20 - }, - "frame": { - "x": 209, - "y": 155, - "w": 20, - "h": 20 - } - }, - { - "filename": "dragon_scale", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 8, - "w": 24, - "h": 18 - }, - "frame": { - "x": 127, - "y": 177, - "w": 24, - "h": 18 - } - }, - { - "filename": "dubious_disc", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 7, - "w": 22, - "h": 19 - }, - "frame": { - "x": 151, - "y": 177, - "w": 22, - "h": 19 - } - }, - { - "filename": "golden_egg", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 6, - "w": 17, - "h": 20 - }, - "frame": { - "x": 110, - "y": 180, - "w": 17, - "h": 20 - } - }, - { - "filename": "super_lure", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 17, - "h": 24 - }, - "frame": { - "x": 109, - "y": 200, - "w": 17, - "h": 24 - } - }, - { - "filename": "hard_stone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 19, - "h": 20 - }, - "frame": { - "x": 173, - "y": 177, - "w": 19, - "h": 20 - } - }, - { - "filename": "tm_psychic", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 192, - "y": 175, - "w": 22, - "h": 22 - } - }, - { - "filename": "full_heal", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 9, - "y": 4, - "w": 15, - "h": 23 - }, - "frame": { - "x": 214, - "y": 175, - "w": 15, - "h": 23 - } - }, - { - "filename": "silver_powder", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 11, - "w": 24, - "h": 15 - }, - "frame": { - "x": 127, - "y": 195, - "w": 24, - "h": 15 - } - }, - { - "filename": "tm_rock", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 151, - "y": 196, - "w": 22, - "h": 22 - } - }, - { - "filename": "tm_steel", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 173, - "y": 197, + "x": 131, + "y": 259, "w": 22, "h": 22 } @@ -2355,12 +2040,96 @@ "h": 22 }, "frame": { - "x": 195, - "y": 197, + "x": 206, + "y": 24, "w": 17, "h": 22 } }, + { + "filename": "tm_grass", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 223, + "y": 23, + "w": 22, + "h": 22 + } + }, + { + "filename": "candy_jar", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 19, + "h": 20 + }, + "frame": { + "x": 208, + "y": 46, + "w": 19, + "h": 20 + } + }, + { + "filename": "deep_sea_tooth", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 22, + "h": 21 + }, + "frame": { + "x": 227, + "y": 45, + "w": 22, + "h": 21 + } + }, + { + "filename": "liechi_berry", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 22, + "h": 21 + }, + "frame": { + "x": 245, + "y": 24, + "w": 22, + "h": 21 + } + }, { "filename": "poison_barb", "rotated": false, @@ -2376,14 +2145,14 @@ "h": 21 }, "frame": { - "x": 212, - "y": 198, + "x": 249, + "y": 45, "w": 21, "h": 21 } }, { - "filename": "wise_glasses", + "filename": "revive", "rotated": false, "trimmed": true, "sourceSize": { @@ -2391,18 +2160,249 @@ "h": 32 }, "spriteSourceSize": { - "x": 4, + "x": 10, "y": 8, - "w": 23, + "w": 12, "h": 17 }, "frame": { - "x": 126, - "y": 210, - "w": 23, + "x": 267, + "y": 24, + "w": 12, "h": 17 } }, + { + "filename": "pp_max", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 16, + "h": 24 + }, + "frame": { + "x": 139, + "y": 67, + "w": 16, + "h": 24 + } + }, + { + "filename": "tm_ground", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 155, + "y": 66, + "w": 22, + "h": 22 + } + }, + { + "filename": "tm_ice", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 177, + "y": 66, + "w": 22, + "h": 22 + } + }, + { + "filename": "tm_normal", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 199, + "y": 66, + "w": 22, + "h": 22 + } + }, + { + "filename": "tm_poison", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 221, + "y": 66, + "w": 22, + "h": 22 + } + }, + { + "filename": "tm_psychic", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 243, + "y": 66, + "w": 22, + "h": 22 + } + }, + { + "filename": "pp_up", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 16, + "h": 24 + }, + "frame": { + "x": 265, + "y": 66, + "w": 16, + "h": 24 + } + }, + { + "filename": "hyper_potion", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 5, + "w": 17, + "h": 23 + }, + "frame": { + "x": 139, + "y": 91, + "w": 17, + "h": 23 + } + }, + { + "filename": "dubious_disc", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 7, + "w": 22, + "h": 19 + }, + "frame": { + "x": 140, + "y": 114, + "w": 22, + "h": 19 + } + }, + { + "filename": "tm_rock", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 156, + "y": 88, + "w": 22, + "h": 22 + } + }, + { + "filename": "tm_steel", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 178, + "y": 88, + "w": 22, + "h": 22 + } + }, { "filename": "tm_water", "rotated": false, @@ -2418,8 +2418,8 @@ "h": 22 }, "frame": { - "x": 149, - "y": 218, + "x": 200, + "y": 88, "w": 22, "h": 22 } @@ -2439,117 +2439,12 @@ "h": 22 }, "frame": { - "x": 171, - "y": 219, + "x": 222, + "y": 88, "w": 22, "h": 22 } }, - { - "filename": "x_accuracy", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 193, - "y": 219, - "w": 22, - "h": 22 - } - }, - { - "filename": "sitrus_berry", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 5, - "w": 20, - "h": 22 - }, - "frame": { - "x": 215, - "y": 219, - "w": 20, - "h": 22 - } - }, - { - "filename": "leftovers", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 15, - "h": 22 - }, - "frame": { - "x": 229, - "y": 68, - "w": 15, - "h": 22 - } - }, - { - "filename": "lucky_egg", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 6, - "w": 17, - "h": 20 - }, - "frame": { - "x": 230, - "y": 90, - "w": 17, - "h": 20 - } - }, - { - "filename": "potion", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 17, - "h": 23 - }, - "frame": { - "x": 229, - "y": 110, - "w": 17, - "h": 23 - } - }, { "filename": "shiny_stone", "rotated": false, @@ -2565,56 +2460,14 @@ "h": 21 }, "frame": { - "x": 246, - "y": 110, + "x": 244, + "y": 88, "w": 21, "h": 21 } }, { - "filename": "zoom_lens", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 21, - "h": 21 - }, - "frame": { - "x": 246, - "y": 131, - "w": 21, - "h": 21 - } - }, - { - "filename": "super_potion", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 17, - "h": 23 - }, - "frame": { - "x": 229, - "y": 133, - "w": 17, - "h": 23 - } - }, - { - "filename": "pp_max", + "filename": "protein", "rotated": false, "trimmed": true, "sourceSize": { @@ -2628,12 +2481,33 @@ "h": 24 }, "frame": { - "x": 229, - "y": 156, + "x": 265, + "y": 90, "w": 16, "h": 24 } }, + { + "filename": "x_accuracy", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 162, + "y": 110, + "w": 22, + "h": 22 + } + }, { "filename": "x_attack", "rotated": false, @@ -2649,8 +2523,8 @@ "h": 22 }, "frame": { - "x": 245, - "y": 156, + "x": 184, + "y": 110, "w": 22, "h": 22 } @@ -2670,12 +2544,33 @@ "h": 22 }, "frame": { - "x": 245, - "y": 178, + "x": 206, + "y": 110, "w": 22, "h": 22 } }, + { + "filename": "zinc", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 16, + "h": 24 + }, + "frame": { + "x": 146, + "y": 133, + "w": 16, + "h": 24 + } + }, { "filename": "x_sp_atk", "rotated": false, @@ -2691,54 +2586,12 @@ "h": 22 }, "frame": { - "x": 244, - "y": 67, + "x": 162, + "y": 132, "w": 22, "h": 22 } }, - { - "filename": "mb", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 20, - "h": 20 - }, - "frame": { - "x": 247, - "y": 89, - "w": 20, - "h": 20 - } - }, - { - "filename": "upgrade", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 7, - "w": 22, - "h": 19 - }, - "frame": { - "x": 233, - "y": 200, - "w": 22, - "h": 19 - } - }, { "filename": "x_sp_def", "rotated": false, @@ -2754,33 +2607,12 @@ "h": 22 }, "frame": { - "x": 235, - "y": 219, + "x": 184, + "y": 132, "w": 22, "h": 22 } }, - { - "filename": "prism_scale", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 9, - "y": 8, - "w": 15, - "h": 15 - }, - "frame": { - "x": 229, - "y": 180, - "w": 15, - "h": 15 - } - }, { "filename": "x_speed", "rotated": false, @@ -2796,12 +2628,243 @@ "h": 22 }, "frame": { - "x": 24, - "y": 230, + "x": 206, + "y": 132, "w": 22, "h": 22 } }, + { + "filename": "potion", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 5, + "w": 17, + "h": 23 + }, + "frame": { + "x": 228, + "y": 110, + "w": 17, + "h": 23 + } + }, + { + "filename": "sitrus_berry", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 5, + "w": 20, + "h": 22 + }, + "frame": { + "x": 245, + "y": 109, + "w": 20, + "h": 22 + } + }, + { + "filename": "super_potion", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 5, + "w": 17, + "h": 23 + }, + "frame": { + "x": 146, + "y": 157, + "w": 17, + "h": 23 + } + }, + { + "filename": "zoom_lens", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 21, + "h": 21 + }, + "frame": { + "x": 163, + "y": 154, + "w": 21, + "h": 21 + } + }, + { + "filename": "upgrade", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 7, + "w": 22, + "h": 19 + }, + "frame": { + "x": 184, + "y": 154, + "w": 22, + "h": 19 + } + }, + { + "filename": "gb", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 20, + "h": 20 + }, + "frame": { + "x": 206, + "y": 154, + "w": 20, + "h": 20 + } + }, + { + "filename": "spell_tag", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 6, + "w": 19, + "h": 21 + }, + "frame": { + "x": 228, + "y": 133, + "w": 19, + "h": 21 + } + }, + { + "filename": "magnet", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 20, + "h": 20 + }, + "frame": { + "x": 226, + "y": 154, + "w": 20, + "h": 20 + } + }, + { + "filename": "hard_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 19, + "h": 20 + }, + "frame": { + "x": 247, + "y": 131, + "w": 19, + "h": 20 + } + }, + { + "filename": "lucky_egg", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 6, + "w": 17, + "h": 20 + }, + "frame": { + "x": 152, + "y": 180, + "w": 17, + "h": 20 + } + }, + { + "filename": "mb", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 20, + "h": 20 + }, + "frame": { + "x": 153, + "y": 200, + "w": 20, + "h": 20 + } + }, { "filename": "pb", "rotated": false, @@ -2817,33 +2880,12 @@ "h": 20 }, "frame": { - "x": 46, - "y": 228, + "x": 153, + "y": 220, "w": 20, "h": 20 } }, - { - "filename": "lum_berry", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 7, - "w": 20, - "h": 19 - }, - "frame": { - "x": 46, - "y": 248, - "w": 20, - "h": 19 - } - }, { "filename": "pb_gold", "rotated": false, @@ -2859,75 +2901,12 @@ "h": 20 }, "frame": { - "x": 66, - "y": 228, + "x": 153, + "y": 240, "w": 20, "h": 20 } }, - { - "filename": "razor_claw", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 7, - "w": 20, - "h": 19 - }, - "frame": { - "x": 66, - "y": 248, - "w": 20, - "h": 19 - } - }, - { - "filename": "pp_up", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 16, - "h": 24 - }, - "frame": { - "x": 86, - "y": 228, - "w": 16, - "h": 24 - } - }, - { - "filename": "protein", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 16, - "h": 24 - }, - "frame": { - "x": 102, - "y": 228, - "w": 16, - "h": 24 - } - }, { "filename": "ub", "rotated": false, @@ -2943,12 +2922,33 @@ "h": 20 }, "frame": { - "x": 118, - "y": 227, + "x": 153, + "y": 260, "w": 20, "h": 20 } }, + { + "filename": "prism_scale", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 9, + "y": 8, + "w": 15, + "h": 15 + }, + "frame": { + "x": 265, + "y": 114, + "w": 15, + "h": 15 + } + }, { "filename": "razor_fang", "rotated": false, @@ -2964,8 +2964,8 @@ "h": 20 }, "frame": { - "x": 118, - "y": 247, + "x": 169, + "y": 175, "w": 18, "h": 20 } @@ -2985,14 +2985,14 @@ "h": 19 }, "frame": { - "x": 136, - "y": 247, + "x": 187, + "y": 173, "w": 19, "h": 19 } }, { - "filename": "zinc", + "filename": "wise_glasses", "rotated": false, "trimmed": true, "sourceSize": { @@ -3000,16 +3000,16 @@ "h": 32 }, "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 16, - "h": 24 + "x": 4, + "y": 8, + "w": 23, + "h": 17 }, "frame": { - "x": 155, - "y": 240, - "w": 16, - "h": 24 + "x": 206, + "y": 174, + "w": 23, + "h": 17 } }, { @@ -3027,12 +3027,96 @@ "h": 17 }, "frame": { - "x": 171, - "y": 241, + "x": 229, + "y": 174, "w": 20, "h": 17 } }, + { + "filename": "lum_berry", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 7, + "w": 20, + "h": 19 + }, + "frame": { + "x": 173, + "y": 195, + "w": 20, + "h": 19 + } + }, + { + "filename": "razor_claw", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 7, + "w": 20, + "h": 19 + }, + "frame": { + "x": 173, + "y": 214, + "w": 20, + "h": 19 + } + }, + { + "filename": "wl_ability_urge", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 173, + "y": 233, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_antidote", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 173, + "y": 251, + "w": 20, + "h": 18 + } + }, { "filename": "oval_stone", "rotated": false, @@ -3048,11 +3132,368 @@ "h": 19 }, "frame": { - "x": 191, - "y": 241, + "x": 193, + "y": 192, "w": 18, "h": 19 } + }, + { + "filename": "wl_awakening", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 211, + "y": 191, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_burn_heal", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 193, + "y": 211, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_ether", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 193, + "y": 229, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_full_heal", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 193, + "y": 247, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_full_restore", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 231, + "y": 191, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_guard_spec", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 213, + "y": 209, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_hyper_potion", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 213, + "y": 227, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_ice_heal", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 213, + "y": 245, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_item_drop", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 213, + "y": 263, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_item_urge", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 233, + "y": 209, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_max_potion", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 233, + "y": 227, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_max_revive", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 233, + "y": 245, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_paralyze_heal", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 233, + "y": 263, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_potion", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 247, + "y": 151, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_reset_urge", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 249, + "y": 169, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_revive", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 251, + "y": 187, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_super_potion", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 253, + "y": 205, + "w": 20, + "h": 18 + } } ] } @@ -3060,6 +3501,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:ba82aafcf565da1a9adf0d1e3a405b83:d751914787cd1ba803961379ea6f7f7f:110e074689c9edd2c54833ce2e4d9270$" + "smartupdate": "$TexturePacker:SmartUpdate:cb4559b9895634c5b63991a8f07b201f:60ff4678e7949d65c84f4a9476e5d0e7:110e074689c9edd2c54833ce2e4d9270$" } } diff --git a/public/images/items.png b/public/images/items.png index febace7f2bdfd82b8943bca4ff790734f5672404..eedb3d0c381b8b6646bf5228c8480f63106d5a44 100644 GIT binary patch literal 57699 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

R?74Eu7qMxR3Apiiw1ZzO~E)a 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�+oP|I2pvK$;-8zp|ISOqvJX+ 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 literal 52034 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 diff --git a/public/images/items/ability_capsule.png b/public/images/items/ability_capsule.png new file mode 100644 index 0000000000000000000000000000000000000000..06b6b3e173d30ed3e2c1cc04c7e1ec5dbfd8ce93 GIT binary patch literal 257 zcmV+c0sj7pP)uMP!bRja?SZmuc6>SFk%=a5{X1o z5Tz8<(7kwkZCR$tfH4ld2cnAz7drrAUejQ?b8iR%h*;#70B#-&l->eM;9Apd#MjQJ ztQ`ZRwWb49NtDd}N&pEn5Z>-2z+-$&U|DvsBb)@7W&zx|q?kzwG>w2IaO0!Mu{bBt z{0Lcq=4h`AbLE@=(&aCRMN;7FN8;i~e#D=D#S)1`@)!94hmBZ2-`pbv00000NkvXX Hu0mjf3*=^b literal 0 HcmV?d00001 diff --git a/public/images/items/big_mushroom.png b/public/images/items/big_mushroom.png new file mode 100644 index 0000000000000000000000000000000000000000..4384c7933b36ff6ecca73341766306bcaea834e8 GIT binary patch literal 273 zcmV+s0q*{ZP)hsW!Tu1LxB&1mw1%C*Xp}Z9(hsTbEG@FzPb;i|bha ehy);jA^8B7R)I literal 0 HcmV?d00001 diff --git a/public/images/items/wl_antidote.png b/public/images/items/wl_antidote.png new file mode 100644 index 0000000000000000000000000000000000000000..dbe0d5b94eaa04e57ed7d094a9e90b455e7c4677 GIT binary patch literal 272 zcmV+r0q_2aP)Ebs;H W)L||G96j*>0000rJymyZP zH6)=SP<3}(*CF^Ws0sACmuja4wq1R*1N5#cfb;Ez(>I_l073|bR=6}iEkNC1;gnK= zf;ch80!d)*tU!_Q-oL^*6w1LIwf_JX1KV9_NuY-6wFD}OQ8a(W)nzmotbQ5ozK*8^ fet`*?fC)SSM=WjrIipQ?00000NkvXXu0mjfsrPc` literal 0 HcmV?d00001 diff --git a/public/images/items/wl_burn_heal.png b/public/images/items/wl_burn_heal.png new file mode 100644 index 0000000000000000000000000000000000000000..d2f65e7da4cf6fbf79abe66c40b9e38e8d0ad596 GIT binary patch literal 275 zcmV+u0qp*XP)hfN;(wYT?rOumE>M3x^OA98}`H zPp|~d9Ti9t*4lS?35S-@9N0ZTixKBts7X)_*P{e7iC&ObarPK>2E!ktInVJgPyrQC ZffvvhJB};EVafmi002ovPDHLkV1k!eYw`d9 literal 0 HcmV?d00001 diff --git a/public/images/items/wl_ether.png b/public/images/items/wl_ether.png new file mode 100644 index 0000000000000000000000000000000000000000..d3c0fe859183d7a814759d78a7bd2a3f7e785835 GIT binary patch literal 278 zcmV+x0qOpUP)fqXYtpQjk}1@E8>a!yltI&+$J{ c0Tobz4IuSb7N@zF!Th$ey%$U+`>r=o~J1P;Nq?#pqJfC$jS&#fLVP>o0+ z1hVd8T)QZD0VdGuUaK7z*mw2K4#+oDfX=rSF8=^rfVkdHOf6g+9~O{qXyFjgj0Bae zn`cCV=8g)m#Im?|c!`9T&>Yx3K#LLkU8qS=jntzAGKpT0S8?_jbq2#9qdCvW&}E-L%PV|BM|XrQe5#QOC0=nV1bD-nwd-u zR{<4Jf&Uk<)=I<%hdC&L6!3bkUy(!*0$GT2cM(AZB5(+;Qj51?YTR;rtK41&GC8618w?d{}_Hp@p~L5*$?W z2-gHl(A-ghByn5KC%lA1OK1-49-zgD{VvobsD|rN0+~cF$g4Pej5>qikI|gx_zYA) b1ytY-BqBjJ;H*xo00000NkvXXu0mjf#>s55 literal 0 HcmV?d00001 diff --git a/public/images/items/wl_guard_spec.png b/public/images/items/wl_guard_spec.png new file mode 100644 index 0000000000000000000000000000000000000000..b494123e92eb8a4b6d05d59db9253f2a2f647c9c GIT binary patch literal 276 zcmV+v0qg#WP)qziF1ww$G!JeL~FoKe0|I$Fa~k}&M`tH zfRiIAmkOv>&&iQtxl|GV9S~#8oDH}=myBq@cpq6gTq7C)4;2K!5hgCTms)u#hnVJo z^3}qLQM3ie*VRw9Ibhv|?c^LN7x@lkrZBSS>v*lH-beiIU(C#X$b_c_@O0hW1}h5_TNXq$M9IDit}OL11vrd{|oHZ*%wyNc(sGYN#SK)^ft9m zu?IM>>j2BV YMa!b(l4A`sfZk;AboFyt=akR{0E;SXCjbBd literal 0 HcmV?d00001 diff --git a/public/images/items/wl_ice_heal.png b/public/images/items/wl_ice_heal.png new file mode 100644 index 0000000000000000000000000000000000000000..e28f3205a808555839cbd91921e56a07481adbf5 GIT binary patch literal 270 zcmV+p0rCEcP)$lDv;_DcKnoD=7%5Q;m)3^`xEtCygplB%5`WbBvzDhe zDv%_swV&`34lSW~VCMjBMqH;*lb{-|M+sySy&#X`>@w;MhF?Z=uH%280xF;aZ@{8l UE=3kF1poj507*qoM6N<$f{a^f*Z=?k literal 0 HcmV?d00001 diff --git a/public/images/items/wl_item_drop.png b/public/images/items/wl_item_drop.png new file mode 100644 index 0000000000000000000000000000000000000000..fe7ffdbdc1f7623ffe92e7f3db70da52e1388a66 GIT binary patch literal 274 zcmV+t0qy>YP)rP3V3jn zG_nmK03hOA5+X`63h5qx854${)`lQrNCC105Qh7qc?&){qzBOj@WbO4YPpOFh!udO zc46*HjBO#t0F9?FT{{i%`$WW{29^PsS(y0^aIOtl-GB#p#J46&Z^<+O5felVLB!;n zkT-N%I}Hd3BDz8NQ+a7MJ;R3p@kb^BRMxN(a6{BqFgpCvVblWbI*k6}IMzQR1t?%k YUbo*@bd2|EEdT%j07*qoM6N<$g4b+jO8@`> literal 0 HcmV?d00001 diff --git a/public/images/items/wl_item_urge.png b/public/images/items/wl_item_urge.png new file mode 100644 index 0000000000000000000000000000000000000000..5c291188dee73ac3ab45f08d40d0b8ced9e6e7af GIT binary patch literal 267 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJOP(%{ArXh)UNaPGQQ%<>@H(xl zX~`e{NGs;}CF70Fem5F4IuGn{?TTOddA_4-YENLk8>a&UlfZ%IZYSl-4AqVtR^7#V z+~Q7p_qX|LeXaA{cx_pTf-}QP8L!it4qhCrj!X`g^A3eRvTTrGJaJ6!kQdjnZ2~?G zYOM2b^EQ0#Nq*{+AaS62|8s^6CWrHk43F}Jwr*b{Ex>KayLjSPG0nWm$EO$P+&kp1^$Tt4f{WjuX2a7_3=1-=>?>Y}3jt|-d P^c{nztDnm{r-UW|LsVlM literal 0 HcmV?d00001 diff --git a/public/images/items/wl_max_potion.png b/public/images/items/wl_max_potion.png new file mode 100644 index 0000000000000000000000000000000000000000..cf92810943cbc06ca10c1b67573a9262b9797ae4 GIT binary patch literal 278 zcmV+x0qOpUP)pF z0$FzhfH+-4q82WVcMEVgw6MD`2@Wc` z_$9#-G`CmaeFL7|C%lA1OK1-49!QJ5Snonjf@-)PC6Gz%26z?cui(C5_+vEYIsOGI cpaLrJ1oQe=?r#)+qW}N^07*qoM6N<$f(U$WKL7v# literal 0 HcmV?d00001 diff --git a/public/images/items/wl_max_revive.png b/public/images/items/wl_max_revive.png new file mode 100644 index 0000000000000000000000000000000000000000..12e3b263c21fbacd671156e392417446d027a31b GIT binary patch literal 277 zcmV+w0qXvVP)ST5Jf!#BX~Ta0!VoAzhDR_lL?{A9@H}>(@pI@h7|Wa%fdoYWjS(u0 zbI9m-x|ShOtR4aguBineK^54O&|5(jSl1~d`zucgnqI*~=5(!ai2%^S;4%R;*3EUO zHBS+c{nQP0P)%JY-~KAFD{%zEDdzxAI%}2I-$6Y~ppZBV^C&JZqm#k(%c#wDdz*!-ArY-_ryk@ztia=H%%xni zr0UF$D3^ZR$TJhXRai9S~ueezO)umPj+k9x-EbKKq) z%xo5V&@knl{6!Z5CRdM&J0T*19S2l*T&=a$6B1yIs<{8#-N96;Q9xstb>DM=uX+bq zs_tfQz0CA{-M*WQKijx2{QP$4seA+X1{V&W&BduTQ4YHnwg!9kuv|SNAvtlu&dp3Z z5BJu$U-!u1J==Jfd5c8hz1C?gS3PXK7EF*}trQjSznEa~$1v)%%zq}3yDAv>M+D#7 TEb+h?=tTxkS3j3^P6?f?3gh}$k?%CM~=`j8GgS66m`zo7zjzPWJz2jBw4uuPs*xHMiZz}?Woc6)m` zC}y=!4@=P8S^+Q7--b_k42QG6M@uZ>K{-8MLCa5!(F7Ptoy z5`d)kcRaenu`R?9p!N2pd#3@oo>1#Z17d&>!WjU-16#wz8$bXeel=10l}rO*AV+Wr zgzpJ?LvU>tKnVCA_Xw7DY#^D083r`*yI4%|LLvkIfyv-P2(Bkx!%e^h zOyKNZs>^F5j|fQe@W%vb<9u^1SkB)Ti2t(|B$0J- z?OlPY#2FM0=>ybYTGyZ74%MRsn8a0(t(ZMV7lYxCQJ?4dADDm%n7|KM2Qf}46|Bkt O0000due1D$-rR2^6~5YTE^tU463y?{BC8pMgU7d m instanceof LapsingPersistentModifier) as LapsingPersistentModifier[]; for (let m of lapsingModifiers) { @@ -2171,9 +2171,7 @@ export class ModifierRewardPhase extends BattlePhase { constructor(scene: BattleScene, modifierTypeFunc: ModifierTypeFunc) { super(scene); - this.modifierType = modifierTypeFunc(); - if (!this.modifierType.id) - this.modifierType.id = Object.keys(modifierTypes).find(k => modifierTypes[k] === modifierTypeFunc); + this.modifierType = getModifierType(modifierTypeFunc); } start() { @@ -2694,7 +2692,7 @@ export class AttemptCapturePhase extends PokemonPhase { this.scene.getPlayerField().filter(p => p.isActive()).forEach(playerPokemon => playerPokemon.removeTagsBySourceId(pokemon.id)); pokemon.hp = 0; pokemon.trySetStatus(StatusEffect.FAINT); - this.scene.clearEnemyModifiers(); + this.scene.clearEnemyHeldItemModifiers(); this.scene.field.remove(pokemon, true); }; const addToParty = () => { diff --git a/src/battle-scene.ts b/src/battle-scene.ts index b070ad303..7a90445f5 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -16,7 +16,7 @@ import { GameData } from './system/game-data'; import StarterSelectUiHandler from './ui/starter-select-ui-handler'; import { TextStyle, addTextObject } from './ui/text'; import { Moves, initMoves } from './data/move'; -import { ModifierPoolType, getDefaultModifierTypeForTier, getEnemyModifierTypesForWave } from './modifier/modifier-type'; +import { ModifierPoolType, getDefaultModifierTypeForTier, getEnemyModifierTypesForWave, getModifierType, modifierTypes } from './modifier/modifier-type'; import AbilityBar from './ui/ability-bar'; import { BlockItemTheftAbAttr, DoubleBattleChanceAbAttr, applyAbAttrs, initAbilities } from './data/ability'; import Battle, { BattleType, FixedBattleConfig, fixedBattles } from './battle'; @@ -104,7 +104,7 @@ export default class BattleScene extends Phaser.Scene { private modifierBar: ModifierBar; private enemyModifierBar: ModifierBar; private modifiers: PersistentModifier[]; - private enemyModifiers: PokemonHeldItemModifier[]; + private enemyModifiers: PersistentModifier[]; public uiContainer: Phaser.GameObjects.Container; public ui: UI; @@ -1148,7 +1148,7 @@ export default class BattleScene extends Phaser.Scene { }); } - addEnemyModifier(itemModifier: PokemonHeldItemModifier): Promise { + addEnemyModifier(itemModifier: PersistentModifier): Promise { return new Promise(resolve => { itemModifier.add(this.enemyModifiers, false); this.updateModifiers(false).then(() => resolve()); @@ -1206,7 +1206,7 @@ export default class BattleScene extends Phaser.Scene { removePartyMemberModifiers(partyMemberIndex: integer): Promise { return new Promise(resolve => { const pokemonId = this.getParty()[partyMemberIndex].id; - const modifiersToRemove = this.modifiers.filter(m => (m instanceof PokemonHeldItemModifier) && (m as PokemonHeldItemModifier).pokemonId === pokemonId); + const modifiersToRemove = this.modifiers.filter(m => m instanceof PokemonHeldItemModifier && (m as PokemonHeldItemModifier).pokemonId === pokemonId); for (let m of modifiersToRemove) this.modifiers.splice(this.modifiers.indexOf(m), 1); this.updateModifiers().then(() => resolve()); @@ -1244,8 +1244,17 @@ export default class BattleScene extends Phaser.Scene { }); } - clearEnemyModifiers(): void { - this.enemyModifiers.splice(0, this.enemyModifiers.length); + generateEnemyBuffModifier(): void{ + const enemyBuffModifierTypes = [ modifierTypes.ENEMY_DAMAGE_BOOSTER, modifierTypes.ENEMY_DAMAGE_REDUCTION ]; + this.executeWithSeedOffset(() => { + (getModifierType(Phaser.Math.RND.pick(enemyBuffModifierTypes)).newModifier() as PersistentModifier).add(this.enemyModifiers, false); + }, Math.floor(this.currentBattle.waveIndex / 50)); + } + + clearEnemyHeldItemModifiers(): void { + const modifiersToRemove = this.enemyModifiers.filter(m => m instanceof PokemonHeldItemModifier); + for (let m of modifiersToRemove) + this.enemyModifiers.splice(this.enemyModifiers.indexOf(m), 1); this.updateModifiers(false).then(() => this.updateUIPositions()); } diff --git a/src/data/ability.ts b/src/data/ability.ts index 65af91071..567a6de62 100644 --- a/src/data/ability.ts +++ b/src/data/ability.ts @@ -2,7 +2,7 @@ import Pokemon, { HitResult, PokemonMove } from "../pokemon"; import { Type } from "./type"; import * as Utils from "../utils"; import { BattleStat, getBattleStatName } from "./battle-stat"; -import { DamagePhase, PokemonHealPhase, ShowAbilityPhase, StatChangePhase } from "../battle-phases"; +import { DamagePhase, ObtainStatusEffectPhase, PokemonHealPhase, ShowAbilityPhase, StatChangePhase } from "../battle-phases"; import { getPokemonMessage } from "../messages"; import { Weather, WeatherType } from "./weather"; import { BattlerTag, BattlerTagType } from "./battler-tag"; @@ -290,9 +290,9 @@ export class PostDefendContactApplyStatusEffectAbAttr extends PostDefendAbAttr { } applyPostDefend(pokemon: Pokemon, attacker: Pokemon, move: PokemonMove, hitResult: HitResult, args: any[]): boolean { - if (move.getMove().hasFlag(MoveFlags.MAKES_CONTACT) && Utils.randInt(100) < this.chance) { + if (move.getMove().hasFlag(MoveFlags.MAKES_CONTACT) && Utils.randInt(100) < this.chance && !pokemon.status) { const effect = this.effects.length === 1 ? this.effects[0] : this.effects[Utils.randInt(this.effects.length)]; - return attacker.trySetStatus(effect); + pokemon.scene.unshiftPhase(new ObtainStatusEffectPhase(pokemon.scene, attacker.getBattlerIndex(), effect)); } return false; diff --git a/src/modifier/modifier-type.ts b/src/modifier/modifier-type.ts index a31d6e8f6..57c311448 100644 --- a/src/modifier/modifier-type.ts +++ b/src/modifier/modifier-type.ts @@ -660,6 +660,9 @@ export const modifierTypes = { GOLDEN_POKEBALL: () => new ModifierType(`Golden ${getPokeballName(PokeballType.POKEBALL)}`, 'Adds 1 extra item option at the end of every battle', (type, _args) => new Modifiers.ExtraModifierModifier(type), 'pb_gold', null, 'pb_bounce_1'), + + ENEMY_DAMAGE_BOOSTER: () => new ModifierType('Damage Booster', 'Increases damage by 20%', (type, _args) => new Modifiers.EnemyDamageBoosterModifier(type), 'wl_item_drop'), + ENEMY_DAMAGE_REDUCTION: () => new ModifierType('Damage Reducer', 'Reduces incoming damage by 10%', (type, _args) => new Modifiers.EnemyDamageReducerModifier(type), 'wl_guard_spec') }; const modifierPool = { @@ -797,6 +800,13 @@ const trainerModifierPool = { ].map(m => { m.setTier(ModifierTier.MASTER); return m; }) }; +export function getModifierType(modifierTypeFunc: ModifierTypeFunc): ModifierType { + const modifierType = modifierTypeFunc(); + if (!modifierType.id) + modifierType.id = Object.keys(modifierTypes).find(k => modifierTypes[k] === modifierTypeFunc); + return modifierType; +} + let modifierPoolThresholds = {}; let ignoredPoolIndexes = {}; @@ -860,11 +870,8 @@ export function getPlayerModifierTypeOptionsForWave(waveIndex: integer, count: i export function getEnemyModifierTypesForWave(waveIndex: integer, count: integer, party: EnemyPokemon[], poolType: ModifierPoolType.WILD | ModifierPoolType.TRAINER, gameMode: GameMode): PokemonHeldItemModifierType[] { const ret = new Array(count).fill(0).map(() => getNewModifierTypeOption(party, poolType).type as PokemonHeldItemModifierType); - if ((gameMode === GameMode.CLASSIC && waveIndex === 200) || !(waveIndex % 1000)) { - const miniBlackHole = modifierTypes.MINI_BLACK_HOLE(); - miniBlackHole.id = 'MINI_BLACK_HOLE'; - ret.push(miniBlackHole); - } + if ((gameMode === GameMode.CLASSIC && waveIndex === 200) || !(waveIndex % 1000)) + ret.push(getModifierType(modifierTypes.MINI_BLACK_HOLE) as PokemonHeldItemModifierType); return ret; } diff --git a/src/modifier/modifier.ts b/src/modifier/modifier.ts index 22ffbec06..4ac8eb57e 100644 --- a/src/modifier/modifier.ts +++ b/src/modifier/modifier.ts @@ -1,5 +1,5 @@ import * as ModifierTypes from './modifier-type'; -import { LearnMovePhase, LevelUpPhase, PokemonHealPhase } from "../battle-phases"; +import { LearnMovePhase, LevelUpPhase, ObtainStatusEffectPhase, PokemonHealPhase } from "../battle-phases"; import BattleScene from "../battle-scene"; import { getLevelTotalExp } from "../data/exp"; import { PokeballType } from "../data/pokeball"; @@ -15,6 +15,7 @@ import { TempBattleStat } from '../data/temp-battle-stat'; import { BerryType, getBerryEffectFunc, getBerryPredicate } from '../data/berry'; import { Species } from '../data/species'; import { BattleType } from '../battle'; +import { StatusEffect } from '../data/status-effect'; type ModifierType = ModifierTypes.ModifierType; export type ModifierPredicate = (modifier: Modifier) => boolean; @@ -1224,4 +1225,88 @@ export class ExtraModifierModifier extends PersistentModifier { getMaxStackCount(): integer { return 3; } +} + +export abstract class EnemyPersistentModifer extends PersistentModifier { + constructor(type: ModifierType, stackCount?: integer) { + super(type, stackCount); + } +} + +export class EnemyDamageBoosterModifier extends EnemyPersistentModifer { + constructor(type: ModifierType, stackCount?: integer) { + super(type, stackCount); + } + + match(modifier: Modifier): boolean { + return modifier instanceof EnemyDamageBoosterModifier; + } + + clone(): EnemyDamageBoosterModifier { + return new EnemyDamageBoosterModifier(this.type, this.stackCount); + } + + apply(args: any[]): boolean { + (args[0] as Utils.NumberHolder).value = Math.floor((args[0] as Utils.NumberHolder).value * (1 + 0.2 * this.getStackCount())); + + return true; + } + + getMaxStackCount(): number { + return 5; + } +} + +export class EnemyDamageReducerModifier extends EnemyPersistentModifer { + constructor(type: ModifierType, stackCount?: integer) { + super(type, stackCount); + } + + match(modifier: Modifier): boolean { + return modifier instanceof EnemyDamageReducerModifier; + } + + clone(): EnemyDamageReducerModifier { + return new EnemyDamageReducerModifier(this.type, this.stackCount); + } + + apply(args: any[]): boolean { + (args[0] as Utils.NumberHolder).value = Math.floor((args[0] as Utils.NumberHolder).value * (1 - 0.2 * this.getStackCount())); + + return true; + } + + getMaxStackCount(): number { + return 5; + } +} + +export class EnemyAttackStatusEffectChanceModifier extends EnemyPersistentModifer { + public effect: StatusEffect; + + constructor(type: ModifierType, effect: StatusEffect, stackCount?: integer) { + super(type, stackCount); + + this.effect = effect; + } + + match(modifier: Modifier): boolean { + return modifier instanceof EnemyAttackStatusEffectChanceModifier && modifier.effect === this.effect; + } + + clone(): EnemyDamageReducerModifier { + return new EnemyAttackStatusEffectChanceModifier(this.type, this.effect, this.stackCount); + } + + apply(args: any[]): boolean { + const target = (args[0] as Pokemon); + if (Utils.randInt(10) < this.getStackCount()) + target.scene.unshiftPhase(new ObtainStatusEffectPhase(target.scene, target.getBattlerIndex(), this.effect)); + + return true; + } + + getMaxStackCount(): number { + return 5; + } } \ No newline at end of file diff --git a/src/pokemon.ts b/src/pokemon.ts index 4ee9b2941..e6238302f 100644 --- a/src/pokemon.ts +++ b/src/pokemon.ts @@ -8,7 +8,7 @@ import * as Utils from './utils'; import { Type, TypeDamageMultiplier, getTypeDamageMultiplier } from './data/type'; import { getLevelTotalExp } from './data/exp'; import { Stat } from './data/pokemon-stat'; -import { AttackTypeBoosterModifier, PokemonBaseStatModifier, PokemonHeldItemModifier, ShinyRateBoosterModifier, SurviveDamageModifier, TempBattleStatBoosterModifier } from './modifier/modifier'; +import { AttackTypeBoosterModifier, EnemyDamageBoosterModifier, EnemyDamageReducerModifier, PokemonBaseStatModifier, PokemonHeldItemModifier, ShinyRateBoosterModifier, SurviveDamageModifier, TempBattleStatBoosterModifier } from './modifier/modifier'; import { PokeballType } from './data/pokeball'; import { Gender } from './data/gender'; import { initMoveAnim, loadMoveAnimAssets } from './data/battle-anims'; @@ -636,7 +636,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { let result: HitResult; const move = battlerMove.getMove(); const moveCategory = move.category; - let damage = 0; + let damage = new Utils.NumberHolder(0); const cancelled = new Utils.BooleanHolder(false); const typeless = !!move.getAttrs(TypelessAttr).length @@ -690,19 +690,19 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { applyAbAttrs(StabBoostAbAttr, source, null, stabMultiplier); if (!isTypeImmune) { - damage = Math.ceil(((((2 * source.level / 5 + 2) * power.value * sourceAtk / targetDef) / 50) + 2) * stabMultiplier.value * typeMultiplier.value * weatherTypeMultiplier * ((Utils.randInt(15) + 85) / 100)) * criticalMultiplier; + damage.value = Math.ceil(((((2 * source.level / 5 + 2) * power.value * sourceAtk / targetDef) / 50) + 2) * stabMultiplier.value * typeMultiplier.value * weatherTypeMultiplier * ((Utils.randInt(15) + 85) / 100)) * criticalMultiplier; if (isPhysical && source.status && source.status.effect === StatusEffect.BURN) - damage = Math.floor(damage / 2); + damage.value = Math.floor(damage.value / 2); move.getAttrs(HitsTagAttr).map(hta => hta as HitsTagAttr).filter(hta => hta.doubleDamage).forEach(hta => { if (this.getTag(hta.tagType)) - damage *= 2; + damage.value *= 2; }); } const fixedDamage = new Utils.IntegerHolder(0); applyMoveAttrs(FixedDamageAttr, source, this, move, fixedDamage); if (!isTypeImmune && fixedDamage.value) { - damage = fixedDamage.value; + damage.value = fixedDamage.value; isCritical = false; result = HitResult.EFFECTIVE; } @@ -720,15 +720,21 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { result = HitResult.NO_EFFECT; } + if (!source.isPlayer()) + this.scene.applyModifiers(EnemyDamageBoosterModifier, false, damage); + + if (!this.isPlayer()) + this.scene.applyModifiers(EnemyDamageReducerModifier, false, damage); + if (damage) { this.scene.unshiftPhase(new DamagePhase(this.scene, this.getBattlerIndex(), result as DamageResult)); if (isCritical) this.scene.queueMessage('A critical hit!'); this.scene.setPhaseQueueSplice(); - damage = Math.min(damage, this.hp); - this.damage(damage); - source.turnData.damageDealt += damage; - this.turnData.attacksReceived.unshift({ move: move.id, result: result as DamageResult, damage: damage, critical: isCritical, sourceId: source.id }); + damage.value = Math.min(damage.value, this.hp); + this.damage(damage.value); + source.turnData.damageDealt += damage.value; + this.turnData.attacksReceived.unshift({ move: move.id, result: result as DamageResult, damage: damage.value, critical: isCritical, sourceId: source.id }); } switch (result) { diff --git a/src/system/game-data.ts b/src/system/game-data.ts index fc988fa8f..62d6d675e 100644 --- a/src/system/game-data.ts +++ b/src/system/game-data.ts @@ -274,7 +274,7 @@ export class GameData { } for (let enemyModifierData of sessionData.enemyModifiers) { - const modifier = enemyModifierData.toModifier(scene, modifiersModule[enemyModifierData.className]) as PokemonHeldItemModifier; + const modifier = enemyModifierData.toModifier(scene, modifiersModule[enemyModifierData.className]); if (modifier) scene.addEnemyModifier(modifier); }