Skip to content

Commit

Permalink
Merge pull request pagefaultgames#5019 from pagefaultgames/beta
Browse files Browse the repository at this point in the history
Release 1.4.0
  • Loading branch information
damocleas authored Dec 21, 2024
2 parents 6d90344 + 6392ee8 commit f95a5d4
Show file tree
Hide file tree
Showing 33 changed files with 306 additions and 99 deletions.
96 changes: 50 additions & 46 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 Expand Up @@ -615,6 +619,6 @@ In addition to the lists below, please check [the PokéRogue wiki](https://wiki.
- roi

## External Tools
- Ydarissep (RogueDex)
- Ydarissep (creator of the now defunct "Yda's Dex")
- Admiral-Billy (Offline App - Desktop)
- Red aka StonedModder (iOS App)
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.0",
"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/pokemon-level-moves.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19464,7 +19464,6 @@ export const pokemonFormLevelMoves: PokemonSpeciesFormLevelMoves = {
},
[Species.GRENINJA]: {
1: [
[ EVOLVE_MOVE, Moves.WATER_SHURIKEN ],
[ EVOLVE_MOVE, Moves.WATER_SHURIKEN ],
[ 1, Moves.POUND ],
[ 1, Moves.GROWL ],
Expand All @@ -19475,6 +19474,7 @@ export const pokemonFormLevelMoves: PokemonSpeciesFormLevelMoves = {
[ 1, Moves.SMACK_DOWN ], // Previous Stage Move
[ 1, Moves.BOUNCE ], // Previous Stage Move
[ 1, Moves.HAZE ],
[ 1, Moves.MAT_BLOCK ],
[ 1, Moves.ROLE_PLAY ],
[ 1, Moves.NIGHT_SLASH ],
[ 10, Moves.LICK ],
Expand Down
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
30 changes: 23 additions & 7 deletions src/data/move.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1881,8 +1881,14 @@ export class FlameBurstAttr extends MoveEffectAttr {
}

export class SacrificialFullRestoreAttr extends SacrificialAttr {
constructor() {
protected restorePP: boolean;
protected moveMessage: string;

constructor(restorePP: boolean, moveMessage: string) {
super();

this.restorePP = restorePP;
this.moveMessage = moveMessage;
}

apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
Expand All @@ -1893,8 +1899,19 @@ export class SacrificialFullRestoreAttr extends SacrificialAttr {
// We don't know which party member will be chosen, so pick the highest max HP in the party
const maxPartyMemberHp = user.scene.getPlayerParty().map(p => p.getMaxHp()).reduce((maxHp: integer, hp: integer) => Math.max(hp, maxHp), 0);

user.scene.pushPhase(new PokemonHealPhase(user.scene, user.getBattlerIndex(),
maxPartyMemberHp, i18next.t("moveTriggers:sacrificialFullRestore", { pokemonName: getPokemonNameWithAffix(user) }), true, false, false, true), true);
user.scene.pushPhase(
new PokemonHealPhase(
user.scene,
user.getBattlerIndex(),
maxPartyMemberHp,
i18next.t(this.moveMessage, { pokemonName: getPokemonNameWithAffix(user) }),
true,
false,
false,
true,
false,
this.restorePP),
true);

return true;
}
Expand Down Expand Up @@ -9002,7 +9019,7 @@ export function initMoves() {
.attr(GyroBallPowerAttr)
.ballBombMove(),
new SelfStatusMove(Moves.HEALING_WISH, Type.PSYCHIC, -1, 10, -1, 0, 4)
.attr(SacrificialFullRestoreAttr)
.attr(SacrificialFullRestoreAttr, false, "moveTriggers:sacrificialFullRestore")
.triageMove(),
new AttackMove(Moves.BRINE, Type.WATER, MoveCategory.SPECIAL, 65, 100, 10, -1, 0, 4)
.attr(MovePowerMultiplierAttr, (user, target, move) => target.getHpRatio() < 0.5 ? 2 : 1),
Expand Down Expand Up @@ -9279,10 +9296,9 @@ export function initMoves() {
new AttackMove(Moves.SPACIAL_REND, Type.DRAGON, MoveCategory.SPECIAL, 100, 95, 5, -1, 0, 4)
.attr(HighCritAttr),
new SelfStatusMove(Moves.LUNAR_DANCE, Type.PSYCHIC, -1, 10, -1, 0, 4)
.attr(SacrificialAttrOnHit)
.attr(SacrificialFullRestoreAttr, true, "moveTriggers:lunarDanceRestore")
.danceMove()
.triageMove()
.unimplemented(),
.triageMove(),
new AttackMove(Moves.CRUSH_GRIP, Type.NORMAL, MoveCategory.PHYSICAL, -1, 100, 5, -1, 0, 4)
.attr(OpponentHighHpPowerAttr, 120),
new AttackMove(Moves.MAGMA_STORM, Type.FIRE, MoveCategory.SPECIAL, 100, 75, 5, -1, 0, 4)
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, { allSpecies } 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!);
bossSpecies = allSpecies[eventEncounter.species];
bossSpecies.speciesId = bossSpecies.getSpeciesForLevel(level, eventEncounter.allowEvolution);
} 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, { allSpecies } 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!);
bossSpecies = allSpecies[eventEncounter.species];
bossSpecies.speciesId = bossSpecies.getSpeciesForLevel(level, eventEncounter.allowEvolution);
} 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
Loading

0 comments on commit f95a5d4

Please sign in to comment.