From f7d8c7fd161d92c2d26efe2c21273580f11d6777 Mon Sep 17 00:00:00 2001 From: AJ Fontaine Date: Sat, 3 Aug 2024 15:12:18 -0400 Subject: [PATCH 01/19] Adjust trainer teams --- src/data/trainer-config.ts | 78 +++++++++++++++++++------------------- 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/src/data/trainer-config.ts b/src/data/trainer-config.ts index 4f3481b27ac..54aa566d64c 100644 --- a/src/data/trainer-config.ts +++ b/src/data/trainer-config.ts @@ -893,41 +893,41 @@ export const signatureSpecies: SignatureSpecies = { JANINE: [Species.VENONAT, Species.SPINARAK, Species.ZUBAT], SABRINA: [Species.ABRA, Species.MR_MIME, Species.ESPEON], BLAINE: [Species.GROWLITHE, Species.PONYTA, Species.MAGMAR], - GIOVANNI: [Species.SANDILE, Species.MURKROW, Species.NIDORAN_M, Species.NIDORAN_F], + GIOVANNI: [Species.DIGLETT, Species.NIDORAN_M, Species.NIDOQUEEN, Species.RHYHORN], FALKNER: [Species.PIDGEY, Species.HOOTHOOT, Species.DODUO], - BUGSY: [Species.SCYTHER, Species.HERACROSS, Species.SHUCKLE, Species.PINSIR], - WHITNEY: [Species.GIRAFARIG, Species.MILTANK], + BUGSY: [Species.SCYTHER, Species.YANMA, Species.PINECO], + WHITNEY: [Species.AIPOM, Species.CLEFAIRY, Species.MILTANK], MORTY: [Species.GASTLY, Species.MISDREAVUS, Species.SABLEYE], - CHUCK: [Species.POLIWRATH, Species.MANKEY], - JASMINE: [Species.MAGNEMITE, Species.STEELIX], + CHUCK: [Species.POLIWRATH, Species.MANKEY, Species.HITMONTOP], + JASMINE: [Species.SKARMORY, Species.MAGNEMITE, Species.STEELIX], PRYCE: [Species.SEEL, Species.SWINUB], CLAIR: [Species.DRATINI, Species.HORSEA, Species.GYARADOS], ROXANNE: [Species.GEODUDE, Species.NOSEPASS], - BRAWLY: [Species.MACHOP, Species.MAKUHITA], + BRAWLY: [Species.MACHOP, Species.MEDITITE, Species.MAKUHITA], WATTSON: [Species.MAGNEMITE, Species.VOLTORB, Species.ELECTRIKE], FLANNERY: [Species.SLUGMA, Species.TORKOAL, Species.NUMEL], - NORMAN: [Species.SLAKOTH, Species.SPINDA, Species.CHANSEY, Species.KANGASKHAN], + NORMAN: [Species.SLAKOTH, Species.SPINDA, Species.ZIGZAGOON], WINONA: [Species.SWABLU, Species.WINGULL, Species.TROPIUS, Species.SKARMORY], TATE: [Species.SOLROCK, Species.NATU, Species.CHIMECHO, Species.GALLADE], LIZA: [Species.LUNATONE, Species.SPOINK, Species.BALTOY, Species.GARDEVOIR], - JUAN: [Species.HORSEA, Species.BARBOACH, Species.SPHEAL, Species.RELICANTH], - ROARK: [Species.CRANIDOS, Species.LARVITAR, Species.GEODUDE], - GARDENIA: [Species.ROSELIA, Species.TANGELA, Species.TURTWIG], - MAYLENE: [Species.LUCARIO, Species.MEDITITE, Species.CHIMCHAR], - CRASHER_WAKE: [Species.BUIZEL, Species.MAGIKARP, Species.PIPLUP], - FANTINA: [Species.MISDREAVUS, Species.DRIFLOON, Species.SPIRITOMB], - BYRON: [Species.SHIELDON, Species.BRONZOR, Species.AGGRON], + JUAN: [Species.HORSEA, Species.BARBOACH, Species.SPHEAL, Species.CORPHISH], + ROARK: [Species.CRANIDOS, Species.GEODUDE, Species.LARVITAR], + GARDENIA: [Species.ROSELIA, Species.CHERUBI, Species.TURTWIG], + MAYLENE: [Species.LUCARIO, Species.MEDITITE, Species.CROAGUNK], + CRASHER_WAKE: [Species.BUIZEL, Species.MAGIKARP, Species.WOOPER], + FANTINA: [Species.MISDREAVUS, Species.DRIFLOON, Species.DUSKULL], + BYRON: [Species.SHIELDON, Species.BRONZOR, Species.ARON], CANDICE: [Species.SNEASEL, Species.SNOVER, Species.SNORUNT], - VOLKNER: [Species.SHINX, Species.CHINCHOU, Species.ROTOM], - CILAN: [Species.PANSAGE, Species.COTTONEE, Species.PETILIL], + VOLKNER: [Species.SHINX, Species.JOLTEON, Species.REMORAID, Species.ELECTABUZZ], + CILAN: [Species.PANSAGE, Species.FERROSEED, Species.MARACTUS], CHILI: [Species.PANSEAR, Species.DARUMAKA, Species.HEATMOR], - CRESS: [Species.PANPOUR, Species.BASCULIN, Species.TYMPOLE], - CHEREN: [Species.LILLIPUP, Species.MINCCINO, Species.PATRAT], - LENORA: [Species.KANGASKHAN, Species.DEERLING, Species.AUDINO], - ROXIE: [Species.VENIPEDE, Species.TRUBBISH, Species.SKORUPI], - BURGH: [Species.SEWADDLE, Species.SHELMET, Species.KARRABLAST], + CRESS: [Species.PANPOUR, Species.DUCKLETT, Species.BASCULIN], + CHEREN: [Species.LILLIPUP, Species.MINCCINO, Species.PIDOVE], + LENORA: [Species.PATRAT, Species.DEERLING, Species.AUDINO], + ROXIE: [Species.VENIPEDE, Species.TRUBBISH, Species.KOFFING], + BURGH: [Species.SEWADDLE, Species.DWEBBLE, Species.SHELMET, Species.KARRABLAST], ELESA: [Species.EMOLGA, Species.BLITZLE, Species.JOLTIK], - CLAY: [Species.DRILBUR, Species.SANDILE, Species.GOLETT], + CLAY: [Species.DRILBUR, Species.TYMPOLE, Species.GOLETT], SKYLA: [Species.DUCKLETT, Species.WOOBAT, Species.RUFFLET], BRYCEN: [Species.CRYOGONAL, Species.VANILLITE, Species.CUBCHOO], DRAYDEN: [Species.DRUDDIGON, Species.AXEW, Species.DEINO], @@ -936,30 +936,30 @@ export const signatureSpecies: SignatureSpecies = { GRANT: [Species.AMAURA, Species.TYRUNT], KORRINA: [Species.HAWLUCHA, Species.LUCARIO, Species.MIENFOO], RAMOS: [Species.SKIDDO, Species.HOPPIP, Species.BELLSPROUT], - CLEMONT: [Species.HELIOPTILE, Species.MAGNEMITE, Species.EMOLGA], + CLEMONT: [Species.HELIOPTILE, Species.MAGNEMITE, Species.ROTOM], VALERIE: [Species.SYLVEON, Species.MAWILE, Species.MR_MIME], OLYMPIA: [Species.ESPURR, Species.SIGILYPH, Species.SLOWKING], WULFRIC: [Species.BERGMITE, Species.SNOVER, Species.CRYOGONAL], MILO: [Species.GOSSIFLEUR, Species.APPLIN, Species.BOUNSWEET], NESSA: [Species.CHEWTLE, Species.ARROKUDA, Species.WIMPOD], - KABU: [Species.SIZZLIPEDE, Species.VULPIX, Species.TORKOAL], - BEA: [Species.GALAR_FARFETCHD, Species.MACHOP, Species.CLOBBOPUS], - ALLISTER: [Species.GALAR_YAMASK, Species.GALAR_CORSOLA, Species.GASTLY], - OPAL: [Species.MILCERY, Species.TOGETIC, Species.GALAR_WEEZING], + KABU: [Species.SIZZLIPEDE, Species.GROWLITHE, Species.TORKOAL], + BEA: [Species.GALAR_FARFETCHD, Species.FALINKS, Species.CLOBBOPUS], + ALLISTER: [Species.GALAR_YAMASK, Species.GALAR_CORSOLA, Species.SINISTEA], + OPAL: [Species.MILCERY, Species.TOGETIC, Species.SPRITZEE, Species.GALAR_WEEZING], BEDE: [Species.HATENNA, Species.GALAR_PONYTA, Species.GARDEVOIR], GORDIE: [Species.ROLYCOLY, Species.STONJOURNER, Species.BINACLE], MELONY: [Species.SNOM, Species.GALAR_DARUMAKA, Species.GALAR_MR_MIME], PIERS: [Species.GALAR_ZIGZAGOON, Species.SCRAGGY, Species.INKAY], MARNIE: [Species.IMPIDIMP, Species.PURRLOIN, Species.MORPEKO], - RAIHAN: [Species.DURALUDON, Species.TURTONATOR, Species.GOOMY], - KATY: [Species.NYMBLE, Species.TAROUNTULA, Species.HERACROSS], - BRASSIUS: [Species.SMOLIV, Species.SHROOMISH, Species.ODDISH], - IONO: [Species.TADBULB, Species.WATTREL, Species.VOLTORB], - KOFU: [Species.VELUZA, Species.WIGLETT, Species.WINGULL], + RAIHAN: [Species.DURALUDON, Species.TRAPINCH, Species.TURTONATOR], + KATY: [Species.NYMBLE, Species.TAROUNTULA, Species.FIDOUGH], + BRASSIUS: [Species.SMOLIV, Species.BRAMBLIN, Species.BONSLY], + IONO: [Species.TADBULB, Species.WATTREL, Species.MISDREAVUS], + KOFU: [Species.VELUZA, Species.WIGLETT, Species.CRABRAWLER], LARRY: [Species.STARLY, Species.DUNSPARCE, Species.KOMALA], - RYME: [Species.GREAVARD, Species.SHUPPET, Species.MIMIKYU], - TULIP: [Species.GIRAFARIG, Species.FLITTLE, Species.RALTS], - GRUSHA: [Species.CETODDLE, Species.ALOLA_VULPIX, Species.CUBCHOO], + RYME: [Species.GREAVARD, Species.SHUPPET, Species.MIMIKYU, Species.TOXEL], + TULIP: [Species.GIRAFARIG, Species.FLITTLE, Species.FLABEBE], + GRUSHA: [Species.CETODDLE, Species.ALOLA_VULPIX, Species.CUBCHOO, Species.SWABLU], LORELEI: [Species.JYNX, [Species.SLOWBRO, Species.GALAR_SLOWBRO], Species.LAPRAS, [Species.ALOLA_SANDSLASH, Species.CLOYSTER]], BRUNO: [Species.MACHAMP, Species.HITMONCHAN, Species.HITMONLEE, [Species.ALOLA_GOLEM, Species.GOLEM]], AGATHA: [Species.GENGAR, [Species.ARBOK, Species.WEEZING], Species.CROBAT, Species.ALOLA_MAROWAK], @@ -990,8 +990,8 @@ export const signatureSpecies: SignatureSpecies = { KAHILI: [[Species.BRAVIARY, Species.MANDIBUZZ], Species.HAWLUCHA, Species.ORICORIO, Species.TOUCANNON], MARNIE_ELITE: [Species.MORPEKO, Species.LIEPARD, [Species.TOXICROAK, Species.SCRAFTY], Species.GRIMMSNARL], NESSA_ELITE: [Species.GOLISOPOD, [Species.PELIPPER, Species.QUAGSIRE], Species.TOXAPEX, Species.DREDNAW], - BEA_ELITE: [Species.HAWLUCHA, [Species.GRAPPLOCT, Species.SIRFETCHD], Species.FALINKS, Species.MACHAMP], - ALLISTER_ELITE:[Species.DUSKNOIR, [Species.POLTEAGEIST, Species.RUNERIGUS], Species.CURSOLA, Species.GENGAR], + BEA_ELITE: [[Species.HAWLUCHA, Species.MACHAMP], Species.GRAPPLOCT, Species.SIRFETCHD, Species.FALINKS], + ALLISTER_ELITE:[[Species.DUSKNOIR, Species.GENGAR], Species.POLTEAGEIST, Species.RUNERIGUS, Species.CURSOLA], RAIHAN_ELITE: [Species.GOODRA, [Species.TORKOAL, Species.TURTONATOR], Species.FLYGON, Species.ARCHALUDON], RIKA: [Species.WHISCASH, [Species.DONPHAN, Species.DUGTRIO], Species.CAMERUPT, Species.CLODSIRE], POPPY: [Species.COPPERAJAH, Species.BRONZONG, Species.CORVIKNIGHT, Species.TINKATON], @@ -1229,7 +1229,7 @@ export const trainerConfigs: TrainerConfigs = { [TrainerType.JANINE]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["JANINE"],false, Type.POISON).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), [TrainerType.SABRINA]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["SABRINA"],false, Type.PSYCHIC).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), [TrainerType.BLAINE]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["BLAINE"],true, Type.FIRE).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), - [TrainerType.GIOVANNI]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["GIOVANNI"],true, Type.DARK).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), + [TrainerType.GIOVANNI]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["GIOVANNI"],true, Type.GROUND).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), [TrainerType.FALKNER]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["FALKNER"],true, Type.FLYING).setBattleBgm("battle_johto_gym").setMixedBattleBgm("battle_johto_gym"), [TrainerType.BUGSY]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["BUGSY"],true, Type.BUG).setBattleBgm("battle_johto_gym").setMixedBattleBgm("battle_johto_gym"), [TrainerType.WHITNEY]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["WHITNEY"],false, Type.NORMAL).setBattleBgm("battle_johto_gym").setMixedBattleBgm("battle_johto_gym"), @@ -1332,7 +1332,7 @@ export const trainerConfigs: TrainerConfigs = { [TrainerType.RAIHAN_ELITE]: new TrainerConfig(++t).setName("Raihan").initForEliteFour(signatureSpecies["RAIHAN_ELITE"],true, Type.DRAGON).setMixedBattleBgm("battle_galar_elite"), [TrainerType.RIKA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["RIKA"],false, Type.GROUND).setMixedBattleBgm("battle_paldea_elite"), [TrainerType.POPPY]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["POPPY"],false, Type.STEEL).setMixedBattleBgm("battle_paldea_elite"), - [TrainerType.LARRY_ELITE]: new TrainerConfig(++t).setName("Larry").initForEliteFour(signatureSpecies["LARRY_ELITE"],true, Type.NORMAL, Type.FLYING).setMixedBattleBgm("battle_paldea_elite"), + [TrainerType.LARRY_ELITE]: new TrainerConfig(++t).setName("Larry").initForEliteFour(signatureSpecies["LARRY_ELITE"],true, Type.FLYING).setMixedBattleBgm("battle_paldea_elite"), [TrainerType.HASSEL]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["HASSEL"],true, Type.DRAGON).setMixedBattleBgm("battle_paldea_elite"), [TrainerType.CRISPIN]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["CRISPIN"],true, Type.FIRE).setMixedBattleBgm("battle_bb_elite"), [TrainerType.AMARYS]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["AMARYS"],false, Type.STEEL).setMixedBattleBgm("battle_bb_elite"), From f176fb4498e04a9a7d3f820646399bb77bb0d9e9 Mon Sep 17 00:00:00 2001 From: AJ Fontaine Date: Sat, 3 Aug 2024 16:10:58 -0400 Subject: [PATCH 02/19] Added Koga as Gym Leader --- src/battle.ts | 2 +- src/data/biomes.ts | 12 ++++++++---- src/data/challenge.ts | 2 +- src/data/dialogue.ts | 19 +++++++++++++++---- src/data/trainer-config.ts | 9 +++++++-- src/enums/trainer-type.ts | 3 ++- src/locales/de/dialogue.ts | 11 +++++++++++ src/locales/en/dialogue.ts | 11 +++++++++++ src/locales/es/dialogue.ts | 11 +++++++++++ src/locales/fr/dialogue.ts | 22 ++++++++++++++++++++++ src/locales/it/dialogue.ts | 11 +++++++++++ src/locales/pt_BR/dialogue.ts | 22 ++++++++++++++++++++++ src/locales/zh_CN/dialogue.ts | 11 +++++++++++ src/locales/zh_TW/dialogue.ts | 11 +++++++++++ 14 files changed, 144 insertions(+), 13 deletions(-) diff --git a/src/battle.ts b/src/battle.ts index cbe6dee1a4a..29b77db8ac7 100644 --- a/src/battle.ts +++ b/src/battle.ts @@ -501,7 +501,7 @@ export const classicFixedBattles: FixedBattleConfigs = { [182]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) .setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.LORELEI, TrainerType.WILL, TrainerType.SIDNEY, TrainerType.AARON, TrainerType.SHAUNTAL, TrainerType.MALVA, [ TrainerType.HALA, TrainerType.MOLAYNE ], TrainerType.MARNIE_ELITE, TrainerType.RIKA, TrainerType.CRISPIN ])), [184]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(182) - .setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.BRUNO, TrainerType.KOGA, TrainerType.PHOEBE, TrainerType.BERTHA, TrainerType.MARSHAL, TrainerType.SIEBOLD, TrainerType.OLIVIA, TrainerType.NESSA_ELITE, TrainerType.POPPY, TrainerType.AMARYS ])), + .setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.BRUNO, TrainerType.KOGA_ELITE, TrainerType.PHOEBE, TrainerType.BERTHA, TrainerType.MARSHAL, TrainerType.SIEBOLD, TrainerType.OLIVIA, TrainerType.NESSA_ELITE, TrainerType.POPPY, TrainerType.AMARYS ])), [186]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(182) .setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.AGATHA, TrainerType.BRUNO, TrainerType.GLACIA, TrainerType.FLINT, TrainerType.GRIMSLEY, TrainerType.WIKSTROM, TrainerType.ACEROLA, [ TrainerType.BEA_ELITE, TrainerType.ALLISTER_ELITE ], TrainerType.LARRY_ELITE, TrainerType.LACEY ])), [188]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(182) diff --git a/src/data/biomes.ts b/src/data/biomes.ts index 479e0994cb6..6bcc3a41ce4 100644 --- a/src/data/biomes.ts +++ b/src/data/biomes.ts @@ -1705,7 +1705,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { [BiomePoolTier.RARE]: [ TrainerType.BLACK_BELT ], [BiomePoolTier.SUPER_RARE]: [], [BiomePoolTier.ULTRA_RARE]: [], - [BiomePoolTier.BOSS]: [ TrainerType.JANINE, TrainerType.ROXIE ], + [BiomePoolTier.BOSS]: [ TrainerType.JANINE, TrainerType.KOGA ], [BiomePoolTier.BOSS_RARE]: [], [BiomePoolTier.BOSS_SUPER_RARE]: [], [BiomePoolTier.BOSS_ULTRA_RARE]: [] @@ -1958,7 +1958,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { [BiomePoolTier.RARE]: [], [BiomePoolTier.SUPER_RARE]: [], [BiomePoolTier.ULTRA_RARE]: [], - [BiomePoolTier.BOSS]: [ TrainerType.PIERS ], + [BiomePoolTier.BOSS]: [ TrainerType.PIERS, TrainerType.ROXIE ], [BiomePoolTier.BOSS_RARE]: [], [BiomePoolTier.BOSS_SUPER_RARE]: [], [BiomePoolTier.BOSS_ULTRA_RARE]: [] @@ -7331,6 +7331,10 @@ export function initBiomes() { [ Biome.SWAMP, BiomePoolTier.BOSS ] ] ], + [ TrainerType.KOGA, [ + [ Biome.SWAMP, BiomePoolTier.BOSS ] + ] + ], [ TrainerType.SABRINA, [ [ Biome.RUINS, BiomePoolTier.BOSS ] ] @@ -7464,7 +7468,7 @@ export function initBiomes() { ] ], [ TrainerType.ROXIE, [ - [ Biome.SWAMP, BiomePoolTier.BOSS ] + [ Biome.SLUM, BiomePoolTier.BOSS ] ] ], [ TrainerType.BURGH, [ @@ -7612,7 +7616,7 @@ export function initBiomes() { [ TrainerType.AGATHA, [] ], [ TrainerType.LANCE, [] ], [ TrainerType.WILL, [] ], - [ TrainerType.KOGA, [] ], + [ TrainerType.KOGA_ELITE, [] ], [ TrainerType.KAREN, [] ], [ TrainerType.SIDNEY, [] ], [ TrainerType.PHOEBE, [] ], diff --git a/src/data/challenge.ts b/src/data/challenge.ts index 701183e1733..69349705d66 100644 --- a/src/data/challenge.ts +++ b/src/data/challenge.ts @@ -452,7 +452,7 @@ export class SingleGenerationChallenge extends Challenge { trainerTypes = [ TrainerType.LORELEI, TrainerType.WILL, TrainerType.SIDNEY, TrainerType.AARON, TrainerType.SHAUNTAL, TrainerType.MALVA, Utils.randSeedItem([ TrainerType.HALA, TrainerType.MOLAYNE ]),TrainerType.MARNIE_ELITE, TrainerType.RIKA ]; break; case 184: - trainerTypes = [ TrainerType.BRUNO, TrainerType.KOGA, TrainerType.PHOEBE, TrainerType.BERTHA, TrainerType.MARSHAL, TrainerType.SIEBOLD, TrainerType.OLIVIA, TrainerType.NESSA_ELITE, TrainerType.POPPY ]; + trainerTypes = [ TrainerType.BRUNO, TrainerType.KOGA_ELITE, TrainerType.PHOEBE, TrainerType.BERTHA, TrainerType.MARSHAL, TrainerType.SIEBOLD, TrainerType.OLIVIA, TrainerType.NESSA_ELITE, TrainerType.POPPY ]; break; case 186: trainerTypes = [ TrainerType.AGATHA, TrainerType.BRUNO, TrainerType.GLACIA, TrainerType.FLINT, TrainerType.GRIMSLEY, TrainerType.WIKSTROM, TrainerType.ACEROLA, Utils.randSeedItem([TrainerType.BEA_ELITE,TrainerType.ALLISTER_ELITE]), TrainerType.LARRY_ELITE ]; diff --git a/src/data/dialogue.ts b/src/data/dialogue.ts index ec3358b1a77..18a015e3549 100644 --- a/src/data/dialogue.ts +++ b/src/data/dialogue.ts @@ -753,6 +753,17 @@ export const trainerTypeDialogue: TrainerTypeDialogue = { "dialogue:janine.defeat.3", ] }, + [TrainerType.KOGA]: { + encounter: [ + "dialogue:koga.encounter.1" + ], + victory: [ + "dialogue:koga.victory.1" + ], + defeat: [ + "dialogue:koga.defeat.1" + ] + }, [TrainerType.SABRINA]: { encounter: [ "dialogue:sabrina.encounter.1", @@ -1482,15 +1493,15 @@ export const trainerTypeDialogue: TrainerTypeDialogue = { "dialogue:bugsy.defeat.1" ] }, - [TrainerType.KOGA]: { + [TrainerType.KOGA_ELITE]: { encounter: [ - "dialogue:koga.encounter.1" + "dialogue:koga_elite.encounter.1" ], victory: [ - "dialogue:koga.victory.1" + "dialogue:koga_elite.victory.1" ], defeat: [ - "dialogue:koga.defeat.1" + "dialogue:koga_elite.defeat.1" ] }, [TrainerType.BERTHA]: { diff --git a/src/data/trainer-config.ts b/src/data/trainer-config.ts index 54aa566d64c..562a9d4d2dc 100644 --- a/src/data/trainer-config.ts +++ b/src/data/trainer-config.ts @@ -329,6 +329,9 @@ export class TrainerConfig { case TrainerType.RAIHAN_ELITE: trainerType = TrainerType.RAIHAN; break; + case TrainerType.KOGA_ELITE: + trainerType = TrainerType.KOGA; + break; } return trainerType; @@ -891,6 +894,7 @@ export const signatureSpecies: SignatureSpecies = { LT_SURGE: [Species.VOLTORB, Species.PIKACHU, Species.ELECTABUZZ], ERIKA: [Species.ODDISH, Species.BELLSPROUT, Species.TANGELA, Species.HOPPIP], JANINE: [Species.VENONAT, Species.SPINARAK, Species.ZUBAT], + KOGA: [Species.KOFFING, Species.GRIMER, Species.VENONAT], SABRINA: [Species.ABRA, Species.MR_MIME, Species.ESPEON], BLAINE: [Species.GROWLITHE, Species.PONYTA, Species.MAGMAR], GIOVANNI: [Species.DIGLETT, Species.NIDORAN_M, Species.NIDOQUEEN, Species.RHYHORN], @@ -965,7 +969,7 @@ export const signatureSpecies: SignatureSpecies = { AGATHA: [Species.GENGAR, [Species.ARBOK, Species.WEEZING], Species.CROBAT, Species.ALOLA_MAROWAK], LANCE: [Species.DRAGONITE, Species.GYARADOS, Species.AERODACTYL, Species.ALOLA_EXEGGUTOR], WILL: [Species.XATU, Species.JYNX, [Species.SLOWBRO, Species.SLOWKING], Species.EXEGGUTOR], - KOGA: [[Species.WEEZING, Species.MUK], [Species.VENOMOTH, Species.ARIADOS], Species.CROBAT, Species.TENTACRUEL], + KOGA_ELITE: [Species.MUK, Species.VENOMOTH, [Species.ARIADOS, Species.FORRETRESS], Species.CROBAT], KAREN: [Species.UMBREON, Species.HONCHKROW, Species.HOUNDOOM, Species.WEAVILE], SIDNEY: [[Species.SHIFTRY, Species.CACTURNE], [Species.SHARPEDO, Species.CRAWDAUNT], Species.ABSOL, Species.MIGHTYENA], PHOEBE: [Species.SABLEYE, Species.DUSKNOIR, Species.BANETTE, [Species.MISMAGIUS, Species.DRIFBLIM]], @@ -1227,6 +1231,7 @@ export const trainerConfigs: TrainerConfigs = { [TrainerType.LT_SURGE]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["LT_SURGE"],true, Type.ELECTRIC).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), [TrainerType.ERIKA]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["ERIKA"],false, Type.GRASS).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), [TrainerType.JANINE]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["JANINE"],false, Type.POISON).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), + [TrainerType.KOGA]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["KOGA"],false, Type.POISON).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), [TrainerType.SABRINA]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["SABRINA"],false, Type.PSYCHIC).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), [TrainerType.BLAINE]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["BLAINE"],true, Type.FIRE).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), [TrainerType.GIOVANNI]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["GIOVANNI"],true, Type.GROUND).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), @@ -1302,7 +1307,7 @@ export const trainerConfigs: TrainerConfigs = { [TrainerType.AGATHA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["AGATHA"], false,Type.GHOST).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), [TrainerType.LANCE]: new TrainerConfig(++t).setName("Lance").initForEliteFour(signatureSpecies["LANCE"],true, Type.DRAGON).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), [TrainerType.WILL]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["WILL"],true, Type.PSYCHIC).setBattleBgm("battle_johto_gym").setMixedBattleBgm("battle_johto_gym"), - [TrainerType.KOGA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["KOGA"], true, Type.POISON).setBattleBgm("battle_johto_gym").setMixedBattleBgm("battle_johto_gym"), + [TrainerType.KOGA_ELITE]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["KOGA_ELITE"], true, Type.POISON).setBattleBgm("battle_johto_gym").setMixedBattleBgm("battle_johto_gym"), [TrainerType.KAREN]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["KAREN"],false, Type.DARK).setBattleBgm("battle_johto_gym").setMixedBattleBgm("battle_johto_gym"), [TrainerType.SIDNEY]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["SIDNEY"],true, Type.DARK).setMixedBattleBgm("battle_hoenn_elite"), [TrainerType.PHOEBE]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["PHOEBE"],false, Type.GHOST).setMixedBattleBgm("battle_hoenn_elite"), diff --git a/src/enums/trainer-type.ts b/src/enums/trainer-type.ts index 6bd8f567acb..1a4b44ce438 100644 --- a/src/enums/trainer-type.ts +++ b/src/enums/trainer-type.ts @@ -76,6 +76,7 @@ export enum TrainerType { LT_SURGE, ERIKA, JANINE, + KOGA, SABRINA, BLAINE, GIOVANNI, @@ -150,7 +151,7 @@ export enum TrainerType { AGATHA, LANCE, WILL, - KOGA, + KOGA_ELITE, KAREN, SIDNEY, PHOEBE, diff --git a/src/locales/de/dialogue.ts b/src/locales/de/dialogue.ts index 02c497b3182..f458cae205c 100644 --- a/src/locales/de/dialogue.ts +++ b/src/locales/de/dialogue.ts @@ -1474,6 +1474,17 @@ export const PGMdialogue: DialogueTranslationEntries = { 1: "Hast du gelernt, die Techniken der Ninja zu fürchten?" } }, + "koga_elite": { + "encounter": { + 1: "Fwahahahaha! Pokémon sind nicht nur rohe Gewalt - das wirst du bald genug sehen!" + }, + "victory": { + 1: "Ah! Du hast deinen Wert bewiesen!" + }, + "defeat": { + 1: "Hast du gelernt, die Techniken der Ninja zu fürchten?" + } + }, "bertha": { "encounter": { 1: "Nun, würdest du dieser alten Dame zeigen, wie viel du gelernt hast?" diff --git a/src/locales/en/dialogue.ts b/src/locales/en/dialogue.ts index dda8891b788..4ae8eb398d4 100644 --- a/src/locales/en/dialogue.ts +++ b/src/locales/en/dialogue.ts @@ -1420,6 +1420,17 @@ export const PGMdialogue: DialogueTranslationEntries = { } }, "koga": { + "encounter": { + 1: "Fwahahaha! Very well, I shall show you true terror as a ninja master!" + }, + "victory": { + 1: "Humph! You've proven your worth!" + }, + "defeat": { + 1: "Despair to the creeping horror of Poison-type Pokémon!" + } + }, + "koga_elite": { "encounter": { 1: "Fwahahahaha! Pokémon are not merely about brute force--you shall see soon enough!" }, diff --git a/src/locales/es/dialogue.ts b/src/locales/es/dialogue.ts index d19acc3ec0f..31aa883a3d9 100644 --- a/src/locales/es/dialogue.ts +++ b/src/locales/es/dialogue.ts @@ -1417,6 +1417,17 @@ export const PGMdialogue: DialogueTranslationEntries = { } }, "koga": { + "encounter": { + 1: "Fwahahaha! Very well, I shall show you true terror as a ninja master!" + }, + "victory": { + 1: "Humph! You've proven your worth!" + }, + "defeat": { + 1: "Despair to the creeping horror of Poison-type Pokémon!" + } + }, + "koga_elite": { "encounter": { 1: "Fwahahahaha! Pokémon are not merely about brute force--you shall see soon enough!" }, diff --git a/src/locales/fr/dialogue.ts b/src/locales/fr/dialogue.ts index d3ec5f85d5d..9858194c4f4 100644 --- a/src/locales/fr/dialogue.ts +++ b/src/locales/fr/dialogue.ts @@ -1417,6 +1417,17 @@ export const PGMdialogue: DialogueTranslationEntries = { } }, "koga": { + "encounter": { + 1: "Fwahahaha! Very well, I shall show you true terror as a ninja master!" + }, + "victory": { + 1: "Humph! You've proven your worth!" + }, + "defeat": { + 1: "Despair to the creeping horror of Poison-type Pokémon!" + } + }, + "koga_elite": { "encounter": { 1: "Fwahahahaha! Pokémon are not merely about brute force--you shall see soon enough!" }, @@ -3925,6 +3936,17 @@ export const PGFdialogue: DialogueTranslationEntries = { } }, "koga": { + "encounter": { + 1: "Fwahahaha! Very well, I shall show you true terror as a ninja master!" + }, + "victory": { + 1: "Humph! You've proven your worth!" + }, + "defeat": { + 1: "Despair to the creeping horror of Poison-type Pokémon!" + } + }, + "koga_elite": { "encounter": { 1: "Fwahahahaha! Pokémon are not merely about brute force--you shall see soon enough!" }, diff --git a/src/locales/it/dialogue.ts b/src/locales/it/dialogue.ts index 702b550c45a..0d77a70e508 100644 --- a/src/locales/it/dialogue.ts +++ b/src/locales/it/dialogue.ts @@ -1417,6 +1417,17 @@ export const PGMdialogue: DialogueTranslationEntries = { } }, "koga": { + "encounter": { + 1: "Fwahahaha! Very well, I shall show you true terror as a ninja master!" + }, + "victory": { + 1: "Humph! You've proven your worth!" + }, + "defeat": { + 1: "Despair to the creeping horror of Poison-type Pokémon!" + } + }, + "koga_elite": { "encounter": { 1: "Fwahahahaha! Pokémon are not merely about brute force--you shall see soon enough!" }, diff --git a/src/locales/pt_BR/dialogue.ts b/src/locales/pt_BR/dialogue.ts index 3325cf81cf9..74e915b8aba 100644 --- a/src/locales/pt_BR/dialogue.ts +++ b/src/locales/pt_BR/dialogue.ts @@ -1406,6 +1406,17 @@ export const PGMdialogue: DialogueTranslationEntries = { } }, "koga": { + "encounter": { + 1: "Fwahahaha! Very well, I shall show you true terror as a ninja master!" + }, + "victory": { + 1: "Humph! You've proven your worth!" + }, + "defeat": { + 1: "Despair to the creeping horror of Poison-type Pokémon!" + } + }, + "koga_elite": { "encounter": { 1: "Fwahahahaha! Pokémon não são apenas sobre força bruta--você verá em breve!" }, @@ -3717,6 +3728,17 @@ export const PGFdialogue: DialogueTranslationEntries = { } }, "koga": { + "encounter": { + 1: "Fwahahaha! Very well, I shall show you true terror as a ninja master!" + }, + "victory": { + 1: "Humph! You've proven your worth!" + }, + "defeat": { + 1: "Despair to the creeping horror of Poison-type Pokémon!" + } + }, + "koga_elite": { "encounter": { 1: "Fwahahahaha! Pokémon não são apenas sobre força bruta--você verá em breve!" }, diff --git a/src/locales/zh_CN/dialogue.ts b/src/locales/zh_CN/dialogue.ts index 6afbcd71064..2e3fce83c3f 100644 --- a/src/locales/zh_CN/dialogue.ts +++ b/src/locales/zh_CN/dialogue.ts @@ -1380,6 +1380,17 @@ export const PGMdialogue: DialogueTranslationEntries = { } }, "koga": { + "encounter": { + 1: "Fwahahaha! Very well, I shall show you true terror as a ninja master!" + }, + "victory": { + 1: "Humph! You've proven your worth!" + }, + "defeat": { + 1: "Despair to the creeping horror of Poison-type Pokémon!" + } + }, + "koga_elite": { "encounter": { 1: "哇哈哈哈哈!$宝可梦不仅仅是关于蛮力,拭目以待吧!", }, diff --git a/src/locales/zh_TW/dialogue.ts b/src/locales/zh_TW/dialogue.ts index 0823236bc84..c6f8d670973 100644 --- a/src/locales/zh_TW/dialogue.ts +++ b/src/locales/zh_TW/dialogue.ts @@ -1380,6 +1380,17 @@ export const PGMdialogue: DialogueTranslationEntries = { } }, "koga": { + "encounter": { + 1: "Fwahahaha! Very well, I shall show you true terror as a ninja master!" + }, + "victory": { + 1: "Humph! You've proven your worth!" + }, + "defeat": { + 1: "Despair to the creeping horror of Poison-type Pokémon!" + } + }, + "koga_elite": { "encounter": { 1: "哇哈哈哈哈!$寶可夢不僅僅是關於蠻力,拭目以待吧!", }, From 01fae4ebe77b7ad077cd4272f1bd5f3de077fa4d Mon Sep 17 00:00:00 2001 From: AJ Fontaine Date: Sat, 3 Aug 2024 16:39:11 -0400 Subject: [PATCH 03/19] ko dialogue --- src/locales/ko/dialogue.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/locales/ko/dialogue.ts b/src/locales/ko/dialogue.ts index 719b738778d..dbaaa092e0a 100644 --- a/src/locales/ko/dialogue.ts +++ b/src/locales/ko/dialogue.ts @@ -1417,6 +1417,17 @@ export const PGMdialogue: DialogueTranslationEntries = { } }, "koga": { + "encounter": { + 1: "Fwahahaha! Very well, I shall show you true terror as a ninja master!" + }, + "victory": { + 1: "Humph! You've proven your worth!" + }, + "defeat": { + 1: "Despair to the creeping horror of Poison-type Pokémon!" + } + }, + "koga_elite": { "encounter": { 1: "후하하하! 포켓몬은 단순히 강한 것만이 아니다--곧 알려주지!" }, From b6da35a2e6050dc1d825f1f44de89a5db4caef22 Mon Sep 17 00:00:00 2001 From: AJ Fontaine Date: Mon, 5 Aug 2024 15:42:57 -0400 Subject: [PATCH 04/19] Document getRandomTeraModifiers, force off-type tera on some trainers --- src/data/trainer-config.ts | 68 +++++++++++++++++++++++++++----------- 1 file changed, 49 insertions(+), 19 deletions(-) diff --git a/src/data/trainer-config.ts b/src/data/trainer-config.ts index 562a9d4d2dc..558a616aef1 100644 --- a/src/data/trainer-config.ts +++ b/src/data/trainer-config.ts @@ -187,6 +187,7 @@ export class TrainerConfig { public isBoss: boolean = false; public hasStaticParty: boolean = false; public useSameSeedForAllMembers: boolean = false; + public forceTeraOffType: boolean = false; public mixedBattleBgm: string; public battleBgm: string; public encounterBgm: string; @@ -464,6 +465,11 @@ export class TrainerConfig { return this; } + setForceTeraOffType(): TrainerConfig { + this.forceTeraOffType = true; + return this; + } + setMixedBattleBgm(mixedBattleBgm: string): TrainerConfig { this.mixedBattleBgm = mixedBattleBgm; return this; @@ -618,7 +624,7 @@ export class TrainerConfig { this.setVictoryBgm("victory_gym"); this.setGenModifiersFunc(party => { const waveIndex = party[0].scene.currentBattle.waveIndex; - return getRandomTeraModifiers(party, waveIndex >= 100 ? 1 : 0, specialtyTypes.length ? specialtyTypes : null); + return getRandomTeraModifiers(party, waveIndex >= 100 ? 1 : 0, specialtyTypes.length ? specialtyTypes : null, this.forceTeraOffType); }); return this; @@ -674,7 +680,7 @@ export class TrainerConfig { this.setStaticParty(); this.setBattleBgm("battle_unova_elite"); this.setVictoryBgm("victory_gym"); - this.setGenModifiersFunc(party => getRandomTeraModifiers(party, 2, specialtyTypes.length ? specialtyTypes : null)); + this.setGenModifiersFunc(party => getRandomTeraModifiers(party, 2, specialtyTypes.length ? specialtyTypes : null, this.forceTeraOffType)); return this; } @@ -868,11 +874,35 @@ function getSpeciesFilterRandomPartyMemberFunc(speciesFilter: PokemonSpeciesFilt }; } -function getRandomTeraModifiers(party: EnemyPokemon[], count: integer, types?: Type[]): PersistentModifier[] { +/** + * Function to get random Tera modifiers for enemy trainers + * @param party {@linkcode EnemyPokemon} enemy trainer party + * @param count {@linkcode integer} how many Teras you want the trainer to have + * @param types {@linkcode Type} array of types the trainer should Tera to (usually just one) + * @param forceTeraOffType {@linkcode boolean} Whether Trainer should attempt to Terastalize off-type mons + * @returns {@linkcode PersistentModifier} an array of Tera modifiers for the enemy party + */ +function getRandomTeraModifiers(party: EnemyPokemon[], count: integer, types?: Type[], forceTeraOffType?: boolean): PersistentModifier[] { const ret: PersistentModifier[] = []; const partyMemberIndexes = new Array(party.length).fill(null).map((_, i) => i); - for (let t = 0; t < Math.min(count, party.length); t++) { - const randomIndex = Utils.randSeedItem(partyMemberIndexes); + //If "forceTeraOffType" is true, count how many off-type mons to look for + let offTypes = (forceTeraOffType && types.length) ? party.filter((p) => { + return types?.filter(t => p.isOfType(t)).length === 0; + }).length : 0; + const teras = Math.max(offTypes, count); + //Apply teras until you run out of party members or expected teras + for (let t = 0; t < Math.min(teras, party.length); t++) { + const randomIndex = offTypes > 0 ? + //If there's still an off-type to look for, find the first party index where the mon is not of the specialty type(s) + party.findIndex((p, i) => { + if (partyMemberIndexes.includes(i) && types?.filter(t => p.isOfType(t)).length === 0) { + --offTypes; + return true; + } + return false; + }) + //Otherwise, get a random party member index + : Utils.randSeedItem(partyMemberIndexes); partyMemberIndexes.splice(partyMemberIndexes.indexOf(randomIndex), 1); ret.push(modifierTypes.TERA_SHARD().generateType(null, [Utils.randSeedItem(types ? types : party[randomIndex].getTypes())]).withIdFromFunc(modifierTypes.TERA_SHARD).newModifier(party[randomIndex]) as PersistentModifier); } @@ -900,7 +930,7 @@ export const signatureSpecies: SignatureSpecies = { GIOVANNI: [Species.DIGLETT, Species.NIDORAN_M, Species.NIDOQUEEN, Species.RHYHORN], FALKNER: [Species.PIDGEY, Species.HOOTHOOT, Species.DODUO], BUGSY: [Species.SCYTHER, Species.YANMA, Species.PINECO], - WHITNEY: [Species.AIPOM, Species.CLEFAIRY, Species.MILTANK], + WHITNEY: [Species.CLEFAIRY, Species.MILTANK], MORTY: [Species.GASTLY, Species.MISDREAVUS, Species.SABLEYE], CHUCK: [Species.POLIWRATH, Species.MANKEY, Species.HITMONTOP], JASMINE: [Species.SKARMORY, Species.MAGNEMITE, Species.STEELIX], @@ -1237,7 +1267,7 @@ export const trainerConfigs: TrainerConfigs = { [TrainerType.GIOVANNI]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["GIOVANNI"],true, Type.GROUND).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), [TrainerType.FALKNER]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["FALKNER"],true, Type.FLYING).setBattleBgm("battle_johto_gym").setMixedBattleBgm("battle_johto_gym"), [TrainerType.BUGSY]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["BUGSY"],true, Type.BUG).setBattleBgm("battle_johto_gym").setMixedBattleBgm("battle_johto_gym"), - [TrainerType.WHITNEY]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["WHITNEY"],false, Type.NORMAL).setBattleBgm("battle_johto_gym").setMixedBattleBgm("battle_johto_gym"), + [TrainerType.WHITNEY]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["WHITNEY"],false, Type.NORMAL).setBattleBgm("battle_johto_gym").setMixedBattleBgm("battle_johto_gym").setForceTeraOffType(), [TrainerType.MORTY]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["MORTY"],true, Type.GHOST).setBattleBgm("battle_johto_gym").setMixedBattleBgm("battle_johto_gym"), [TrainerType.CHUCK]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["CHUCK"],true, Type.FIGHTING).setBattleBgm("battle_johto_gym").setMixedBattleBgm("battle_johto_gym"), [TrainerType.JASMINE]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["JASMINE"],false, Type.STEEL).setBattleBgm("battle_johto_gym").setMixedBattleBgm("battle_johto_gym"), @@ -1259,7 +1289,7 @@ export const trainerConfigs: TrainerConfigs = { [TrainerType.FANTINA]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["FANTINA"],false, Type.GHOST).setBattleBgm("battle_sinnoh_gym").setMixedBattleBgm("battle_sinnoh_gym"), [TrainerType.BYRON]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["BYRON"],true, Type.STEEL).setBattleBgm("battle_sinnoh_gym").setMixedBattleBgm("battle_sinnoh_gym"), [TrainerType.CANDICE]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["CANDICE"],false, Type.ICE).setBattleBgm("battle_sinnoh_gym").setMixedBattleBgm("battle_sinnoh_gym"), - [TrainerType.VOLKNER]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["VOLKNER"],true, Type.ELECTRIC).setBattleBgm("battle_sinnoh_gym").setMixedBattleBgm("battle_sinnoh_gym"), + [TrainerType.VOLKNER]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["VOLKNER"],true, Type.ELECTRIC).setBattleBgm("battle_sinnoh_gym").setMixedBattleBgm("battle_sinnoh_gym").setForceTeraOffType(), [TrainerType.CILAN]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["CILAN"],true, Type.GRASS).setMixedBattleBgm("battle_unova_gym"), [TrainerType.CHILI]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["CHILI"],true, Type.FIRE).setMixedBattleBgm("battle_unova_gym"), [TrainerType.CRESS]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["CRESS"],true, Type.WATER).setMixedBattleBgm("battle_unova_gym"), @@ -1293,14 +1323,14 @@ export const trainerConfigs: TrainerConfigs = { [TrainerType.PIERS]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["PIERS"],true, Type.DARK).setHasDouble("piers_marnie_double").setDoubleTrainerType(TrainerType.MARNIE).setDoubleTitle("gym_leader_double").setMixedBattleBgm("battle_galar_gym"), [TrainerType.MARNIE]: new TrainerConfig(++t).setName("Marnie").initForGymLeader(signatureSpecies["MARNIE"],false, Type.DARK).setHasDouble("marnie_piers_double").setDoubleTrainerType(TrainerType.PIERS).setDoubleTitle("gym_leader_double").setMixedBattleBgm("battle_galar_gym"), [TrainerType.RAIHAN]: new TrainerConfig(++t).setName("Raihan").initForGymLeader(signatureSpecies["RAIHAN"],true, Type.DRAGON).setMixedBattleBgm("battle_galar_gym"), - [TrainerType.KATY]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["KATY"],false, Type.BUG).setMixedBattleBgm("battle_paldea_gym"), - [TrainerType.BRASSIUS]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["BRASSIUS"],true, Type.GRASS).setMixedBattleBgm("battle_paldea_gym"), - [TrainerType.IONO]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["IONO"],false, Type.ELECTRIC).setMixedBattleBgm("battle_paldea_gym"), - [TrainerType.KOFU]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["KOFU"],true, Type.WATER).setMixedBattleBgm("battle_paldea_gym"), - [TrainerType.LARRY]: new TrainerConfig(++t).setName("Larry").initForGymLeader(signatureSpecies["LARRY"],true, Type.NORMAL).setMixedBattleBgm("battle_paldea_gym"), - [TrainerType.RYME]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["RYME"],false, Type.GHOST).setMixedBattleBgm("battle_paldea_gym"), - [TrainerType.TULIP]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["TULIP"],false, Type.PSYCHIC).setMixedBattleBgm("battle_paldea_gym"), - [TrainerType.GRUSHA]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["GRUSHA"],true, Type.ICE).setMixedBattleBgm("battle_paldea_gym"), + [TrainerType.KATY]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["KATY"],false, Type.BUG).setMixedBattleBgm("battle_paldea_gym").setForceTeraOffType(), + [TrainerType.BRASSIUS]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["BRASSIUS"],true, Type.GRASS).setMixedBattleBgm("battle_paldea_gym").setForceTeraOffType(), + [TrainerType.IONO]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["IONO"],false, Type.ELECTRIC).setMixedBattleBgm("battle_paldea_gym").setForceTeraOffType(), + [TrainerType.KOFU]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["KOFU"],true, Type.WATER).setMixedBattleBgm("battle_paldea_gym").setForceTeraOffType(), + [TrainerType.LARRY]: new TrainerConfig(++t).setName("Larry").initForGymLeader(signatureSpecies["LARRY"],true, Type.NORMAL).setMixedBattleBgm("battle_paldea_gym").setForceTeraOffType(), + [TrainerType.RYME]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["RYME"],false, Type.GHOST).setMixedBattleBgm("battle_paldea_gym").setForceTeraOffType(), + [TrainerType.TULIP]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["TULIP"],false, Type.PSYCHIC).setMixedBattleBgm("battle_paldea_gym").setForceTeraOffType(), + [TrainerType.GRUSHA]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["GRUSHA"],true, Type.ICE).setMixedBattleBgm("battle_paldea_gym").setForceTeraOffType(), [TrainerType.LORELEI]: new TrainerConfig((t = TrainerType.LORELEI)).initForEliteFour(signatureSpecies["LORELEI"],false, Type.ICE).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), [TrainerType.BRUNO]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["BRUNO"], true, Type.FIGHTING).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), @@ -1315,7 +1345,7 @@ export const trainerConfigs: TrainerConfigs = { [TrainerType.DRAKE]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["DRAKE"],true, Type.DRAGON).setMixedBattleBgm("battle_hoenn_elite"), [TrainerType.AARON]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["AARON"],true, Type.BUG).setBattleBgm("battle_sinnoh_gym").setMixedBattleBgm("battle_sinnoh_gym"), [TrainerType.BERTHA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["BERTHA"],false, Type.GROUND).setBattleBgm("battle_sinnoh_gym").setMixedBattleBgm("battle_sinnoh_gym"), - [TrainerType.FLINT]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["FLINT"],true, Type.FIRE).setBattleBgm("battle_sinnoh_gym").setMixedBattleBgm("battle_sinnoh_gym"), + [TrainerType.FLINT]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["FLINT"],true, Type.FIRE).setBattleBgm("battle_sinnoh_gym").setMixedBattleBgm("battle_sinnoh_gym").setForceTeraOffType(), [TrainerType.LUCIAN]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["LUCIAN"], true,Type.PSYCHIC).setBattleBgm("battle_sinnoh_gym").setMixedBattleBgm("battle_sinnoh_gym"), [TrainerType.SHAUNTAL]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["SHAUNTAL"],false, Type.GHOST).setMixedBattleBgm("battle_unova_elite"), [TrainerType.MARSHAL]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["MARSHAL"],true, Type.FIGHTING).setMixedBattleBgm("battle_unova_elite"), @@ -1341,8 +1371,8 @@ export const trainerConfigs: TrainerConfigs = { [TrainerType.HASSEL]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["HASSEL"],true, Type.DRAGON).setMixedBattleBgm("battle_paldea_elite"), [TrainerType.CRISPIN]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["CRISPIN"],true, Type.FIRE).setMixedBattleBgm("battle_bb_elite"), [TrainerType.AMARYS]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["AMARYS"],false, Type.STEEL).setMixedBattleBgm("battle_bb_elite"), - [TrainerType.LACEY]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["LACEY"],false, Type.FAIRY).setMixedBattleBgm("battle_bb_elite"), - [TrainerType.DRAYTON]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["DRAYTON"],true, Type.DRAGON).setMixedBattleBgm("battle_bb_elite"), + [TrainerType.LACEY]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["LACEY"],false, Type.FAIRY).setMixedBattleBgm("battle_bb_elite").setForceTeraOffType(), + [TrainerType.DRAYTON]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["DRAYTON"],true, Type.DRAGON).setMixedBattleBgm("battle_bb_elite").setForceTeraOffType(), [TrainerType.BLUE]: new TrainerConfig((t = TrainerType.BLUE)).initForChampion(signatureSpecies["BLUE"],true).setBattleBgm("battle_kanto_champion").setMixedBattleBgm("battle_kanto_champion").setHasDouble("blue_red_double").setDoubleTrainerType(TrainerType.RED).setDoubleTitle("champion_double") .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.ALAKAZAM], TrainerSlot.TRAINER, true, p => { From f706113c25ffa8708d04a179377f3c65a49f3a5f Mon Sep 17 00:00:00 2001 From: AJ Fontaine Date: Mon, 5 Aug 2024 16:18:19 -0400 Subject: [PATCH 05/19] More team adjustments --- src/data/trainer-config.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/data/trainer-config.ts b/src/data/trainer-config.ts index 558a616aef1..72bd374506e 100644 --- a/src/data/trainer-config.ts +++ b/src/data/trainer-config.ts @@ -940,12 +940,12 @@ export const signatureSpecies: SignatureSpecies = { BRAWLY: [Species.MACHOP, Species.MEDITITE, Species.MAKUHITA], WATTSON: [Species.MAGNEMITE, Species.VOLTORB, Species.ELECTRIKE], FLANNERY: [Species.SLUGMA, Species.TORKOAL, Species.NUMEL], - NORMAN: [Species.SLAKOTH, Species.SPINDA, Species.ZIGZAGOON], + NORMAN: [Species.SLAKOTH, Species.KECLEON, Species.KANGASKHAN], WINONA: [Species.SWABLU, Species.WINGULL, Species.TROPIUS, Species.SKARMORY], TATE: [Species.SOLROCK, Species.NATU, Species.CHIMECHO, Species.GALLADE], LIZA: [Species.LUNATONE, Species.SPOINK, Species.BALTOY, Species.GARDEVOIR], JUAN: [Species.HORSEA, Species.BARBOACH, Species.SPHEAL, Species.CORPHISH], - ROARK: [Species.CRANIDOS, Species.GEODUDE, Species.LARVITAR], + ROARK: [Species.CRANIDOS, Species.LARVITAR, Species.GEODUDE], GARDENIA: [Species.ROSELIA, Species.CHERUBI, Species.TURTWIG], MAYLENE: [Species.LUCARIO, Species.MEDITITE, Species.CROAGUNK], CRASHER_WAKE: [Species.BUIZEL, Species.MAGIKARP, Species.WOOPER], @@ -955,13 +955,13 @@ export const signatureSpecies: SignatureSpecies = { VOLKNER: [Species.SHINX, Species.JOLTEON, Species.REMORAID, Species.ELECTABUZZ], CILAN: [Species.PANSAGE, Species.FERROSEED, Species.MARACTUS], CHILI: [Species.PANSEAR, Species.DARUMAKA, Species.HEATMOR], - CRESS: [Species.PANPOUR, Species.DUCKLETT, Species.BASCULIN], + CRESS: [Species.PANPOUR, Species.FRILLISH, Species.BASCULIN], CHEREN: [Species.LILLIPUP, Species.MINCCINO, Species.PIDOVE], - LENORA: [Species.PATRAT, Species.DEERLING, Species.AUDINO], + LENORA: [Species.PATRAT, Species.DEERLING, Species.CHANSEY], ROXIE: [Species.VENIPEDE, Species.TRUBBISH, Species.KOFFING], BURGH: [Species.SEWADDLE, Species.DWEBBLE, Species.SHELMET, Species.KARRABLAST], ELESA: [Species.EMOLGA, Species.BLITZLE, Species.JOLTIK], - CLAY: [Species.DRILBUR, Species.TYMPOLE, Species.GOLETT], + CLAY: [Species.DRILBUR, Species.SANDILE, Species.TYMPOLE], SKYLA: [Species.DUCKLETT, Species.WOOBAT, Species.RUFFLET], BRYCEN: [Species.CRYOGONAL, Species.VANILLITE, Species.CUBCHOO], DRAYDEN: [Species.DRUDDIGON, Species.AXEW, Species.DEINO], @@ -971,7 +971,7 @@ export const signatureSpecies: SignatureSpecies = { KORRINA: [Species.HAWLUCHA, Species.LUCARIO, Species.MIENFOO], RAMOS: [Species.SKIDDO, Species.HOPPIP, Species.BELLSPROUT], CLEMONT: [Species.HELIOPTILE, Species.MAGNEMITE, Species.ROTOM], - VALERIE: [Species.SYLVEON, Species.MAWILE, Species.MR_MIME], + VALERIE: [Species.SYLVEON, Species.MARILL, Species.MR_MIME], OLYMPIA: [Species.ESPURR, Species.SIGILYPH, Species.SLOWKING], WULFRIC: [Species.BERGMITE, Species.SNOVER, Species.CRYOGONAL], MILO: [Species.GOSSIFLEUR, Species.APPLIN, Species.BOUNSWEET], @@ -987,11 +987,11 @@ export const signatureSpecies: SignatureSpecies = { MARNIE: [Species.IMPIDIMP, Species.PURRLOIN, Species.MORPEKO], RAIHAN: [Species.DURALUDON, Species.TRAPINCH, Species.TURTONATOR], KATY: [Species.NYMBLE, Species.TAROUNTULA, Species.FIDOUGH], - BRASSIUS: [Species.SMOLIV, Species.BRAMBLIN, Species.BONSLY], + BRASSIUS: [Species.SMOLIV, Species.BRAMBLIN, Species.SUDOWOODO], IONO: [Species.TADBULB, Species.WATTREL, Species.MISDREAVUS], KOFU: [Species.VELUZA, Species.WIGLETT, Species.CRABRAWLER], LARRY: [Species.STARLY, Species.DUNSPARCE, Species.KOMALA], - RYME: [Species.GREAVARD, Species.SHUPPET, Species.MIMIKYU, Species.TOXEL], + RYME: [Species.GREAVARD, Species.SHUPPET, Species.MIMIKYU, Species.TOXTRICITY], TULIP: [Species.GIRAFARIG, Species.FLITTLE, Species.FLABEBE], GRUSHA: [Species.CETODDLE, Species.ALOLA_VULPIX, Species.CUBCHOO, Species.SWABLU], LORELEI: [Species.JYNX, [Species.SLOWBRO, Species.GALAR_SLOWBRO], Species.LAPRAS, [Species.ALOLA_SANDSLASH, Species.CLOYSTER]], @@ -1026,7 +1026,7 @@ export const signatureSpecies: SignatureSpecies = { NESSA_ELITE: [Species.GOLISOPOD, [Species.PELIPPER, Species.QUAGSIRE], Species.TOXAPEX, Species.DREDNAW], BEA_ELITE: [[Species.HAWLUCHA, Species.MACHAMP], Species.GRAPPLOCT, Species.SIRFETCHD, Species.FALINKS], ALLISTER_ELITE:[[Species.DUSKNOIR, Species.GENGAR], Species.POLTEAGEIST, Species.RUNERIGUS, Species.CURSOLA], - RAIHAN_ELITE: [Species.GOODRA, [Species.TORKOAL, Species.TURTONATOR], Species.FLYGON, Species.ARCHALUDON], + RAIHAN_ELITE: [[Species.GOODRA, Species.HISUI_GOODRA], [Species.GIGALITH, Species.TURTONATOR], Species.FLYGON, Species.ARCHALUDON], RIKA: [Species.WHISCASH, [Species.DONPHAN, Species.DUGTRIO], Species.CAMERUPT, Species.CLODSIRE], POPPY: [Species.COPPERAJAH, Species.BRONZONG, Species.CORVIKNIGHT, Species.TINKATON], LARRY_ELITE: [Species.STARAPTOR, Species.FLAMIGO, Species.ALTARIA, Species.TROPIUS], From 5f09ebcc246c7e797865b5a7e079b62e034271a1 Mon Sep 17 00:00:00 2001 From: AJ Fontaine Date: Tue, 6 Aug 2024 18:21:31 -0400 Subject: [PATCH 06/19] Adjust some teams, specialty type no longer array --- src/data/trainer-config.ts | 78 +++++++++++++++++++------------------- 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/src/data/trainer-config.ts b/src/data/trainer-config.ts index 72bd374506e..66a50a2c219 100644 --- a/src/data/trainer-config.ts +++ b/src/data/trainer-config.ts @@ -201,7 +201,7 @@ export class TrainerConfig { public partyMemberFuncs: PartyMemberFuncs = {}; public speciesPools: TrainerTierPools; public speciesFilter: PokemonSpeciesFilter; - public specialtyTypes: Type[] = []; + public specialtyType: Type; public encounterMessages: string[] = []; public victoryMessages: string[] = []; @@ -516,8 +516,8 @@ export class TrainerConfig { return this; } - setSpecialtyTypes(...specialtyTypes: Type[]): TrainerConfig { - this.specialtyTypes = specialtyTypes; + setSpecialtyType(specialtyType: Type): TrainerConfig { + this.specialtyType = specialtyType; return this; } @@ -539,11 +539,11 @@ export class TrainerConfig { /** * Initializes the trainer configuration for an evil team leader. Temporarily hardcoding evil leader teams though. * @param {Species | Species[]} signatureSpecies - The signature species for the evil team leader. - * @param {Type[]} specialtyTypes - The specialty types for the evil team Leader. + * @param {Type} specialtyType - The specialty type for the evil team Leader. * @param boolean whether or not this is the rematch fight * @returns {TrainerConfig} - The updated TrainerConfig instance. * **/ - initForEvilTeamLeader(title: string, signatureSpecies: (Species | Species[])[], rematch: boolean = false, ...specialtyTypes: Type[]): TrainerConfig { + initForEvilTeamLeader(title: string, signatureSpecies: (Species | Species[])[], rematch: boolean = false, specialtyType?: Type): TrainerConfig { if (!getIsInitialized()) { initI18n(); } @@ -558,9 +558,9 @@ export class TrainerConfig { } this.setPartyMemberFunc(-(s + 1), getRandomPartyMemberFunc(speciesPool)); }); - if (specialtyTypes.length) { - this.setSpeciesFilter(p => specialtyTypes.find(t => p.isOfType(t)) !== undefined); - this.setSpecialtyTypes(...specialtyTypes); + if (specialtyType) { + this.setSpeciesFilter(p => p.isOfType(specialtyType)); + this.setSpecialtyType(specialtyType); } const nameForCall = this.name.toLowerCase().replace(/\s/g, "_"); this.name = i18next.t(`trainerNames:${nameForCall}`); @@ -577,11 +577,11 @@ export class TrainerConfig { /** * Initializes the trainer configuration for a Gym Leader. * @param {Species | Species[]} signatureSpecies - The signature species for the Gym Leader. - * @param {Type[]} specialtyTypes - The specialty types for the Gym Leader. + * @param {Type} specialtyType - The specialty type for the Gym Leader. * @param isMale - Whether the Gym Leader is Male or Not (for localization of the title). * @returns {TrainerConfig} - The updated TrainerConfig instance. * **/ - initForGymLeader(signatureSpecies: (Species | Species[])[],isMale:boolean, ...specialtyTypes: Type[]): TrainerConfig { + initForGymLeader(signatureSpecies: (Species | Species[])[],isMale:boolean, specialtyType: Type): TrainerConfig { // Check if the internationalization (i18n) system is initialized. if (!getIsInitialized()) { initI18n(); @@ -600,10 +600,10 @@ export class TrainerConfig { this.setPartyMemberFunc(-(s + 1), getRandomPartyMemberFunc(speciesPool)); }); - // If specialty types are provided, set species filter and specialty types. - if (specialtyTypes.length) { - this.setSpeciesFilter(p => specialtyTypes.find(t => p.isOfType(t)) !== undefined); - this.setSpecialtyTypes(...specialtyTypes); + // If specialty type is provided, set species filter and specialty type. + if (specialtyType) { + this.setSpeciesFilter(p => p.isOfType(specialtyType)); + this.setSpecialtyType(specialtyType); } // Localize the trainer's name by converting it to lowercase and replacing spaces with underscores. @@ -624,7 +624,7 @@ export class TrainerConfig { this.setVictoryBgm("victory_gym"); this.setGenModifiersFunc(party => { const waveIndex = party[0].scene.currentBattle.waveIndex; - return getRandomTeraModifiers(party, waveIndex >= 100 ? 1 : 0, specialtyTypes.length ? specialtyTypes : null, this.forceTeraOffType); + return getRandomTeraModifiers(party, waveIndex >= 100 ? 1 : 0, specialtyType, this.forceTeraOffType); }); return this; @@ -633,11 +633,11 @@ export class TrainerConfig { /** * Initializes the trainer configuration for an Elite Four member. * @param {Species | Species[]} signatureSpecies - The signature species for the Elite Four member. - * @param {Type[]} specialtyTypes - The specialty types for the Elite Four member. + * @param {Type} specialtyType - The specialty type for the Elite Four member. * @param isMale - Whether the Elite Four Member is Male or Female (for localization of the title). * @returns {TrainerConfig} - The updated TrainerConfig instance. **/ - initForEliteFour(signatureSpecies: (Species | Species[])[],isMale: boolean, ...specialtyTypes: Type[]): TrainerConfig { + initForEliteFour(signatureSpecies: (Species | Species[])[],isMale: boolean, specialtyType: Type): TrainerConfig { // Check if the internationalization (i18n) system is initialized. if (!getIsInitialized()) { initI18n(); @@ -656,10 +656,10 @@ export class TrainerConfig { this.setPartyMemberFunc(-(s + 1), getRandomPartyMemberFunc(speciesPool)); }); - // Set species filter and specialty types if provided, otherwise filter by base total. - if (specialtyTypes.length) { - this.setSpeciesFilter(p => specialtyTypes.find(t => p.isOfType(t)) && p.baseTotal >= 450); - this.setSpecialtyTypes(...specialtyTypes); + // Set species filter and specialty type if provided, otherwise filter by base total. + if (specialtyType) { + this.setSpeciesFilter(p => p.isOfType(specialtyType) && p.baseTotal >= 450); + this.setSpecialtyType(specialtyType); } else { this.setSpeciesFilter(p => p.baseTotal >= 450); } @@ -680,7 +680,7 @@ export class TrainerConfig { this.setStaticParty(); this.setBattleBgm("battle_unova_elite"); this.setVictoryBgm("victory_gym"); - this.setGenModifiersFunc(party => getRandomTeraModifiers(party, 2, specialtyTypes.length ? specialtyTypes : null, this.forceTeraOffType)); + this.setGenModifiersFunc(party => getRandomTeraModifiers(party, 2, specialtyType, this.forceTeraOffType)); return this; } @@ -882,20 +882,20 @@ function getSpeciesFilterRandomPartyMemberFunc(speciesFilter: PokemonSpeciesFilt * @param forceTeraOffType {@linkcode boolean} Whether Trainer should attempt to Terastalize off-type mons * @returns {@linkcode PersistentModifier} an array of Tera modifiers for the enemy party */ -function getRandomTeraModifiers(party: EnemyPokemon[], count: integer, types?: Type[], forceTeraOffType?: boolean): PersistentModifier[] { +function getRandomTeraModifiers(party: EnemyPokemon[], count: integer, type?: Type, forceTeraOffType?: boolean): PersistentModifier[] { const ret: PersistentModifier[] = []; const partyMemberIndexes = new Array(party.length).fill(null).map((_, i) => i); //If "forceTeraOffType" is true, count how many off-type mons to look for - let offTypes = (forceTeraOffType && types.length) ? party.filter((p) => { - return types?.filter(t => p.isOfType(t)).length === 0; + let offTypes = (forceTeraOffType && type) ? party.filter((p) => { + return p.isOfType(type); }).length : 0; const teras = Math.max(offTypes, count); //Apply teras until you run out of party members or expected teras for (let t = 0; t < Math.min(teras, party.length); t++) { const randomIndex = offTypes > 0 ? - //If there's still an off-type to look for, find the first party index where the mon is not of the specialty type(s) + //If there's still an off-type to look for, find the first party index where the mon is not of the specialty type party.findIndex((p, i) => { - if (partyMemberIndexes.includes(i) && types?.filter(t => p.isOfType(t)).length === 0) { + if (partyMemberIndexes.includes(i) && p.isOfType(type)) { --offTypes; return true; } @@ -904,7 +904,7 @@ function getRandomTeraModifiers(party: EnemyPokemon[], count: integer, types?: T //Otherwise, get a random party member index : Utils.randSeedItem(partyMemberIndexes); partyMemberIndexes.splice(partyMemberIndexes.indexOf(randomIndex), 1); - ret.push(modifierTypes.TERA_SHARD().generateType(null, [Utils.randSeedItem(types ? types : party[randomIndex].getTypes())]).withIdFromFunc(modifierTypes.TERA_SHARD).newModifier(party[randomIndex]) as PersistentModifier); + ret.push(modifierTypes.TERA_SHARD().generateType(null, [Utils.randSeedItem(type ? [type] : party[randomIndex].getTypes())]).withIdFromFunc(modifierTypes.TERA_SHARD).newModifier(party[randomIndex]) as PersistentModifier); } return ret; } @@ -953,11 +953,11 @@ export const signatureSpecies: SignatureSpecies = { BYRON: [Species.SHIELDON, Species.BRONZOR, Species.ARON], CANDICE: [Species.SNEASEL, Species.SNOVER, Species.SNORUNT], VOLKNER: [Species.SHINX, Species.JOLTEON, Species.REMORAID, Species.ELECTABUZZ], - CILAN: [Species.PANSAGE, Species.FERROSEED, Species.MARACTUS], + CILAN: [Species.PANSAGE, Species.FOONGUS, Species.MARACTUS], CHILI: [Species.PANSEAR, Species.DARUMAKA, Species.HEATMOR], - CRESS: [Species.PANPOUR, Species.FRILLISH, Species.BASCULIN], + CRESS: [Species.PANPOUR, Species.SLOWPOKE, Species.BASCULIN], CHEREN: [Species.LILLIPUP, Species.MINCCINO, Species.PIDOVE], - LENORA: [Species.PATRAT, Species.DEERLING, Species.CHANSEY], + LENORA: [Species.PATRAT, Species.DEERLING, Species.AUDINO], ROXIE: [Species.VENIPEDE, Species.TRUBBISH, Species.KOFFING], BURGH: [Species.SEWADDLE, Species.DWEBBLE, Species.SHELMET, Species.KARRABLAST], ELESA: [Species.EMOLGA, Species.BLITZLE, Species.JOLTIK], @@ -971,7 +971,7 @@ export const signatureSpecies: SignatureSpecies = { KORRINA: [Species.HAWLUCHA, Species.LUCARIO, Species.MIENFOO], RAMOS: [Species.SKIDDO, Species.HOPPIP, Species.BELLSPROUT], CLEMONT: [Species.HELIOPTILE, Species.MAGNEMITE, Species.ROTOM], - VALERIE: [Species.SYLVEON, Species.MARILL, Species.MR_MIME], + VALERIE: [Species.SYLVEON, Species.MAWILE, Species.MR_MIME], OLYMPIA: [Species.ESPURR, Species.SIGILYPH, Species.SLOWKING], WULFRIC: [Species.BERGMITE, Species.SNOVER, Species.CRYOGONAL], MILO: [Species.GOSSIFLEUR, Species.APPLIN, Species.BOUNSWEET], @@ -979,20 +979,20 @@ export const signatureSpecies: SignatureSpecies = { KABU: [Species.SIZZLIPEDE, Species.GROWLITHE, Species.TORKOAL], BEA: [Species.GALAR_FARFETCHD, Species.FALINKS, Species.CLOBBOPUS], ALLISTER: [Species.GALAR_YAMASK, Species.GALAR_CORSOLA, Species.SINISTEA], - OPAL: [Species.MILCERY, Species.TOGETIC, Species.SPRITZEE, Species.GALAR_WEEZING], + OPAL: [Species.MILCERY, Species.TOGETIC, Species.GALAR_WEEZING], BEDE: [Species.HATENNA, Species.GALAR_PONYTA, Species.GARDEVOIR], GORDIE: [Species.ROLYCOLY, Species.STONJOURNER, Species.BINACLE], MELONY: [Species.SNOM, Species.GALAR_DARUMAKA, Species.GALAR_MR_MIME], PIERS: [Species.GALAR_ZIGZAGOON, Species.SCRAGGY, Species.INKAY], MARNIE: [Species.IMPIDIMP, Species.PURRLOIN, Species.MORPEKO], RAIHAN: [Species.DURALUDON, Species.TRAPINCH, Species.TURTONATOR], - KATY: [Species.NYMBLE, Species.TAROUNTULA, Species.FIDOUGH], + KATY: [Species.NYMBLE, Species.TAROUNTULA, Species.TEDDIURSA], BRASSIUS: [Species.SMOLIV, Species.BRAMBLIN, Species.SUDOWOODO], IONO: [Species.TADBULB, Species.WATTREL, Species.MISDREAVUS], KOFU: [Species.VELUZA, Species.WIGLETT, Species.CRABRAWLER], LARRY: [Species.STARLY, Species.DUNSPARCE, Species.KOMALA], RYME: [Species.GREAVARD, Species.SHUPPET, Species.MIMIKYU, Species.TOXTRICITY], - TULIP: [Species.GIRAFARIG, Species.FLITTLE, Species.FLABEBE], + TULIP: [Species.GIRAFARIG, Species.FLITTLE, Species.RALTS, Species.FLABEBE], GRUSHA: [Species.CETODDLE, Species.ALOLA_VULPIX, Species.CUBCHOO, Species.SWABLU], LORELEI: [Species.JYNX, [Species.SLOWBRO, Species.GALAR_SLOWBRO], Species.LAPRAS, [Species.ALOLA_SANDSLASH, Species.CLOYSTER]], BRUNO: [Species.MACHAMP, Species.HITMONCHAN, Species.HITMONLEE, [Species.ALOLA_GOLEM, Species.GOLEM]], @@ -1069,7 +1069,7 @@ export const trainerConfigs: TrainerConfigs = { [TrainerType.BAKER]: new TrainerConfig(++t).setEncounterBgm(TrainerType.CLERK).setMoneyMultiplier(1.35).setSpeciesFilter(s => s.isOfType(Type.GRASS) || s.isOfType(Type.FIRE)), [TrainerType.BEAUTY]: new TrainerConfig(++t).setMoneyMultiplier(1.55).setEncounterBgm(TrainerType.PARASOL_LADY), [TrainerType.BIKER]: new TrainerConfig(++t).setMoneyMultiplier(1.4).setEncounterBgm(TrainerType.ROUGHNECK).setSpeciesFilter(s => s.isOfType(Type.POISON)), - [TrainerType.BLACK_BELT]: new TrainerConfig(++t).setHasGenders("Battle Girl", TrainerType.PSYCHIC).setHasDouble("Crush Kin").setEncounterBgm(TrainerType.ROUGHNECK).setSpecialtyTypes(Type.FIGHTING) + [TrainerType.BLACK_BELT]: new TrainerConfig(++t).setHasGenders("Battle Girl", TrainerType.PSYCHIC).setHasDouble("Crush Kin").setEncounterBgm(TrainerType.ROUGHNECK).setSpecialtyType(Type.FIGHTING) .setPartyTemplates(trainerPartyTemplates.TWO_WEAK_ONE_AVG, trainerPartyTemplates.TWO_WEAK_ONE_AVG, trainerPartyTemplates.TWO_AVG, trainerPartyTemplates.TWO_AVG, trainerPartyTemplates.TWO_WEAK_ONE_STRONG, trainerPartyTemplates.THREE_AVG, trainerPartyTemplates.TWO_AVG_ONE_STRONG) .setSpeciesPools({ [TrainerPoolTier.COMMON]: [Species.NIDORAN_F, Species.NIDORAN_M, Species.MACHOP, Species.MAKUHITA, Species.MEDITITE, Species.CROAGUNK, Species.TIMBURR], @@ -1109,7 +1109,7 @@ export const trainerConfigs: TrainerConfigs = { .setSpeciesFilter(s => !!s.getLevelMoves().find(plm => plm[1] === Moves.HEAL_PULSE)), [TrainerType.FIREBREATHER]: new TrainerConfig(++t).setMoneyMultiplier(1.4).setEncounterBgm(TrainerType.ROUGHNECK) .setSpeciesFilter(s => !!s.getLevelMoves().find(plm => plm[1] === Moves.SMOG) || s.isOfType(Type.FIRE)), - [TrainerType.FISHERMAN]: new TrainerConfig(++t).setMoneyMultiplier(1.25).setEncounterBgm(TrainerType.BACKPACKER).setSpecialtyTypes(Type.WATER) + [TrainerType.FISHERMAN]: new TrainerConfig(++t).setMoneyMultiplier(1.25).setEncounterBgm(TrainerType.BACKPACKER).setSpecialtyType(Type.WATER) .setPartyTemplates(trainerPartyTemplates.TWO_WEAK_SAME_ONE_AVG, trainerPartyTemplates.ONE_AVG, trainerPartyTemplates.THREE_WEAK_SAME, trainerPartyTemplates.ONE_STRONG, trainerPartyTemplates.SIX_WEAKER) .setSpeciesPools({ [TrainerPoolTier.COMMON]: [Species.TENTACOOL, Species.MAGIKARP, Species.GOLDEEN, Species.STARYU, Species.REMORAID, Species.SKRELP, Species.CLAUNCHER, Species.ARROKUDA], @@ -1117,7 +1117,7 @@ export const trainerConfigs: TrainerConfigs = { [TrainerPoolTier.RARE]: [Species.CHINCHOU, Species.CORSOLA, Species.WAILMER, Species.BARBOACH, Species.CLAMPERL, Species.LUVDISC, Species.MANTYKE, Species.ALOMOMOLA, Species.TATSUGIRI, Species.VELUZA], [TrainerPoolTier.SUPER_RARE]: [Species.LAPRAS, Species.FEEBAS, Species.RELICANTH, Species.DONDOZO] }), - [TrainerType.GUITARIST]: new TrainerConfig(++t).setMoneyMultiplier(1.2).setEncounterBgm(TrainerType.ROUGHNECK).setSpecialtyTypes(Type.ELECTRIC).setSpeciesFilter(s => s.isOfType(Type.ELECTRIC)), + [TrainerType.GUITARIST]: new TrainerConfig(++t).setMoneyMultiplier(1.2).setEncounterBgm(TrainerType.ROUGHNECK).setSpecialtyType(Type.ELECTRIC).setSpeciesFilter(s => s.isOfType(Type.ELECTRIC)), [TrainerType.HARLEQUIN]: new TrainerConfig(++t).setEncounterBgm(TrainerType.PSYCHIC).setSpeciesFilter(s => tmSpecies[Moves.TRICK_ROOM].indexOf(s.speciesId) > -1), [TrainerType.HIKER]: new TrainerConfig(++t).setEncounterBgm(TrainerType.BACKPACKER) .setPartyTemplates(trainerPartyTemplates.TWO_AVG_SAME_ONE_AVG, trainerPartyTemplates.TWO_AVG_SAME_ONE_STRONG, trainerPartyTemplates.TWO_AVG, trainerPartyTemplates.FOUR_WEAK, trainerPartyTemplates.ONE_STRONG) @@ -1196,7 +1196,7 @@ export const trainerConfigs: TrainerConfigs = { [TrainerPoolTier.RARE]: [Species.TANGELA, Species.EEVEE, Species.YANMA], [TrainerPoolTier.SUPER_RARE]: [Species.TADBULB] }), - [TrainerType.SWIMMER]: new TrainerConfig(++t).setMoneyMultiplier(1.3).setEncounterBgm(TrainerType.PARASOL_LADY).setHasGenders("Swimmer Female").setHasDouble("Swimmers").setSpecialtyTypes(Type.WATER).setSpeciesFilter(s => s.isOfType(Type.WATER)), + [TrainerType.SWIMMER]: new TrainerConfig(++t).setMoneyMultiplier(1.3).setEncounterBgm(TrainerType.PARASOL_LADY).setHasGenders("Swimmer Female").setHasDouble("Swimmers").setSpecialtyType(Type.WATER).setSpeciesFilter(s => s.isOfType(Type.WATER)), [TrainerType.TWINS]: new TrainerConfig(++t).setDoubleOnly().setMoneyMultiplier(0.65).setUseSameSeedForAllMembers() .setPartyTemplateFunc(scene => getWavePartyTemplate(scene, trainerPartyTemplates.TWO_WEAK, trainerPartyTemplates.TWO_AVG, trainerPartyTemplates.TWO_STRONG)) .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.PLUSLE, Species.VOLBEAT, Species.PACHIRISU, Species.SILCOON, Species.METAPOD, Species.IGGLYBUFF, Species.PETILIL, Species.EEVEE])) From f00727244c7937adc8428f738e4f6e789fe6e2c2 Mon Sep 17 00:00:00 2001 From: AJ Fontaine Date: Tue, 6 Aug 2024 20:51:59 -0400 Subject: [PATCH 07/19] Fix other uses of specialty type variable --- src/field/trainer.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/field/trainer.ts b/src/field/trainer.ts index 3e78afeae83..5b049902ad8 100644 --- a/src/field/trainer.ts +++ b/src/field/trainer.ts @@ -405,14 +405,14 @@ export default class Trainer extends Phaser.GameObjects.Container { } } - if (!retry && this.config.specialtyTypes.length && !this.config.specialtyTypes.find(t => ret.isOfType(t))) { + if (!retry && this.config.specialtyType && !ret.isOfType(this.config.specialtyType)) { retry = true; console.log("Attempting reroll of species evolution to fit specialty type..."); let evoAttempt = 0; while (retry && evoAttempt++ < 10) { ret = getPokemonSpecies(species.getTrainerSpeciesForLevel(level, true, strength)); console.log(ret.name); - if (this.config.specialtyTypes.find(t => ret.isOfType(t))) { + if (ret.isOfType(this.config.specialtyType)) { retry = false; } } From daf85a56f6d7eea23c322b9933673b7f1f7ad191 Mon Sep 17 00:00:00 2001 From: AJ Fontaine Date: Fri, 23 Aug 2024 22:11:42 -0400 Subject: [PATCH 08/19] Force tera first sig species instead of off-types --- src/data/trainer-config.ts | 89 ++++++++++++++++++-------------------- 1 file changed, 41 insertions(+), 48 deletions(-) diff --git a/src/data/trainer-config.ts b/src/data/trainer-config.ts index 3722e7b93f5..368255c2631 100644 --- a/src/data/trainer-config.ts +++ b/src/data/trainer-config.ts @@ -187,7 +187,7 @@ export class TrainerConfig { public isBoss: boolean = false; public hasStaticParty: boolean = false; public useSameSeedForAllMembers: boolean = false; - public forceTeraOffType: boolean = false; + public forceTeraFirstSlot: boolean = false; public mixedBattleBgm: string; public battleBgm: string; public encounterBgm: string; @@ -474,8 +474,8 @@ export class TrainerConfig { return this; } - setForceTeraOffType(): TrainerConfig { - this.forceTeraOffType = true; + setForceTeraFirstSlot(): TrainerConfig { + this.forceTeraFirstSlot = true; return this; } @@ -727,7 +727,7 @@ export class TrainerConfig { this.setVictoryBgm("victory_gym"); this.setGenModifiersFunc(party => { const waveIndex = party[0].scene.currentBattle.waveIndex; - return getRandomTeraModifiers(party, waveIndex >= 100 ? 1 : 0, specialtyType, this.forceTeraOffType); + return getRandomTeraModifiers(party, waveIndex >= 100 ? 1 : 0, specialtyType, this.forceTeraFirstSlot); }); return this; @@ -784,7 +784,7 @@ export class TrainerConfig { this.setHasVoucher(true); this.setBattleBgm("battle_unova_elite"); this.setVictoryBgm("victory_gym"); - this.setGenModifiersFunc(party => getRandomTeraModifiers(party, 2, specialtyType, this.forceTeraOffType)); + this.setGenModifiersFunc(party => getRandomTeraModifiers(party, 2, specialtyType, this.forceTeraFirstSlot)); return this; } @@ -993,31 +993,24 @@ function getSpeciesFilterRandomPartyMemberFunc(speciesFilter: PokemonSpeciesFilt * Function to get random Tera modifiers for enemy trainers * @param party {@linkcode EnemyPokemon} enemy trainer party * @param count {@linkcode integer} how many Teras you want the trainer to have - * @param types {@linkcode Type} array of types the trainer should Tera to (usually just one) - * @param forceTeraOffType {@linkcode boolean} Whether Trainer should attempt to Terastalize off-type mons + * @param type {@linkcode Type} desired Tera type + * @param forceTeraFirstSlot {@linkcode boolean} Whether Trainer should attempt to Terastalize the mon in the first slot of signature species * @returns {@linkcode PersistentModifier} an array of Tera modifiers for the enemy party */ -function getRandomTeraModifiers(party: EnemyPokemon[], count: integer, type?: Type, forceTeraOffType?: boolean): PersistentModifier[] { +function getRandomTeraModifiers(party: EnemyPokemon[], count: integer, type?: Type, forceTeraFirstSlot?: boolean): PersistentModifier[] { const ret: PersistentModifier[] = []; const partyMemberIndexes = new Array(party.length).fill(null).map((_, i) => i); - //If "forceTeraOffType" is true, count how many off-type mons to look for - let offTypes = (forceTeraOffType && type) ? party.filter((p) => { - return p.isOfType(type); - }).length : 0; - const teras = Math.max(offTypes, count); - //Apply teras until you run out of party members or expected teras - for (let t = 0; t < Math.min(teras, party.length); t++) { - const randomIndex = offTypes > 0 ? - //If there's still an off-type to look for, find the first party index where the mon is not of the specialty type - party.findIndex((p, i) => { - if (partyMemberIndexes.includes(i) && p.isOfType(type)) { - --offTypes; - return true; - } - return false; - }) - //Otherwise, get a random party member index - : Utils.randSeedItem(partyMemberIndexes); + let t = 0; // Move this out of the for loop in case there's a forced tera slot + if (type && forceTeraFirstSlot) { // If there's a designated tera slot, essentially do an iteration of the for loop below with a set index and without checking count + const forcedTeraSlot = party.length - 1; + if (forcedTeraSlot && forcedTeraSlot >= 0) { + partyMemberIndexes.splice(partyMemberIndexes.indexOf(forcedTeraSlot), 1); + ret.push(modifierTypes.TERA_SHARD().generateType([], [type])!.withIdFromFunc(modifierTypes.TERA_SHARD).newModifier(party[forcedTeraSlot]) as PersistentModifier); // TODO: is the bang correct? + t++; + } + } + for (; t < Math.min(count, party.length); t++) { + const randomIndex = Utils.randSeedItem(partyMemberIndexes); partyMemberIndexes.splice(partyMemberIndexes.indexOf(randomIndex), 1); ret.push(modifierTypes.TERA_SHARD().generateType([], [Utils.randSeedItem(type ? [type] : party[randomIndex].getTypes())])!.withIdFromFunc(modifierTypes.TERA_SHARD).newModifier(party[randomIndex]) as PersistentModifier); // TODO: is the bang correct? } @@ -1067,7 +1060,7 @@ export const signatureSpecies: SignatureSpecies = { FANTINA: [Species.MISDREAVUS, Species.DRIFLOON, Species.DUSKULL], BYRON: [Species.SHIELDON, Species.BRONZOR, Species.ARON], CANDICE: [Species.SNEASEL, Species.SNOVER, Species.SNORUNT], - VOLKNER: [Species.SHINX, Species.JOLTEON, Species.REMORAID, Species.ELECTABUZZ], + VOLKNER: [Species.SHINX, Species.JOLTEON, Species.ELECTABUZZ], CILAN: [Species.PANSAGE, Species.FOONGUS, Species.MARACTUS], CHILI: [Species.PANSEAR, Species.DARUMAKA, Species.HEATMOR], CRESS: [Species.PANPOUR, Species.SLOWPOKE, Species.BASCULIN], @@ -1101,14 +1094,14 @@ export const signatureSpecies: SignatureSpecies = { PIERS: [Species.GALAR_ZIGZAGOON, Species.SCRAGGY, Species.INKAY], MARNIE: [Species.IMPIDIMP, Species.PURRLOIN, Species.MORPEKO], RAIHAN: [Species.DURALUDON, Species.TRAPINCH, Species.TURTONATOR], - KATY: [Species.NYMBLE, Species.TAROUNTULA, Species.TEDDIURSA], - BRASSIUS: [Species.SMOLIV, Species.BRAMBLIN, Species.SUDOWOODO], - IONO: [Species.TADBULB, Species.WATTREL, Species.MISDREAVUS], - KOFU: [Species.VELUZA, Species.WIGLETT, Species.CRABRAWLER], - LARRY: [Species.STARLY, Species.DUNSPARCE, Species.KOMALA], - RYME: [Species.GREAVARD, Species.SHUPPET, Species.MIMIKYU, Species.TOXTRICITY], - TULIP: [Species.GIRAFARIG, Species.FLITTLE, Species.RALTS, Species.FLABEBE], - GRUSHA: [Species.CETODDLE, Species.ALOLA_VULPIX, Species.CUBCHOO, Species.SWABLU], + KATY: [Species.TEDDIURSA, Species.NYMBLE, Species.TAROUNTULA], + BRASSIUS: [Species.SUDOWOODO, Species.SMOLIV, Species.BRAMBLIN], + IONO: [Species.MISDREAVUS, Species.TADBULB, Species.WATTREL], + KOFU: [Species.CRABRAWLER, Species.VELUZA, Species.WIGLETT], + LARRY: [Species.DUNSPARCE, Species.STARLY, Species.KOMALA], + RYME: [Species.TOXEL, Species.GREAVARD, Species.SHUPPET, Species.MIMIKYU], + TULIP: [Species.FLABEBE, Species.GIRAFARIG, Species.FLITTLE, Species.RALTS], + GRUSHA: [Species.SWABLU, Species.CETODDLE, Species.ALOLA_VULPIX, Species.CUBCHOO], LORELEI: [Species.JYNX, [Species.SLOWBRO, Species.GALAR_SLOWBRO], Species.LAPRAS, [Species.ALOLA_SANDSLASH, Species.CLOYSTER]], BRUNO: [Species.MACHAMP, Species.HITMONCHAN, Species.HITMONLEE, [Species.ALOLA_GOLEM, Species.GOLEM]], AGATHA: [Species.GENGAR, [Species.ARBOK, Species.WEEZING], Species.CROBAT, Species.ALOLA_MAROWAK], @@ -1399,7 +1392,7 @@ export const trainerConfigs: TrainerConfigs = { [TrainerType.GIOVANNI]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["GIOVANNI"], true, Type.GROUND).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), [TrainerType.FALKNER]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["FALKNER"], true, Type.FLYING).setBattleBgm("battle_johto_gym").setMixedBattleBgm("battle_johto_gym"), [TrainerType.BUGSY]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["BUGSY"], true, Type.BUG).setBattleBgm("battle_johto_gym").setMixedBattleBgm("battle_johto_gym"), - [TrainerType.WHITNEY]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["WHITNEY"], false, Type.NORMAL).setBattleBgm("battle_johto_gym").setMixedBattleBgm("battle_johto_gym").setForceTeraOffType(), + [TrainerType.WHITNEY]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["WHITNEY"], false, Type.NORMAL).setBattleBgm("battle_johto_gym").setMixedBattleBgm("battle_johto_gym"), [TrainerType.MORTY]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["MORTY"], true, Type.GHOST).setBattleBgm("battle_johto_gym").setMixedBattleBgm("battle_johto_gym"), [TrainerType.CHUCK]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["CHUCK"], true, Type.FIGHTING).setBattleBgm("battle_johto_gym").setMixedBattleBgm("battle_johto_gym"), [TrainerType.JASMINE]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["JASMINE"], false, Type.STEEL).setBattleBgm("battle_johto_gym").setMixedBattleBgm("battle_johto_gym"), @@ -1421,7 +1414,7 @@ export const trainerConfigs: TrainerConfigs = { [TrainerType.FANTINA]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["FANTINA"], false, Type.GHOST).setBattleBgm("battle_sinnoh_gym").setMixedBattleBgm("battle_sinnoh_gym"), [TrainerType.BYRON]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["BYRON"], true, Type.STEEL).setBattleBgm("battle_sinnoh_gym").setMixedBattleBgm("battle_sinnoh_gym"), [TrainerType.CANDICE]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["CANDICE"], false, Type.ICE).setBattleBgm("battle_sinnoh_gym").setMixedBattleBgm("battle_sinnoh_gym"), - [TrainerType.VOLKNER]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["VOLKNER"], true, Type.ELECTRIC).setBattleBgm("battle_sinnoh_gym").setMixedBattleBgm("battle_sinnoh_gym").setForceTeraOffType(), + [TrainerType.VOLKNER]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["VOLKNER"], true, Type.ELECTRIC).setBattleBgm("battle_sinnoh_gym").setMixedBattleBgm("battle_sinnoh_gym"), [TrainerType.CILAN]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["CILAN"], true, Type.GRASS).setMixedBattleBgm("battle_unova_gym"), [TrainerType.CHILI]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["CHILI"], true, Type.FIRE).setMixedBattleBgm("battle_unova_gym"), [TrainerType.CRESS]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["CRESS"], true, Type.WATER).setMixedBattleBgm("battle_unova_gym"), @@ -1455,14 +1448,14 @@ export const trainerConfigs: TrainerConfigs = { [TrainerType.PIERS]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["PIERS"], true, Type.DARK).setHasDouble("piers_marnie_double").setDoubleTrainerType(TrainerType.MARNIE).setDoubleTitle("gym_leader_double").setMixedBattleBgm("battle_galar_gym"), [TrainerType.MARNIE]: new TrainerConfig(++t).setName("Marnie").initForGymLeader(signatureSpecies["MARNIE"], false, Type.DARK).setHasDouble("marnie_piers_double").setDoubleTrainerType(TrainerType.PIERS).setDoubleTitle("gym_leader_double").setMixedBattleBgm("battle_galar_gym"), [TrainerType.RAIHAN]: new TrainerConfig(++t).setName("Raihan").initForGymLeader(signatureSpecies["RAIHAN"], true, Type.DRAGON).setMixedBattleBgm("battle_galar_gym"), - [TrainerType.KATY]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["KATY"], false, Type.BUG).setMixedBattleBgm("battle_paldea_gym").setForceTeraOffType(), - [TrainerType.BRASSIUS]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["BRASSIUS"], true, Type.GRASS).setMixedBattleBgm("battle_paldea_gym").setForceTeraOffType(), - [TrainerType.IONO]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["IONO"], false, Type.ELECTRIC).setMixedBattleBgm("battle_paldea_gym").setForceTeraOffType(), - [TrainerType.KOFU]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["KOFU"], true, Type.WATER).setMixedBattleBgm("battle_paldea_gym").setForceTeraOffType(), - [TrainerType.LARRY]: new TrainerConfig(++t).setName("Larry").initForGymLeader(signatureSpecies["LARRY"], true, Type.NORMAL).setMixedBattleBgm("battle_paldea_gym").setForceTeraOffType(), - [TrainerType.RYME]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["RYME"], false, Type.GHOST).setMixedBattleBgm("battle_paldea_gym").setForceTeraOffType(), - [TrainerType.TULIP]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["TULIP"], false, Type.PSYCHIC).setMixedBattleBgm("battle_paldea_gym").setForceTeraOffType(), - [TrainerType.GRUSHA]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["GRUSHA"], true, Type.ICE).setMixedBattleBgm("battle_paldea_gym").setForceTeraOffType(), + [TrainerType.KATY]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["KATY"], false, Type.BUG).setMixedBattleBgm("battle_paldea_gym").setForceTeraFirstSlot(), + [TrainerType.BRASSIUS]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["BRASSIUS"], true, Type.GRASS).setMixedBattleBgm("battle_paldea_gym").setForceTeraFirstSlot(), + [TrainerType.IONO]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["IONO"], false, Type.ELECTRIC).setMixedBattleBgm("battle_paldea_gym").setForceTeraFirstSlot(), + [TrainerType.KOFU]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["KOFU"], true, Type.WATER).setMixedBattleBgm("battle_paldea_gym").setForceTeraFirstSlot(), + [TrainerType.LARRY]: new TrainerConfig(++t).setName("Larry").initForGymLeader(signatureSpecies["LARRY"], true, Type.NORMAL).setMixedBattleBgm("battle_paldea_gym").setForceTeraFirstSlot(), + [TrainerType.RYME]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["RYME"], false, Type.GHOST).setMixedBattleBgm("battle_paldea_gym").setForceTeraFirstSlot(), + [TrainerType.TULIP]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["TULIP"], false, Type.PSYCHIC).setMixedBattleBgm("battle_paldea_gym").setForceTeraFirstSlot(), + [TrainerType.GRUSHA]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["GRUSHA"], true, Type.ICE).setMixedBattleBgm("battle_paldea_gym").setForceTeraFirstSlot(), [TrainerType.LORELEI]: new TrainerConfig((t = TrainerType.LORELEI)).initForEliteFour(signatureSpecies["LORELEI"], false, Type.ICE).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), [TrainerType.BRUNO]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["BRUNO"], true, Type.FIGHTING).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), @@ -1477,7 +1470,7 @@ export const trainerConfigs: TrainerConfigs = { [TrainerType.DRAKE]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["DRAKE"], true, Type.DRAGON).setMixedBattleBgm("battle_hoenn_elite"), [TrainerType.AARON]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["AARON"], true, Type.BUG).setBattleBgm("battle_sinnoh_gym").setMixedBattleBgm("battle_sinnoh_gym"), [TrainerType.BERTHA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["BERTHA"], false, Type.GROUND).setBattleBgm("battle_sinnoh_gym").setMixedBattleBgm("battle_sinnoh_gym"), - [TrainerType.FLINT]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["FLINT"], true, Type.FIRE).setBattleBgm("battle_sinnoh_gym").setMixedBattleBgm("battle_sinnoh_gym").setForceTeraOffType(), + [TrainerType.FLINT]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["FLINT"], true, Type.FIRE).setBattleBgm("battle_sinnoh_gym").setMixedBattleBgm("battle_sinnoh_gym"), [TrainerType.LUCIAN]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["LUCIAN"], true, Type.PSYCHIC).setBattleBgm("battle_sinnoh_gym").setMixedBattleBgm("battle_sinnoh_gym"), [TrainerType.SHAUNTAL]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["SHAUNTAL"], false, Type.GHOST).setMixedBattleBgm("battle_unova_elite"), [TrainerType.MARSHAL]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["MARSHAL"], true, Type.FIGHTING).setMixedBattleBgm("battle_unova_elite"), @@ -1503,8 +1496,8 @@ export const trainerConfigs: TrainerConfigs = { [TrainerType.HASSEL]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["HASSEL"], true, Type.DRAGON).setMixedBattleBgm("battle_paldea_elite"), [TrainerType.CRISPIN]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["CRISPIN"], true, Type.FIRE).setMixedBattleBgm("battle_bb_elite"), [TrainerType.AMARYS]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["AMARYS"], false, Type.STEEL).setMixedBattleBgm("battle_bb_elite"), - [TrainerType.LACEY]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["LACEY"], false, Type.FAIRY).setMixedBattleBgm("battle_bb_elite").setForceTeraOffType(), - [TrainerType.DRAYTON]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["DRAYTON"], true, Type.DRAGON).setMixedBattleBgm("battle_bb_elite").setForceTeraOffType(), + [TrainerType.LACEY]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["LACEY"], false, Type.FAIRY).setMixedBattleBgm("battle_bb_elite").setForceTeraFirstSlot(), + [TrainerType.DRAYTON]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["DRAYTON"], true, Type.DRAGON).setMixedBattleBgm("battle_bb_elite"), [TrainerType.BLUE]: new TrainerConfig((t = TrainerType.BLUE)).initForChampion(signatureSpecies["BLUE"], true).setBattleBgm("battle_kanto_champion").setMixedBattleBgm("battle_kanto_champion").setHasDouble("blue_red_double").setDoubleTrainerType(TrainerType.RED).setDoubleTitle("champion_double") .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.ALAKAZAM], TrainerSlot.TRAINER, true, p => { From fcf2acbe588f8338b70f2ad83fa791c962a4aa0b Mon Sep 17 00:00:00 2001 From: AJ Fontaine Date: Fri, 23 Aug 2024 23:08:29 -0400 Subject: [PATCH 09/19] Splitting all dialog files by gender for every language is absolutely insane tbh --- src/enums/trainer-type.ts | 272 ++++++++++++------------- src/locales/de/dialogue-female.json | 11 + src/locales/de/dialogue-male.json | 11 + src/locales/en/dialogue-female.json | 11 + src/locales/en/dialogue-male.json | 11 + src/locales/ko/dialogue-female.json | 11 + src/locales/ko/dialogue-male.json | 11 + src/locales/pt_BR/dialogue-female.json | 11 + src/locales/pt_BR/dialogue-male.json | 11 + src/locales/zh_CN/dialogue-female.json | 11 + src/locales/zh_CN/dialogue-male.json | 11 + src/locales/zh_TW/dialogue-female.json | 11 + src/locales/zh_TW/dialogue-male.json | 11 + 13 files changed, 268 insertions(+), 136 deletions(-) diff --git a/src/enums/trainer-type.ts b/src/enums/trainer-type.ts index c131781b41e..f02431e83a9 100644 --- a/src/enums/trainer-type.ts +++ b/src/enums/trainer-type.ts @@ -85,140 +85,140 @@ export enum TrainerType { LYSANDRE, LYSANDRE_2, - BROCK = 200, - MISTY, - LT_SURGE, - ERIKA, - JANINE, - KOGA, - SABRINA, - BLAINE, - GIOVANNI, - FALKNER, - BUGSY, - WHITNEY, - MORTY, - CHUCK, - JASMINE, - PRYCE, - CLAIR, - ROXANNE, - BRAWLY, - WATTSON, - FLANNERY, - NORMAN, - WINONA, - TATE, - LIZA, - JUAN, - ROARK, - GARDENIA, - MAYLENE, - CRASHER_WAKE, - FANTINA, - BYRON, - CANDICE, - VOLKNER, - CILAN, - CHILI, - CRESS, - CHEREN, - LENORA, - ROXIE, - BURGH, - ELESA, - CLAY, - SKYLA, - BRYCEN, - DRAYDEN, - MARLON, - VIOLA, - GRANT, - KORRINA, - RAMOS, - CLEMONT, - VALERIE, - OLYMPIA, - WULFRIC, - MILO, - NESSA, - KABU, - BEA, - ALLISTER, - OPAL, - BEDE, - GORDIE, - MELONY, - PIERS, - MARNIE, - RAIHAN, - KATY, - BRASSIUS, - IONO, - KOFU, - LARRY, - RYME, - TULIP, - GRUSHA, - LORELEI = 300, - BRUNO, - AGATHA, - LANCE, - WILL, - KOGA_ELITE, - KAREN, - SIDNEY, - PHOEBE, - GLACIA, - DRAKE, - AARON, - BERTHA, - FLINT, - LUCIAN, - SHAUNTAL, - MARSHAL, - GRIMSLEY, - CAITLIN, - MALVA, - SIEBOLD, - WIKSTROM, - DRASNA, - HALA, - MOLAYNE, - OLIVIA, - ACEROLA, - KAHILI, - MARNIE_ELITE, - NESSA_ELITE, - BEA_ELITE, - ALLISTER_ELITE, - RAIHAN_ELITE, - RIKA, - POPPY, - LARRY_ELITE, - HASSEL, - CRISPIN, - AMARYS, - LACEY, - DRAYTON, - BLUE = 350, - RED, - LANCE_CHAMPION, - STEVEN, - WALLACE, - CYNTHIA, - ALDER, - IRIS, - DIANTHA, - HAU, - LEON, - GEETA, - NEMONA, - KIERAN, - RIVAL = 375, - RIVAL_2, - RIVAL_3, - RIVAL_4, - RIVAL_5, - RIVAL_6 + BROCK = 200, + MISTY, + LT_SURGE, + ERIKA, + JANINE, + KOGA, + SABRINA, + BLAINE, + GIOVANNI, + FALKNER, + BUGSY, + WHITNEY, + MORTY, + CHUCK, + JASMINE, + PRYCE, + CLAIR, + ROXANNE, + BRAWLY, + WATTSON, + FLANNERY, + NORMAN, + WINONA, + TATE, + LIZA, + JUAN, + ROARK, + GARDENIA, + MAYLENE, + CRASHER_WAKE, + FANTINA, + BYRON, + CANDICE, + VOLKNER, + CILAN, + CHILI, + CRESS, + CHEREN, + LENORA, + ROXIE, + BURGH, + ELESA, + CLAY, + SKYLA, + BRYCEN, + DRAYDEN, + MARLON, + VIOLA, + GRANT, + KORRINA, + RAMOS, + CLEMONT, + VALERIE, + OLYMPIA, + WULFRIC, + MILO, + NESSA, + KABU, + BEA, + ALLISTER, + OPAL, + BEDE, + GORDIE, + MELONY, + PIERS, + MARNIE, + RAIHAN, + KATY, + BRASSIUS, + IONO, + KOFU, + LARRY, + RYME, + TULIP, + GRUSHA, + LORELEI = 300, + BRUNO, + AGATHA, + LANCE, + WILL, + KOGA_ELITE, + KAREN, + SIDNEY, + PHOEBE, + GLACIA, + DRAKE, + AARON, + BERTHA, + FLINT, + LUCIAN, + SHAUNTAL, + MARSHAL, + GRIMSLEY, + CAITLIN, + MALVA, + SIEBOLD, + WIKSTROM, + DRASNA, + HALA, + MOLAYNE, + OLIVIA, + ACEROLA, + KAHILI, + MARNIE_ELITE, + NESSA_ELITE, + BEA_ELITE, + ALLISTER_ELITE, + RAIHAN_ELITE, + RIKA, + POPPY, + LARRY_ELITE, + HASSEL, + CRISPIN, + AMARYS, + LACEY, + DRAYTON, + BLUE = 350, + RED, + LANCE_CHAMPION, + STEVEN, + WALLACE, + CYNTHIA, + ALDER, + IRIS, + DIANTHA, + HAU, + LEON, + GEETA, + NEMONA, + KIERAN, + RIVAL = 375, + RIVAL_2, + RIVAL_3, + RIVAL_4, + RIVAL_5, + RIVAL_6 } diff --git a/src/locales/de/dialogue-female.json b/src/locales/de/dialogue-female.json index e71e03453a7..f713306b832 100644 --- a/src/locales/de/dialogue-female.json +++ b/src/locales/de/dialogue-female.json @@ -1605,6 +1605,17 @@ } }, "koga": { + "encounter": { + "1": "Fwahahaha! Very well, I shall show you true terror as a ninja master!" + }, + "victory": { + "1": "Humph! You've proven your worth!" + }, + "defeat": { + "1": "Despair to the creeping horror of Poison-type Pokémon!" + } + }, + "koga_elite": { "encounter": { "1": "Fwahahahaha! Pokémon sind nicht nur rohe Gewalt - das wirst du bald genug sehen!" }, diff --git a/src/locales/de/dialogue-male.json b/src/locales/de/dialogue-male.json index 0f8e0122c8c..e17209e41a4 100644 --- a/src/locales/de/dialogue-male.json +++ b/src/locales/de/dialogue-male.json @@ -1605,6 +1605,17 @@ } }, "koga": { + "encounter": { + "1": "Fwahahaha! Very well, I shall show you true terror as a ninja master!" + }, + "victory": { + "1": "Humph! You've proven your worth!" + }, + "defeat": { + "1": "Despair to the creeping horror of Poison-type Pokémon!" + } + }, + "koga_elite": { "encounter": { "1": "Fwahahahaha! Pokémon sind nicht nur rohe Gewalt - das wirst du bald genug sehen!" }, diff --git a/src/locales/en/dialogue-female.json b/src/locales/en/dialogue-female.json index 6be1c7586b6..fbd92bae8d8 100644 --- a/src/locales/en/dialogue-female.json +++ b/src/locales/en/dialogue-female.json @@ -1605,6 +1605,17 @@ } }, "koga": { + "encounter": { + "1": "Fwahahaha! Very well, I shall show you true terror as a ninja master!" + }, + "victory": { + "1": "Humph! You've proven your worth!" + }, + "defeat": { + "1": "Despair to the creeping horror of Poison-type Pokémon!" + } + }, + "koga_elite": { "encounter": { "1": "Fwahahahaha! Pokémon are not merely about brute force--you shall see soon enough!" }, diff --git a/src/locales/en/dialogue-male.json b/src/locales/en/dialogue-male.json index bf0612539d3..00cbcc100d4 100644 --- a/src/locales/en/dialogue-male.json +++ b/src/locales/en/dialogue-male.json @@ -1605,6 +1605,17 @@ } }, "koga": { + "encounter": { + "1": "Fwahahaha! Very well, I shall show you true terror as a ninja master!" + }, + "victory": { + "1": "Humph! You've proven your worth!" + }, + "defeat": { + "1": "Despair to the creeping horror of Poison-type Pokémon!" + } + }, + "koga_elite": { "encounter": { "1": "Fwahahahaha! Pokémon are not merely about brute force--you shall see soon enough!" }, diff --git a/src/locales/ko/dialogue-female.json b/src/locales/ko/dialogue-female.json index 693b0704512..db33a5d52f9 100644 --- a/src/locales/ko/dialogue-female.json +++ b/src/locales/ko/dialogue-female.json @@ -1605,6 +1605,17 @@ } }, "koga": { + "encounter": { + "1": "Fwahahaha! Very well, I shall show you true terror as a ninja master!" + }, + "victory": { + "1": "Humph! You've proven your worth!" + }, + "defeat": { + "1": "Despair to the creeping horror of Poison-type Pokémon!" + } + }, + "koga_elite": { "encounter": { "1": "후하하하! 포켓몬은 단순히 강한 것만이 아니다--곧 알려주지!" }, diff --git a/src/locales/ko/dialogue-male.json b/src/locales/ko/dialogue-male.json index 693b0704512..db33a5d52f9 100644 --- a/src/locales/ko/dialogue-male.json +++ b/src/locales/ko/dialogue-male.json @@ -1605,6 +1605,17 @@ } }, "koga": { + "encounter": { + "1": "Fwahahaha! Very well, I shall show you true terror as a ninja master!" + }, + "victory": { + "1": "Humph! You've proven your worth!" + }, + "defeat": { + "1": "Despair to the creeping horror of Poison-type Pokémon!" + } + }, + "koga_elite": { "encounter": { "1": "후하하하! 포켓몬은 단순히 강한 것만이 아니다--곧 알려주지!" }, diff --git a/src/locales/pt_BR/dialogue-female.json b/src/locales/pt_BR/dialogue-female.json index 7f4dfe8865d..0f8247b889d 100644 --- a/src/locales/pt_BR/dialogue-female.json +++ b/src/locales/pt_BR/dialogue-female.json @@ -1571,6 +1571,17 @@ } }, "koga": { + "encounter": { + "1": "Fwahahaha! Very well, I shall show you true terror as a ninja master!" + }, + "victory": { + "1": "Humph! You've proven your worth!" + }, + "defeat": { + "1": "Despair to the creeping horror of Poison-type Pokémon!" + } + }, + "koga_elite": { "encounter": { "1": "Fwahahahaha! Pokémon não são apenas sobre força bruta--você verá em breve!" }, diff --git a/src/locales/pt_BR/dialogue-male.json b/src/locales/pt_BR/dialogue-male.json index 0316dda2524..1650b45a4ae 100644 --- a/src/locales/pt_BR/dialogue-male.json +++ b/src/locales/pt_BR/dialogue-male.json @@ -1605,6 +1605,17 @@ } }, "koga": { + "encounter": { + "1": "Fwahahaha! Very well, I shall show you true terror as a ninja master!" + }, + "victory": { + "1": "Humph! You've proven your worth!" + }, + "defeat": { + "1": "Despair to the creeping horror of Poison-type Pokémon!" + } + }, + "koga_elite": { "encounter": { "1": "Fwahahahaha! Pokémon não são apenas sobre força bruta--você verá em breve!" }, diff --git a/src/locales/zh_CN/dialogue-female.json b/src/locales/zh_CN/dialogue-female.json index 09090f36d94..b82d7e42532 100644 --- a/src/locales/zh_CN/dialogue-female.json +++ b/src/locales/zh_CN/dialogue-female.json @@ -1605,6 +1605,17 @@ } }, "koga": { + "encounter": { + "1": "Fwahahaha! Very well, I shall show you true terror as a ninja master!" + }, + "victory": { + "1": "Humph! You've proven your worth!" + }, + "defeat": { + "1": "Despair to the creeping horror of Poison-type Pokémon!" + } + }, + "koga_elite": { "encounter": { "1": "哇哈哈哈哈!$宝可梦不仅仅是关于蛮力,拭目以待吧!" }, diff --git a/src/locales/zh_CN/dialogue-male.json b/src/locales/zh_CN/dialogue-male.json index 09090f36d94..b82d7e42532 100644 --- a/src/locales/zh_CN/dialogue-male.json +++ b/src/locales/zh_CN/dialogue-male.json @@ -1605,6 +1605,17 @@ } }, "koga": { + "encounter": { + "1": "Fwahahaha! Very well, I shall show you true terror as a ninja master!" + }, + "victory": { + "1": "Humph! You've proven your worth!" + }, + "defeat": { + "1": "Despair to the creeping horror of Poison-type Pokémon!" + } + }, + "koga_elite": { "encounter": { "1": "哇哈哈哈哈!$宝可梦不仅仅是关于蛮力,拭目以待吧!" }, diff --git a/src/locales/zh_TW/dialogue-female.json b/src/locales/zh_TW/dialogue-female.json index 4236e239622..dc158650022 100644 --- a/src/locales/zh_TW/dialogue-female.json +++ b/src/locales/zh_TW/dialogue-female.json @@ -1197,6 +1197,17 @@ } }, "koga": { + "encounter": { + "1": "Fwahahaha! Very well, I shall show you true terror as a ninja master!" + }, + "victory": { + "1": "Humph! You've proven your worth!" + }, + "defeat": { + "1": "Despair to the creeping horror of Poison-type Pokémon!" + } + }, + "koga_elite": { "encounter": { "1": "哇哈哈哈哈!$寶可夢不僅僅是關於蠻力,拭目以待吧!" }, diff --git a/src/locales/zh_TW/dialogue-male.json b/src/locales/zh_TW/dialogue-male.json index 4236e239622..dc158650022 100644 --- a/src/locales/zh_TW/dialogue-male.json +++ b/src/locales/zh_TW/dialogue-male.json @@ -1197,6 +1197,17 @@ } }, "koga": { + "encounter": { + "1": "Fwahahaha! Very well, I shall show you true terror as a ninja master!" + }, + "victory": { + "1": "Humph! You've proven your worth!" + }, + "defeat": { + "1": "Despair to the creeping horror of Poison-type Pokémon!" + } + }, + "koga_elite": { "encounter": { "1": "哇哈哈哈哈!$寶可夢不僅僅是關於蠻力,拭目以待吧!" }, From 59d7ce332d6f792929a26607227b26b308b292ad Mon Sep 17 00:00:00 2001 From: Jannik Tappert <38758606+CodeTappert@users.noreply.github.com> Date: Mon, 26 Aug 2024 17:09:22 +0200 Subject: [PATCH 10/19] Update src/locales/de/dialogue-female.json --- src/locales/de/dialogue-female.json | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/src/locales/de/dialogue-female.json b/src/locales/de/dialogue-female.json index f713306b832..e71e03453a7 100644 --- a/src/locales/de/dialogue-female.json +++ b/src/locales/de/dialogue-female.json @@ -1605,17 +1605,6 @@ } }, "koga": { - "encounter": { - "1": "Fwahahaha! Very well, I shall show you true terror as a ninja master!" - }, - "victory": { - "1": "Humph! You've proven your worth!" - }, - "defeat": { - "1": "Despair to the creeping horror of Poison-type Pokémon!" - } - }, - "koga_elite": { "encounter": { "1": "Fwahahahaha! Pokémon sind nicht nur rohe Gewalt - das wirst du bald genug sehen!" }, From 459f0f7303b7a5045c1a24b3ce38700a2582a44f Mon Sep 17 00:00:00 2001 From: Jannik Tappert <38758606+CodeTappert@users.noreply.github.com> Date: Mon, 26 Aug 2024 17:09:43 +0200 Subject: [PATCH 11/19] Update src/locales/de/dialogue-male.json --- src/locales/de/dialogue-male.json | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/src/locales/de/dialogue-male.json b/src/locales/de/dialogue-male.json index e17209e41a4..0f8e0122c8c 100644 --- a/src/locales/de/dialogue-male.json +++ b/src/locales/de/dialogue-male.json @@ -1605,17 +1605,6 @@ } }, "koga": { - "encounter": { - "1": "Fwahahaha! Very well, I shall show you true terror as a ninja master!" - }, - "victory": { - "1": "Humph! You've proven your worth!" - }, - "defeat": { - "1": "Despair to the creeping horror of Poison-type Pokémon!" - } - }, - "koga_elite": { "encounter": { "1": "Fwahahahaha! Pokémon sind nicht nur rohe Gewalt - das wirst du bald genug sehen!" }, From f48b80e69544a3a53fa479175da6f01a5fed6803 Mon Sep 17 00:00:00 2001 From: AJ Fontaine Date: Wed, 28 Aug 2024 17:52:02 -0400 Subject: [PATCH 12/19] Koga's vouchers consistent with old saves --- src/battle.ts | 2 +- src/data/biomes.ts | 6 +++--- src/data/challenge.ts | 2 +- src/data/dialogue.ts | 16 ++++++++-------- src/data/trainer-config.ts | 10 +++++----- src/enums/trainer-type.ts | 4 ++-- src/locales/de/dialogue-female.json | 2 +- src/locales/de/dialogue-male.json | 2 +- src/locales/en/dialogue-female.json | 4 ++-- src/locales/en/dialogue-male.json | 4 ++-- src/locales/ko/dialogue-female.json | 4 ++-- src/locales/ko/dialogue-male.json | 4 ++-- src/locales/pt_BR/dialogue-female.json | 4 ++-- src/locales/pt_BR/dialogue-male.json | 4 ++-- src/locales/zh_CN/dialogue-female.json | 4 ++-- src/locales/zh_CN/dialogue-male.json | 4 ++-- src/locales/zh_TW/dialogue-female.json | 4 ++-- src/locales/zh_TW/dialogue-male.json | 4 ++-- 18 files changed, 42 insertions(+), 42 deletions(-) diff --git a/src/battle.ts b/src/battle.ts index 4b19358599a..0e10333e6de 100644 --- a/src/battle.ts +++ b/src/battle.ts @@ -509,7 +509,7 @@ export const classicFixedBattles: FixedBattleConfigs = { [182]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) .setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.LORELEI, TrainerType.WILL, TrainerType.SIDNEY, TrainerType.AARON, TrainerType.SHAUNTAL, TrainerType.MALVA, [ TrainerType.HALA, TrainerType.MOLAYNE ], TrainerType.MARNIE_ELITE, TrainerType.RIKA, TrainerType.CRISPIN ])), [184]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(182) - .setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.BRUNO, TrainerType.KOGA_ELITE, TrainerType.PHOEBE, TrainerType.BERTHA, TrainerType.MARSHAL, TrainerType.SIEBOLD, TrainerType.OLIVIA, TrainerType.NESSA_ELITE, TrainerType.POPPY, TrainerType.AMARYS ])), + .setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.BRUNO, TrainerType.KOGA, TrainerType.PHOEBE, TrainerType.BERTHA, TrainerType.MARSHAL, TrainerType.SIEBOLD, TrainerType.OLIVIA, TrainerType.NESSA_ELITE, TrainerType.POPPY, TrainerType.AMARYS ])), [186]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(182) .setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.AGATHA, TrainerType.BRUNO, TrainerType.GLACIA, TrainerType.FLINT, TrainerType.GRIMSLEY, TrainerType.WIKSTROM, TrainerType.ACEROLA, [ TrainerType.BEA_ELITE, TrainerType.ALLISTER_ELITE ], TrainerType.LARRY_ELITE, TrainerType.LACEY ])), [188]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(182) diff --git a/src/data/biomes.ts b/src/data/biomes.ts index 5d6590106b3..3f773aad98a 100644 --- a/src/data/biomes.ts +++ b/src/data/biomes.ts @@ -1705,7 +1705,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { [BiomePoolTier.RARE]: [ TrainerType.BLACK_BELT ], [BiomePoolTier.SUPER_RARE]: [], [BiomePoolTier.ULTRA_RARE]: [], - [BiomePoolTier.BOSS]: [ TrainerType.JANINE, TrainerType.KOGA ], + [BiomePoolTier.BOSS]: [ TrainerType.JANINE, TrainerType.KOGA_GYM ], [BiomePoolTier.BOSS_RARE]: [], [BiomePoolTier.BOSS_SUPER_RARE]: [], [BiomePoolTier.BOSS_ULTRA_RARE]: [] @@ -7331,7 +7331,7 @@ export function initBiomes() { [ Biome.SWAMP, BiomePoolTier.BOSS ] ] ], - [ TrainerType.KOGA, [ + [ TrainerType.KOGA_GYM, [ [ Biome.SWAMP, BiomePoolTier.BOSS ] ] ], @@ -7616,7 +7616,7 @@ export function initBiomes() { [ TrainerType.AGATHA, [] ], [ TrainerType.LANCE, [] ], [ TrainerType.WILL, [] ], - [ TrainerType.KOGA_ELITE, [] ], + [ TrainerType.KOGA, [] ], [ TrainerType.KAREN, [] ], [ TrainerType.SIDNEY, [] ], [ TrainerType.PHOEBE, [] ], diff --git a/src/data/challenge.ts b/src/data/challenge.ts index 5b13b14915d..40d53de3687 100644 --- a/src/data/challenge.ts +++ b/src/data/challenge.ts @@ -442,7 +442,7 @@ export class SingleGenerationChallenge extends Challenge { trainerTypes = [ TrainerType.LORELEI, TrainerType.WILL, TrainerType.SIDNEY, TrainerType.AARON, TrainerType.SHAUNTAL, TrainerType.MALVA, Utils.randSeedItem([ TrainerType.HALA, TrainerType.MOLAYNE ]), TrainerType.MARNIE_ELITE, TrainerType.RIKA ]; break; case 184: - trainerTypes = [ TrainerType.BRUNO, TrainerType.KOGA_ELITE, TrainerType.PHOEBE, TrainerType.BERTHA, TrainerType.MARSHAL, TrainerType.SIEBOLD, TrainerType.OLIVIA, TrainerType.NESSA_ELITE, TrainerType.POPPY ]; + trainerTypes = [ TrainerType.BRUNO, TrainerType.KOGA, TrainerType.PHOEBE, TrainerType.BERTHA, TrainerType.MARSHAL, TrainerType.SIEBOLD, TrainerType.OLIVIA, TrainerType.NESSA_ELITE, TrainerType.POPPY ]; break; case 186: trainerTypes = [ TrainerType.AGATHA, TrainerType.BRUNO, TrainerType.GLACIA, TrainerType.FLINT, TrainerType.GRIMSLEY, TrainerType.WIKSTROM, TrainerType.ACEROLA, Utils.randSeedItem([TrainerType.BEA_ELITE, TrainerType.ALLISTER_ELITE]), TrainerType.LARRY_ELITE ]; diff --git a/src/data/dialogue.ts b/src/data/dialogue.ts index b60eaa36a10..72ba256d791 100644 --- a/src/data/dialogue.ts +++ b/src/data/dialogue.ts @@ -997,15 +997,15 @@ export const trainerTypeDialogue: TrainerTypeDialogue = { "dialogue:janine.defeat.3", ] }, - [TrainerType.KOGA]: { + [TrainerType.KOGA_GYM]: { encounter: [ - "dialogue:koga.encounter.1" + "dialogue:koga_gym.encounter.1" ], victory: [ - "dialogue:koga.victory.1" + "dialogue:koga_gym.victory.1" ], defeat: [ - "dialogue:koga.defeat.1" + "dialogue:koga_gym.defeat.1" ] }, [TrainerType.SABRINA]: { @@ -1737,15 +1737,15 @@ export const trainerTypeDialogue: TrainerTypeDialogue = { "dialogue:bugsy.defeat.1" ] }, - [TrainerType.KOGA_ELITE]: { + [TrainerType.KOGA]: { encounter: [ - "dialogue:koga_elite.encounter.1" + "dialogue:koga.encounter.1" ], victory: [ - "dialogue:koga_elite.victory.1" + "dialogue:koga.victory.1" ], defeat: [ - "dialogue:koga_elite.defeat.1" + "dialogue:koga.defeat.1" ] }, [TrainerType.BERTHA]: { diff --git a/src/data/trainer-config.ts b/src/data/trainer-config.ts index 368255c2631..1eb96d60d2c 100644 --- a/src/data/trainer-config.ts +++ b/src/data/trainer-config.ts @@ -339,7 +339,7 @@ export class TrainerConfig { case TrainerType.RAIHAN_ELITE: trainerType = TrainerType.RAIHAN; break; - case TrainerType.KOGA_ELITE: + case TrainerType.KOGA_GYM: trainerType = TrainerType.KOGA; break; } @@ -1032,7 +1032,7 @@ export const signatureSpecies: SignatureSpecies = { LT_SURGE: [Species.VOLTORB, Species.PIKACHU, Species.ELECTABUZZ], ERIKA: [Species.ODDISH, Species.BELLSPROUT, Species.TANGELA, Species.HOPPIP], JANINE: [Species.VENONAT, Species.SPINARAK, Species.ZUBAT], - KOGA: [Species.KOFFING, Species.GRIMER, Species.VENONAT], + KOGA_GYM: [Species.KOFFING, Species.GRIMER, Species.VENONAT], SABRINA: [Species.ABRA, Species.MR_MIME, Species.ESPEON], BLAINE: [Species.GROWLITHE, Species.PONYTA, Species.MAGMAR], GIOVANNI: [Species.DIGLETT, Species.NIDORAN_M, Species.NIDOQUEEN, Species.RHYHORN], @@ -1107,7 +1107,7 @@ export const signatureSpecies: SignatureSpecies = { AGATHA: [Species.GENGAR, [Species.ARBOK, Species.WEEZING], Species.CROBAT, Species.ALOLA_MAROWAK], LANCE: [Species.DRAGONITE, Species.GYARADOS, Species.AERODACTYL, Species.ALOLA_EXEGGUTOR], WILL: [Species.XATU, Species.JYNX, [Species.SLOWBRO, Species.SLOWKING], Species.EXEGGUTOR], - KOGA_ELITE: [Species.MUK, Species.VENOMOTH, [Species.ARIADOS, Species.FORRETRESS], Species.CROBAT], + KOGA: [Species.MUK, Species.VENOMOTH, [Species.ARIADOS, Species.FORRETRESS], Species.CROBAT], KAREN: [Species.UMBREON, Species.HONCHKROW, Species.HOUNDOOM, Species.WEAVILE], SIDNEY: [[Species.SHIFTRY, Species.CACTURNE], [Species.SHARPEDO, Species.CRAWDAUNT], Species.ABSOL, Species.MIGHTYENA], PHOEBE: [Species.SABLEYE, Species.DUSKNOIR, Species.BANETTE, [Species.MISMAGIUS, Species.DRIFBLIM]], @@ -1386,7 +1386,7 @@ export const trainerConfigs: TrainerConfigs = { [TrainerType.LT_SURGE]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["LT_SURGE"], true, Type.ELECTRIC).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), [TrainerType.ERIKA]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["ERIKA"], false, Type.GRASS).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), [TrainerType.JANINE]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["JANINE"], false, Type.POISON).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), - [TrainerType.KOGA]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["KOGA"], false, Type.POISON).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), + [TrainerType.KOGA_GYM]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["KOGA_GYM"], false, Type.POISON).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), [TrainerType.SABRINA]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["SABRINA"], false, Type.PSYCHIC).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), [TrainerType.BLAINE]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["BLAINE"], true, Type.FIRE).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), [TrainerType.GIOVANNI]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["GIOVANNI"], true, Type.GROUND).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), @@ -1462,7 +1462,7 @@ export const trainerConfigs: TrainerConfigs = { [TrainerType.AGATHA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["AGATHA"], false, Type.GHOST).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), [TrainerType.LANCE]: new TrainerConfig(++t).setName("Lance").initForEliteFour(signatureSpecies["LANCE"], true, Type.DRAGON).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"), [TrainerType.WILL]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["WILL"], true, Type.PSYCHIC).setBattleBgm("battle_johto_gym").setMixedBattleBgm("battle_johto_gym"), - [TrainerType.KOGA_ELITE]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["KOGA_ELITE"], true, Type.POISON).setBattleBgm("battle_johto_gym").setMixedBattleBgm("battle_johto_gym"), + [TrainerType.KOGA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["KOGA"], true, Type.POISON).setBattleBgm("battle_johto_gym").setMixedBattleBgm("battle_johto_gym"), [TrainerType.KAREN]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["KAREN"], false, Type.DARK).setBattleBgm("battle_johto_gym").setMixedBattleBgm("battle_johto_gym"), [TrainerType.SIDNEY]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["SIDNEY"], true, Type.DARK).setMixedBattleBgm("battle_hoenn_elite"), [TrainerType.PHOEBE]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["PHOEBE"], false, Type.GHOST).setMixedBattleBgm("battle_hoenn_elite"), diff --git a/src/enums/trainer-type.ts b/src/enums/trainer-type.ts index f02431e83a9..2ecd3641d21 100644 --- a/src/enums/trainer-type.ts +++ b/src/enums/trainer-type.ts @@ -90,7 +90,7 @@ export enum TrainerType { LT_SURGE, ERIKA, JANINE, - KOGA, + KOGA_GYM, SABRINA, BLAINE, GIOVANNI, @@ -165,7 +165,7 @@ export enum TrainerType { AGATHA, LANCE, WILL, - KOGA_ELITE, + KOGA, KAREN, SIDNEY, PHOEBE, diff --git a/src/locales/de/dialogue-female.json b/src/locales/de/dialogue-female.json index e71e03453a7..b88364947f3 100644 --- a/src/locales/de/dialogue-female.json +++ b/src/locales/de/dialogue-female.json @@ -1604,7 +1604,7 @@ "1": "Danke! Dank unseres Kampfes konnte ich auch Fortschritte in meiner Forschung machen!" } }, - "koga": { + "koga_gym": { "encounter": { "1": "Fwahahahaha! Pokémon sind nicht nur rohe Gewalt - das wirst du bald genug sehen!" }, diff --git a/src/locales/de/dialogue-male.json b/src/locales/de/dialogue-male.json index 0f8e0122c8c..85df3594f16 100644 --- a/src/locales/de/dialogue-male.json +++ b/src/locales/de/dialogue-male.json @@ -1604,7 +1604,7 @@ "1": "Danke! Dank unseres Kampfes konnte ich auch Fortschritte in meiner Forschung machen!" } }, - "koga": { + "koga_gym": { "encounter": { "1": "Fwahahahaha! Pokémon sind nicht nur rohe Gewalt - das wirst du bald genug sehen!" }, diff --git a/src/locales/en/dialogue-female.json b/src/locales/en/dialogue-female.json index fbd92bae8d8..c9eff7f4798 100644 --- a/src/locales/en/dialogue-female.json +++ b/src/locales/en/dialogue-female.json @@ -1604,7 +1604,7 @@ "1": "Thanks! Thanks to our battle, I was also able to make progress in my research!" } }, - "koga": { + "koga_gym": { "encounter": { "1": "Fwahahaha! Very well, I shall show you true terror as a ninja master!" }, @@ -1615,7 +1615,7 @@ "1": "Despair to the creeping horror of Poison-type Pokémon!" } }, - "koga_elite": { + "koga": { "encounter": { "1": "Fwahahahaha! Pokémon are not merely about brute force--you shall see soon enough!" }, diff --git a/src/locales/en/dialogue-male.json b/src/locales/en/dialogue-male.json index 00cbcc100d4..9eb1d100404 100644 --- a/src/locales/en/dialogue-male.json +++ b/src/locales/en/dialogue-male.json @@ -1604,7 +1604,7 @@ "1": "Thanks! Thanks to our battle, I was also able to make progress in my research!" } }, - "koga": { + "koga_gym": { "encounter": { "1": "Fwahahaha! Very well, I shall show you true terror as a ninja master!" }, @@ -1615,7 +1615,7 @@ "1": "Despair to the creeping horror of Poison-type Pokémon!" } }, - "koga_elite": { + "koga": { "encounter": { "1": "Fwahahahaha! Pokémon are not merely about brute force--you shall see soon enough!" }, diff --git a/src/locales/ko/dialogue-female.json b/src/locales/ko/dialogue-female.json index db33a5d52f9..6ee73bc8f91 100644 --- a/src/locales/ko/dialogue-female.json +++ b/src/locales/ko/dialogue-female.json @@ -1604,7 +1604,7 @@ "1": "고마워! 방금 승부 덕분에, 내 연구도 진전을 이룬 것 같아!" } }, - "koga": { + "koga_gym": { "encounter": { "1": "Fwahahaha! Very well, I shall show you true terror as a ninja master!" }, @@ -1615,7 +1615,7 @@ "1": "Despair to the creeping horror of Poison-type Pokémon!" } }, - "koga_elite": { + "koga": { "encounter": { "1": "후하하하! 포켓몬은 단순히 강한 것만이 아니다--곧 알려주지!" }, diff --git a/src/locales/ko/dialogue-male.json b/src/locales/ko/dialogue-male.json index db33a5d52f9..6ee73bc8f91 100644 --- a/src/locales/ko/dialogue-male.json +++ b/src/locales/ko/dialogue-male.json @@ -1604,7 +1604,7 @@ "1": "고마워! 방금 승부 덕분에, 내 연구도 진전을 이룬 것 같아!" } }, - "koga": { + "koga_gym": { "encounter": { "1": "Fwahahaha! Very well, I shall show you true terror as a ninja master!" }, @@ -1615,7 +1615,7 @@ "1": "Despair to the creeping horror of Poison-type Pokémon!" } }, - "koga_elite": { + "koga": { "encounter": { "1": "후하하하! 포켓몬은 단순히 강한 것만이 아니다--곧 알려주지!" }, diff --git a/src/locales/pt_BR/dialogue-female.json b/src/locales/pt_BR/dialogue-female.json index 0f8247b889d..674b0107cc6 100644 --- a/src/locales/pt_BR/dialogue-female.json +++ b/src/locales/pt_BR/dialogue-female.json @@ -1570,7 +1570,7 @@ "1": "Obrigado! Graças à nossa batalha, eu também pude fazer progressos na minha pesquisa!" } }, - "koga": { + "koga_gym": { "encounter": { "1": "Fwahahaha! Very well, I shall show you true terror as a ninja master!" }, @@ -1581,7 +1581,7 @@ "1": "Despair to the creeping horror of Poison-type Pokémon!" } }, - "koga_elite": { + "koga": { "encounter": { "1": "Fwahahahaha! Pokémon não são apenas sobre força bruta--você verá em breve!" }, diff --git a/src/locales/pt_BR/dialogue-male.json b/src/locales/pt_BR/dialogue-male.json index 1650b45a4ae..7455725e8aa 100644 --- a/src/locales/pt_BR/dialogue-male.json +++ b/src/locales/pt_BR/dialogue-male.json @@ -1604,7 +1604,7 @@ "1": "Obrigado! Graças à nossa batalha, eu também pude fazer progressos na minha pesquisa!" } }, - "koga": { + "koga_gym": { "encounter": { "1": "Fwahahaha! Very well, I shall show you true terror as a ninja master!" }, @@ -1615,7 +1615,7 @@ "1": "Despair to the creeping horror of Poison-type Pokémon!" } }, - "koga_elite": { + "koga": { "encounter": { "1": "Fwahahahaha! Pokémon não são apenas sobre força bruta--você verá em breve!" }, diff --git a/src/locales/zh_CN/dialogue-female.json b/src/locales/zh_CN/dialogue-female.json index b82d7e42532..7697822310a 100644 --- a/src/locales/zh_CN/dialogue-female.json +++ b/src/locales/zh_CN/dialogue-female.json @@ -1604,7 +1604,7 @@ "1": "谢谢!多亏了我们的战斗,\n我的研究也取得了进展!" } }, - "koga": { + "koga_gym": { "encounter": { "1": "Fwahahaha! Very well, I shall show you true terror as a ninja master!" }, @@ -1615,7 +1615,7 @@ "1": "Despair to the creeping horror of Poison-type Pokémon!" } }, - "koga_elite": { + "koga": { "encounter": { "1": "哇哈哈哈哈!$宝可梦不仅仅是关于蛮力,拭目以待吧!" }, diff --git a/src/locales/zh_CN/dialogue-male.json b/src/locales/zh_CN/dialogue-male.json index b82d7e42532..7697822310a 100644 --- a/src/locales/zh_CN/dialogue-male.json +++ b/src/locales/zh_CN/dialogue-male.json @@ -1604,7 +1604,7 @@ "1": "谢谢!多亏了我们的战斗,\n我的研究也取得了进展!" } }, - "koga": { + "koga_gym": { "encounter": { "1": "Fwahahaha! Very well, I shall show you true terror as a ninja master!" }, @@ -1615,7 +1615,7 @@ "1": "Despair to the creeping horror of Poison-type Pokémon!" } }, - "koga_elite": { + "koga": { "encounter": { "1": "哇哈哈哈哈!$宝可梦不仅仅是关于蛮力,拭目以待吧!" }, diff --git a/src/locales/zh_TW/dialogue-female.json b/src/locales/zh_TW/dialogue-female.json index dc158650022..635168ddd6a 100644 --- a/src/locales/zh_TW/dialogue-female.json +++ b/src/locales/zh_TW/dialogue-female.json @@ -1196,7 +1196,7 @@ "1": "謝謝!多虧了我們的戰鬥,\n我的研究也取得了進展!" } }, - "koga": { + "koga_gym": { "encounter": { "1": "Fwahahaha! Very well, I shall show you true terror as a ninja master!" }, @@ -1207,7 +1207,7 @@ "1": "Despair to the creeping horror of Poison-type Pokémon!" } }, - "koga_elite": { + "koga": { "encounter": { "1": "哇哈哈哈哈!$寶可夢不僅僅是關於蠻力,拭目以待吧!" }, diff --git a/src/locales/zh_TW/dialogue-male.json b/src/locales/zh_TW/dialogue-male.json index dc158650022..635168ddd6a 100644 --- a/src/locales/zh_TW/dialogue-male.json +++ b/src/locales/zh_TW/dialogue-male.json @@ -1196,7 +1196,7 @@ "1": "謝謝!多虧了我們的戰鬥,\n我的研究也取得了進展!" } }, - "koga": { + "koga_gym": { "encounter": { "1": "Fwahahaha! Very well, I shall show you true terror as a ninja master!" }, @@ -1207,7 +1207,7 @@ "1": "Despair to the creeping horror of Poison-type Pokémon!" } }, - "koga_elite": { + "koga": { "encounter": { "1": "哇哈哈哈哈!$寶可夢不僅僅是關於蠻力,拭目以待吧!" }, From 5883a14adda1bff1a3a1b9341268564b6830a1a4 Mon Sep 17 00:00:00 2001 From: AJ Fontaine Date: Wed, 28 Aug 2024 21:51:12 -0400 Subject: [PATCH 13/19] Revert placeholder additions in locale files --- src/locales/ko/dialogue-female.json | 11 ----------- src/locales/ko/dialogue-male.json | 11 ----------- src/locales/pt_BR/dialogue-female.json | 11 ----------- src/locales/pt_BR/dialogue-male.json | 11 ----------- src/locales/zh_CN/dialogue-female.json | 11 ----------- src/locales/zh_CN/dialogue-male.json | 11 ----------- src/locales/zh_TW/dialogue-female.json | 11 ----------- src/locales/zh_TW/dialogue-male.json | 11 ----------- 8 files changed, 88 deletions(-) diff --git a/src/locales/ko/dialogue-female.json b/src/locales/ko/dialogue-female.json index 6ee73bc8f91..693b0704512 100644 --- a/src/locales/ko/dialogue-female.json +++ b/src/locales/ko/dialogue-female.json @@ -1604,17 +1604,6 @@ "1": "고마워! 방금 승부 덕분에, 내 연구도 진전을 이룬 것 같아!" } }, - "koga_gym": { - "encounter": { - "1": "Fwahahaha! Very well, I shall show you true terror as a ninja master!" - }, - "victory": { - "1": "Humph! You've proven your worth!" - }, - "defeat": { - "1": "Despair to the creeping horror of Poison-type Pokémon!" - } - }, "koga": { "encounter": { "1": "후하하하! 포켓몬은 단순히 강한 것만이 아니다--곧 알려주지!" diff --git a/src/locales/ko/dialogue-male.json b/src/locales/ko/dialogue-male.json index 6ee73bc8f91..693b0704512 100644 --- a/src/locales/ko/dialogue-male.json +++ b/src/locales/ko/dialogue-male.json @@ -1604,17 +1604,6 @@ "1": "고마워! 방금 승부 덕분에, 내 연구도 진전을 이룬 것 같아!" } }, - "koga_gym": { - "encounter": { - "1": "Fwahahaha! Very well, I shall show you true terror as a ninja master!" - }, - "victory": { - "1": "Humph! You've proven your worth!" - }, - "defeat": { - "1": "Despair to the creeping horror of Poison-type Pokémon!" - } - }, "koga": { "encounter": { "1": "후하하하! 포켓몬은 단순히 강한 것만이 아니다--곧 알려주지!" diff --git a/src/locales/pt_BR/dialogue-female.json b/src/locales/pt_BR/dialogue-female.json index 674b0107cc6..7f4dfe8865d 100644 --- a/src/locales/pt_BR/dialogue-female.json +++ b/src/locales/pt_BR/dialogue-female.json @@ -1570,17 +1570,6 @@ "1": "Obrigado! Graças à nossa batalha, eu também pude fazer progressos na minha pesquisa!" } }, - "koga_gym": { - "encounter": { - "1": "Fwahahaha! Very well, I shall show you true terror as a ninja master!" - }, - "victory": { - "1": "Humph! You've proven your worth!" - }, - "defeat": { - "1": "Despair to the creeping horror of Poison-type Pokémon!" - } - }, "koga": { "encounter": { "1": "Fwahahahaha! Pokémon não são apenas sobre força bruta--você verá em breve!" diff --git a/src/locales/pt_BR/dialogue-male.json b/src/locales/pt_BR/dialogue-male.json index 7455725e8aa..0316dda2524 100644 --- a/src/locales/pt_BR/dialogue-male.json +++ b/src/locales/pt_BR/dialogue-male.json @@ -1604,17 +1604,6 @@ "1": "Obrigado! Graças à nossa batalha, eu também pude fazer progressos na minha pesquisa!" } }, - "koga_gym": { - "encounter": { - "1": "Fwahahaha! Very well, I shall show you true terror as a ninja master!" - }, - "victory": { - "1": "Humph! You've proven your worth!" - }, - "defeat": { - "1": "Despair to the creeping horror of Poison-type Pokémon!" - } - }, "koga": { "encounter": { "1": "Fwahahahaha! Pokémon não são apenas sobre força bruta--você verá em breve!" diff --git a/src/locales/zh_CN/dialogue-female.json b/src/locales/zh_CN/dialogue-female.json index 7697822310a..09090f36d94 100644 --- a/src/locales/zh_CN/dialogue-female.json +++ b/src/locales/zh_CN/dialogue-female.json @@ -1604,17 +1604,6 @@ "1": "谢谢!多亏了我们的战斗,\n我的研究也取得了进展!" } }, - "koga_gym": { - "encounter": { - "1": "Fwahahaha! Very well, I shall show you true terror as a ninja master!" - }, - "victory": { - "1": "Humph! You've proven your worth!" - }, - "defeat": { - "1": "Despair to the creeping horror of Poison-type Pokémon!" - } - }, "koga": { "encounter": { "1": "哇哈哈哈哈!$宝可梦不仅仅是关于蛮力,拭目以待吧!" diff --git a/src/locales/zh_CN/dialogue-male.json b/src/locales/zh_CN/dialogue-male.json index 7697822310a..09090f36d94 100644 --- a/src/locales/zh_CN/dialogue-male.json +++ b/src/locales/zh_CN/dialogue-male.json @@ -1604,17 +1604,6 @@ "1": "谢谢!多亏了我们的战斗,\n我的研究也取得了进展!" } }, - "koga_gym": { - "encounter": { - "1": "Fwahahaha! Very well, I shall show you true terror as a ninja master!" - }, - "victory": { - "1": "Humph! You've proven your worth!" - }, - "defeat": { - "1": "Despair to the creeping horror of Poison-type Pokémon!" - } - }, "koga": { "encounter": { "1": "哇哈哈哈哈!$宝可梦不仅仅是关于蛮力,拭目以待吧!" diff --git a/src/locales/zh_TW/dialogue-female.json b/src/locales/zh_TW/dialogue-female.json index 635168ddd6a..4236e239622 100644 --- a/src/locales/zh_TW/dialogue-female.json +++ b/src/locales/zh_TW/dialogue-female.json @@ -1196,17 +1196,6 @@ "1": "謝謝!多虧了我們的戰鬥,\n我的研究也取得了進展!" } }, - "koga_gym": { - "encounter": { - "1": "Fwahahaha! Very well, I shall show you true terror as a ninja master!" - }, - "victory": { - "1": "Humph! You've proven your worth!" - }, - "defeat": { - "1": "Despair to the creeping horror of Poison-type Pokémon!" - } - }, "koga": { "encounter": { "1": "哇哈哈哈哈!$寶可夢不僅僅是關於蠻力,拭目以待吧!" diff --git a/src/locales/zh_TW/dialogue-male.json b/src/locales/zh_TW/dialogue-male.json index 635168ddd6a..4236e239622 100644 --- a/src/locales/zh_TW/dialogue-male.json +++ b/src/locales/zh_TW/dialogue-male.json @@ -1196,17 +1196,6 @@ "1": "謝謝!多虧了我們的戰鬥,\n我的研究也取得了進展!" } }, - "koga_gym": { - "encounter": { - "1": "Fwahahaha! Very well, I shall show you true terror as a ninja master!" - }, - "victory": { - "1": "Humph! You've proven your worth!" - }, - "defeat": { - "1": "Despair to the creeping horror of Poison-type Pokémon!" - } - }, "koga": { "encounter": { "1": "哇哈哈哈哈!$寶可夢不僅僅是關於蠻力,拭目以待吧!" From cba2c0e42911d1828e6f378c5942c25d27a059d8 Mon Sep 17 00:00:00 2001 From: AJ Fontaine Date: Tue, 3 Sep 2024 19:46:07 -0400 Subject: [PATCH 14/19] Move Koga_Gym enum to end of Gym Leaders --- src/enums/trainer-type.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/enums/trainer-type.ts b/src/enums/trainer-type.ts index 189016c4837..fc5b360b8ce 100644 --- a/src/enums/trainer-type.ts +++ b/src/enums/trainer-type.ts @@ -102,7 +102,6 @@ export enum TrainerType { LT_SURGE, ERIKA, JANINE, - KOGA_GYM, SABRINA, BLAINE, GIOVANNI, @@ -172,6 +171,7 @@ export enum TrainerType { RYME, TULIP, GRUSHA, + KOGA_GYM, LORELEI = 300, BRUNO, AGATHA, From 8056090999f141db8350257902344a822a247d27 Mon Sep 17 00:00:00 2001 From: AJ Fontaine Date: Tue, 3 Sep 2024 21:25:56 -0400 Subject: [PATCH 15/19] Devolve Giovanni's Nidoqueen --- src/data/trainer-config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/trainer-config.ts b/src/data/trainer-config.ts index 7d357639a5b..af9ad231749 100644 --- a/src/data/trainer-config.ts +++ b/src/data/trainer-config.ts @@ -1066,7 +1066,7 @@ export const signatureSpecies: SignatureSpecies = { KOGA_GYM: [Species.KOFFING, Species.GRIMER, Species.VENONAT], SABRINA: [Species.ABRA, Species.MR_MIME, Species.ESPEON], BLAINE: [Species.GROWLITHE, Species.PONYTA, Species.MAGMAR], - GIOVANNI: [Species.DIGLETT, Species.NIDORAN_M, Species.NIDOQUEEN, Species.RHYHORN], + GIOVANNI: [Species.DIGLETT, Species.NIDORAN_M, Species.NIDORAN_F, Species.RHYHORN], FALKNER: [Species.PIDGEY, Species.HOOTHOOT, Species.DODUO], BUGSY: [Species.SCYTHER, Species.YANMA, Species.PINECO], WHITNEY: [Species.CLEFAIRY, Species.MILTANK], From c00e5562b7250acfd0b1f3db711edcc1a4a822e6 Mon Sep 17 00:00:00 2001 From: AJ Fontaine Date: Sun, 8 Sep 2024 15:54:15 -0400 Subject: [PATCH 16/19] Give nonmaxed mons to galar leaders --- src/data/trainer-config.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/data/trainer-config.ts b/src/data/trainer-config.ts index af9ad231749..8280fcad126 100644 --- a/src/data/trainer-config.ts +++ b/src/data/trainer-config.ts @@ -1116,12 +1116,12 @@ export const signatureSpecies: SignatureSpecies = { MILO: [Species.GOSSIFLEUR, Species.APPLIN, Species.BOUNSWEET], NESSA: [Species.CHEWTLE, Species.ARROKUDA, Species.WIMPOD], KABU: [Species.SIZZLIPEDE, Species.GROWLITHE, Species.TORKOAL], - BEA: [Species.GALAR_FARFETCHD, Species.FALINKS, Species.CLOBBOPUS], - ALLISTER: [Species.GALAR_YAMASK, Species.GALAR_CORSOLA, Species.SINISTEA], + BEA: [Species.GALAR_FARFETCHD, Species.FALINKS, Species.CLOBBOPUS, Species.MACHOP], + ALLISTER: [Species.GALAR_YAMASK, Species.GALAR_CORSOLA, Species.SINISTEA, Species.GASTLY], OPAL: [Species.MILCERY, Species.TOGETIC, Species.GALAR_WEEZING], BEDE: [Species.HATENNA, Species.GALAR_PONYTA, Species.GARDEVOIR], GORDIE: [Species.ROLYCOLY, Species.STONJOURNER, Species.BINACLE], - MELONY: [Species.SNOM, Species.GALAR_DARUMAKA, Species.GALAR_MR_MIME], + MELONY: [Species.SNOM, Species.GALAR_DARUMAKA, Species.GALAR_MR_MIME, Species.LAPRAS], PIERS: [Species.GALAR_ZIGZAGOON, Species.SCRAGGY, Species.INKAY], MARNIE: [Species.IMPIDIMP, Species.PURRLOIN, Species.MORPEKO], RAIHAN: [Species.DURALUDON, Species.TRAPINCH, Species.TURTONATOR], From 38f2a48dc16448ad01672cb0cd8a9d792b506ee3 Mon Sep 17 00:00:00 2001 From: AJ Fontaine Date: Sun, 15 Sep 2024 14:56:04 -0400 Subject: [PATCH 17/19] Re-add Koga Gym enum oops --- src/enums/trainer-type.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/enums/trainer-type.ts b/src/enums/trainer-type.ts index cfc52b70eb0..fab1558d7ae 100644 --- a/src/enums/trainer-type.ts +++ b/src/enums/trainer-type.ts @@ -182,6 +182,7 @@ export enum TrainerType { RYME, TULIP, GRUSHA, + KOGA_GYM, LORELEI = 300, BRUNO, AGATHA, From 09bdb787f9d6ec4675eaef2900ad4d367bd008a3 Mon Sep 17 00:00:00 2001 From: AJ Fontaine Date: Mon, 16 Sep 2024 15:24:33 -0400 Subject: [PATCH 18/19] Fix vouchers moving around --- src/enums/trainer-type.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/enums/trainer-type.ts b/src/enums/trainer-type.ts index fab1558d7ae..2a1524d770e 100644 --- a/src/enums/trainer-type.ts +++ b/src/enums/trainer-type.ts @@ -113,6 +113,7 @@ export enum TrainerType { LT_SURGE, ERIKA, JANINE, + KOGA_GYM, SABRINA, BLAINE, GIOVANNI, @@ -182,7 +183,6 @@ export enum TrainerType { RYME, TULIP, GRUSHA, - KOGA_GYM, LORELEI = 300, BRUNO, AGATHA, From ec7eeea2a4477c1d326788d927532caca77109f8 Mon Sep 17 00:00:00 2001 From: AJ Fontaine Date: Tue, 17 Sep 2024 11:39:46 -0400 Subject: [PATCH 19/19] Fix specialtyType field on stat trainers and add it to admins --- src/data/trainer-config.ts | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/data/trainer-config.ts b/src/data/trainer-config.ts index d26b6388a82..f4cc672ed27 100644 --- a/src/data/trainer-config.ts +++ b/src/data/trainer-config.ts @@ -638,10 +638,11 @@ export class TrainerConfig { * Initializes the trainer configuration for an evil team admin. * @param title The title of the evil team admin. * @param poolName The evil team the admin belongs to. - * @param {Species | Species[]} signatureSpecies The signature species for the evil team leader. + * @param {Species | Species[]} signatureSpecies The signature species for the evil team admin. + * @param {Type} specialtyType The specialty type for the evil team admin. * @returns {TrainerConfig} The updated TrainerConfig instance. * **/ - initForEvilTeamAdmin(title: string, poolName: string, signatureSpecies: (Species | Species[])[],): TrainerConfig { + initForEvilTeamAdmin(title: string, poolName: string, signatureSpecies: (Species | Species[])[], specialtyType?: Type): TrainerConfig { if (!getIsInitialized()) { initI18n(); } @@ -656,6 +657,10 @@ export class TrainerConfig { } this.setPartyMemberFunc(-(s + 1), getRandomPartyMemberFunc(speciesPool)); }); + if (specialtyType) { + this.setSpeciesFilter(p => p.isOfType(specialtyType)); + this.setSpecialtyType(specialtyType); + } const nameForCall = this.name.toLowerCase().replace(/\s/g, "_"); this.name = i18next.t(`trainerNames:${nameForCall}`); @@ -673,11 +678,11 @@ export class TrainerConfig { /** * Initializes the trainer configuration for a Stat Trainer, as part of the Trainer's Test Mystery Encounter. * @param {Species | Species[]} signatureSpecies The signature species for the Elite Four member. - * @param {Type[]} specialtyTypes The specialty types for the Stat Trainer. + * @param {Type} specialtyType The specialty type for the Stat Trainer. * @param isMale Whether the Elite Four Member is Male or Female (for localization of the title). * @returns {TrainerConfig} The updated TrainerConfig instance. **/ - initForStatTrainer(signatureSpecies: (Species | Species[])[], isMale: boolean, ...specialtyTypes: Type[]): TrainerConfig { + initForStatTrainer(signatureSpecies: (Species | Species[])[], isMale: boolean, specialtyType?: Type): TrainerConfig { if (!getIsInitialized()) { initI18n(); } @@ -690,9 +695,9 @@ export class TrainerConfig { } this.setPartyMemberFunc(-(s + 1), getRandomPartyMemberFunc(speciesPool)); }); - if (specialtyTypes.length) { - this.setSpeciesFilter(p => specialtyTypes.find(t => p.isOfType(t)) !== undefined); - this.setSpecialtyTypes(...specialtyTypes); + if (specialtyType) { + this.setSpeciesFilter(p => p.isOfType(specialtyType)); + this.setSpecialtyType(specialtyType); } const nameForCall = this.name.toLowerCase().replace(/\s/g, "_"); this.name = i18next.t(`trainerNames:${nameForCall}`); @@ -1060,8 +1065,8 @@ export class TrainerConfig { clone = this.speciesPools ? clone.setSpeciesPools(this.speciesPools) : clone; clone = this.speciesFilter ? clone.setSpeciesFilter(this.speciesFilter) : clone; - if (this.specialtyTypes) { - clone.specialtyTypes = this.specialtyTypes.slice(0); + if (this.specialtyType) { + clone.specialtyType = this.specialtyType; } clone.encounterMessages = this.encounterMessages?.slice(0);