Address Minor Manual NITs

This commit is contained in:
xsn34kzx 2024-08-18 01:38:33 -04:00
parent 2edb67b56d
commit 24338efe63
5 changed files with 56 additions and 68 deletions

View File

@ -2062,22 +2062,22 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
if (critOnly.value || critAlways) {
isCritical = true;
} else {
const critLevel = new Utils.IntegerHolder(0);
applyMoveAttrs(HighCritAttr, source, this, move, critLevel);
this.scene.applyModifiers(CritBoosterModifier, source.isPlayer(), source, critLevel);
this.scene.applyModifiers(TempCritBoosterModifier, source.isPlayer(), critLevel);
const critStage = new Utils.IntegerHolder(0);
applyMoveAttrs(HighCritAttr, source, this, move, critStage);
this.scene.applyModifiers(CritBoosterModifier, source.isPlayer(), source, critStage);
this.scene.applyModifiers(TempCritBoosterModifier, source.isPlayer(), critStage);
const bonusCrit = new Utils.BooleanHolder(false);
//@ts-ignore
if (applyAbAttrs(BonusCritAbAttr, source, null, bonusCrit)) { // TODO: resolve ts-ignore. This is a promise. Checking a promise is bogus.
if (bonusCrit.value) {
critLevel.value += 1;
critStage.value += 1;
}
}
if (source.getTag(BattlerTagType.CRIT_BOOST)) {
critLevel.value += 2;
critStage.value += 2;
}
console.log(`crit stage: +${critLevel.value}`);
const critChance = [24, 8, 2, 1][Math.max(0, Math.min(critLevel.value, 3))];
console.log(`crit stage: +${critStage.value}`);
const critChance = [24, 8, 2, 1][Math.max(0, Math.min(critStage.value, 3))];
isCritical = critChance === 1 || !this.scene.randBattleSeedInt(critChance);
if (Overrides.NEVER_CRIT_OVERRIDE) {
isCritical = false;

View File

@ -58,16 +58,16 @@ describe("Items - Leek", () => {
const partyMember = game.scene.getPlayerPokemon()!;
// Making sure modifier is not applied without holding item
const critLevel = new Utils.IntegerHolder(0);
partyMember.scene.applyModifiers(CritBoosterModifier, true, partyMember, critLevel);
const critStage = new Utils.IntegerHolder(0);
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
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);
it("LEEK held by GALAR_FARFETCHD", async() => {
@ -78,16 +78,16 @@ describe("Items - Leek", () => {
const partyMember = game.scene.getPlayerPokemon()!;
// Making sure modifier is not applied without holding item
const critLevel = new Utils.IntegerHolder(0);
partyMember.scene.applyModifiers(CritBoosterModifier, true, partyMember, critLevel);
const critStage = new Utils.IntegerHolder(0);
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
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);
it("LEEK held by SIRFETCHD", async() => {
@ -98,16 +98,16 @@ describe("Items - Leek", () => {
const partyMember = game.scene.getPlayerPokemon()!;
// Making sure modifier is not applied without holding item
const critLevel = new Utils.IntegerHolder(0);
partyMember.scene.applyModifiers(CritBoosterModifier, true, partyMember, critLevel);
const critStage = new Utils.IntegerHolder(0);
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
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);
it("LEEK held by fused FARFETCHD line (base)", async() => {
@ -133,16 +133,16 @@ describe("Items - Leek", () => {
partyMember.fusionLuck = ally.luck;
// Making sure modifier is not applied without holding item
const critLevel = new Utils.IntegerHolder(0);
partyMember.scene.applyModifiers(CritBoosterModifier, true, partyMember, critLevel);
const critStage = new Utils.IntegerHolder(0);
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
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);
it("LEEK held by fused FARFETCHD line (part)", async() => {
@ -168,16 +168,16 @@ describe("Items - Leek", () => {
partyMember.fusionLuck = ally.luck;
// Making sure modifier is not applied without holding item
const critLevel = new Utils.IntegerHolder(0);
partyMember.scene.applyModifiers(CritBoosterModifier, true, partyMember, critLevel);
const critStage = new Utils.IntegerHolder(0);
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
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);
it("LEEK not held by FARFETCHD line", async() => {
@ -188,15 +188,15 @@ describe("Items - Leek", () => {
const partyMember = game.scene.getPlayerPokemon()!;
// Making sure modifier is not applied without holding item
const critLevel = new Utils.IntegerHolder(0);
partyMember.scene.applyModifiers(CritBoosterModifier, true, partyMember, critLevel);
const critStage = new Utils.IntegerHolder(0);
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
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);
});

View File

@ -58,15 +58,15 @@ describe("Items - Scope Lens", () => {
const partyMember = game.scene.getPlayerPokemon()!;
// Making sure modifier is not applied without holding item
const critLevel = new Utils.IntegerHolder(0);
partyMember.scene.applyModifiers(CritBoosterModifier, true, partyMember, critLevel);
const critStage = new Utils.IntegerHolder(0);
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
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);
});

View File

@ -40,7 +40,7 @@ describe("Moves - FILLET AWAY", () => {
//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() => {
await game.startBattle([Species.MAGIKARP]);
@ -57,7 +57,7 @@ describe("Moves - FILLET AWAY", () => {
}, 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() => {
await game.startBattle([Species.MAGIKARP]);
@ -78,7 +78,7 @@ describe("Moves - FILLET AWAY", () => {
}, TIMEOUT
);
test("Fillet Away fails if all stats involved are at max",
test("fails if all stat stages involved are at max",
async() => {
await game.startBattle([Species.MAGIKARP]);
@ -98,7 +98,7 @@ describe("Moves - FILLET AWAY", () => {
}, 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() => {
await game.startBattle([Species.MAGIKARP]);

View File

@ -1,13 +1,12 @@
import BattleScene from "../battle-scene";
import { addBBCodeTextObject, addTextObject, getTextColor, TextStyle } from "./text";
import { Mode } from "./ui";
import * as Utils from "../utils";
import MessageUiHandler from "./message-ui-handler";
import { addWindow } from "./ui-theme";
import BBCodeText from "phaser3-rex-plugins/plugins/bbcodetext";
import {Button} from "#enums/buttons";
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 {
private levelUpStatsContainer: Phaser.GameObjects.Container;
@ -171,8 +170,7 @@ export default class BattleMessageUiHandler extends MessageUiHandler {
}
const newStats = (this.scene as BattleScene).getParty()[partyMemberIndex].stats;
let levelUpStatsValuesText = "";
const stats = Utils.getEnumValues(Stat);
for (const s of stats) {
for (const s of PERMANENT_STATS) {
levelUpStatsValuesText += `${showTotals ? newStats[s] : newStats[s] - prevStats[s]}\n`;
}
this.levelUpStatsValuesContent.text = levelUpStatsValuesText;
@ -194,10 +192,9 @@ export default class BattleMessageUiHandler extends MessageUiHandler {
return new Promise(resolve => {
this.scene.executeWithSeedOffset(() => {
let levelUpStatsValuesText = "";
const stats = Utils.getEnumValues(Stat);
const shownStats = this.getTopIvs(ivs, shownIvsCount);
for (const s of stats) {
levelUpStatsValuesText += `${shownStats.indexOf(s) > -1 ? this.getIvDescriptor(ivs[s], s, pokemonId) : "???"}\n`;
for (const s of PERMANENT_STATS) {
levelUpStatsValuesText += `${shownStats.includes(s) ? this.getIvDescriptor(ivs[s], s, pokemonId) : "???"}\n`;
}
this.levelUpStatsValuesContent.text = levelUpStatsValuesText;
this.levelUpStatsIncrContent.setVisible(false);
@ -212,26 +209,17 @@ export default class BattleMessageUiHandler extends MessageUiHandler {
}
getTopIvs(ivs: integer[], shownIvsCount: integer): Stat[] {
const stats = Utils.getEnumValues(Stat);
let shownStats: Stat[] = [];
if (shownIvsCount < 6) {
const statsPool = stats.slice(0);
for (let i = 0; i < shownIvsCount; i++) {
let shownStat: Stat | null = null;
let highestIv = -1;
statsPool.map(s => {
if (ivs[s] > highestIv) {
shownStat = s as Stat;
highestIv = ivs[s];
}
});
if (shownStat) {
shownStats.push(shownStat);
statsPool.splice(statsPool.indexOf(shownStat), 1);
for (let i = 0; i < shownIvsCount; i++) {
if (ivs[i] > highestIv) {
shownStats.push(PERMANENT_STATS[i]);
highestIv = ivs[i];
}
}
} else {
shownStats = stats;
shownStats = PERMANENT_STATS.slice();
}
return shownStats;
}