Skip to content

Commit

Permalink
Merge branch 'beta' into toggle-cursor-run
Browse files Browse the repository at this point in the history
  • Loading branch information
Wlowscha authored Dec 21, 2024
2 parents d9e789f + 10e0f9f commit 41c3883
Show file tree
Hide file tree
Showing 28 changed files with 188 additions and 87 deletions.
94 changes: 49 additions & 45 deletions CREDITS.md
Original file line number Diff line number Diff line change
Expand Up @@ -372,63 +372,67 @@ In addition to the lists below, please check [the PokéRogue wiki](https://wiki.
- Lily
- PigeonBar

## Past Contributors
- Fontbane
- sodaMelon
- schmidtc1
- shayebeadling
## Other Code Contributors
- Admiral-Billy
- allen925
- arColm
- Arxalc
- AsdarDevelops
- bennybroseph
- Brain Frog
- Corrade
- Dakurei
- DustinLin
- lucfd
- madibye
- ElizaAlex
- EmberCM
- Mewtwo2387
- EmoUsedHM01
- EvasiveAce
- Fontbane
- francktrouillez
- FredeX
- geeilhan
- Greenlamp
- happinyz
- hayuna
- sirzento
- ReneGV
- mattrossdev
- zacharied
- NxKarim
- td76099
- Xiaphear
- InfernoVulpix
- j-diefenbach
- jaimefd
- EvasiveAce
- EmoUsedHM01
- francktrouillez
- JakubHanko
- FredeX
- PigeonBar
- prime-dialga
- rnicar245
- rationality6
- JonStudders
- karl-police
- lucfd
- Lugiadrien
- madibye
- mattrossdev
- mcmontag
- meepen
- Mewtwo2387
- muscode
- Neverblade
- Corrade
- Admiral-Billy
- NxKarim
- okimin
- Arxalc
- OrangeRed
- PigeonBar
- PrabbyDD
- JonStudders
- karl-police
- prateau
- meepen
- arColm
- allen925
- InfernoVulpix
- snoozbuster
- zaccie
- happinyz
- prime-dialga
- PyGaVS
- mcmontag
- ElizaAlex
- AsdarDevelops
- Vassiat
- rationality6
- RedstonewolfX
- Sam/Flashfyre (initial developer, started PokéRogue)
- Greenlamp
- bennybroseph
- OrangeRed
- Dakurei
- Brain Frog
- ReneGV
- rnicar245
- Sam aka Flashfyre (initial developer, started PokéRogue)
- schmidtc1
- shayebeadling
- sirzento
- snoozbuster
- sodaMelon
- td76099
- Vassiat
- Xiaphear
- zaccie
- zacharied
- Zé Ricardo


# 🌎 Translation
Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "pokemon-rogue-battle",
"private": true,
"version": "1.3.0",
"version": "1.4.1",
"type": "module",
"scripts": {
"start": "vite",
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion public/locales
Submodule locales updated 69 files
+17 −7 README.md
+2 −1 ca-ES/common.json
+1 −0 ca-ES/menu.json
+2 −1 de/ability.json
+1 −0 de/bgm-name.json
+3 −1 de/menu.json
+2 −1 de/move-trigger.json
+1 −1 de/mystery-encounters/fiery-fallout-dialogue.json
+1 −1 de/pokemon.json
+3 −1 en/menu.json
+3 −3 en/mystery-encounters/department-store-sale-dialogue.json
+2 −1 es-ES/ability.json
+34 −0 es-ES/achv.json
+1 −0 es-ES/battle.json
+3 −1 es-ES/menu.json
+2 −1 es-ES/move-trigger.json
+1 −1 es-ES/mystery-encounters/fiery-fallout-dialogue.json
+1 −1 fr/achv.json
+1 −0 fr/bgm-name.json
+8 −6 fr/menu.json
+1 −1 fr/settings.json
+12 −4 he/ability.json
+3 −0 he/battle-info.json
+4 −0 he/battle.json
+10 −0 he/battler-tags.json
+8 −0 he/common.json
+14 −0 he/egg.json
+3 −1 he/splash-texts.json
+2 −0 he/trainer-names.json
+6 −5 it/ability.json
+4 −0 it/achv.json
+3 −1 it/bgm-name.json
+3 −1 it/menu.json
+2 −1 it/move-trigger.json
+2 −1 ja/ability.json
+2 −2 ja/achv.json
+1 −0 ja/bgm-name.json
+2 −0 ja/menu-ui-handler.json
+3 −1 ja/menu.json
+2 −1 ja/move-trigger.json
+3 −1 ja/settings.json
+8 −8 ja/splash-texts.json
+2 −1 ko/ability.json
+2 −1 ko/arena-flyout.json
+2 −1 ko/arena-tag.json
+2 −0 ko/battle.json
+3 −1 ko/battler-tags.json
+3 −1 ko/menu.json
+26 −10 ko/modifier-type.json
+3 −1 ko/move-trigger.json
+2 −1 ko/splash-texts.json
+2 −1 pt-BR/ability.json
+2 −1 pt-BR/achv.json
+1 −0 pt-BR/bgm-name.json
+1 −1 pt-BR/biome.json
+3 −1 pt-BR/menu.json
+2 −1 pt-BR/move-trigger.json
+31 −31 pt-BR/mystery-encounters/the-expert-pokemon-breeder-dialogue.json
+1 −1 pt-BR/trainer-names.json
+4 −0 ro/menu.json
+23 −0 ro/pokemon-info.json
+29 −0 ro/pokemon-summary.json
+1,063 −0 ro/pokemon.json
+2 −1 zh-CN/ability.json
+1 −0 zh-CN/bgm-name.json
+3 −1 zh-CN/menu.json
+2 −1 zh-CN/move-trigger.json
+1 −1 zh-CN/mystery-encounters/fiery-fallout-dialogue.json
+3 −1 zh-TW/menu.json
2 changes: 1 addition & 1 deletion src/data/balance/starters.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ export const POKERUS_STARTER_COUNT = 5;

// #region Friendship constants
export const CLASSIC_CANDY_FRIENDSHIP_MULTIPLIER = 3;
export const FRIENDSHIP_GAIN_FROM_BATTLE = 3;
export const FRIENDSHIP_GAIN_FROM_BATTLE = 4;
export const FRIENDSHIP_GAIN_FROM_RARE_CANDY = 6;
export const FRIENDSHIP_LOSS_FROM_FAINT = 5;

Expand Down
1 change: 1 addition & 0 deletions src/data/balance/tms.ts
Original file line number Diff line number Diff line change
Expand Up @@ -67148,6 +67148,7 @@ export const tmSpecies: TmSpecies = {
Species.VELUZA,
Species.DONDOZO,
Species.TATSUGIRI,
Species.ANNIHILAPE,
Species.CLODSIRE,
Species.FARIGIRAF,
Species.DUDUNSPARCE,
Expand Down
12 changes: 10 additions & 2 deletions src/data/mystery-encounters/encounters/berries-abound-encounter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import {
ModifierTypeOption, modifierTypes,
regenerateModifierPoolThresholds,
} from "#app/modifier/modifier-type";
import { randSeedInt } from "#app/utils";
import { randSeedInt, randSeedItem } from "#app/utils";
import { BattlerTagType } from "#enums/battler-tag-type";
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
import BattleScene from "#app/battle-scene";
Expand All @@ -31,6 +31,7 @@ import { BerryType } from "#enums/berry-type";
import { PERMANENT_STATS, Stat } from "#enums/stat";
import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase";
import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/game-mode";
import PokemonSpecies, { getPokemonSpecies } from "#app/data/pokemon-species";

/** the i18n namespace for the encounter */
const namespace = "mysteryEncounters/berriesAbound";
Expand Down Expand Up @@ -58,7 +59,14 @@ export const BerriesAboundEncounter: MysteryEncounter =

// Calculate boss mon
const level = getEncounterPokemonLevelForWave(scene, STANDARD_ENCOUNTER_BOOSTED_LEVEL_MODIFIER);
const bossSpecies = scene.arena.randomSpecies(scene.currentBattle.waveIndex, level, 0, getPartyLuckValue(scene.getPlayerParty()), true);
let bossSpecies: PokemonSpecies;
if (scene.eventManager.isEventActive() && scene.eventManager.activeEvent()?.uncommonBreedEncounters && randSeedInt(2) === 1) {
const eventEncounter = randSeedItem(scene.eventManager.activeEvent()!.uncommonBreedEncounters!);
const levelSpecies = getPokemonSpecies(eventEncounter.species).getWildSpeciesForLevel(level, eventEncounter.allowEvolution ?? false, true, scene.gameMode);
bossSpecies = getPokemonSpecies( levelSpecies );
} else {
bossSpecies = scene.arena.randomSpecies(scene.currentBattle.waveIndex, level, 0, getPartyLuckValue(scene.getPlayerParty()), true);
}
const bossPokemon = new EnemyPokemon(scene, bossSpecies, level, TrainerSlot.NONE, true);
encounter.setDialogueToken("enemyPokemon", getPokemonNameWithAffix(bossPokemon));
const config: EnemyPartyConfig = {
Expand Down
31 changes: 29 additions & 2 deletions src/data/mystery-encounters/encounters/delibirdy-encounter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import { modifierTypes, PokemonHeldItemModifierType } from "#app/modifier/modifi
import { ModifierRewardPhase } from "#app/phases/modifier-reward-phase";
import i18next from "#app/plugins/i18n";
import { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler";
import { randSeedItem } from "#app/utils";
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
Expand All @@ -33,7 +34,24 @@ const OPTION_3_DISALLOWED_MODIFIERS = [
"PokemonBaseStatTotalModifier"
];

const DELIBIRDY_MONEY_PRICE_MULTIPLIER = 2;
const DELIBIRDY_MONEY_PRICE_MULTIPLIER = 1.5;

const doEventReward = (scene: BattleScene) => {
const event_buff = scene.eventManager.activeEvent()?.delibirdyBuff ?? [];
if (event_buff.length > 0) {
const candidates = event_buff.filter((c => {
const mtype = generateModifierType(scene, modifierTypes[c]);
const existingCharm = scene.findModifier(m => m.type.id === mtype?.id);
return !(existingCharm && existingCharm.getStackCount() >= existingCharm.getMaxStackCount(scene));
}));
if (candidates.length > 0) {
scene.unshiftPhase(new ModifierRewardPhase(scene, modifierTypes[randSeedItem(candidates)]));
} else {
// At max stacks, give a Voucher instead
scene.unshiftPhase(new ModifierRewardPhase(scene, modifierTypes.VOUCHER));
}
}
};

/**
* Delibird-y encounter.
Expand All @@ -42,7 +60,8 @@ const DELIBIRDY_MONEY_PRICE_MULTIPLIER = 2;
*/
export const DelibirdyEncounter: MysteryEncounter =
MysteryEncounterBuilder.withEncounterType(MysteryEncounterType.DELIBIRDY)
.withEncounterTier(MysteryEncounterTier.GREAT)
.withMaxAllowedEncounters(4)
.withEncounterTier(MysteryEncounterTier.COMMON) //Change back after event!
.withSceneWaveRangeRequirement(...CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES)
.withSceneRequirement(new MoneyRequirement(0, DELIBIRDY_MONEY_PRICE_MULTIPLIER)) // Must have enough money for it to spawn at the very least
.withPrimaryPokemonRequirement(
Expand Down Expand Up @@ -136,8 +155,10 @@ export const DelibirdyEncounter: MysteryEncounter =
await applyModifierTypeToPlayerPokemon(scene, scene.getPlayerPokemon()!, shellBell);
scene.playSound("item_fanfare");
await showEncounterText(scene, i18next.t("battle:rewardGain", { modifierName: shellBell.name }), null, undefined, true);
doEventReward(scene);
} else {
scene.unshiftPhase(new ModifierRewardPhase(scene, modifierTypes.AMULET_COIN));
doEventReward(scene);
}

leaveEncounterWithoutBattle(scene, true);
Expand Down Expand Up @@ -211,8 +232,10 @@ export const DelibirdyEncounter: MysteryEncounter =
await applyModifierTypeToPlayerPokemon(scene, scene.getPlayerPokemon()!, shellBell);
scene.playSound("item_fanfare");
await showEncounterText(scene, i18next.t("battle:rewardGain", { modifierName: shellBell.name }), null, undefined, true);
doEventReward(scene);
} else {
scene.unshiftPhase(new ModifierRewardPhase(scene, modifierTypes.CANDY_JAR));
doEventReward(scene);
}
} else {
// Check if the player has max stacks of that Berry Pouch already
Expand All @@ -224,8 +247,10 @@ export const DelibirdyEncounter: MysteryEncounter =
await applyModifierTypeToPlayerPokemon(scene, scene.getPlayerPokemon()!, shellBell);
scene.playSound("item_fanfare");
await showEncounterText(scene, i18next.t("battle:rewardGain", { modifierName: shellBell.name }), null, undefined, true);
doEventReward(scene);
} else {
scene.unshiftPhase(new ModifierRewardPhase(scene, modifierTypes.BERRY_POUCH));
doEventReward(scene);
}
}

Expand Down Expand Up @@ -300,8 +325,10 @@ export const DelibirdyEncounter: MysteryEncounter =
await applyModifierTypeToPlayerPokemon(scene, scene.getPlayerParty()[0], shellBell);
scene.playSound("item_fanfare");
await showEncounterText(scene, i18next.t("battle:rewardGain", { modifierName: shellBell.name }), null, undefined, true);
doEventReward(scene);
} else {
scene.unshiftPhase(new ModifierRewardPhase(scene, modifierTypes.HEALING_CHARM));
doEventReward(scene);
}

chosenPokemon.loseHeldItem(modifier, false);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,10 @@ import { getEncounterPokemonLevelForWave, getSpriteKeysFromPokemon, STANDARD_ENC
import PokemonData from "#app/system/pokemon-data";
import { BattlerTagType } from "#enums/battler-tag-type";
import { queueEncounterMessage } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils";
import { randSeedInt } from "#app/utils";
import { randSeedInt, randSeedItem } from "#app/utils";
import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase";
import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/game-mode";
import PokemonSpecies, { getPokemonSpecies } from "#app/data/pokemon-species";

/** the i18n namespace for the encounter */
const namespace = "mysteryEncounters/fightOrFlight";
Expand Down Expand Up @@ -56,7 +57,14 @@ export const FightOrFlightEncounter: MysteryEncounter =

// Calculate boss mon
const level = getEncounterPokemonLevelForWave(scene, STANDARD_ENCOUNTER_BOOSTED_LEVEL_MODIFIER);
const bossSpecies = scene.arena.randomSpecies(scene.currentBattle.waveIndex, level, 0, getPartyLuckValue(scene.getPlayerParty()), true);
let bossSpecies: PokemonSpecies;
if (scene.eventManager.isEventActive() && scene.eventManager.activeEvent()?.uncommonBreedEncounters && randSeedInt(2) === 1) {
const eventEncounter = randSeedItem(scene.eventManager.activeEvent()!.uncommonBreedEncounters!);
const levelSpecies = getPokemonSpecies(eventEncounter.species).getWildSpeciesForLevel(level, eventEncounter.allowEvolution ?? false, true, scene.gameMode);
bossSpecies = getPokemonSpecies( levelSpecies );
} else {
bossSpecies = scene.arena.randomSpecies(scene.currentBattle.waveIndex, level, 0, getPartyLuckValue(scene.getPlayerParty()), true);
}
const bossPokemon = new EnemyPokemon(scene, bossSpecies, level, TrainerSlot.NONE, true);
encounter.setDialogueToken("enemyPokemon", bossPokemon.getNameToRender());
const config: EnemyPartyConfig = {
Expand Down
12 changes: 10 additions & 2 deletions src/data/mystery-encounters/encounters/uncommon-breed-encounter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode
import { TrainerSlot } from "#app/data/trainer-config";
import { catchPokemon, getHighestLevelPlayerPokemon, getSpriteKeysFromPokemon } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils";
import PokemonData from "#app/system/pokemon-data";
import { isNullOrUndefined, randSeedInt } from "#app/utils";
import { isNullOrUndefined, randSeedInt, randSeedItem } from "#app/utils";
import { Moves } from "#enums/moves";
import { BattlerIndex } from "#app/battle";
import { SelfStatusMove } from "#app/data/move";
Expand All @@ -23,6 +23,7 @@ import { BerryModifier } from "#app/modifier/modifier";
import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase";
import { Stat } from "#enums/stat";
import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/game-mode";
import PokemonSpecies, { getPokemonSpecies } from "#app/data/pokemon-species";

/** the i18n namespace for the encounter */
const namespace = "mysteryEncounters/uncommonBreed";
Expand Down Expand Up @@ -51,7 +52,14 @@ export const UncommonBreedEncounter: MysteryEncounter =
// Calculate boss mon
// Level equal to 2 below highest party member
const level = getHighestLevelPlayerPokemon(scene, false, true).level - 2;
const species = scene.arena.randomSpecies(scene.currentBattle.waveIndex, level, 0, getPartyLuckValue(scene.getPlayerParty()), true);
let species: PokemonSpecies;
if (scene.eventManager.isEventActive() && scene.eventManager.activeEvent()?.uncommonBreedEncounters && randSeedInt(2) === 1) {
const eventEncounter = randSeedItem(scene.eventManager.activeEvent()!.uncommonBreedEncounters!);
const levelSpecies = getPokemonSpecies(eventEncounter.species).getWildSpeciesForLevel(level, eventEncounter.allowEvolution ?? false, true, scene.gameMode);
species = getPokemonSpecies( levelSpecies );
} else {
species = scene.arena.randomSpecies(scene.currentBattle.waveIndex, level, 0, getPartyLuckValue(scene.getPlayerParty()), true);
}
const pokemon = new EnemyPokemon(scene, species, level, TrainerSlot.NONE, true);

// Pokemon will always have one of its egg moves in its moveset
Expand Down
8 changes: 4 additions & 4 deletions src/data/mystery-encounters/mystery-encounters.ts
Original file line number Diff line number Diff line change
Expand Up @@ -177,22 +177,22 @@ export const allMysteryEncounters: { [encounterType: number]: MysteryEncounter }
const extremeBiomeEncounters: MysteryEncounterType[] = [];

const nonExtremeBiomeEncounters: MysteryEncounterType[] = [
MysteryEncounterType.FIELD_TRIP,
// MysteryEncounterType.FIELD_TRIP, Disabled for holiday event
MysteryEncounterType.DANCING_LESSONS, // Is also in BADLANDS, DESERT, VOLCANO, WASTELAND, ABYSS
];

const humanTransitableBiomeEncounters: MysteryEncounterType[] = [
MysteryEncounterType.MYSTERIOUS_CHALLENGERS,
MysteryEncounterType.SHADY_VITAMIN_DEALER,
MysteryEncounterType.THE_POKEMON_SALESMAN,
MysteryEncounterType.AN_OFFER_YOU_CANT_REFUSE,
// MysteryEncounterType.AN_OFFER_YOU_CANT_REFUSE, Disabled for holiday event
MysteryEncounterType.THE_WINSTRATE_CHALLENGE,
MysteryEncounterType.THE_EXPERT_POKEMON_BREEDER
];

const civilizationBiomeEncounters: MysteryEncounterType[] = [
MysteryEncounterType.DEPARTMENT_STORE_SALE,
MysteryEncounterType.PART_TIMER,
// MysteryEncounterType.DEPARTMENT_STORE_SALE, Disabled for holiday event
// MysteryEncounterType.PART_TIMER, Disabled for holiday event
MysteryEncounterType.FUN_AND_GAMES,
MysteryEncounterType.GLOBAL_TRADE_SYSTEM
];
Expand Down
Loading

0 comments on commit 41c3883

Please sign in to comment.