Compare commits

...

10 Commits

Author SHA1 Message Date
Jannik Tappert
de1c2b2b5b
Added localization to the biomes. (#1378)
* Added localization to the biomes.

German Localization by me. (Native German).
French Localiztation by sangara42 from Discord

* Changed End back to ??? and Space is now Space again it all but German and French

* Changed english biome names according to https://wiki.pokerogue.net/biomes:biomes

* And we are back to grassy field since apparently the wiki is wrong...
2024-05-25 15:57:22 -05:00
nterrien
6f2d639a7b
Fix French translation of Genesect's Drive (#1379) 2024-05-25 15:54:31 -05:00
td76099
ae0cd86bc3
Adding clause so right Pokemon in double battle cannot target itself with a spread move when left one dies with no replacement (#1370) 2024-05-25 14:06:50 -05:00
Nicholas Galauxy
93c91bf73a
Fix incorrectly unselectable starter formes (#1332)
* Fix incorrectly unselectable starter formes

* Fix linter issue that got merged upstream

* Remove battle-bond key from form key overrides based on feedback
2024-05-25 12:53:46 -05:00
damocleas
1b8b0789c0
Made Lab 25% instead of 12.5% to encounter after Factory (#1351)
This biome is too rare, this is just a temporary change until biomes are redone.
2024-05-25 18:45:07 +01:00
ASCAlex
311f7b7420
Fixed German localization for Starf Berry description and localized zippyZap effect (#1373) 2024-05-25 11:47:31 -05:00
Frederico Santos
f95bd40353
Swapped Aron for Aggron on Iris pokemon pool (#1374) 2024-05-25 11:45:27 -05:00
Benjamin Odom
5c28e1fb11
Adds New BattleSceneEventTypes (#1372)
* Add BattleSceneEvents

* Update battle-scene-events.ts
2024-05-25 17:23:53 +01:00
Jannik Tappert
97d8275417
localized Honeygather again (#1369) 2024-05-25 09:31:30 -05:00
Frederico Santos
ef28e75b39
hotfix for alder bgm on double battle (#1368) 2024-05-25 09:20:27 -05:00
28 changed files with 429 additions and 19 deletions

View File

@ -1,11 +1,31 @@
import Move from "./data/move";
/** Alias for all {@linkcode BattleScene} events */
export enum BattleSceneEventType {
MOVE_USED = "onMoveUsed"
/**
* Triggers when a move is successfully used
* @see {@linkcode MoveUsedEvent}
*/
MOVE_USED = "onMoveUsed",
/**
* Triggers on the first turn of a new battle
* @see {@linkcode TurnInitEvent}
*/
TURN_INIT = "onTurnInit",
/**
* Triggers after a turn ends in battle
* @see {@linkcode TurnEndEvent}
*/
TURN_END = "onTurnEnd",
/**
* Triggers when a new {@linkcode Arena} is created during initialization
* @see {@linkcode NewArenaEvent}
*/
NEW_ARENA = "onNewArena",
}
/**
* Container class for `onMoveUsed` events
* Container class for {@linkcode BattleSceneEventType.MOVE_USED} events
* @extends Event
*/
export class MoveUsedEvent extends Event {
@ -23,3 +43,34 @@ export class MoveUsedEvent extends Event {
this.ppUsed = ppUsed;
}
}
/**
* Container class for {@linkcode BattleSceneEventType.TURN_INIT} events
* @extends Event
*/
export class TurnInitEvent extends Event {
constructor() {
super(BattleSceneEventType.TURN_INIT);
}
}
/**
* Container class for {@linkcode BattleSceneEventType.TURN_END} events
* @extends Event
*/
export class TurnEndEvent extends Event {
/** The amount of turns in the current battle */
public turnCount: number;
constructor(turnCount: number) {
super(BattleSceneEventType.TURN_END);
this.turnCount = turnCount;
}
}
/**
* Container class for {@linkcode BattleSceneEventType.NEW_ARENA} events
* @extends Event
*/
export class NewArenaEvent extends Event {
constructor() {
super(BattleSceneEventType.NEW_ARENA);
}
}

View File

@ -56,6 +56,7 @@ import { Localizable } from "./plugins/i18n";
import * as Overrides from "./overrides";
import {InputsController} from "./inputs-controller";
import {UiInputs} from "./ui-inputs";
import { NewArenaEvent } from "./battle-scene-events";
export const bypassLogin = import.meta.env.VITE_BYPASS_LOGIN === "1";
@ -995,6 +996,7 @@ export default class BattleScene extends SceneBase {
newArena(biome: Biome): Arena {
this.arena = new Arena(this, biome, Biome[biome].toLowerCase());
this.eventTarget.dispatchEvent(new NewArenaEvent());
this.arenaBg.pipelineData = { terrainColorRatio: this.arena.getBgTerrainColorRatioForBiome() };

View File

@ -6,22 +6,23 @@ import { TrainerType } from "./enums/trainer-type";
import { TimeOfDay } from "./enums/time-of-day";
import { Biome } from "./enums/biome";
import {pokemonEvolutions, SpeciesFormEvolution} from "./pokemon-evolutions";
import i18next from "i18next";
export function getBiomeName(biome: Biome | -1) {
if (biome === -1) {
return "Somewhere you can't remember";
return i18next.t("biome:unknownLocation");
}
switch (biome) {
case Biome.GRASS:
return "Grassy Field";
return i18next.t("biome:GRASS");
case Biome.RUINS:
return "Ancient Ruins";
return i18next.t("biome:RUINS");
case Biome.ABYSS:
return "The Abyss";
return i18next.t("biome:ABYSS");
case Biome.END:
return "???";
return i18next.t("biome:END");
default:
return Utils.toReadableString(Biome[biome]);
return i18next.t(`biome:${Biome[biome].toUpperCase()}`);
}
}
@ -55,7 +56,7 @@ export const biomeLinks: BiomeLinks = {
[Biome.VOLCANO]: [ Biome.BEACH, [ Biome.ICE_CAVE, 4 ] ],
[Biome.GRAVEYARD]: Biome.ABYSS,
[Biome.DOJO]: [ Biome.PLAINS, [ Biome.TEMPLE, 3 ] ],
[Biome.FACTORY]: [ Biome.PLAINS, [ Biome.LABORATORY, 8 ] ],
[Biome.FACTORY]: [ Biome.PLAINS, [ Biome.LABORATORY, 4 ] ],
[Biome.RUINS]: [ Biome.FOREST ],
[Biome.WASTELAND]: Biome.BADLANDS,
[Biome.ABYSS]: [ Biome.CAVE, [ Biome.SPACE, 3 ], [ Biome.WASTELAND, 3 ] ],

View File

@ -807,6 +807,9 @@ export class PokemonForm extends PokemonSpeciesForm {
public formKey: string;
public formSpriteKey: string;
// This is a collection of form keys that have in-run form changes, but should still be separately selectable from the start screen
private starterSelectableKeys: string[] = ["10", "50", "10-pc", "50-pc", "red", "orange", "yellow", "green", "blue", "indigo", "violet"];
constructor(formName: string, formKey: string, type1: Type, type2: Type, height: number, weight: number, ability1: Abilities, ability2: Abilities, abilityHidden: Abilities,
baseTotal: integer, baseHp: integer, baseAtk: integer, baseDef: integer, baseSpatk: integer, baseSpdef: integer, baseSpd: integer,
catchRate: integer, baseFriendship: integer, baseExp: integer, genderDiffs?: boolean, formSpriteKey?: string) {
@ -820,6 +823,10 @@ export class PokemonForm extends PokemonSpeciesForm {
getFormSpriteKey(_formIndex?: integer) {
return this.formSpriteKey !== null ? this.formSpriteKey : this.formKey;
}
isStarterSelectable() {
return !this.formKey || this.starterSelectableKeys.indexOf[this.formKey] !== -1;
}
}
export enum SpeciesFormKey {

View File

@ -906,7 +906,7 @@ export const signatureSpecies: SignatureSpecies = {
WALLACE: [Species.MILOTIC, Species.KYOGRE, Species.WHISCASH, Species.WALREIN, Species.LUDICOLO],
CYNTHIA: [Species.SPIRITOMB, Species.GIRATINA, Species.GARCHOMP, Species.MILOTIC, Species.LUCARIO, Species.TOGEKISS],
ALDER: [Species.VOLCARONA, Species.GROUDON, Species.BOUFFALANT, Species.ACCELGOR, Species.CONKELDURR],
IRIS: [Species.HAXORUS, Species.YVELTAL, Species.DRUDDIGON, Species.ARON, Species.LAPRAS],
IRIS: [Species.HAXORUS, Species.YVELTAL, Species.DRUDDIGON, Species.AGGRON, Species.LAPRAS],
DIANTHA: [Species.HAWLUCHA, Species.XERNEAS, Species.GOURGEIST, Species.GOODRA, Species.GARDEVOIR],
HAU: [Species.ALOLA_RAICHU, [Species.SOLGALEO, Species.LUNALA], Species.NOIVERN, [Species.DECIDUEYE, Species.INCINEROAR, Species.PRIMARINA], Species.CRABOMINABLE],
GEETA: [Species.GLIMMORA, Species.MIRAIDON, Species.ESPATHRA, Species.VELUZA, Species.KINGAMBIT],
@ -1198,7 +1198,7 @@ export const trainerConfigs: TrainerConfigs = {
[TrainerType.STEVEN]: new TrainerConfig(++t).initForChampion(signatureSpecies["STEVEN"]).setBattleBgm("battle_hoenn_champion").setHasDouble("steven_wallace_double").setDoubleTrainerType(TrainerType.WALLACE).setDoubleTitle("champion_double"),
[TrainerType.WALLACE]: new TrainerConfig(++t).initForChampion(signatureSpecies["WALLACE"]).setBattleBgm("battle_hoenn_champion").setHasDouble("wallace_steven_double").setDoubleTrainerType(TrainerType.STEVEN).setDoubleTitle("champion_double"),
[TrainerType.CYNTHIA]: new TrainerConfig(++t).initForChampion(signatureSpecies["CYNTHIA"]).setBattleBgm("battle_sinnoh_champion"),
[TrainerType.ALDER]: new TrainerConfig(++t).initForChampion(signatureSpecies["ALDER"]).setHasDouble("alder_iris_double").setDoubleTrainerType(TrainerType.IRIS).setDoubleTitle("champion_double").setBattleBgm("battle_unova_champion"),
[TrainerType.ALDER]: new TrainerConfig(++t).initForChampion(signatureSpecies["ALDER"]).setHasDouble("alder_iris_double").setDoubleTrainerType(TrainerType.IRIS).setDoubleTitle("champion_double").setBattleBgm("battle_champion_alder"),
[TrainerType.IRIS]: new TrainerConfig(++t).initForChampion(signatureSpecies["IRIS"]).setBattleBgm("battle_champion_iris").setHasDouble("iris_alder_double").setDoubleTrainerType(TrainerType.ALDER).setDoubleTitle("champion_double"),
[TrainerType.DIANTHA]: new TrainerConfig(++t).initForChampion(signatureSpecies["DIANTHA"]),
[TrainerType.HAU]: new TrainerConfig(++t).initForChampion(signatureSpecies["HAU"]),

View File

@ -471,7 +471,7 @@ export const ability: AbilityTranslationEntries = {
},
honeyGather: {
name: "Honigmaul",
description: "The Pokémon gathers Honey after a battle. The Honey is then sold for money.",
description: "Sammelt nach dem Kampf Honig. Dieser wird dann für Geld verkauft.",
},
frisk: {
name: "Schnüffler",

View File

@ -39,7 +39,7 @@ export const berry: BerryTranslationEntries = {
},
"STARF": {
name: "Krambobeere",
effect: "Erhöht eine Statuswert stark, wenn die KP unter 25% sind"
effect: "Erhöht einen zufälligen Statuswert stark, wenn die KP unter 25% sind"
},
"LEPPA": {
name: "Jonagobeere",

40
src/locales/de/biome.ts Normal file
View File

@ -0,0 +1,40 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
export const biome: SimpleTranslationEntries = {
"unknownLocation": "An einem unbekannten Ort",
"TOWN": "Stadt",
"PLAINS": "Ebene",
"GRASS": "Grasfeld",
"TALL_GRASS": "Hohes Gras",
"METROPOLIS": "Metropole",
"FOREST": "Wald",
"SEA": "Meer",
"SWAMP": "Sumpf",
"BEACH": "Strand",
"LAKE": "See",
"SEABED": "Meeresboden",
"MOUNTAIN": "Berg",
"BADLANDS": "Kargland",
"CAVE": "Höhle",
"DESERT": "Wüste",
"ICE_CAVE": "Eishöhle",
"MEADOW": "Weide",
"POWER_PLANT": "Kraftwerk",
"VOLCANO": "Vulkan",
"GRAVEYARD": "Friedhof",
"DOJO": "Dojo",
"FACTORY": "Fabrik",
"RUINS": "Alte Ruinen",
"WASTELAND": "Ödland",
"ABYSS": "Der Abgrund",
"SPACE": "Stratosphäre",
"CONSTRUCTION_SITE": "Baustelle",
"JUNGLE": "Dschungel",
"FAIRY_CAVE": "Feenhöhle",
"TEMPLE": "Tempel",
"SLUM": "Elendsviertel",
"SNOWY_FOREST": "Verschneiter Wald",
"ISLAND": "Insel",
"LABORATORY": "Labor",
"END": "???",
} as const;

View File

@ -21,6 +21,7 @@ import { weather } from "./weather";
import { battleMessageUiHandler } from "./battle-message-ui-handler";
import { berry } from "./berry";
import { voucher } from "./voucher";
import { biome } from "./biome";
export const deConfig = {
ability: ability,
@ -48,4 +49,5 @@ export const deConfig = {
battleMessageUiHandler: battleMessageUiHandler,
berry: berry,
voucher: voucher,
biome: biome,
};

View File

@ -2915,7 +2915,7 @@ export const move: MoveTranslationEntries = {
},
"zippyZap": {
name: "Britzelturbo",
effect: "The user attacks the target with bursts of electricity at high speed. This move always goes first and raises the user's evasiveness."
effect: "Ein stürmischer Blitz-Angriff mit hoher Erstschlag- und Volltrefferquote."
},
"splishySplash": {
name: "Plätschersurfer",

40
src/locales/en/biome.ts Normal file
View File

@ -0,0 +1,40 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
export const biome: SimpleTranslationEntries = {
"unknownLocation": "Somewhere you can\'t remember",
"TOWN": "Town",
"PLAINS": "Plains",
"GRASS": "Grassy Field",
"TALL_GRASS": "Tall Grass",
"METROPOLIS": "Metropolis",
"FOREST": "Forest",
"SEA": "Sea",
"SWAMP": "Swamp",
"BEACH": "Beach",
"LAKE": "Lake",
"SEABED": "Seabed",
"MOUNTAIN": "Mountain",
"BADLANDS": "Badlands",
"CAVE": "Cave",
"DESERT": "Desert",
"ICE_CAVE": "Ice Cave",
"MEADOW": "Meadow",
"POWER_PLANT": "Power Plant",
"VOLCANO": "Volcano",
"GRAVEYARD": "Graveyard",
"DOJO": "Dojo",
"FACTORY": "Factory",
"RUINS": "Ancient Ruins",
"WASTELAND": "Wasteland",
"ABYSS": "Abyss",
"SPACE": "Space",
"CONSTRUCTION_SITE": "Construction Site",
"JUNGLE": "Jungle",
"FAIRY_CAVE": "Fairy Cave",
"TEMPLE": "Temple",
"SLUM": "Slum",
"SNOWY_FOREST": "Snowy Forest",
"ISLAND": "Island",
"LABORATORY": "Laboratory",
"END": "???",
} as const;

View File

@ -21,6 +21,7 @@ import { weather } from "./weather";
import { battleMessageUiHandler } from "./battle-message-ui-handler";
import { berry } from "./berry";
import { voucher } from "./voucher";
import { biome } from "./biome";
export const enConfig = {
ability: ability,
@ -48,4 +49,5 @@ export const enConfig = {
battleMessageUiHandler: battleMessageUiHandler,
berry: berry,
voucher: voucher,
biome: biome,
};

40
src/locales/es/biome.ts Normal file
View File

@ -0,0 +1,40 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
export const biome: SimpleTranslationEntries = {
"unknownLocation": "Somewhere you can\'t remember",
"TOWN": "Town",
"PLAINS": "Plains",
"GRASS": "Grassy Field",
"TALL_GRASS": "Tall Grass",
"METROPOLIS": "Metropolis",
"FOREST": "Forest",
"SEA": "Sea",
"SWAMP": "Swamp",
"BEACH": "Beach",
"LAKE": "Lake",
"SEABED": "Seabed",
"MOUNTAIN": "Mountain",
"BADLANDS": "Badlands",
"CAVE": "Cave",
"DESERT": "Desert",
"ICE_CAVE": "Ice Cave",
"MEADOW": "Meadow",
"POWER_PLANT": "Power Plant",
"VOLCANO": "Volcano",
"GRAVEYARD": "Graveyard",
"DOJO": "Dojo",
"FACTORY": "Factory",
"RUINS": "Ancient Ruins",
"WASTELAND": "Wasteland",
"ABYSS": "Abyss",
"SPACE": "Space",
"CONSTRUCTION_SITE": "Construction Site",
"JUNGLE": "Jungle",
"FAIRY_CAVE": "Fairy Cave",
"TEMPLE": "Temple",
"SLUM": "Slum",
"SNOWY_FOREST": "Snowy Forest",
"ISLAND": "Island",
"LABORATORY": "Laboratory",
"END": "???",
} as const;

View File

@ -21,6 +21,7 @@ import { weather } from "./weather";
import { battleMessageUiHandler } from "./battle-message-ui-handler";
import { berry } from "./berry";
import { voucher } from "./voucher";
import { biome } from "./biome";
export const esConfig = {
ability: ability,
@ -48,4 +49,5 @@ export const esConfig = {
battleMessageUiHandler: battleMessageUiHandler,
berry: berry,
voucher: voucher,
biome: biome,
};

40
src/locales/fr/biome.ts Normal file
View File

@ -0,0 +1,40 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
export const biome: SimpleTranslationEntries = {
"unknownLocation": "Dans un endroit inconnu",
"TOWN": "Ville",
"PLAINS": "Plaines",
"GRASS": "Herbes",
"TALL_GRASS": "Hautes Herbes",
"METROPOLIS": "Métropole",
"FOREST": "Forêt",
"SEA": "Mer",
"SWAMP": "Marécage",
"BEACH": "Plage",
"LAKE": "Lac",
"SEABED": "Fonds Marins",
"MOUNTAIN": "Montagne",
"BADLANDS": "Terres Sauvages",
"CAVE": "Grotte",
"DESERT": "Desert",
"ICE_CAVE": "Caverne Glaciale",
"MEADOW": "Prairie",
"POWER_PLANT": "Centrale Électrique",
"VOLCANO": "Volcan",
"GRAVEYARD": "Cimetière",
"DOJO": "Dojo",
"FACTORY": "Usine",
"RUINS": "Ruines",
"WASTELAND": "Terres Désolées",
"ABYSS": "Gouffre",
"SPACE": "Espace",
"CONSTRUCTION_SITE": "Chantier",
"JUNGLE": "Jungle",
"FAIRY_CAVE": "Grotte Féérique",
"TEMPLE": "Temple",
"SLUM": "Bidonville",
"SNOWY_FOREST": "Forêt Enneigée",
"ISLAND": "Île",
"LABORATORY": "Laboratoire",
"END": "???",
} as const;

View File

@ -21,6 +21,8 @@ import { weather } from "./weather";
import { battleMessageUiHandler } from "./battle-message-ui-handler";
import { berry } from "./berry";
import { voucher } from "./voucher";
import { biome } from "./biome";
export const frConfig = {
ability: ability,
@ -48,4 +50,5 @@ export const frConfig = {
battleMessageUiHandler: battleMessageUiHandler,
berry: berry,
voucher: voucher,
biome: biome,
};

View File

@ -381,7 +381,7 @@ export const modifierType: ModifierTypeTranslationEntries = {
"CORNERSTONE_MASK": "Masque de la Pierre",
"SHOCK_DRIVE": "Module Choc",
"BURN_DRIVE": "Module Pyro",
"CHILL_DRIVE": "Module Aqua",
"DOUSE_DRIVE": "Module Choc",
"CHILL_DRIVE": "Module Cryo",
"DOUSE_DRIVE": "Module Aqua",
},
} as const;

40
src/locales/it/biome.ts Normal file
View File

@ -0,0 +1,40 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
export const biome: SimpleTranslationEntries = {
"unknownLocation": "Somewhere you can\'t remember",
"TOWN": "Town",
"PLAINS": "Plains",
"GRASS": "Grassy Field",
"TALL_GRASS": "Tall Grass",
"METROPOLIS": "Metropolis",
"FOREST": "Forest",
"SEA": "Sea",
"SWAMP": "Swamp",
"BEACH": "Beach",
"LAKE": "Lake",
"SEABED": "Seabed",
"MOUNTAIN": "Mountain",
"BADLANDS": "Badlands",
"CAVE": "Cave",
"DESERT": "Desert",
"ICE_CAVE": "Ice Cave",
"MEADOW": "Meadow",
"POWER_PLANT": "Power Plant",
"VOLCANO": "Volcano",
"GRAVEYARD": "Graveyard",
"DOJO": "Dojo",
"FACTORY": "Factory",
"RUINS": "Ancient Ruins",
"WASTELAND": "Wasteland",
"ABYSS": "Abyss",
"SPACE": "Space",
"CONSTRUCTION_SITE": "Construction Site",
"JUNGLE": "Jungle",
"FAIRY_CAVE": "Fairy Cave",
"TEMPLE": "Temple",
"SLUM": "Slum",
"SNOWY_FOREST": "Snowy Forest",
"ISLAND": "Island",
"LABORATORY": "Laboratory",
"END": "???",
} as const;

View File

@ -21,6 +21,8 @@ import { weather } from "./weather";
import { battleMessageUiHandler } from "./battle-message-ui-handler";
import { berry } from "./berry";
import { voucher } from "./voucher";
import { biome } from "./biome";
export const itConfig = {
ability: ability,
@ -48,4 +50,5 @@ export const itConfig = {
battleMessageUiHandler: battleMessageUiHandler,
berry: berry,
voucher: voucher,
biome: biome,
};

View File

@ -0,0 +1,40 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
export const biome: SimpleTranslationEntries = {
"unknownLocation": "Somewhere you can\'t remember",
"TOWN": "Town",
"PLAINS": "Plains",
"GRASS": "Grassy Field",
"TALL_GRASS": "Tall Grass",
"METROPOLIS": "Metropolis",
"FOREST": "Forest",
"SEA": "Sea",
"SWAMP": "Swamp",
"BEACH": "Beach",
"LAKE": "Lake",
"SEABED": "Seabed",
"MOUNTAIN": "Mountain",
"BADLANDS": "Badlands",
"CAVE": "Cave",
"DESERT": "Desert",
"ICE_CAVE": "Ice Cave",
"MEADOW": "Meadow",
"POWER_PLANT": "Power Plant",
"VOLCANO": "Volcano",
"GRAVEYARD": "Graveyard",
"DOJO": "Dojo",
"FACTORY": "Factory",
"RUINS": "Ancient Ruins",
"WASTELAND": "Wasteland",
"ABYSS": "Abyss",
"SPACE": "Space",
"CONSTRUCTION_SITE": "Construction Site",
"JUNGLE": "Jungle",
"FAIRY_CAVE": "Fairy Cave",
"TEMPLE": "Temple",
"SLUM": "Slum",
"SNOWY_FOREST": "Snowy Forest",
"ISLAND": "Island",
"LABORATORY": "Laboratory",
"END": "???",
} as const;

View File

@ -20,6 +20,8 @@ import { tutorial } from "./tutorial";
import { weather } from "./weather";
import { berry } from "./berry";
import { voucher } from "./voucher";
import { biome } from "./biome";
export const ptBrConfig = {
@ -47,4 +49,5 @@ export const ptBrConfig = {
modifierType: modifierType,
berry: berry,
voucher: voucher,
biome: biome,
};

View File

@ -0,0 +1,40 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
export const biome: SimpleTranslationEntries = {
"unknownLocation": "Somewhere you can\'t remember",
"TOWN": "Town",
"PLAINS": "Plains",
"GRASS": "Grassy Field",
"TALL_GRASS": "Tall Grass",
"METROPOLIS": "Metropolis",
"FOREST": "Forest",
"SEA": "Sea",
"SWAMP": "Swamp",
"BEACH": "Beach",
"LAKE": "Lake",
"SEABED": "Seabed",
"MOUNTAIN": "Mountain",
"BADLANDS": "Badlands",
"CAVE": "Cave",
"DESERT": "Desert",
"ICE_CAVE": "Ice Cave",
"MEADOW": "Meadow",
"POWER_PLANT": "Power Plant",
"VOLCANO": "Volcano",
"GRAVEYARD": "Graveyard",
"DOJO": "Dojo",
"FACTORY": "Factory",
"RUINS": "Ancient Ruins",
"WASTELAND": "Wasteland",
"ABYSS": "Abyss",
"SPACE": "Space",
"CONSTRUCTION_SITE": "Construction Site",
"JUNGLE": "Jungle",
"FAIRY_CAVE": "Fairy Cave",
"TEMPLE": "Temple",
"SLUM": "Slum",
"SNOWY_FOREST": "Snowy Forest",
"ISLAND": "Island",
"LABORATORY": "Laboratory",
"END": "???",
} as const;

View File

@ -21,6 +21,8 @@ import { weather } from "./weather";
import { battleMessageUiHandler } from "./battle-message-ui-handler";
import { berry } from "./berry";
import { voucher } from "./voucher";
import { biome } from "./biome";
export const zhCnConfig = {
@ -49,4 +51,5 @@ export const zhCnConfig = {
battleMessageUiHandler: battleMessageUiHandler,
berry: berry,
voucher: voucher,
biome: biome,
};

View File

@ -0,0 +1,40 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
export const biome: SimpleTranslationEntries = {
"unknownLocation": "Somewhere you can\'t remember",
"TOWN": "Town",
"PLAINS": "Plains",
"GRASS": "Grassy Field",
"TALL_GRASS": "Tall Grass",
"METROPOLIS": "Metropolis",
"FOREST": "Forest",
"SEA": "Sea",
"SWAMP": "Swamp",
"BEACH": "Beach",
"LAKE": "Lake",
"SEABED": "Seabed",
"MOUNTAIN": "Mountain",
"BADLANDS": "Badlands",
"CAVE": "Cave",
"DESERT": "Desert",
"ICE_CAVE": "Ice Cave",
"MEADOW": "Meadow",
"POWER_PLANT": "Power Plant",
"VOLCANO": "Volcano",
"GRAVEYARD": "Graveyard",
"DOJO": "Dojo",
"FACTORY": "Factory",
"RUINS": "Ancient Ruins",
"WASTELAND": "Wasteland",
"ABYSS": "Abyss",
"SPACE": "Space",
"CONSTRUCTION_SITE": "Construction Site",
"JUNGLE": "Jungle",
"FAIRY_CAVE": "Fairy Cave",
"TEMPLE": "Temple",
"SLUM": "Slum",
"SNOWY_FOREST": "Snowy Forest",
"ISLAND": "Island",
"LABORATORY": "Laboratory",
"END": "???",
} as const;

View File

@ -21,6 +21,7 @@ import { weather } from "./weather";
import { battleMessageUiHandler } from "./battle-message-ui-handler";
import { berry } from "./berry";
import { voucher } from "./voucher";
import { biome } from "./biome";
export const zhTWConfig = {
ability: ability,
@ -48,4 +49,5 @@ export const zhTWConfig = {
battleMessageUiHandler: battleMessageUiHandler,
berry: berry,
voucher: voucher,
biome: biome,
};

View File

@ -61,7 +61,7 @@ import { Abilities } from "./data/enums/abilities";
import * as Overrides from "./overrides";
import { TextStyle, addTextObject } from "./ui/text";
import { Type } from "./data/type";
import { MoveUsedEvent } from "./battle-scene-events";
import { MoveUsedEvent, TurnEndEvent, TurnInitEvent } from "./battle-scene-events";
export class LoginPhase extends Phase {
@ -1719,6 +1719,7 @@ export class TurnInitPhase extends FieldPhase {
super.start();
//this.scene.pushPhase(new MoveAnimTestPhase(this.scene));
this.scene.eventTarget.dispatchEvent(new TurnInitEvent());
this.scene.getField().forEach((pokemon, i) => {
if (pokemon?.isActive()) {
@ -2252,6 +2253,7 @@ export class TurnEndPhase extends FieldPhase {
super.start();
this.scene.currentBattle.incrementTurn(this.scene);
this.scene.eventTarget.dispatchEvent(new TurnEndEvent(this.scene.currentBattle.turn));
const handlePokemon = (pokemon: Pokemon) => {
pokemon.lapseTags(BattlerTagLapseType.TURN_END);
@ -2644,8 +2646,14 @@ export class MoveEffectPhase extends PokemonPhase {
constructor(scene: BattleScene, battlerIndex: BattlerIndex, targets: BattlerIndex[], move: PokemonMove) {
super(scene, battlerIndex);
this.move = move;
// In double battles, if the right Pokemon selects a spread move and the left Pokemon dies
// with no party members available to switch in, then the right Pokemon takes the index
// of the left Pokemon and gets hit unless this is checked.
if (targets.includes(battlerIndex) && this.move.getMove().moveTarget === MoveTarget.ALL_NEAR_OTHERS) {
const i = targets.indexOf(battlerIndex);
targets.splice(i,i+1);
}
this.targets = targets;
}

View File

@ -161,6 +161,7 @@ declare module "i18next" {
battleMessageUiHandler: SimpleTranslationEntries;
berry: BerryTranslationEntries;
voucher: SimpleTranslationEntries;
biome: SimpleTranslationEntries;
};
}
}

View File

@ -1627,7 +1627,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
this.canCycleShiny = !!(dexEntry.caughtAttr & DexAttr.NON_SHINY && dexEntry.caughtAttr & DexAttr.SHINY);
this.canCycleGender = !!(dexEntry.caughtAttr & DexAttr.MALE && dexEntry.caughtAttr & DexAttr.FEMALE);
this.canCycleAbility = [ abilityAttr & AbilityAttr.ABILITY_1, (abilityAttr & AbilityAttr.ABILITY_2) && species.ability2, abilityAttr & AbilityAttr.ABILITY_HIDDEN ].filter(a => a).length > 1;
this.canCycleForm = species.forms.filter(f => !f.formKey || !pokemonFormChanges[species.speciesId]?.find(fc => fc.formKey))
this.canCycleForm = species.forms.filter(f => f.isStarterSelectable || !pokemonFormChanges[species.speciesId]?.find(fc => fc.formKey))
.map((_, f) => dexEntry.caughtAttr & this.scene.gameData.getFormAttr(f)).filter(f => f).length > 1;
this.canCycleNature = this.scene.gameData.getNaturesForAttr(dexEntry.natureAttr).length > 1;
this.canCycleVariant = shiny && [ dexEntry.caughtAttr & DexAttr.DEFAULT_VARIANT, dexEntry.caughtAttr & DexAttr.VARIANT_2, dexEntry.caughtAttr & DexAttr.VARIANT_3].filter(v => v).length > 1;