mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-07-06 08:22:16 +02:00
Address Minor Manual NITs
This commit is contained in:
parent
2edb67b56d
commit
24338efe63
@ -2062,22 +2062,22 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
|
|||||||
if (critOnly.value || critAlways) {
|
if (critOnly.value || critAlways) {
|
||||||
isCritical = true;
|
isCritical = true;
|
||||||
} else {
|
} else {
|
||||||
const critLevel = new Utils.IntegerHolder(0);
|
const critStage = new Utils.IntegerHolder(0);
|
||||||
applyMoveAttrs(HighCritAttr, source, this, move, critLevel);
|
applyMoveAttrs(HighCritAttr, source, this, move, critStage);
|
||||||
this.scene.applyModifiers(CritBoosterModifier, source.isPlayer(), source, critLevel);
|
this.scene.applyModifiers(CritBoosterModifier, source.isPlayer(), source, critStage);
|
||||||
this.scene.applyModifiers(TempCritBoosterModifier, source.isPlayer(), critLevel);
|
this.scene.applyModifiers(TempCritBoosterModifier, source.isPlayer(), critStage);
|
||||||
const bonusCrit = new Utils.BooleanHolder(false);
|
const bonusCrit = new Utils.BooleanHolder(false);
|
||||||
//@ts-ignore
|
//@ts-ignore
|
||||||
if (applyAbAttrs(BonusCritAbAttr, source, null, bonusCrit)) { // TODO: resolve ts-ignore. This is a promise. Checking a promise is bogus.
|
if (applyAbAttrs(BonusCritAbAttr, source, null, bonusCrit)) { // TODO: resolve ts-ignore. This is a promise. Checking a promise is bogus.
|
||||||
if (bonusCrit.value) {
|
if (bonusCrit.value) {
|
||||||
critLevel.value += 1;
|
critStage.value += 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (source.getTag(BattlerTagType.CRIT_BOOST)) {
|
if (source.getTag(BattlerTagType.CRIT_BOOST)) {
|
||||||
critLevel.value += 2;
|
critStage.value += 2;
|
||||||
}
|
}
|
||||||
console.log(`crit stage: +${critLevel.value}`);
|
console.log(`crit stage: +${critStage.value}`);
|
||||||
const critChance = [24, 8, 2, 1][Math.max(0, Math.min(critLevel.value, 3))];
|
const critChance = [24, 8, 2, 1][Math.max(0, Math.min(critStage.value, 3))];
|
||||||
isCritical = critChance === 1 || !this.scene.randBattleSeedInt(critChance);
|
isCritical = critChance === 1 || !this.scene.randBattleSeedInt(critChance);
|
||||||
if (Overrides.NEVER_CRIT_OVERRIDE) {
|
if (Overrides.NEVER_CRIT_OVERRIDE) {
|
||||||
isCritical = false;
|
isCritical = false;
|
||||||
|
@ -58,16 +58,16 @@ describe("Items - Leek", () => {
|
|||||||
const partyMember = game.scene.getPlayerPokemon()!;
|
const partyMember = game.scene.getPlayerPokemon()!;
|
||||||
|
|
||||||
// Making sure modifier is not applied without holding item
|
// Making sure modifier is not applied without holding item
|
||||||
const critLevel = new Utils.IntegerHolder(0);
|
const critStage = new Utils.IntegerHolder(0);
|
||||||
partyMember.scene.applyModifiers(CritBoosterModifier, true, partyMember, critLevel);
|
partyMember.scene.applyModifiers(CritBoosterModifier, true, partyMember, critStage);
|
||||||
|
|
||||||
expect(critLevel.value).toBe(0);
|
expect(critStage.value).toBe(0);
|
||||||
|
|
||||||
// Giving Leek to party member and testing if it applies
|
// Giving Leek to party member and testing if it applies
|
||||||
partyMember.scene.addModifier(modifierTypes.LEEK().newModifier(partyMember), true);
|
partyMember.scene.addModifier(modifierTypes.LEEK().newModifier(partyMember), true);
|
||||||
partyMember.scene.applyModifiers(CritBoosterModifier, true, partyMember, critLevel);
|
partyMember.scene.applyModifiers(CritBoosterModifier, true, partyMember, critStage);
|
||||||
|
|
||||||
expect(critLevel.value).toBe(2);
|
expect(critStage.value).toBe(2);
|
||||||
}, 20000);
|
}, 20000);
|
||||||
|
|
||||||
it("LEEK held by GALAR_FARFETCHD", async() => {
|
it("LEEK held by GALAR_FARFETCHD", async() => {
|
||||||
@ -78,16 +78,16 @@ describe("Items - Leek", () => {
|
|||||||
const partyMember = game.scene.getPlayerPokemon()!;
|
const partyMember = game.scene.getPlayerPokemon()!;
|
||||||
|
|
||||||
// Making sure modifier is not applied without holding item
|
// Making sure modifier is not applied without holding item
|
||||||
const critLevel = new Utils.IntegerHolder(0);
|
const critStage = new Utils.IntegerHolder(0);
|
||||||
partyMember.scene.applyModifiers(CritBoosterModifier, true, partyMember, critLevel);
|
partyMember.scene.applyModifiers(CritBoosterModifier, true, partyMember, critStage);
|
||||||
|
|
||||||
expect(critLevel.value).toBe(0);
|
expect(critStage.value).toBe(0);
|
||||||
|
|
||||||
// Giving Leek to party member and testing if it applies
|
// Giving Leek to party member and testing if it applies
|
||||||
partyMember.scene.addModifier(modifierTypes.LEEK().newModifier(partyMember), true);
|
partyMember.scene.addModifier(modifierTypes.LEEK().newModifier(partyMember), true);
|
||||||
partyMember.scene.applyModifiers(CritBoosterModifier, true, partyMember, critLevel);
|
partyMember.scene.applyModifiers(CritBoosterModifier, true, partyMember, critStage);
|
||||||
|
|
||||||
expect(critLevel.value).toBe(2);
|
expect(critStage.value).toBe(2);
|
||||||
}, 20000);
|
}, 20000);
|
||||||
|
|
||||||
it("LEEK held by SIRFETCHD", async() => {
|
it("LEEK held by SIRFETCHD", async() => {
|
||||||
@ -98,16 +98,16 @@ describe("Items - Leek", () => {
|
|||||||
const partyMember = game.scene.getPlayerPokemon()!;
|
const partyMember = game.scene.getPlayerPokemon()!;
|
||||||
|
|
||||||
// Making sure modifier is not applied without holding item
|
// Making sure modifier is not applied without holding item
|
||||||
const critLevel = new Utils.IntegerHolder(0);
|
const critStage = new Utils.IntegerHolder(0);
|
||||||
partyMember.scene.applyModifiers(CritBoosterModifier, true, partyMember, critLevel);
|
partyMember.scene.applyModifiers(CritBoosterModifier, true, partyMember, critStage);
|
||||||
|
|
||||||
expect(critLevel.value).toBe(0);
|
expect(critStage.value).toBe(0);
|
||||||
|
|
||||||
// Giving Leek to party member and testing if it applies
|
// Giving Leek to party member and testing if it applies
|
||||||
partyMember.scene.addModifier(modifierTypes.LEEK().newModifier(partyMember), true);
|
partyMember.scene.addModifier(modifierTypes.LEEK().newModifier(partyMember), true);
|
||||||
partyMember.scene.applyModifiers(CritBoosterModifier, true, partyMember, critLevel);
|
partyMember.scene.applyModifiers(CritBoosterModifier, true, partyMember, critStage);
|
||||||
|
|
||||||
expect(critLevel.value).toBe(2);
|
expect(critStage.value).toBe(2);
|
||||||
}, 20000);
|
}, 20000);
|
||||||
|
|
||||||
it("LEEK held by fused FARFETCHD line (base)", async() => {
|
it("LEEK held by fused FARFETCHD line (base)", async() => {
|
||||||
@ -133,16 +133,16 @@ describe("Items - Leek", () => {
|
|||||||
partyMember.fusionLuck = ally.luck;
|
partyMember.fusionLuck = ally.luck;
|
||||||
|
|
||||||
// Making sure modifier is not applied without holding item
|
// Making sure modifier is not applied without holding item
|
||||||
const critLevel = new Utils.IntegerHolder(0);
|
const critStage = new Utils.IntegerHolder(0);
|
||||||
partyMember.scene.applyModifiers(CritBoosterModifier, true, partyMember, critLevel);
|
partyMember.scene.applyModifiers(CritBoosterModifier, true, partyMember, critStage);
|
||||||
|
|
||||||
expect(critLevel.value).toBe(0);
|
expect(critStage.value).toBe(0);
|
||||||
|
|
||||||
// Giving Leek to party member and testing if it applies
|
// Giving Leek to party member and testing if it applies
|
||||||
partyMember.scene.addModifier(modifierTypes.LEEK().newModifier(partyMember), true);
|
partyMember.scene.addModifier(modifierTypes.LEEK().newModifier(partyMember), true);
|
||||||
partyMember.scene.applyModifiers(CritBoosterModifier, true, partyMember, critLevel);
|
partyMember.scene.applyModifiers(CritBoosterModifier, true, partyMember, critStage);
|
||||||
|
|
||||||
expect(critLevel.value).toBe(2);
|
expect(critStage.value).toBe(2);
|
||||||
}, 20000);
|
}, 20000);
|
||||||
|
|
||||||
it("LEEK held by fused FARFETCHD line (part)", async() => {
|
it("LEEK held by fused FARFETCHD line (part)", async() => {
|
||||||
@ -168,16 +168,16 @@ describe("Items - Leek", () => {
|
|||||||
partyMember.fusionLuck = ally.luck;
|
partyMember.fusionLuck = ally.luck;
|
||||||
|
|
||||||
// Making sure modifier is not applied without holding item
|
// Making sure modifier is not applied without holding item
|
||||||
const critLevel = new Utils.IntegerHolder(0);
|
const critStage = new Utils.IntegerHolder(0);
|
||||||
partyMember.scene.applyModifiers(CritBoosterModifier, true, partyMember, critLevel);
|
partyMember.scene.applyModifiers(CritBoosterModifier, true, partyMember, critStage);
|
||||||
|
|
||||||
expect(critLevel.value).toBe(0);
|
expect(critStage.value).toBe(0);
|
||||||
|
|
||||||
// Giving Leek to party member and testing if it applies
|
// Giving Leek to party member and testing if it applies
|
||||||
partyMember.scene.addModifier(modifierTypes.LEEK().newModifier(partyMember), true);
|
partyMember.scene.addModifier(modifierTypes.LEEK().newModifier(partyMember), true);
|
||||||
partyMember.scene.applyModifiers(CritBoosterModifier, true, partyMember, critLevel);
|
partyMember.scene.applyModifiers(CritBoosterModifier, true, partyMember, critStage);
|
||||||
|
|
||||||
expect(critLevel.value).toBe(2);
|
expect(critStage.value).toBe(2);
|
||||||
}, 20000);
|
}, 20000);
|
||||||
|
|
||||||
it("LEEK not held by FARFETCHD line", async() => {
|
it("LEEK not held by FARFETCHD line", async() => {
|
||||||
@ -188,15 +188,15 @@ describe("Items - Leek", () => {
|
|||||||
const partyMember = game.scene.getPlayerPokemon()!;
|
const partyMember = game.scene.getPlayerPokemon()!;
|
||||||
|
|
||||||
// Making sure modifier is not applied without holding item
|
// Making sure modifier is not applied without holding item
|
||||||
const critLevel = new Utils.IntegerHolder(0);
|
const critStage = new Utils.IntegerHolder(0);
|
||||||
partyMember.scene.applyModifiers(CritBoosterModifier, true, partyMember, critLevel);
|
partyMember.scene.applyModifiers(CritBoosterModifier, true, partyMember, critStage);
|
||||||
|
|
||||||
expect(critLevel.value).toBe(0);
|
expect(critStage.value).toBe(0);
|
||||||
|
|
||||||
// Giving Leek to party member and testing if it applies
|
// Giving Leek to party member and testing if it applies
|
||||||
partyMember.scene.addModifier(modifierTypes.LEEK().newModifier(partyMember), true);
|
partyMember.scene.addModifier(modifierTypes.LEEK().newModifier(partyMember), true);
|
||||||
partyMember.scene.applyModifiers(CritBoosterModifier, true, partyMember, critLevel);
|
partyMember.scene.applyModifiers(CritBoosterModifier, true, partyMember, critStage);
|
||||||
|
|
||||||
expect(critLevel.value).toBe(0);
|
expect(critStage.value).toBe(0);
|
||||||
}, 20000);
|
}, 20000);
|
||||||
});
|
});
|
||||||
|
@ -58,15 +58,15 @@ describe("Items - Scope Lens", () => {
|
|||||||
const partyMember = game.scene.getPlayerPokemon()!;
|
const partyMember = game.scene.getPlayerPokemon()!;
|
||||||
|
|
||||||
// Making sure modifier is not applied without holding item
|
// Making sure modifier is not applied without holding item
|
||||||
const critLevel = new Utils.IntegerHolder(0);
|
const critStage = new Utils.IntegerHolder(0);
|
||||||
partyMember.scene.applyModifiers(CritBoosterModifier, true, partyMember, critLevel);
|
partyMember.scene.applyModifiers(CritBoosterModifier, true, partyMember, critStage);
|
||||||
|
|
||||||
expect(critLevel.value).toBe(0);
|
expect(critStage.value).toBe(0);
|
||||||
|
|
||||||
// Giving Scope Lens to party member and testing if it applies
|
// Giving Scope Lens to party member and testing if it applies
|
||||||
partyMember.scene.addModifier(modifierTypes.SCOPE_LENS().newModifier(partyMember), true);
|
partyMember.scene.addModifier(modifierTypes.SCOPE_LENS().newModifier(partyMember), true);
|
||||||
partyMember.scene.applyModifiers(CritBoosterModifier, true, partyMember, critLevel);
|
partyMember.scene.applyModifiers(CritBoosterModifier, true, partyMember, critStage);
|
||||||
|
|
||||||
expect(critLevel.value).toBe(1);
|
expect(critStage.value).toBe(1);
|
||||||
}, 20000);
|
}, 20000);
|
||||||
});
|
});
|
||||||
|
@ -40,7 +40,7 @@ describe("Moves - FILLET AWAY", () => {
|
|||||||
|
|
||||||
//Bulbapedia Reference: https://bulbapedia.bulbagarden.net/wiki/fillet_away_(move)
|
//Bulbapedia Reference: https://bulbapedia.bulbagarden.net/wiki/fillet_away_(move)
|
||||||
|
|
||||||
test("Fillet Away raises the user's Attack, Special Attack, and Speed by two stages each, at the cost of 1/2 of its maximum HP",
|
test("raises the user's ATK, SPATK, and SPD stat stages by 2 each, at the cost of 1/2 of its maximum HP",
|
||||||
async() => {
|
async() => {
|
||||||
await game.startBattle([Species.MAGIKARP]);
|
await game.startBattle([Species.MAGIKARP]);
|
||||||
|
|
||||||
@ -57,7 +57,7 @@ describe("Moves - FILLET AWAY", () => {
|
|||||||
}, TIMEOUT
|
}, TIMEOUT
|
||||||
);
|
);
|
||||||
|
|
||||||
test("Fillet Away will still take effect if one or more of the involved stats are not at max",
|
test("still takes effect if one or more of the involved stat stages are not at max",
|
||||||
async() => {
|
async() => {
|
||||||
await game.startBattle([Species.MAGIKARP]);
|
await game.startBattle([Species.MAGIKARP]);
|
||||||
|
|
||||||
@ -78,7 +78,7 @@ describe("Moves - FILLET AWAY", () => {
|
|||||||
}, TIMEOUT
|
}, TIMEOUT
|
||||||
);
|
);
|
||||||
|
|
||||||
test("Fillet Away fails if all stats involved are at max",
|
test("fails if all stat stages involved are at max",
|
||||||
async() => {
|
async() => {
|
||||||
await game.startBattle([Species.MAGIKARP]);
|
await game.startBattle([Species.MAGIKARP]);
|
||||||
|
|
||||||
@ -98,7 +98,7 @@ describe("Moves - FILLET AWAY", () => {
|
|||||||
}, TIMEOUT
|
}, TIMEOUT
|
||||||
);
|
);
|
||||||
|
|
||||||
test("Fillet Away fails if the user's health is less than 1/2",
|
test("fails if the user's health is less than 1/2",
|
||||||
async() => {
|
async() => {
|
||||||
await game.startBattle([Species.MAGIKARP]);
|
await game.startBattle([Species.MAGIKARP]);
|
||||||
|
|
||||||
|
@ -1,13 +1,12 @@
|
|||||||
import BattleScene from "../battle-scene";
|
import BattleScene from "../battle-scene";
|
||||||
import { addBBCodeTextObject, addTextObject, getTextColor, TextStyle } from "./text";
|
import { addBBCodeTextObject, addTextObject, getTextColor, TextStyle } from "./text";
|
||||||
import { Mode } from "./ui";
|
import { Mode } from "./ui";
|
||||||
import * as Utils from "../utils";
|
|
||||||
import MessageUiHandler from "./message-ui-handler";
|
import MessageUiHandler from "./message-ui-handler";
|
||||||
import { addWindow } from "./ui-theme";
|
import { addWindow } from "./ui-theme";
|
||||||
import BBCodeText from "phaser3-rex-plugins/plugins/bbcodetext";
|
import BBCodeText from "phaser3-rex-plugins/plugins/bbcodetext";
|
||||||
import {Button} from "#enums/buttons";
|
import {Button} from "#enums/buttons";
|
||||||
import i18next from "i18next";
|
import i18next from "i18next";
|
||||||
import { Stat, getStatKey, PERMANENT_STATS } from "#app/enums/stat.js";
|
import { Stat, PERMANENT_STATS, getStatKey } from "#app/enums/stat.js";
|
||||||
|
|
||||||
export default class BattleMessageUiHandler extends MessageUiHandler {
|
export default class BattleMessageUiHandler extends MessageUiHandler {
|
||||||
private levelUpStatsContainer: Phaser.GameObjects.Container;
|
private levelUpStatsContainer: Phaser.GameObjects.Container;
|
||||||
@ -171,8 +170,7 @@ export default class BattleMessageUiHandler extends MessageUiHandler {
|
|||||||
}
|
}
|
||||||
const newStats = (this.scene as BattleScene).getParty()[partyMemberIndex].stats;
|
const newStats = (this.scene as BattleScene).getParty()[partyMemberIndex].stats;
|
||||||
let levelUpStatsValuesText = "";
|
let levelUpStatsValuesText = "";
|
||||||
const stats = Utils.getEnumValues(Stat);
|
for (const s of PERMANENT_STATS) {
|
||||||
for (const s of stats) {
|
|
||||||
levelUpStatsValuesText += `${showTotals ? newStats[s] : newStats[s] - prevStats[s]}\n`;
|
levelUpStatsValuesText += `${showTotals ? newStats[s] : newStats[s] - prevStats[s]}\n`;
|
||||||
}
|
}
|
||||||
this.levelUpStatsValuesContent.text = levelUpStatsValuesText;
|
this.levelUpStatsValuesContent.text = levelUpStatsValuesText;
|
||||||
@ -194,10 +192,9 @@ export default class BattleMessageUiHandler extends MessageUiHandler {
|
|||||||
return new Promise(resolve => {
|
return new Promise(resolve => {
|
||||||
this.scene.executeWithSeedOffset(() => {
|
this.scene.executeWithSeedOffset(() => {
|
||||||
let levelUpStatsValuesText = "";
|
let levelUpStatsValuesText = "";
|
||||||
const stats = Utils.getEnumValues(Stat);
|
|
||||||
const shownStats = this.getTopIvs(ivs, shownIvsCount);
|
const shownStats = this.getTopIvs(ivs, shownIvsCount);
|
||||||
for (const s of stats) {
|
for (const s of PERMANENT_STATS) {
|
||||||
levelUpStatsValuesText += `${shownStats.indexOf(s) > -1 ? this.getIvDescriptor(ivs[s], s, pokemonId) : "???"}\n`;
|
levelUpStatsValuesText += `${shownStats.includes(s) ? this.getIvDescriptor(ivs[s], s, pokemonId) : "???"}\n`;
|
||||||
}
|
}
|
||||||
this.levelUpStatsValuesContent.text = levelUpStatsValuesText;
|
this.levelUpStatsValuesContent.text = levelUpStatsValuesText;
|
||||||
this.levelUpStatsIncrContent.setVisible(false);
|
this.levelUpStatsIncrContent.setVisible(false);
|
||||||
@ -212,26 +209,17 @@ export default class BattleMessageUiHandler extends MessageUiHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
getTopIvs(ivs: integer[], shownIvsCount: integer): Stat[] {
|
getTopIvs(ivs: integer[], shownIvsCount: integer): Stat[] {
|
||||||
const stats = Utils.getEnumValues(Stat);
|
|
||||||
let shownStats: Stat[] = [];
|
let shownStats: Stat[] = [];
|
||||||
if (shownIvsCount < 6) {
|
if (shownIvsCount < 6) {
|
||||||
const statsPool = stats.slice(0);
|
let highestIv = -1;
|
||||||
for (let i = 0; i < shownIvsCount; i++) {
|
for (let i = 0; i < shownIvsCount; i++) {
|
||||||
let shownStat: Stat | null = null;
|
if (ivs[i] > highestIv) {
|
||||||
let highestIv = -1;
|
shownStats.push(PERMANENT_STATS[i]);
|
||||||
statsPool.map(s => {
|
highestIv = ivs[i];
|
||||||
if (ivs[s] > highestIv) {
|
|
||||||
shownStat = s as Stat;
|
|
||||||
highestIv = ivs[s];
|
|
||||||
}
|
|
||||||
});
|
|
||||||
if (shownStat) {
|
|
||||||
shownStats.push(shownStat);
|
|
||||||
statsPool.splice(statsPool.indexOf(shownStat), 1);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
shownStats = stats;
|
shownStats = PERMANENT_STATS.slice();
|
||||||
}
|
}
|
||||||
return shownStats;
|
return shownStats;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user