Manual merge for game-data.ts

This commit is contained in:
Frutescens 2024-08-02 20:07:45 -07:00
parent cbf8ea8f2f
commit 4fc51e2636
1 changed files with 13 additions and 24 deletions

View File

@ -41,7 +41,6 @@ import { Moves } from "#enums/moves";
import { PlayerGender } from "#enums/player-gender";
import { Species } from "#enums/species";
import { applyChallenges, ChallengeType } from "#app/data/challenge.js";
import { Abilities } from "#app/enums/abilities.js";
export const defaultStarterSpecies: Species[] = [
Species.BULBASAUR, Species.CHARMANDER, Species.SQUIRTLE,
@ -297,7 +296,6 @@ export class GameData {
public starterData: StarterData;
public gameStats: GameStats;
public runHistory: RunHistoryData;
public unlocks: Unlocks;
@ -319,6 +317,7 @@ export class GameData {
this.secretId = Utils.randInt(65536);
this.starterData = {};
this.gameStats = new GameStats();
this.runHistory = {};
this.unlocks = {
[Unlockables.ENDLESS_MODE]: false,
[Unlockables.MINI_BLACK_HOLE]: false,
@ -326,7 +325,6 @@ export class GameData {
};
this.achvUnlocks = {};
this.voucherUnlocks = {};
this.runHistory = {};
this.voucherCounts = {
[VoucherType.REGULAR]: 0,
[VoucherType.PLUS]: 0,
@ -365,7 +363,7 @@ export class GameData {
this.scene.ui.savingIcon.show();
const data = this.getSystemSaveData();
const maxIntAttrValue = Math.pow(2, 31);
const maxIntAttrValue = 0x80000000;
const systemData = JSON.stringify(data, (k: any, v: any) => typeof v === "bigint" ? v <= maxIntAttrValue ? Number(v) : v.toString() : v);
localStorage.setItem(`data_${loggedInUser.username}`, encrypt(systemData, bypassLogin));
@ -454,7 +452,6 @@ export class GameData {
if (versions[0] !== versions[1]) {
const [ versionNumbers, oldVersionNumbers ] = versions.map(ver => ver.split('.').map(v => parseInt(v)));
}*/
if (!localStorage.hasOwnProperty(`runHistoryData_${loggedInUser.username}`)) {
localStorage.setItem(`runHistoryData_${loggedInUser.username}`, encrypt("", true));
}
@ -949,14 +946,6 @@ export class GameData {
const handleSessionData = async (sessionDataStr: string) => {
try {
const sessionData = this.parseSessionData(sessionDataStr);
for (let i = 0; i <= 5; i++) {
const speciesToCheck = getPokemonSpecies(sessionData.party[i]?.species);
if (sessionData.party[i]?.abilityIndex === 1) {
if (speciesToCheck.ability1 === speciesToCheck.ability2 && speciesToCheck.abilityHidden !== Abilities.NONE && speciesToCheck.abilityHidden !== speciesToCheck.ability1) {
sessionData.party[i].abilityIndex = 2;
}
}
}
resolve(sessionData);
} catch (err) {
reject(err);
@ -1269,7 +1258,7 @@ export class GameData {
}
const sessionData = useCachedSession ? this.parseSessionData(decrypt(localStorage.getItem(`sessionData${scene.sessionSlotId ? scene.sessionSlotId : ""}_${loggedInUser.username}`), bypassLogin)) : this.getSessionSaveData(scene);
const maxIntAttrValue = Math.pow(2, 31);
const maxIntAttrValue = 0x80000000;
const systemData = useCachedSystem ? this.parseSystemData(decrypt(localStorage.getItem(`data_${loggedInUser.username}`), bypassLogin)) : this.getSystemSaveData();
const request = {
@ -1474,7 +1463,7 @@ export class GameData {
const entry = data[defaultStarterSpecies[ds]] as DexEntry;
entry.seenAttr = defaultStarterAttr;
entry.caughtAttr = defaultStarterAttr;
entry.natureAttr = Math.pow(2, defaultStarterNatures[ds] + 1);
entry.natureAttr = 1 << (defaultStarterNatures[ds] + 1);
for (const i in entry.ivs) {
entry.ivs[i] = 10;
}
@ -1541,10 +1530,10 @@ export class GameData {
dexEntry.caughtAttr |= dexAttr;
if (speciesStarters.hasOwnProperty(species.speciesId)) {
this.starterData[species.speciesId].abilityAttr |= pokemon.abilityIndex !== 1 || pokemon.species.ability2
? Math.pow(2, pokemon.abilityIndex)
? 1 << pokemon.abilityIndex
: AbilityAttr.ABILITY_HIDDEN;
}
dexEntry.natureAttr |= Math.pow(2, pokemon.nature + 1);
dexEntry.natureAttr |= 1 << (pokemon.nature + 1);
const hasPrevolution = pokemonPrevolutions.hasOwnProperty(species.speciesId);
const newCatch = !caughtAttr;
@ -1580,7 +1569,7 @@ export class GameData {
}
if (!hasPrevolution && (!pokemon.scene.gameMode.isDaily || hasNewAttr || fromEgg)) {
this.addStarterCandy(species, (1 * (pokemon.isShiny() ? 5 * Math.pow(2, pokemon.variant || 0) : 1)) * (fromEgg || pokemon.isBoss() ? 2 : 1));
this.addStarterCandy(species, (1 * (pokemon.isShiny() ? 5 * (1 << (pokemon.variant ?? 0)) : 1)) * (fromEgg || pokemon.isBoss() ? 2 : 1));
}
}
@ -1651,7 +1640,7 @@ export class GameData {
this.starterData[speciesId].eggMoves = 0;
}
const value = Math.pow(2, eggMoveIndex);
const value = 1 << eggMoveIndex;
if (this.starterData[speciesId].eggMoves & value) {
resolve(false);
@ -1743,7 +1732,7 @@ export class GameData {
getSpeciesDefaultNature(species: PokemonSpecies): Nature {
const dexEntry = this.dexData[species.speciesId];
for (let n = 0; n < 25; n++) {
if (dexEntry.natureAttr & Math.pow(2, n + 1)) {
if (dexEntry.natureAttr & (1 << (n + 1))) {
return n as Nature;
}
}
@ -1751,7 +1740,7 @@ export class GameData {
}
getSpeciesDefaultNatureAttr(species: PokemonSpecies): integer {
return Math.pow(2, this.getSpeciesDefaultNature(species));
return 1 << (this.getSpeciesDefaultNature(species));
}
getDexAttrLuck(dexAttr: bigint): integer {
@ -1761,7 +1750,7 @@ export class GameData {
getNaturesForAttr(natureAttr: integer): Nature[] {
const ret: Nature[] = [];
for (let n = 0; n < 25; n++) {
if (natureAttr & Math.pow(2, n + 1)) {
if (natureAttr & (1 << (n + 1))) {
ret.push(n);
}
}
@ -1803,7 +1792,7 @@ export class GameData {
}
getFormAttr(formIndex: integer): bigint {
return BigInt(Math.pow(2, 7 + formIndex));
return BigInt(1 << (7 + formIndex));
}
consolidateDexData(dexData: DexData): void {
@ -1813,7 +1802,7 @@ export class GameData {
entry.hatchedCount = 0;
}
if (!entry.hasOwnProperty("natureAttr") || (entry.caughtAttr && !entry.natureAttr)) {
entry.natureAttr = this.defaultDexData[k].natureAttr || Math.pow(2, Utils.randInt(25, 1));
entry.natureAttr = this.defaultDexData[k].natureAttr || (1 << Utils.randInt(25, 1));
}
}
}