Skip to content

Commit

Permalink
basic mythic jirachi
Browse files Browse the repository at this point in the history
  • Loading branch information
ewei068 committed Jan 20, 2025
1 parent 4448c4c commit fd60246
Show file tree
Hide file tree
Showing 3 changed files with 77 additions and 0 deletions.
10 changes: 10 additions & 0 deletions src/config/trainerConfig.js
Original file line number Diff line number Diff line change
Expand Up @@ -407,15 +407,25 @@ const trainerFields = {
pokemonIds: [],
},
},
// TODO: move mythics to its own nested object?
hasCelebi: {
type: "boolean",
default: false,
},
hasJirachi: {
type: "boolean",
default: false,
},
usedTimeTravel: {
type: "boolean",
default: false,
refreshInterval: timeEnum.DAY,
},
usedWish: {
type: "boolean",
default: false,
refreshInterval: timeEnum.WEEK,
},
lastTowerStage: {
type: "number",
default: 0,
Expand Down
65 changes: 65 additions & 0 deletions src/services/mythic.js
Original file line number Diff line number Diff line change
Expand Up @@ -684,6 +684,70 @@ const onFormSelect = async (user, speciesId) => {
return { err: null };
};

/**
* @param {WithId<Trainer>} trainer
* @returns {Promise<{err?: string, data?: WithId<Pokemon>}>}
*/
const getJirachi = async (trainer) => {
const speciesId = "385";

const jirachiRes = await getMythic(trainer, speciesId);
if (jirachiRes.err) {
return { err: jirachiRes.err };
}

let jirachi = jirachiRes.data;
let modified = false;
if (!jirachi) {
let metRequirements = true;
// check star piece
if (getItems(trainer, backpackItems.STAR_PIECE) < 200) {
metRequirements = false;
}
// check for non-original-trainer pokemon
const pokemonsRes = await listPokemons(trainer, {
pageSize: 3,
filter: { originalOwner: { $ne: trainer.userId } },
});
if (pokemonsRes.err) {
return { err: pokemonsRes.err };
}
if (pokemonsRes.data.length < 3) {
metRequirements = false;
}
if (!metRequirements) {
return {
err: `Jirachi wants you to work with others before granting your wishes! You must obtain 200x ${
backpackItemConfig[backpackItems.STAR_PIECE].emoji
} Star Pieces from raids, and have at least 3 traded Pokemon!`,
};
}

// @ts-ignore
jirachi = generateMythic(trainer, speciesId);
modified = true;
}

if (!trainer.hasCelebi) {
trainer.hasCelebi = true;
const trainerRes = await updateTrainer(trainer);
if (trainerRes.err) {
return { err: trainerRes.err };
}
}

// update jirachi if modified
if (modified) {
const { err, id } = await upsertMythic(trainer, jirachi);
if (err) {
return { err };
}
jirachi._id = id || jirachi._id;
}

return { data: jirachi };
};

module.exports = {
getMew,
updateMew,
Expand All @@ -694,4 +758,5 @@ module.exports = {
getDeoxys,
buildDeoxysSend,
onFormSelect,
getJirachi,
};
2 changes: 2 additions & 0 deletions types.js
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,9 @@
*
* Mythic Pokemon
* @property {boolean} hasCelebi
* @property {boolean} hasJirachi
* @property {boolean} usedTimeTravel
* @property {boolean} usedWish
*
* Misc
* @property {PartialRecord<UpsellEnum, UserUpsellData>} upsellData
Expand Down

0 comments on commit fd60246

Please sign in to comment.