Skip to content

Commit

Permalink
Address Minor Manual NITs
Browse files Browse the repository at this point in the history
  • Loading branch information
xsn34kzx committed Aug 18, 2024
1 parent 2edb67b commit 24338ef
Show file tree
Hide file tree
Showing 5 changed files with 56 additions and 68 deletions.
16 changes: 8 additions & 8 deletions src/field/pokemon.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
60 changes: 30 additions & 30 deletions src/test/items/leek.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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() => {
Expand All @@ -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() => {
Expand All @@ -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() => {
Expand All @@ -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() => {
Expand All @@ -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() => {
Expand All @@ -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);
});
10 changes: 5 additions & 5 deletions src/test/items/scope_lens.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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);
});
8 changes: 4 additions & 4 deletions src/test/moves/fillet_away.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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]);

Expand All @@ -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]);

Expand All @@ -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]);

Expand All @@ -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]);

Expand Down
30 changes: 9 additions & 21 deletions src/ui/battle-message-ui-handler.ts
Original file line number Diff line number Diff line change
@@ -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;
Expand Down Expand Up @@ -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;
Expand All @@ -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);
Expand All @@ -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);
let highestIv = -1;
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);
if (ivs[i] > highestIv) {
shownStats.push(PERMANENT_STATS[i]);
highestIv = ivs[i];
}
}
} else {
shownStats = stats;
shownStats = PERMANENT_STATS.slice();
}
return shownStats;
}
Expand Down

0 comments on commit 24338ef

Please sign in to comment.