Add scaling level cap and party switch option after load

Add scaling level cap and party switch option after load; update Phaser to newest beta version
This commit is contained in:
Flashfyre committed 2023-10-03 12:50:31 -04:00
1 parent e633ff1577
commit 46c31f9595
13 files changed
+559 -160

No files matched your search

+18 -6
View File
@@ -4,7 +4,7 @@ import * as Utils from '../utils';
import { addTextObject, TextStyle } from './text';
import { getGenderSymbol, getGenderColor } from '../data/gender';
import { StatusEffect } from '../data/status-effect';
import { maxExpLevel } from '../battle-scene';
import BattleScene from '../battle-scene';
export default class BattleInfo extends Phaser.GameObjects.Container {
private player: boolean;
@@ -18,6 +18,7 @@ export default class BattleInfo extends Phaser.GameObjects.Container {
private lastExp: integer;
private lastLevelExp: integer;
private lastLevel: integer;
private lastLevelCapped: boolean;
private box: Phaser.GameObjects.Sprite;
private nameText: Phaser.GameObjects.Text;
@@ -233,9 +234,16 @@ export default class BattleInfo extends Phaser.GameObjects.Container {
this.lastMaxHp = pokemon.getMaxHp();
};
if (this.player && (this.lastExp !== pokemon.exp || this.lastLevel !== pokemon.level)) {
const originalResolve = resolve;
resolve = () => this.updatePokemonExp(pokemon).then(() => originalResolve());
if (this.player) {
const isLevelCapped = pokemon.level >= (this.scene as BattleScene).getMaxExpLevel();
if ((this.lastExp !== pokemon.exp || this.lastLevel !== pokemon.level)) {
const originalResolve = resolve;
resolve = () => this.updatePokemonExp(pokemon).then(() => originalResolve());
} else if (isLevelCapped !== this.lastLevelCapped)
this.setLevel(pokemon.level);
this.lastLevelCapped = isLevelCapped;
}
if (this.lastHp !== pokemon.hp || this.lastMaxHp !== pokemon.getMaxHp()) {
@@ -256,11 +264,14 @@ export default class BattleInfo extends Phaser.GameObjects.Container {
const relLevelExp = getLevelRelExp(this.lastLevel + 1, battler.species.growthRate);
const levelExp = levelUp ? relLevelExp : battler.levelExp;
let ratio = relLevelExp ? levelExp / relLevelExp : 0;
if (this.lastLevel >= maxExpLevel) {
if (this.lastLevel >= (this.scene as BattleScene).getMaxExpLevel()) {
if (levelUp)
ratio = 1;
else
ratio = 0;
instant = true;
}
console.log(ratio);
let duration = this.visible && !instant ? ((levelExp - this.lastLevelExp) / relLevelExp) * 1650 : 0;
if (duration)
this.scene.sound.play('exp');
@@ -297,10 +308,11 @@ export default class BattleInfo extends Phaser.GameObjects.Container {
}
setLevel(level: integer) {
const isCapped = level >= (this.scene as BattleScene).getMaxExpLevel();
this.levelNumbersContainer.removeAll(true);
const levelStr = level.toString();
for (let i = 0; i < levelStr.length; i++)
this.levelNumbersContainer.add(this.scene.add.image(i * 8, 0, 'numbers', levelStr[i]));
this.levelNumbersContainer.add(this.scene.add.image(i * 8, 0, `numbers${isCapped ? '_red' : ''}`, levelStr[i]));
this.levelContainer.setX((this.player ? -41 : -50) - 8 * Math.max(levelStr.length - 3, 0));
}
+1 -1
View File
@@ -635,7 +635,7 @@ class PartySlot extends Phaser.GameObjects.Container {
slotLevelLabel.setPositionRelative(slotName, 8, 12);
slotLevelLabel.setOrigin(0, 0);
const slotLevelText = addTextObject(this.scene, 0, 0, this.pokemon.level.toString(), TextStyle.PARTY);
const slotLevelText = addTextObject(this.scene, 0, 0, this.pokemon.level.toString(), this.pokemon.level < (this.scene as BattleScene).getMaxExpLevel() ? TextStyle.PARTY : TextStyle.PARTY_RED);
slotLevelText.setPositionRelative(slotLevelLabel, 9, 0);
slotLevelText.setOrigin(0, 0.25);
+3 -4
View File
@@ -1,4 +1,4 @@
import BattleScene, { Button, maxExpLevel } from "../battle-scene";
import BattleScene, { Button } from "../battle-scene";
import { Mode } from "./ui";
import UiHandler from "./uiHandler";
import * as Utils from "../utils";
@@ -9,7 +9,6 @@ import Move, { MoveCategory } from "../data/move";
import { getPokeballAtlasKey } from "../data/pokeball";
import { getGenderColor, getGenderSymbol } from "../data/gender";
import { getLevelTotalExp } from "../data/exp";
import { BlendModes } from "phaser";
import { Stat, getStatName } from "../data/pokemon-stat";
import { abilities } from "../data/ability";
import { PokemonHeldItemModifier } from "../modifier/modifier";
@@ -482,7 +481,7 @@ export default class SummaryUiHandler extends UiHandler {
});
const totalLvExp = getLevelTotalExp(this.pokemon.level, this.pokemon.species.growthRate);
const expRatio = this.pokemon.level < maxExpLevel ? this.pokemon.levelExp / totalLvExp : 0;
const expRatio = this.pokemon.level < this.scene.getMaxExpLevel() ? this.pokemon.levelExp / totalLvExp : 0;
const expLabel = addTextObject(this.scene, 6, 112, 'EXP. POINTS', TextStyle.SUMMARY);
expLabel.setOrigin(0, 0);
@@ -496,7 +495,7 @@ export default class SummaryUiHandler extends UiHandler {
expText.setOrigin(1, 0);
statsContainer.add(expText);
const nextLvExp = this.pokemon.level < maxExpLevel
const nextLvExp = this.pokemon.level < this.scene.getMaxExpLevel()
? getLevelTotalExp(this.pokemon.level + 1, this.pokemon.species.growthRate) - this.pokemon.levelExp
: 0;
const nextLvExpText = addTextObject(this.scene, 208, 128, nextLvExp.toString(), TextStyle.WINDOW);
+4
View File
@@ -3,6 +3,7 @@ export enum TextStyle {
WINDOW,
BATTLE_INFO,
PARTY,
PARTY_RED,
SUMMARY,
SUMMARY_RED,
SUMMARY_GOLD
@@ -36,6 +37,7 @@ export function addTextObject(scene: Phaser.Scene, x: number, y: number, content
shadowSize = 4;
break;
case TextStyle.PARTY:
case TextStyle.PARTY_RED:
styleOptions.fontFamily = 'pkmnems';
styleOptions.fontSize = '66px';
break;
@@ -69,6 +71,8 @@ export function getTextColor(textStyle: TextStyle, shadow?: boolean) {
return !shadow ? '#404040' : '#ded6b5';
case TextStyle.PARTY:
return !shadow ? '#f8f8f8' : '#707070';
case TextStyle.PARTY_RED:
return !shadow ? '#f89890' : '#984038';
case TextStyle.SUMMARY:
return !shadow ? '#ffffff' : '#636363';
case TextStyle.SUMMARY_RED: