Minor fixes

pull/13/head
Flashfyre 2023-12-11 21:46:49 -05:00
parent 052d8ca765
commit 34ba66346e
7 changed files with 2439 additions and 2378 deletions

2
.gitignore vendored
View File

@ -26,5 +26,5 @@ dist-ssr
public/images/trainer/convert/* public/images/trainer/convert/*
public/images/pokemon/input/*.png public/images/pokemon/input/*.png
public/images/pokemon/input/output/* public/images/pokemon/input/output/*
src/data/battle-anim-raw-data.ts src/data/battle-anim-raw-data*.ts
src/data/battle-anim-data.ts src/data/battle-anim-data.ts

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
import BattleScene, { startingLevel, startingWave } from "./battle-scene"; import BattleScene, { startingLevel, startingWave } from "./battle-scene";
import { default as Pokemon, PlayerPokemon, EnemyPokemon, PokemonMove, MoveResult, DamageResult, FieldPosition, HitResult } from "./pokemon"; import { default as Pokemon, PlayerPokemon, EnemyPokemon, PokemonMove, MoveResult, DamageResult, FieldPosition, HitResult, TurnMove } from "./pokemon";
import * as Utils from './utils'; import * as Utils from './utils';
import { allMoves, applyMoveAttrs, BypassSleepAttr, ChargeAttr, applyFilteredMoveAttrs, HitsTagAttr, MissEffectAttr, MoveAttr, MoveCategory, MoveEffectAttr, MoveFlags, Moves, MultiHitAttr, OverrideMoveEffectAttr, VariableAccuracyAttr, MoveTarget, OneHitKOAttr, getMoveTargets, MoveTargetSet, MoveEffectTrigger, CopyMoveAttr, AttackMove, SelfStatusMove, DelayedAttackAttr } from "./data/move"; import { allMoves, applyMoveAttrs, BypassSleepAttr, ChargeAttr, applyFilteredMoveAttrs, HitsTagAttr, MissEffectAttr, MoveAttr, MoveCategory, MoveEffectAttr, MoveFlags, Moves, MultiHitAttr, OverrideMoveEffectAttr, VariableAccuracyAttr, MoveTarget, OneHitKOAttr, getMoveTargets, MoveTargetSet, MoveEffectTrigger, CopyMoveAttr, AttackMove, SelfStatusMove, DelayedAttackAttr } from "./data/move";
import { Mode } from './ui/ui'; import { Mode } from './ui/ui';
@ -34,6 +34,7 @@ import { Species } from "./data/species";
import { HealAchv, LevelAchv, MoneyAchv, achvs } from "./system/achv"; import { HealAchv, LevelAchv, MoneyAchv, achvs } from "./system/achv";
import { DexEntry } from "./system/game-data"; import { DexEntry } from "./system/game-data";
import { pokemonPrevolutions } from "./data/pokemon-evolutions"; import { pokemonPrevolutions } from "./data/pokemon-evolutions";
import { trainerConfigs } from "./data/trainer-type";
export class CheckLoadPhase extends BattlePhase { export class CheckLoadPhase extends BattlePhase {
private loaded: boolean; private loaded: boolean;
@ -1603,6 +1604,12 @@ export class MovePhase extends BattlePhase {
} }
showMoveText(): void { showMoveText(): void {
if (this.move.getMove().getAttrs(ChargeAttr).length) {
const lastMove = this.pokemon.getLastXMoves() as TurnMove[];
if (!lastMove.length || lastMove[0].move !== this.move.getMove().id || lastMove[0].result !== MoveResult.OTHER)
return;
}
this.scene.queueMessage(getPokemonMessage(this.pokemon, ` used\n${this.move.getName()}!`), 500); this.scene.queueMessage(getPokemonMessage(this.pokemon, ` used\n${this.move.getName()}!`), 500);
} }
@ -3306,6 +3313,32 @@ export class ScanIvsPhase extends PokemonPhase {
} }
} }
export class TrainerMessageTestPhase extends BattlePhase {
constructor(scene: BattleScene) {
super(scene);
}
start() {
super.start();
let testMessages: string[] = [];
for (let t of Object.keys(trainerConfigs)) {
const config = trainerConfigs[parseInt(t)];
[ config.encounterMessages, config.femaleEncounterMessages, config.victoryMessages, config.femaleVictoryMessages, config.defeatMessages, config.femaleDefeatMessages ]
.map(messages => {
if (messages?.length)
testMessages.push(...messages);
});
}
for (let message of testMessages)
this.scene.pushPhase(new TestMessagePhase(this.scene, message));
this.end();
}
}
export class TestMessagePhase extends MessagePhase { export class TestMessagePhase extends MessagePhase {
constructor(scene: BattleScene, message: string) { constructor(scene: BattleScene, message: string) {
super(scene, message, null, true); super(scene, message, null, true);

View File

@ -1,7 +1,7 @@
import Phaser from 'phaser'; import Phaser from 'phaser';
import { Biome } from './data/biome'; import { Biome } from './data/biome';
import UI, { Mode } from './ui/ui'; import UI, { Mode } from './ui/ui';
import { EncounterPhase, SummonPhase, NextEncounterPhase, NewBiomeEncounterPhase, SelectBiomePhase, MessagePhase, CheckLoadPhase, TurnInitPhase, ReturnPhase, LevelCapPhase, TestMessagePhase, ShowTrainerPhase } from './battle-phases'; import { EncounterPhase, SummonPhase, NextEncounterPhase, NewBiomeEncounterPhase, SelectBiomePhase, MessagePhase, CheckLoadPhase, TurnInitPhase, ReturnPhase, LevelCapPhase, TestMessagePhase, ShowTrainerPhase, TrainerMessageTestPhase } from './battle-phases';
import Pokemon, { PlayerPokemon, EnemyPokemon } from './pokemon'; import Pokemon, { PlayerPokemon, EnemyPokemon } from './pokemon';
import PokemonSpecies, { PokemonSpeciesFilter, allSpecies, getPokemonSpecies, initSpecies } from './data/pokemon-species'; import PokemonSpecies, { PokemonSpeciesFilter, allSpecies, getPokemonSpecies, initSpecies } from './data/pokemon-species';
import * as Utils from './utils'; import * as Utils from './utils';
@ -690,7 +690,7 @@ export default class BattleScene extends Phaser.Scene {
this.currentBattle = new Battle(newWaveIndex, newBattleType, newTrainer, newDouble); this.currentBattle = new Battle(newWaveIndex, newBattleType, newTrainer, newDouble);
this.currentBattle.incrementTurn(this); this.currentBattle.incrementTurn(this);
//this.pushPhase(new TestMessagePhase(this, trainerConfigs[TrainerType.RIVAL].encounterMessages[0])) //this.pushPhase(new TrainerMessageTestPhase(this));
if (!waveIndex) { if (!waveIndex) {
const isNewBiome = !lastBattle || !(lastBattle.waveIndex % 10); const isNewBiome = !lastBattle || !(lastBattle.waveIndex % 10);

View File

@ -167,7 +167,7 @@ export async function printPokemon() {
speciesFormLevelMoves[speciesKey][pokemonForm.formIndex] = []; speciesFormLevelMoves[speciesKey][pokemonForm.formIndex] = [];
for (let version of versions) { for (let version of versions) {
if (pokemon.moves.find(m => m.version_group_details.find(v => v.version_group.name === version))) { if (pokemon.moves.find(m => m.version_group_details.find(v => v.version_group.name === version && v.move_learn_method.name === 'level-up'))) {
moveVer = version; moveVer = version;
break; break;
} }
@ -261,7 +261,7 @@ export async function printPokemon() {
speciesLevelMoves[speciesKey] = []; speciesLevelMoves[speciesKey] = [];
for (let version of versions) { for (let version of versions) {
if (pokemon.moves.find(m => m.version_group_details.find(v => v.version_group.name === version))) { if (pokemon.moves.find(m => m.version_group_details.find(v => v.version_group.name === version && v.move_learn_method.name === 'level-up'))) {
moveVer = version; moveVer = version;
break; break;
} }

View File

@ -779,16 +779,16 @@ export const trainerConfigs: TrainerConfigs = {
]), ]),
[TrainerType.FLANNERY]: new TrainerConfig(++t).initForGymLeader(Species.TORKOAL, Type.FIRE) [TrainerType.FLANNERY]: new TrainerConfig(++t).initForGymLeader(Species.TORKOAL, Type.FIRE)
.setEncounterMessages([ .setEncounterMessages([
`Nice to meet you! Wait, no...\nI will crush you!`, `Nice to meet you! Wait, no\nI will crush you!`,
`I've only been a leader for a little while,\nbut I'll smoke you!`, `I've only been a leader for a little while, but I'll smoke you!`,
`It's time to demonstrate the moves my grandfather has taught me!\nLet's battle!` `It's time to demonstrate the moves my grandfather has taught me! Let's battle!`
]).setVictoryMessages([ ]).setVictoryMessages([
`You remind me of my grandfather...\nNo wonder I lost.`, `You remind me of my grandfather\nNo wonder I lost.`,
`Am I trying too hard?\nI should relax, can't get too heated.`, `Am I trying too hard?\nI should relax, can't get too heated.`,
`Losing isn't going to smother me out.\nTime to reignite training!` `Losing isn't going to smother me out.\nTime to reignite training!`
]).setDefeatMessages([ ]).setDefeatMessages([
`I hope I've made my grandfather proud...\nLet's battle again some time.`, `I hope I've made my grandfather proud\nLet's battle again some time.`,
`I...I can't believe I won!\nDoing things my way worked!`, `II can't believe I won!\nDoing things my way worked!`,
`Let's exchange burning hot moves again soon!` `Let's exchange burning hot moves again soon!`
]), ]),
[TrainerType.NORMAN]: new TrainerConfig(++t).initForGymLeader(Species.SLAKOTH, Type.NORMAL) [TrainerType.NORMAN]: new TrainerConfig(++t).initForGymLeader(Species.SLAKOTH, Type.NORMAL)
@ -797,8 +797,8 @@ export const trainerConfigs: TrainerConfigs = {
`I'll do everything in my power as a Gym Leader to win.\nLet's go!`, `I'll do everything in my power as a Gym Leader to win.\nLet's go!`,
`You better give this your all.\nIt's time to battle!` `You better give this your all.\nIt's time to battle!`
]).setVictoryMessages([ ]).setVictoryMessages([
`I lost to you...?\nRules are rules, though.`, `I lost to you?\nRules are rules, though.`,
`Was moving from Olivine a mistake...?`, `Was moving from Olivine a mistake?`,
`I can't believe it.\nThat was a great match.` `I can't believe it.\nThat was a great match.`
]).setDefeatMessages([ ]).setDefeatMessages([
`We both tried our best.\nI hope we can battle again soon.`, `We both tried our best.\nI hope we can battle again soon.`,
@ -807,57 +807,57 @@ export const trainerConfigs: TrainerConfigs = {
]), ]),
[TrainerType.WINONA]: new TrainerConfig(++t).initForGymLeader(Species.SWABLU, Type.FLYING) [TrainerType.WINONA]: new TrainerConfig(++t).initForGymLeader(Species.SWABLU, Type.FLYING)
.setEncounterMessages([ .setEncounterMessages([
`I've been soaring the skies looking for prey...\nAnd you're my target!`, `I've been soaring the skies looking for prey\nAnd you're my target!`,
`No matter how our battle is, My Flying Pokèmon and I will triumph with grace.\nLet's battle!`, `No matter how our battle is, my Flying Pokémon and I will triumph with grace. Let's battle!`,
`I hope you aren't scared of heights.\nLet's ascend!` `I hope you aren't scared of heights.\nLet's ascend!`
]).setVictoryMessages([ ]).setVictoryMessages([
`You're the first Trainer I've seen with more grace than I.\nExcellently played.`, `You're the first Trainer I've seen with more grace than I.\nExcellently played.`,
`Oh, my Flying Pokèmon have plummeted!\nVery well.`, `Oh, my Flying Pokémon have plummeted!\nVery well.`,
`Though I may have fallen, my Pokèmon will continue to fly!` `Though I may have fallen, my Pokémon will continue to fly!`
]).setDefeatMessages([ ]).setDefeatMessages([
`My Flying Pokèmon and I will forever dance elegantly!`, `My Flying Pokémon and I will forever dance elegantly!`,
`I hope you enjoyed our show.\nOur graceful dance is finished.`, `I hope you enjoyed our show.\nOur graceful dance is finished.`,
`Won't you come see our elegant choreography again?` `Won't you come see our elegant choreography again?`
]), ]),
[TrainerType.TATE]: new TrainerConfig(++t).initForGymLeader(Species.SOLROCK, Type.PSYCHIC) [TrainerType.TATE]: new TrainerConfig(++t).initForGymLeader(Species.SOLROCK, Type.PSYCHIC)
.setEncounterMessages([ .setEncounterMessages([
`Hehehe...\nWere you surprised to see me without my sister?`, `Hehehe\nWere you surprised to see me without my sister?`,
`I can see what you're thinking...\nYou want to battle!`, `I can see what you're thinking\nYou want to battle!`,
`How can you defeat someone...\nWho knows your every move?` `How can you defeat someone\nWho knows your every move?`
]).setVictoryMessages([ ]).setVictoryMessages([
`It can't be helped...\nI miss Liza...`, `It can't be helped\nI miss Liza…`,
`Your bond with your Pokèmon was stronger than mine.`, `Your bond with your Pokémon was stronger than mine.`,
`If I were with Liza, we would have won.\nWe can finish each other's thoughts!` `If I were with Liza, we would have won.\nWe can finish each other's thoughts!`
]).setDefeatMessages([ ]).setDefeatMessages([
`My Pokèmon and I are superior!`, `My Pokémon and I are superior!`,
`If you can't even defeat me, you'll never be able to defeat Liza either.`, `If you can't even defeat me, you'll never be able to defeat Liza either.`,
`It's all thanks to my strict training with Liza.\nI can make myself one with Pokèmon.` `It's all thanks to my strict training with Liza.\nI can make myself one with Pokémon.`
]), ]),
[TrainerType.LIZA]: new TrainerConfig(++t).initForGymLeader(Species.LUNATONE, Type.PSYCHIC) [TrainerType.LIZA]: new TrainerConfig(++t).initForGymLeader(Species.LUNATONE, Type.PSYCHIC)
.setEncounterMessages([ .setEncounterMessages([
`Fufufu...\nWere you surprised to see me without my brother?`, `Fufufu\nWere you surprised to see me without my brother?`,
`I can determine what you desire...\nYou want to battle, don't you?`, `I can determine what you desire\nYou want to battle, don't you?`,
`How can you defeat someone...\nWho's one with their Pokèmon?` `How can you defeat someone\nWho's one with their Pokémon?`
]).setVictoryMessages([ ]).setVictoryMessages([
`It can't be helped...\nI miss Tate...`, `It can't be helped\nI miss Tate…`,
`Your bond with your Pokèmon...\nIt's stronger than mine.`, `Your bond with your Pokémon…\nIt's stronger than mine.`,
`If I were with Tate, we would have won.\nWe can finish each other's sentences!` `If I were with Tate, we would have won.\nWe can finish each other's sentences!`
]).setDefeatMessages([ ]).setDefeatMessages([
`My Pokèmon and I are victorious.`, `My Pokémon and I are victorious.`,
`If you can't even defeat me, you'll never be able to defeat Tate either.`, `If you can't even defeat me, you'll never be able to defeat Tate either.`,
`It's all thanks to my strict training with Tate.\nI can synchronize myself with my Pokèmon.` `It's all thanks to my strict training with Tate.\nI can synchronize myself with my Pokémon.`
]), ]),
[TrainerType.JUAN]: new TrainerConfig(++t).initForGymLeader(Species.HORSEA, Type.WATER) [TrainerType.JUAN]: new TrainerConfig(++t).initForGymLeader(Species.HORSEA, Type.WATER)
.setEncounterMessages([ .setEncounterMessages([
`Now's not the time to act coy.\nLet's battle!`, `Now's not the time to act coy.\nLet's battle!`,
`Ahahaha, You'll be witness to my artistry with Water Pokèmon!`, `Ahahaha, You'll be witness to my artistry with Water Pokémon!`,
`A typhoon approaches!\nWill you be able to test me?` `A typhoon approaches!\nWill you be able to test me?`
]).setVictoryMessages([ ]).setVictoryMessages([
`You may be a genius who can take on Wallace!`, `You may be a genius who can take on Wallace!`,
`I focused on elegance while you trained.\nIt's only natural that you defeated me.`, `I focused on elegance while you trained.\nIt's only natural that you defeated me.`,
`Ahahaha!\nVery well, You have won this time.` `Ahahaha!\nVery well, You have won this time.`
]).setDefeatMessages([ ]).setDefeatMessages([
`My Pokèmon and I have sculpted an illusion of Water and come out victorious.`, `My Pokémon and I have sculpted an illusion of Water and come out victorious.`,
`Ahahaha, I have won, and you have lost.`, `Ahahaha, I have won, and you have lost.`,
`Shall I loan you my outfit? It may help you battle!\nAhahaha, I jest!` `Shall I loan you my outfit? It may help you battle!\nAhahaha, I jest!`
]), ]),

View File

@ -518,9 +518,16 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
} }
getMoveset(ignoreOverride?: boolean): PokemonMove[] { getMoveset(ignoreOverride?: boolean): PokemonMove[] {
if (!ignoreOverride && this.summonData?.moveset) const ret = !ignoreOverride && this.summonData?.moveset
return this.summonData.moveset; ? this.summonData.moveset
return this.moveset; : this.moveset;
if (MOVE_OVERRIDE && this.isPlayer())
this.moveset[0] = new PokemonMove(MOVE_OVERRIDE);
else if (OPP_MOVE_OVERRIDE && !this.isPlayer())
this.moveset[0] = new PokemonMove(OPP_MOVE_OVERRIDE);
return ret;
} }
getLearnableLevelMoves(): Moves[] { getLearnableLevelMoves(): Moves[] {
@ -761,11 +768,6 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
console.log(allMoves[movePool[moveIndex]]); console.log(allMoves[movePool[moveIndex]]);
movePool.splice(moveIndex, 1); movePool.splice(moveIndex, 1);
} }
if (MOVE_OVERRIDE && this.isPlayer())
this.moveset[0] = new PokemonMove(MOVE_OVERRIDE);
else if (OPP_MOVE_OVERRIDE && !this.isPlayer())
this.moveset[0] = new PokemonMove(OPP_MOVE_OVERRIDE);
} }
trySelectMove(moveIndex: integer, ignorePp?: boolean): boolean { trySelectMove(moveIndex: integer, ignorePp?: boolean): boolean {