resolve some open strict-null bangs TODOs (#3530)
This commit is contained in:
parent
73372b424e
commit
5000a91348
|
@ -944,7 +944,7 @@ export default class BattleScene extends SceneBase {
|
|||
}
|
||||
|
||||
randBattleSeedInt(range: integer, min: integer = 0): integer {
|
||||
return this.currentBattle.randSeedInt(this, range, min);
|
||||
return this.currentBattle?.randSeedInt(this, range, min);
|
||||
}
|
||||
|
||||
reset(clearScene: boolean = false, clearData: boolean = false, reloadI18n: boolean = false): void {
|
||||
|
@ -2397,7 +2397,7 @@ export default class BattleScene extends SceneBase {
|
|||
}
|
||||
|
||||
party.forEach((enemyPokemon: EnemyPokemon, i: integer) => {
|
||||
const isBoss = enemyPokemon.isBoss() || (this.currentBattle.battleType === BattleType.TRAINER && this.currentBattle.trainer?.config.isBoss);
|
||||
const isBoss = enemyPokemon.isBoss() || (this.currentBattle.battleType === BattleType.TRAINER && !!this.currentBattle.trainer?.config.isBoss);
|
||||
let upgradeChance = 32;
|
||||
if (isBoss) {
|
||||
upgradeChance /= 2;
|
||||
|
@ -2405,7 +2405,7 @@ export default class BattleScene extends SceneBase {
|
|||
if (isFinalBoss) {
|
||||
upgradeChance /= 8;
|
||||
}
|
||||
const modifierChance = this.gameMode.getEnemyModifierChance(isBoss!); // TODO: is this bang correct?
|
||||
const modifierChance = this.gameMode.getEnemyModifierChance(isBoss);
|
||||
let pokemonModifierChance = modifierChance;
|
||||
if (this.currentBattle.battleType === BattleType.TRAINER && this.currentBattle.trainer)
|
||||
pokemonModifierChance = Math.ceil(pokemonModifierChance * this.currentBattle.trainer.getPartyMemberModifierChanceMultiplier(i)); // eslint-disable-line
|
||||
|
|
|
@ -74,14 +74,14 @@ export default class Battle {
|
|||
this.gameMode = gameMode;
|
||||
this.waveIndex = waveIndex;
|
||||
this.battleType = battleType;
|
||||
this.trainer = trainer!; //TODO: is this bang correct?
|
||||
this.trainer = trainer ?? null;
|
||||
this.initBattleSpec();
|
||||
this.enemyLevels = battleType !== BattleType.TRAINER
|
||||
? new Array(double ? 2 : 1).fill(null).map(() => this.getLevelForWave())
|
||||
: trainer?.getPartyLevels(this.waveIndex);
|
||||
this.enemyParty = [];
|
||||
this.seenEnemyPartyMemberIds = new Set<integer>();
|
||||
this.double = double!; //TODO: is this bang correct?
|
||||
this.double = !!double;
|
||||
this.enemySwitchCounter = 0;
|
||||
this.turn = 0;
|
||||
this.playerParticipantIds = new Set<integer>();
|
||||
|
@ -208,9 +208,9 @@ export default class Battle {
|
|||
return `encounter_${this.trainer?.getEncounterBgm()}`;
|
||||
}
|
||||
if (scene.musicPreference === 0) {
|
||||
return this.trainer?.getBattleBgm()!; // TODO: is this bang correct?
|
||||
return this.trainer?.getBattleBgm() ?? null;
|
||||
} else {
|
||||
return this.trainer?.getMixedBattleBgm()!; // TODO: is this bang correct?
|
||||
return this.trainer?.getMixedBattleBgm() ?? null;
|
||||
}
|
||||
} else if (this.gameMode.isClassic && this.waveIndex > 195 && this.battleSpec !== BattleSpec.FINAL_BOSS) {
|
||||
return "end_summit";
|
||||
|
|
|
@ -325,7 +325,7 @@ export class TypeImmunityAbAttr extends PreDefendAbAttr {
|
|||
super();
|
||||
|
||||
this.immuneType = immuneType;
|
||||
this.condition = condition!; // TODO: is this bang correct?
|
||||
this.condition = condition ?? null;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1507,7 +1507,7 @@ export class BattleStatMultiplierAbAttr extends AbAttr {
|
|||
|
||||
this.battleStat = battleStat;
|
||||
this.multiplier = multiplier;
|
||||
this.condition = condition!; // TODO: is this bang correct?
|
||||
this.condition = condition ?? null;
|
||||
}
|
||||
|
||||
applyBattleStat(pokemon: Pokemon, passive: boolean, battleStat: BattleStat, statValue: Utils.NumberHolder, args: any[]): boolean | Promise<boolean> {
|
||||
|
@ -1560,7 +1560,7 @@ export class PostAttackStealHeldItemAbAttr extends PostAttackAbAttr {
|
|||
constructor(stealCondition?: PokemonAttackCondition) {
|
||||
super();
|
||||
|
||||
this.stealCondition = stealCondition!; // TODO: is this bang correct?
|
||||
this.stealCondition = stealCondition ?? null;
|
||||
}
|
||||
|
||||
applyPostAttackAfterMoveTypeCheck(pokemon: Pokemon, passive: boolean, defender: Pokemon, move: Move, hitResult: HitResult, args: any[]): Promise<boolean> {
|
||||
|
@ -1649,7 +1649,7 @@ export class PostDefendStealHeldItemAbAttr extends PostDefendAbAttr {
|
|||
constructor(condition?: PokemonDefendCondition) {
|
||||
super();
|
||||
|
||||
this.condition = condition!; // TODO: is this bang correct?
|
||||
this.condition = condition ?? null;
|
||||
}
|
||||
|
||||
applyPostDefend(pokemon: Pokemon, passive: boolean, attacker: Pokemon, move: Move, hitResult: HitResult, args: any[]): Promise<boolean> {
|
||||
|
@ -2400,11 +2400,11 @@ export class ProtectStatAbAttr extends PreStatChangeAbAttr {
|
|||
constructor(protectedStat?: BattleStat) {
|
||||
super();
|
||||
|
||||
this.protectedStat = protectedStat!; // TODO: is this bang correct?
|
||||
this.protectedStat = protectedStat ?? null;
|
||||
}
|
||||
|
||||
applyPreStatChange(pokemon: Pokemon, passive: boolean, stat: BattleStat, cancelled: Utils.BooleanHolder, args: any[]): boolean {
|
||||
if (this.protectedStat === undefined || stat === this.protectedStat) {
|
||||
if (!this.protectedStat || stat === this.protectedStat) {
|
||||
cancelled.value = true;
|
||||
return true;
|
||||
}
|
||||
|
@ -2746,7 +2746,7 @@ export class SuppressWeatherEffectAbAttr extends PreWeatherEffectAbAttr {
|
|||
constructor(affectsImmutable?: boolean) {
|
||||
super();
|
||||
|
||||
this.affectsImmutable = affectsImmutable!; // TODO: is this bang correct?
|
||||
this.affectsImmutable = !!affectsImmutable;
|
||||
}
|
||||
|
||||
applyPreWeatherEffect(pokemon: Pokemon, passive: boolean, weather: Weather, cancelled: Utils.BooleanHolder, args: any[]): boolean {
|
||||
|
@ -2810,11 +2810,11 @@ function getAnticipationCondition(): AbAttrCondition {
|
|||
return true;
|
||||
}
|
||||
// move is a OHKO
|
||||
if (move!.getMove().hasAttr(OneHitKOAttr)) { // TODO: is this bang correct?
|
||||
if (move?.getMove().hasAttr(OneHitKOAttr)) {
|
||||
return true;
|
||||
}
|
||||
// edge case for hidden power, type is computed
|
||||
if (move!.getMove().id === Moves.HIDDEN_POWER) { // TODO: is this bang correct?
|
||||
if (move?.getMove().id === Moves.HIDDEN_POWER) {
|
||||
const iv_val = Math.floor(((opponent.ivs[Stat.HP] & 1)
|
||||
+(opponent.ivs[Stat.ATK] & 1) * 2
|
||||
+(opponent.ivs[Stat.DEF] & 1) * 4
|
||||
|
@ -2862,13 +2862,13 @@ export class ForewarnAbAttr extends PostSummonAbAttr {
|
|||
let movePower = 0;
|
||||
for (const opponent of pokemon.getOpponents()) {
|
||||
for (const move of opponent.moveset) {
|
||||
if (move!.getMove() instanceof StatusMove) { // TODO: is this bang correct?
|
||||
if (move?.getMove() instanceof StatusMove) {
|
||||
movePower = 1;
|
||||
} else if (move!.getMove().hasAttr(OneHitKOAttr)) { // TODO: is this bang correct?
|
||||
} else if (move?.getMove().hasAttr(OneHitKOAttr)) {
|
||||
movePower = 150;
|
||||
} else if (move!.getMove().id === Moves.COUNTER || move!.getMove().id === Moves.MIRROR_COAT || move!.getMove().id === Moves.METAL_BURST) { // TODO: are those bangs correct?
|
||||
} else if (move?.getMove().id === Moves.COUNTER || move?.getMove().id === Moves.MIRROR_COAT || move?.getMove().id === Moves.METAL_BURST) {
|
||||
movePower = 120;
|
||||
} else if (move!.getMove().power === -1) { // TODO: is this bang correct?
|
||||
} else if (move?.getMove().power === -1) {
|
||||
movePower = 80;
|
||||
} else {
|
||||
movePower = move!.getMove().power; // TODO: is this bang correct?
|
||||
|
|
|
@ -683,8 +683,8 @@ export abstract class BattleAnim {
|
|||
private dstLine: number[];
|
||||
|
||||
constructor(user?: Pokemon, target?: Pokemon) {
|
||||
this.user = user!; // TODO: is this bang correct?
|
||||
this.target = target!; // TODO: is this bang correct?
|
||||
this.user = user ?? null;
|
||||
this.target = target ?? null;
|
||||
this.sprites = [];
|
||||
}
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@ export function fetchDailyRunSeed(): Promise<string | null> {
|
|||
return;
|
||||
}
|
||||
return response.text();
|
||||
}).then(seed => resolve(seed!)) // TODO: is this bang correct?
|
||||
}).then(seed => resolve(seed ?? null))
|
||||
.catch(err => reject(err));
|
||||
});
|
||||
}
|
||||
|
|
|
@ -343,7 +343,7 @@ export class InputsController {
|
|||
// Sometimes, gamepads are undefined. For some reason.
|
||||
this.gamepads = this.scene.input.gamepad?.gamepads.filter(function (el) {
|
||||
return el !== null;
|
||||
})!; // TODO: is this bang correct?
|
||||
}) ?? [];
|
||||
|
||||
for (const [index, thisGamepad] of this.gamepads.entries()) {
|
||||
thisGamepad.index = index; // Overwrite the gamepad index, in case we had undefined gamepads earlier
|
||||
|
|
|
@ -10,7 +10,8 @@ import i18next from "i18next";
|
|||
export function getPokemonNameWithAffix(pokemon: Pokemon | undefined): string {
|
||||
if (!pokemon) {
|
||||
return "Missigno";
|
||||
} // TODO: little easter-egg, lol
|
||||
}
|
||||
|
||||
switch (pokemon.scene.currentBattle.battleSpec) {
|
||||
case BattleSpec.DEFAULT:
|
||||
return !pokemon.isPlayer()
|
||||
|
|
|
@ -195,7 +195,7 @@ export class TitlePhase extends Phase {
|
|||
|
||||
this.scene.playBgm("title", true);
|
||||
|
||||
this.scene.gameData.getSession(loggedInUser!.lastSessionSlot).then(sessionData => { // TODO: is this bang correct?
|
||||
this.scene.gameData.getSession(loggedInUser?.lastSessionSlot ?? -1).then(sessionData => {
|
||||
if (sessionData) {
|
||||
this.lastSessionData = sessionData;
|
||||
const biomeKey = getBiomeKey(sessionData.arena.biome);
|
||||
|
@ -394,7 +394,11 @@ export class TitlePhase extends Phase {
|
|||
// If Online, calls seed fetch from db to generate daily run. If Offline, generates a daily run based on current date.
|
||||
if (!Utils.isLocal) {
|
||||
fetchDailyRunSeed().then(seed => {
|
||||
generateDaily(seed!); // TODO: is this bang correct?
|
||||
if (seed) {
|
||||
generateDaily(seed);
|
||||
} else {
|
||||
throw new Error("Daily run seed is null!");
|
||||
}
|
||||
}).catch(err => {
|
||||
console.error("Failed to load daily run:\n", err);
|
||||
});
|
||||
|
@ -468,7 +472,7 @@ export class ReloadSessionPhase extends Phase {
|
|||
constructor(scene: BattleScene, systemDataStr?: string) {
|
||||
super(scene);
|
||||
|
||||
this.systemDataStr = systemDataStr!; // TODO: is this bang correct?
|
||||
this.systemDataStr = systemDataStr ?? null;
|
||||
}
|
||||
|
||||
start(): void {
|
||||
|
|
Loading…
Reference in New Issue