mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-11-05 10:51:20 +01:00
* Making 3 Option UI real
* idk anymore
* Revert "Making 3 Option UI real"
This reverts commit beaad44c1e.
* Let's see
* Current issues - scrolling upwards and correct cursor landing
* argh
* Fixed reactive scrolling
* Adding ME handling
* set up descriptions
* Cleaned up UI i think
* stupid alder
* Added double trainer handling + changed enum name
* Apply suggestions from code review
Thank you Moka!
Co-authored-by: MokaStitcher <54149968+MokaStitcher@users.noreply.github.com>
* Arrow Visibility now depends on Session Slot hasData
* documentation
* Simplified calls to revertSessionSlot + changed function name per feedback
* Fixed scrollCursor issue.
* added comment
* Update src/ui/save-slot-select-ui-handler.ts
Co-authored-by: MokaStitcher <54149968+MokaStitcher@users.noreply.github.com>
* Fixed sound played + added better conditional
* Balance Team....
* ME related changes
* Apply suggestions from code review
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
Co-authored-by: MokaStitcher <54149968+MokaStitcher@users.noreply.github.com>
* Update src/data/mystery-encounters/mystery-encounter.ts
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Update src/data/mystery-encounters/mystery-encounter.ts
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Sending Doubles-fix
* eslint..
---------
Co-authored-by: frutescens <info@laptop>
Co-authored-by: MokaStitcher <54149968+MokaStitcher@users.noreply.github.com>
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
166 lines
5.2 KiB
TypeScript
166 lines
5.2 KiB
TypeScript
import {
|
|
leaveEncounterWithoutBattle,
|
|
setEncounterRewards,
|
|
} from "#app/data/mystery-encounters/utils/encounter-phase-utils";
|
|
import { ModifierTypeFunc, modifierTypes } from "#app/modifier/modifier-type";
|
|
import { randSeedInt } from "#app/utils";
|
|
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
|
|
import { Species } from "#enums/species";
|
|
import BattleScene from "#app/battle-scene";
|
|
import MysteryEncounter, {
|
|
MysteryEncounterBuilder,
|
|
} from "#app/data/mystery-encounters/mystery-encounter";
|
|
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
|
|
import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/game-mode";
|
|
|
|
/** i18n namespace for encounter */
|
|
const namespace = "mysteryEncounters/departmentStoreSale";
|
|
|
|
/**
|
|
* Department Store Sale encounter.
|
|
* @see {@link https://github.com/pagefaultgames/pokerogue/issues/3797 | GitHub Issue #3797}
|
|
* @see For biome requirements check {@linkcode mysteryEncountersByBiome}
|
|
*/
|
|
export const DepartmentStoreSaleEncounter: MysteryEncounter =
|
|
MysteryEncounterBuilder.withEncounterType(MysteryEncounterType.DEPARTMENT_STORE_SALE)
|
|
.withEncounterTier(MysteryEncounterTier.COMMON)
|
|
.withSceneWaveRangeRequirement(CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES[0], 100)
|
|
.withIntroSpriteConfigs([
|
|
{
|
|
spriteKey: "department_store_sale_lady",
|
|
fileRoot: "mystery-encounters",
|
|
hasShadow: true,
|
|
x: -20,
|
|
},
|
|
{
|
|
spriteKey: "",
|
|
fileRoot: "",
|
|
species: Species.FURFROU,
|
|
hasShadow: true,
|
|
repeat: true,
|
|
x: 30,
|
|
},
|
|
])
|
|
.withIntroDialogue([
|
|
{
|
|
text: `${namespace}:intro`,
|
|
},
|
|
{
|
|
text: `${namespace}:intro_dialogue`,
|
|
speaker: `${namespace}:speaker`,
|
|
},
|
|
])
|
|
.withAutoHideIntroVisuals(false)
|
|
.setLocalizationKey(`${namespace}`)
|
|
.withTitle(`${namespace}:title`)
|
|
.withDescription(`${namespace}:description`)
|
|
.withQuery(`${namespace}:query`)
|
|
.withSimpleOption(
|
|
{
|
|
buttonLabel: `${namespace}:option.1.label`,
|
|
buttonTooltip: `${namespace}:option.1.tooltip`,
|
|
},
|
|
async (scene: BattleScene) => {
|
|
// Choose TMs
|
|
const modifiers: ModifierTypeFunc[] = [];
|
|
let i = 0;
|
|
while (i < 5) {
|
|
// 2/2/1 weight on TM rarity
|
|
const roll = randSeedInt(5);
|
|
if (roll < 2) {
|
|
modifiers.push(modifierTypes.TM_COMMON);
|
|
} else if (roll < 4) {
|
|
modifiers.push(modifierTypes.TM_GREAT);
|
|
} else {
|
|
modifiers.push(modifierTypes.TM_ULTRA);
|
|
}
|
|
i++;
|
|
}
|
|
|
|
setEncounterRewards(scene, { guaranteedModifierTypeFuncs: modifiers, fillRemaining: false, });
|
|
leaveEncounterWithoutBattle(scene);
|
|
}
|
|
)
|
|
.withSimpleOption(
|
|
{
|
|
buttonLabel: `${namespace}:option.2.label`,
|
|
buttonTooltip: `${namespace}:option.2.tooltip`,
|
|
},
|
|
async (scene: BattleScene) => {
|
|
// Choose Vitamins
|
|
const modifiers: ModifierTypeFunc[] = [];
|
|
let i = 0;
|
|
while (i < 3) {
|
|
// 2/1 weight on base stat booster vs PP Up
|
|
const roll = randSeedInt(3);
|
|
if (roll === 0) {
|
|
modifiers.push(modifierTypes.PP_UP);
|
|
} else {
|
|
modifiers.push(modifierTypes.BASE_STAT_BOOSTER);
|
|
}
|
|
i++;
|
|
}
|
|
|
|
setEncounterRewards(scene, { guaranteedModifierTypeFuncs: modifiers, fillRemaining: false, });
|
|
leaveEncounterWithoutBattle(scene);
|
|
}
|
|
)
|
|
.withSimpleOption(
|
|
{
|
|
buttonLabel: `${namespace}:option.3.label`,
|
|
buttonTooltip: `${namespace}:option.3.tooltip`,
|
|
},
|
|
async (scene: BattleScene) => {
|
|
// Choose X Items
|
|
const modifiers: ModifierTypeFunc[] = [];
|
|
let i = 0;
|
|
while (i < 5) {
|
|
// 4/1 weight on base stat booster vs Dire Hit
|
|
const roll = randSeedInt(5);
|
|
if (roll === 0) {
|
|
modifiers.push(modifierTypes.DIRE_HIT);
|
|
} else {
|
|
modifiers.push(modifierTypes.TEMP_STAT_STAGE_BOOSTER);
|
|
}
|
|
i++;
|
|
}
|
|
|
|
setEncounterRewards(scene, { guaranteedModifierTypeFuncs: modifiers, fillRemaining: false, });
|
|
leaveEncounterWithoutBattle(scene);
|
|
}
|
|
)
|
|
.withSimpleOption(
|
|
{
|
|
buttonLabel: `${namespace}:option.4.label`,
|
|
buttonTooltip: `${namespace}:option.4.tooltip`,
|
|
},
|
|
async (scene: BattleScene) => {
|
|
// Choose Pokeballs
|
|
const modifiers: ModifierTypeFunc[] = [];
|
|
let i = 0;
|
|
while (i < 4) {
|
|
// 10/30/20/5 weight on pokeballs
|
|
const roll = randSeedInt(65);
|
|
if (roll < 10) {
|
|
modifiers.push(modifierTypes.POKEBALL);
|
|
} else if (roll < 40) {
|
|
modifiers.push(modifierTypes.GREAT_BALL);
|
|
} else if (roll < 60) {
|
|
modifiers.push(modifierTypes.ULTRA_BALL);
|
|
} else {
|
|
modifiers.push(modifierTypes.ROGUE_BALL);
|
|
}
|
|
i++;
|
|
}
|
|
|
|
setEncounterRewards(scene, { guaranteedModifierTypeFuncs: modifiers, fillRemaining: false, });
|
|
leaveEncounterWithoutBattle(scene);
|
|
}
|
|
)
|
|
.withOutroDialogue([
|
|
{
|
|
text: `${namespace}:outro`,
|
|
}
|
|
])
|
|
.build();
|