[Feature] Implement generic evil team admins (#3234)

* [Hotfix] Fix interactions of some moves not changing types (#3183)

* [Hotfix] Fix wild spawns not having their HA (#3190)

* Add evil admin placeholder images

* Add admin names to locale files

* Add evil team admin dialogue

* Added new sprites

* Make simple admin trainer pools

* Add Korean localization

* Increase evil boss money multiplier from 2.25 to 2.5

---------

Co-authored-by: Adrian T. <68144167+torranx@users.noreply.github.com>
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
This commit is contained in:
Tempoanon 2024-08-03 16:34:05 -04:00 committed by GitHub
parent 153d8ba557
commit 7048fbe06f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
43 changed files with 3265 additions and 7 deletions

View File

@ -0,0 +1,41 @@
{
"textures": [
{
"image": "aqua_admin.png",
"format": "RGBA8888",
"size": {
"w": 80,
"h": 80
},
"scale": 1,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 80,
"h": 80
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 80,
"h": 80
},
"frame": {
"x": 0,
"y": 0,
"w": 80,
"h": 80
}
}
]
}
],
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
"smartupdate": "$TexturePacker:SmartUpdate:831f5748dad92911b10a1cb358ee2dae:a3bf81bbaa3b49cad5e0e549cf94563b:bb6befc9383c9c08837183ae2a7a80c1$"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -0,0 +1,41 @@
{
"textures": [
{
"image": "aqua_admin_f.png",
"format": "RGBA8888",
"size": {
"w": 80,
"h": 80
},
"scale": 1,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 80,
"h": 80
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 80,
"h": 80
},
"frame": {
"x": 0,
"y": 0,
"w": 80,
"h": 80
}
}
]
}
],
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
"smartupdate": "$TexturePacker:SmartUpdate:efd07ff3ed1e610150a4b8ca18974343:d9b85b9eb11182e9e4669e2bd8b08694:72b7b50231708a9486d5f315824e4df1$"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 865 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 671 B

View File

@ -0,0 +1,41 @@
{
"textures": [
{
"image": "flare_admin_f.png",
"format": "RGBA8888",
"size": {
"w": 80,
"h": 80
},
"scale": 1,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 80,
"h": 80
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 80,
"h": 80
},
"frame": {
"x": 0,
"y": 0,
"w": 80,
"h": 80
}
}
]
}
],
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
"smartupdate": "$TexturePacker:SmartUpdate:831f5748dad92911b10a1cb358ee2dae:a3bf81bbaa3b49cad5e0e549cf94563b:bb6befc9383c9c08837183ae2a7a80c1$"
}
}

View File

@ -0,0 +1,41 @@
{
"textures": [
{
"image": "flare_admin_m.png",
"format": "RGBA8888",
"size": {
"w": 80,
"h": 80
},
"scale": 1,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 80,
"h": 80
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 80,
"h": 80
},
"frame": {
"x": 0,
"y": 0,
"w": 80,
"h": 80
}
}
]
}
],
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
"smartupdate": "$TexturePacker:SmartUpdate:c30bf82452209a923f4becf13d275a9a:a6355b09f92c9c0388d0b919010f587f:0638dbf213f8a974eb5af76eb1e5ddeb$"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 789 B

View File

@ -0,0 +1,41 @@
{
"textures": [
{
"image": "galactic_admin_f.png",
"format": "RGBA8888",
"size": {
"w": 80,
"h": 80
},
"scale": 1,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 80,
"h": 80
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 80,
"h": 80
},
"frame": {
"x": 0,
"y": 0,
"w": 80,
"h": 80
}
}
]
}
],
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
"smartupdate": "$TexturePacker:SmartUpdate:831f5748dad92911b10a1cb358ee2dae:a3bf81bbaa3b49cad5e0e549cf94563b:bb6befc9383c9c08837183ae2a7a80c1$"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 621 B

View File

@ -0,0 +1,41 @@
{
"textures": [
{
"image": "galactic_admin_m.png",
"format": "RGBA8888",
"size": {
"w": 80,
"h": 80
},
"scale": 1,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 80,
"h": 80
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 80,
"h": 80
},
"frame": {
"x": 0,
"y": 0,
"w": 80,
"h": 80
}
}
]
}
],
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
"smartupdate": "$TexturePacker:SmartUpdate:3012867f03f02c4ee67a8ab3ad5a000e:77a5f60f1adc158664b3b2ee17bf30fe:7e8259b5177c0a76e5d02d6bdc66affe$"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 689 B

View File

@ -0,0 +1,41 @@
{
"textures": [
{
"image": "magma_admin_m.png",
"format": "RGBA8888",
"size": {
"w": 80,
"h": 80
},
"scale": 1,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 80,
"h": 80
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 80,
"h": 80
},
"frame": {
"x": 0,
"y": 0,
"w": 80,
"h": 80
}
}
]
}
],
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
"smartupdate": "$TexturePacker:SmartUpdate:831f5748dad92911b10a1cb358ee2dae:a3bf81bbaa3b49cad5e0e549cf94563b:bb6befc9383c9c08837183ae2a7a80c1$"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 847 B

View File

@ -0,0 +1,41 @@
{
"textures": [
{
"image": "magma_admin_f.png",
"format": "RGBA8888",
"size": {
"w": 80,
"h": 80
},
"scale": 1,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 80,
"h": 80
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 80,
"h": 80
},
"frame": {
"x": 0,
"y": 0,
"w": 80,
"h": 80
}
}
]
}
],
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
"smartupdate": "$TexturePacker:SmartUpdate:f63ad48affc076f60fae78992c96a2bf:80928b32710abcb28c07c6fc5a425d99:3b961d8852b62aaf24ceb2030c036515$"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 845 B

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

View File

@ -0,0 +1,41 @@
{
"textures": [
{
"image": "rocket_admin_f.png",
"format": "RGBA8888",
"size": {
"w": 80,
"h": 80
},
"scale": 1,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 80,
"h": 80
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 80,
"h": 80
},
"frame": {
"x": 0,
"y": 0,
"w": 80,
"h": 80
}
}
]
}
],
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
"smartupdate": "$TexturePacker:SmartUpdate:831f5748dad92911b10a1cb358ee2dae:a3bf81bbaa3b49cad5e0e549cf94563b:bb6befc9383c9c08837183ae2a7a80c1$"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 736 B

View File

@ -0,0 +1,41 @@
{
"textures": [
{
"image": "rocket_admin_m.png",
"format": "RGBA8888",
"size": {
"w": 80,
"h": 80
},
"scale": 1,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
"w": 80,
"h": 80
},
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 80,
"h": 80
},
"frame": {
"x": 0,
"y": 0,
"w": 80,
"h": 80
}
}
]
}
],
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
"smartupdate": "$TexturePacker:SmartUpdate:831f5748dad92911b10a1cb358ee2dae:a3bf81bbaa3b49cad5e0e549cf94563b:bb6befc9383c9c08837183ae2a7a80c1$"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 645 B

View File

@ -464,7 +464,8 @@ export interface FixedBattleConfigs {
/**
* Youngster/Lass on 5
* Rival on 8, 55, 95, 145, 195
* Evil team grunts on 35, 62, 64, 66, 112, 114
* Evil team grunts on 35, 62, 64, and 112
* Evil team admin on 66 and 114
* Evil leader on 115, 165
* E4 on 182, 184, 186, 188
* Champion on 190
@ -485,13 +486,13 @@ export const classicFixedBattles: FixedBattleConfigs = {
[64]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(35)
.setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.ROCKET_GRUNT, TrainerType.MAGMA_GRUNT, TrainerType.AQUA_GRUNT, TrainerType.GALACTIC_GRUNT, TrainerType.PLASMA_GRUNT, TrainerType.FLARE_GRUNT ], true)),
[66]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(35)
.setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.ROCKET_GRUNT, TrainerType.MAGMA_GRUNT, TrainerType.AQUA_GRUNT, TrainerType.GALACTIC_GRUNT, TrainerType.PLASMA_GRUNT, TrainerType.FLARE_GRUNT ], true)),
.setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.ROCKET_ADMIN, TrainerType.MAGMA_ADMIN, TrainerType.AQUA_ADMIN, TrainerType.GALACTIC_ADMIN, TrainerType.PLASMA_SAGE, TrainerType.FLARE_ADMIN ], true)),
[95]: new FixedBattleConfig().setBattleType(BattleType.TRAINER)
.setGetTrainerFunc(scene => new Trainer(scene, TrainerType.RIVAL_4, scene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)),
[112]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(35)
.setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.ROCKET_GRUNT, TrainerType.MAGMA_GRUNT, TrainerType.AQUA_GRUNT, TrainerType.GALACTIC_GRUNT, TrainerType.PLASMA_GRUNT, TrainerType.FLARE_GRUNT ], true)),
[114]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(35)
.setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.ROCKET_GRUNT, TrainerType.MAGMA_GRUNT, TrainerType.AQUA_GRUNT, TrainerType.GALACTIC_GRUNT, TrainerType.PLASMA_GRUNT, TrainerType.FLARE_GRUNT ], true)),
.setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.ROCKET_ADMIN, TrainerType.MAGMA_ADMIN, TrainerType.AQUA_ADMIN, TrainerType.GALACTIC_ADMIN, TrainerType.PLASMA_SAGE, TrainerType.FLARE_ADMIN ], true)),
[115]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(35)
.setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.ROCKET_BOSS_GIOVANNI_1, TrainerType.MAXIE, TrainerType.ARCHIE, TrainerType.CYRUS, TrainerType.GHETSIS, TrainerType.LYSANDRE ])),
[145]: new FixedBattleConfig().setBattleType(BattleType.TRAINER)

View File

@ -459,6 +459,20 @@ export const trainerTypeDialogue: TrainerTypeDialogue = {
]
}
],
[TrainerType.ROCKET_ADMIN]: [
{
encounter: [
"dialogue:rocket_admin.encounter.1",
"dialogue:rocket_admin.encounter.2",
"dialogue:rocket_admin.encounter.3",
],
victory: [
"dialogue:rocket_admin.victory.1",
"dialogue:rocket_admin.victory.2",
"dialogue:rocket_admin.victory.3",
]
}
],
[TrainerType.MAGMA_GRUNT]: [
{
encounter: [
@ -469,6 +483,20 @@ export const trainerTypeDialogue: TrainerTypeDialogue = {
]
}
],
[TrainerType.MAGMA_ADMIN]: [
{
encounter: [
"dialogue:magma_admin.encounter.1",
"dialogue:magma_admin.encounter.2",
"dialogue:magma_admin.encounter.3",
],
victory: [
"dialogue:magma_admin.victory.1",
"dialogue:magma_admin.victory.2",
"dialogue:magma_admin.victory.3",
]
}
],
[TrainerType.AQUA_GRUNT]: [
{
encounter: [
@ -479,6 +507,20 @@ export const trainerTypeDialogue: TrainerTypeDialogue = {
]
}
],
[TrainerType.AQUA_ADMIN]: [
{
encounter: [
"dialogue:aqua_admin.encounter.1",
"dialogue:aqua_admin.encounter.2",
"dialogue:aqua_admin.encounter.3",
],
victory: [
"dialogue:aqua_admin.victory.1",
"dialogue:aqua_admin.victory.2",
"dialogue:aqua_admin.victory.3",
]
}
],
[TrainerType.GALACTIC_GRUNT]: [
{
encounter: [
@ -489,6 +531,20 @@ export const trainerTypeDialogue: TrainerTypeDialogue = {
]
}
],
[TrainerType.GALACTIC_ADMIN]: [
{
encounter: [
"dialogue:galactic_admin.encounter.1",
"dialogue:galactic_admin.encounter.2",
"dialogue:galactic_admin.encounter.3",
],
victory: [
"dialogue:galactic_admin.victory.1",
"dialogue:galactic_admin.victory.2",
"dialogue:galactic_admin.victory.3",
]
}
],
[TrainerType.PLASMA_GRUNT]: [
{
encounter: [
@ -499,6 +555,20 @@ export const trainerTypeDialogue: TrainerTypeDialogue = {
]
}
],
[TrainerType.PLASMA_SAGE]: [
{
encounter: [
"dialogue:plasma_sage.encounter.1",
"dialogue:plasma_sage.encounter.2",
"dialogue:plasma_sage.encounter.3",
],
victory: [
"dialogue:plasma_sage.victory.1",
"dialogue:plasma_sage.victory.2",
"dialogue:plasma_sage.victory.3",
]
}
],
[TrainerType.FLARE_GRUNT]: [
{
encounter: [
@ -509,6 +579,20 @@ export const trainerTypeDialogue: TrainerTypeDialogue = {
]
}
],
[TrainerType.FLARE_ADMIN]: [
{
encounter: [
"dialogue:flare_admin.encounter.1",
"dialogue:flare_admin.encounter.2",
"dialogue:flare_admin.encounter.3",
],
victory: [
"dialogue:flare_admin.victory.1",
"dialogue:flare_admin.victory.2",
"dialogue:flare_admin.victory.3",
]
}
],
[TrainerType.ROCKET_BOSS_GIOVANNI_1]: [
{
encounter: [

View File

@ -556,7 +556,7 @@ export class TrainerConfig {
const nameForCall = this.name.toLowerCase().replace(/\s/g, "_");
this.name = i18next.t(`trainerNames:${nameForCall}`);
this.setTitle(title);
this.setMoneyMultiplier(2.25);
this.setMoneyMultiplier(2.5);
this.setBoss();
this.setStaticParty();
this.setBattleBgm("battle_plasma_boss");
@ -1187,6 +1187,12 @@ export const trainerConfigs: TrainerConfigs = {
[TrainerPoolTier.RARE]: [Species.PORYGON, Species.ALOLA_RATTATA, Species.ALOLA_SANDSHREW, Species.ALOLA_MEOWTH, Species.ALOLA_GRIMER, Species.ALOLA_GEODUDE],
[TrainerPoolTier.SUPER_RARE]: [Species.DRATINI, Species.LARVITAR]
}),
[TrainerType.ROCKET_ADMIN]: new TrainerConfig(++t).setHasGenders().setMoneyMultiplier(1.5).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_rocket_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(scene => getEvilGruntPartyTemplate(scene))
.setSpeciesPools({
[TrainerPoolTier.COMMON]: [ Species.RATTATA, Species.KOFFING, Species.EKANS, Species.GYARADOS, Species.TAUROS, Species.SCYTHER, Species.CUBONE, Species.GROWLITHE, Species.MURKROW, Species.GASTLY, Species.EXEGGCUTE, Species.VOLTORB],
[TrainerPoolTier.UNCOMMON]: [Species.PORYGON, Species.ALOLA_RATTATA, Species.ALOLA_SANDSHREW, Species.ALOLA_MEOWTH, Species.ALOLA_GRIMER, Species.ALOLA_GEODUDE],
[TrainerPoolTier.RARE]: [Species.DRATINI, Species.LARVITAR]
}),
[TrainerType.MAGMA_GRUNT]: new TrainerConfig(++t).setHasGenders("Magma Grunt Female").setHasDouble("Magma Grunts").setMoneyMultiplier(1.0).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_aqua_magma_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(scene => getEvilGruntPartyTemplate(scene))
.setSpeciesPools({
[TrainerPoolTier.COMMON]: [Species.SLUGMA, Species.POOCHYENA, Species.NUMEL, Species.ZIGZAGOON, Species.DIGLETT, Species.MAGBY, Species.TORKOAL, Species.BALTOY, Species.BARBOACH],
@ -1194,6 +1200,12 @@ export const trainerConfigs: TrainerConfigs = {
[TrainerPoolTier.RARE]: [Species.TRAPINCH, Species.HEATMOR],
[TrainerPoolTier.SUPER_RARE]: [Species.TURTONATOR, Species.CHARCADET]
}),
[TrainerType.MAGMA_ADMIN]: new TrainerConfig(++t).setHasGenders().setMoneyMultiplier(1.5).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_aqua_magma_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(scene => getEvilGruntPartyTemplate(scene))
.setSpeciesPools({
[TrainerPoolTier.COMMON]: [ Species.NUMEL, Species.POOCHYENA, Species.SLUGMA, Species.SOLROCK, Species.HIPPOPOTAS, Species.SANDACONDA, Species.PHANPY, Species.SWINUB, Species.GLIGAR],
[TrainerPoolTier.UNCOMMON]: [Species.TRAPINCH, Species.HEATMOR],
[TrainerPoolTier.RARE]: [Species.TURTONATOR, Species.CHARCADET]
}),
[TrainerType.AQUA_GRUNT]: new TrainerConfig(++t).setHasGenders("Aqua Grunt Female").setHasDouble("Aqua Grunts").setMoneyMultiplier(1.0).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_aqua_magma_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(scene => getEvilGruntPartyTemplate(scene))
.setSpeciesPools({
[TrainerPoolTier.COMMON]: [ Species.CARVANHA, Species.WAILMER, Species.ZIGZAGOON, Species.LOTAD, Species.CORPHISH, Species.SPHEAL ],
@ -1201,6 +1213,12 @@ export const trainerConfigs: TrainerConfigs = {
[TrainerPoolTier.RARE]: [Species.MANTINE, Species.BASCULEGION, Species.REMORAID, Species.ARROKUDA],
[TrainerPoolTier.SUPER_RARE]: [Species.DONDOZO]
}),
[TrainerType.AQUA_ADMIN]: new TrainerConfig(++t).setHasGenders().setMoneyMultiplier(1.5).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_aqua_magma_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(scene => getEvilGruntPartyTemplate(scene))
.setSpeciesPools({
[TrainerPoolTier.COMMON]: [ Species.CARVANHA, Species.CORPHISH, Species.ZIGZAGOON, Species.CLAMPERL, Species.CHINCHOU, Species.WOOPER, Species.WINGULL, Species.TENTACOOL, Species.QWILFISH ],
[TrainerPoolTier.UNCOMMON]: [Species.MANTINE, Species.BASCULEGION, Species.REMORAID, Species.ARROKUDA],
[TrainerPoolTier.RARE]: [Species.DONDOZO]
}),
[TrainerType.GALACTIC_GRUNT]: new TrainerConfig(++t).setHasGenders("Galactic Grunt Female").setHasDouble("Galactic Grunts").setMoneyMultiplier(1.0).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_galactic_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(scene => getEvilGruntPartyTemplate(scene))
.setSpeciesPools({
[TrainerPoolTier.COMMON]: [ Species.GLAMEOW, Species.STUNKY, Species.CROAGUNK, Species.SHINX, Species.WURMPLE, Species.BRONZOR, Species.DRIFLOON, Species.BURMY],
@ -1208,6 +1226,12 @@ export const trainerConfigs: TrainerConfigs = {
[TrainerPoolTier.RARE]: [Species.HISUI_GROWLITHE, Species.HISUI_QWILFISH, Species.HISUI_SNEASEL],
[TrainerPoolTier.SUPER_RARE]: [Species.HISUI_ZORUA, Species.HISUI_SLIGGOO]
}),
[TrainerType.GALACTIC_ADMIN]: new TrainerConfig(++t).setHasGenders().setMoneyMultiplier(1.5).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_galactic_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(scene => getEvilGruntPartyTemplate(scene))
.setSpeciesPools({
[TrainerPoolTier.COMMON]: [ Species.GLAMEOW, Species.STUNKY, Species.BRONZOR, Species.CARNIVINE, Species.GROWLITHE, Species.QWILFISH, Species.SNEASEL ],
[TrainerPoolTier.UNCOMMON]: [Species.HISUI_GROWLITHE, Species.HISUI_QWILFISH, Species.HISUI_SNEASEL],
[TrainerPoolTier.RARE]: [Species.HISUI_ZORUA, Species.HISUI_SLIGGOO]
}),
[TrainerType.PLASMA_GRUNT]: new TrainerConfig(++t).setHasGenders("Plasma Grunt Female").setHasDouble("Plasma Grunts").setMoneyMultiplier(1.0).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_plasma_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(scene => getEvilGruntPartyTemplate(scene))
.setSpeciesPools({
[TrainerPoolTier.COMMON]: [ Species.PATRAT, Species.LILLIPUP, Species.PURRLOIN, Species.SCRAFTY, Species.WOOBAT, Species.VANILLITE, Species.SANDILE, Species.TRUBBISH],
@ -1215,6 +1239,12 @@ export const trainerConfigs: TrainerConfigs = {
[TrainerPoolTier.RARE]: [Species.PAWNIARD, Species.VULLABY, Species.ZORUA, Species.DRILBUR, Species.KLINK],
[TrainerPoolTier.SUPER_RARE]: [Species.DRUDDIGON, Species.BOUFFALANT, Species.AXEW, Species.DEINO, Species.DURANT]
}),
[TrainerType.PLASMA_SAGE]: new TrainerConfig(++t).setMoneyMultiplier(1.5).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_plasma_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(scene => getEvilGruntPartyTemplate(scene))
.setSpeciesPools({
[TrainerPoolTier.COMMON]: [ Species.SCRAFTY, Species.LILLIPUP, Species.PURRLOIN, Species.FRILLISH, Species.VENIPEDE, Species.GOLETT, Species.TIMBURR, Species.DARUMAKA, Species.AMOONGUSS],
[TrainerPoolTier.UNCOMMON]: [Species.PAWNIARD, Species.VULLABY, Species.ZORUA, Species.DRILBUR, Species.KLINK],
[TrainerPoolTier.RARE]: [Species.DRUDDIGON, Species.BOUFFALANT, Species.AXEW, Species.DEINO, Species.DURANT]
}),
[TrainerType.FLARE_GRUNT]: new TrainerConfig(++t).setHasGenders("Flare Grunt Female").setHasDouble("Flare Grunts").setMoneyMultiplier(1.0).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_flare_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(scene => getEvilGruntPartyTemplate(scene))
.setSpeciesPools({
[TrainerPoolTier.COMMON]: [ Species.FLETCHLING, Species.LITLEO, Species.PONYTA, Species.INKAY, Species.HOUNDOUR, Species.SKORUPI, Species.SCRAFTY, Species.CROAGUNK],
@ -1222,6 +1252,12 @@ export const trainerConfigs: TrainerConfigs = {
[TrainerPoolTier.RARE]: [Species.LITWICK, Species.SNEASEL, Species.PANCHAM, Species.PAWNIARD],
[TrainerPoolTier.SUPER_RARE]: [Species.NOIVERN, Species.DRUDDIGON]
}),
[TrainerType.FLARE_ADMIN]: new TrainerConfig(++t).setHasGenders().setMoneyMultiplier(1.5).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_flare_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(scene => getEvilGruntPartyTemplate(scene))
.setSpeciesPools({
[TrainerPoolTier.COMMON]: [ Species.FLETCHLING, Species.LITLEO, Species.INKAY, Species.HELIOPTILE, Species.ELECTRIKE, Species.SKRELP, Species.GULPIN, Species.PURRLOIN, Species.POOCHYENA, Species.SCATTERBUG],
[TrainerPoolTier.UNCOMMON]: [Species.LITWICK, Species.SNEASEL, Species.PANCHAM, Species.PAWNIARD],
[TrainerPoolTier.RARE]: [Species.NOIVERN, Species.DRUDDIGON]
}),
[TrainerType.BROCK]: new TrainerConfig((t = TrainerType.BROCK)).initForGymLeader(signatureSpecies["BROCK"],true, Type.ROCK).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"),
[TrainerType.MISTY]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["MISTY"],false, Type.WATER).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"),
[TrainerType.LT_SURGE]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["LT_SURGE"],true, Type.ELECTRIC).setBattleBgm("battle_kanto_gym").setMixedBattleBgm("battle_kanto_gym"),

View File

@ -53,11 +53,17 @@ export enum TrainerType {
WORKER,
YOUNGSTER,
ROCKET_GRUNT,
ROCKET_ADMIN,
MAGMA_GRUNT,
MAGMA_ADMIN,
AQUA_GRUNT,
AQUA_ADMIN,
GALACTIC_GRUNT,
GALACTIC_ADMIN,
PLASMA_GRUNT,
PLASMA_SAGE,
FLARE_GRUNT,
FLARE_ADMIN,
ROCKET_BOSS_GIOVANNI_1,
ROCKET_BOSS_GIOVANNI_2,
MAXIE,

View File

@ -121,8 +121,8 @@ export default class Trainer extends Phaser.GameObjects.Container {
// Determine the title to include based on the configuration and includeTitle flag.
let title = includeTitle && this.config.title ? this.config.title : null;
if (this.name === "" && name.toLowerCase().includes("grunt")) {
const evilTeamTitles = ["grunt", "admin", "sage"];
if (this.name === "" && evilTeamTitles.some(t => name.toLocaleLowerCase().includes(t))) {
// This is a evil team grunt so we localize it by only using the "name" as the title
title = i18next.t(`trainerClasses:${name.toLowerCase().replace(/\s/g, "_")}`);
console.log("Localized grunt name: " + title);

View File

@ -378,6 +378,18 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: "Das war mal wieder ein Schuss in den Ofen!"
},
},
"rocket_admin": {
"encounter": {
1: "Oh? You managed to get this far? You must be quite the trainer.",
2: "That's quite enough of you playing hero, kid.",
3: "I'll show you how scary an angry adult can be!"
},
"victory": {
1: "No! Forgive me Giovanni!",
2: "How could this be?",
3: "Urgh... You were too strong..."
},
},
"firebreather": {
"encounter": {
1: "Meine Flammen werden dich verschlingen!",
@ -410,6 +422,18 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: "Wie kann das sein? Ich bin Teil vom mächtigen Team Magma! Wir wollen doch nur die Welt verbessern…"
},
},
"magma_admin": {
"encounter": {
1: "Hehehe! So you've come all the way here! But you're too late!",
2: "You're going to meddle in Team Magma's affairs? You're so cute you're disgusting! I'll put you down kiddy!",
3: "I'm going to give you a little taste of pain! Resign yourself to it!"
},
"victory": {
1: "Hehehe... So I lost...",
2: "You're disgustingly strong!",
3: "Ahahaha! Ouch!"
},
},
"aqua_grunt": {
"encounter": {
1: "Du willst dich also mit Team Aqua anlegen? Du traust dich ja was… Dich werfe ich über Bord!",
@ -418,6 +442,18 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: "Vielleicht sollte ich wohl lieber selber über die Planke gehen…",
},
},
"aqua_admin": {
"encounter": {
1: "I'm a cut above the grunts you've seen so far. I'm going to puvlerize you!",
2: "Hahn? What's this? Who's this spoiled brat?",
3: "What are you doing here? Did you follow us?"
},
"victory": {
1: "So I lost too...",
2: "Ahhh?! Did I go too easy on you?!",
3: "Wh-what was that?"
},
},
"galactic_grunt": {
"encounter": {
1: "Team Galaktik wird die Welt in eine bessere Welt verwandeln! Und du wirst uns nicht aufhalten!"
@ -426,6 +462,18 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: "Zyrus wird uns für diese Niederlage bestrafen…"
},
},
"galactic_admin": {
"encounter": {
1: "I'm one of Team Galactic's Commanders.",
2: "Anything that opposes Team Galactic must be crushed! Even the very thought of opposition will not be tolerated!",
3: "What's the matter? Don't tell me you're shaking?"
},
"victory": {
1: "This can't be?! I lost?! You... you uppity brat!",
2: "You, my friend, are tough!",
3: "Losing to some child... Being careless cost me too much."
},
},
"plasma_grunt": {
"encounter": {
1: "Pokémon sollten frei sein! Team Plasma wird sie befreien!"
@ -434,6 +482,18 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: "Wie konnte ich verlieren? Ich dachte, ich würde die Welt retten…"
},
},
"plasma_sage": {
"encounter": {
1: "You could become a threat to Team Plasma, so we will eliminate you here!",
2: "Oh, for crying out loud... I didn't expect to have to fight!",
3: "You're an impressive Trainer to have made it this far."
},
"victory": {
1: "Ghetsis...",
2: "It's bitter cold. I'm shivering. I'm suffering.",
3: "Hmph. You're a smarter Trainer than I expected."
},
},
"flare_grunt": {
"encounter": {
1: `Ich bin ein Mitglied von Team Flare! Das sieht man mir doch an. Mein Stil ist unverkennbar!
@ -443,6 +503,18 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: "Stil ist wohl doch nicht alles…"
},
},
"flare_admin": {
"encounter": {
1: "Ah ha ha! It would be my pleasure. Come on, little Trainer! Let's see what you've got!",
2: "Hmm... You're more powerful than you look. I wonder how much energy there is inside you.",
3: "I've been waiting for you! I need to do a little research on you! Come, let us begin!"
},
"victory": {
1: "You're quite strong. Oh yes-very strong, indeed.",
2: "Ding-ding-ding! Yup, you did it! To the victor goes the spoils!",
3: "Wonderful! Amazing! You have tremendous skill and bravery!"
},
},
"rocket_boss_giovanni_1": {
"encounter": {
1: `Ich bin beeindruckt, du hast es bis hierher geschafft!

View File

@ -128,21 +128,32 @@ export const trainerClasses: SimpleTranslationEntries = {
"rocket_grunt": "Rüpel von Team Rocket",
"rocket_grunt_female": "Rüpel von Team Rocket",
"rocket_grunts": "Rüpel von Team Rocket",
"rocket_admin": "Rocket Admin",
"rocket_admin_female": "Rocket Admin",
"magma_grunt": "Rüpel von Team Magma",
"magma_grunt_female": "Rüpel von Team Magma",
"magma_grunts": "Rüpel von Team Magma",
"magma_admin": "Magma Admin",
"magma_admin_female": "Magma Admin",
"aqua_grunt": "Rüpel von Team Aqua",
"aqua_grunt_female": "Rüpel von Team Aqua",
"aqua_grunts": "Rüpel von Team Aqua",
"aqua_admin": "Aqua Admin",
"aqua_admin_female": "Aqua Admin",
"galactic_grunt": "Rüpel von Team Galaktik",
"galactic_grunt_female": "Rüpel von Team Galaktik",
"galactic_grunts": "Rüpel von Team Galaktik",
"galactic_admin": "Galactic Admin",
"galactic_admin_female": "Galactic Admin",
"plasma_grunt": "Rüpel von Team Plasma",
"plasma_grunt_female": "Rüpel von Team Plasma",
"plasma_grunts": "Rüpel von Team Plasma",
"plasma_sage": "Plasma Sage",
"flare_grunt": "Rüpel von Team Flare",
"flare_grunt_female": "Rüpel von Team Flare",
"flare_grunts": "Rüpel von Team Flare",
"flare_admin": "Flare Admin",
"flare_admin_female": "Flare Admin",
} as const;
// Names of special trainers like gym leaders, elite four, and the champion

View File

@ -391,6 +391,18 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: "Team Rocket blasting off again!"
},
},
"rocket_admin": {
"encounter": {
1: "Oh? You managed to get this far? You must be quite the trainer.",
2: "That's quite enough of you playing hero, kid.",
3: "I'll show you how scary an angry adult can be!"
},
"victory": {
1: "No! Forgive me Giovanni!",
2: "How could this be?",
3: "Urgh... You were too strong..."
},
},
"magma_grunt": {
"encounter": {
1: " If you get in the way of Team Magma, dont expect any mercy!"
@ -399,6 +411,18 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: "Huh? I lost?!"
},
},
"magma_admin": {
"encounter": {
1: "Hehehe! So you've come all the way here! But you're too late!",
2: "You're going to meddle in Team Magma's affairs? You're so cute you're disgusting! I'll put you down kiddy!",
3: "I'm going to give you a little taste of pain! Resign yourself to it!"
},
"victory": {
1: "Hehehe... So I lost...",
2: "You're disgustingly strong!",
3: "Ahahaha! Ouch!"
},
},
"aqua_grunt": {
"encounter": {
1: "No one who crosses Team Aqua gets any mercy, not even kids!"
@ -407,6 +431,18 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: "You're kidding me!"
},
},
"aqua_admin": {
"encounter": {
1: "I'm a cut above the grunts you've seen so far. I'm going to puvlerize you!",
2: "Hahn? What's this? Who's this spoiled brat?",
3: "What are you doing here? Did you follow us?"
},
"victory": {
1: "So I lost too...",
2: "Ahhh?! Did I go too easy on you?!",
3: "Wh-what was that?"
},
},
"galactic_grunt": {
"encounter": {
1: "Don't mess with Team Galactic!"
@ -415,6 +451,18 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: "Shut down..."
},
},
"galactic_admin": {
"encounter": {
1: "I'm one of Team Galactic's Commanders.",
2: "Anything that opposes Team Galactic must be crushed! Even the very thought of opposition will not be tolerated!",
3: "What's the matter? Don't tell me you're shaking?"
},
"victory": {
1: "This can't be?! I lost?! You... you uppity brat!",
2: "You, my friend, are tough!",
3: "Losing to some child... Being careless cost me too much."
},
},
"plasma_grunt": {
"encounter": {
1: "We won't tolerate people who have different ideas!"
@ -423,6 +471,18 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: "Plasmaaaaaaaaa!"
},
},
"plasma_sage": {
"encounter": {
1: "You could become a threat to Team Plasma, so we will eliminate you here!",
2: "Oh, for crying out loud... I didn't expect to have to fight!",
3: "You're an impressive Trainer to have made it this far."
},
"victory": {
1: "Ghetsis...",
2: "It's bitter cold. I'm shivering. I'm suffering.",
3: "Hmph. You're a smarter Trainer than I expected."
},
},
"flare_grunt": {
"encounter": {
1: "Fashion is most important to us!"
@ -431,6 +491,18 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: "The future doesn't look bright for me."
},
},
"flare_admin": {
"encounter": {
1: "Ah ha ha! It would be my pleasure. Come on, little Trainer! Let's see what you've got!",
2: "Hmm... You're more powerful than you look. I wonder how much energy there is inside you.",
3: "I've been waiting for you! I need to do a little research on you! Come, let us begin!"
},
"victory": {
1: "You're quite strong. Oh yes-very strong, indeed.",
2: "Ding-ding-ding! Yup, you did it! To the victor goes the spoils!",
3: "Wonderful! Amazing! You have tremendous skill and bravery!"
},
},
"rocket_boss_giovanni_1": {
"encounter": {
1: "So! I must say, I am impressed you got here!"

View File

@ -128,21 +128,32 @@ export const trainerClasses: SimpleTranslationEntries = {
"rocket_grunt": "Rocket Grunt",
"rocket_grunts": "Rocket Grunts",
"rocket_grunt_female": "Rocket Grunt",
"rocket_admin": "Rocket Admin",
"rocket_admin_female": "Rocket Admin",
"magma_grunt": "Magma Grunt",
"magma_grunt_female": "Magma Grunt",
"magma_grunts": "Magma Grunts",
"magma_admin": "Magma Admin",
"magma_admin_female": "Magma Admin",
"aqua_grunt": "Aqua Grunt",
"aqua_grunt_female": "Aqua Grunt",
"aqua_grunts": "Aqua Grunts",
"aqua_admin": "Aqua Admin",
"aqua_admin_female": "Aqua Admin",
"galactic_grunt": "Galactic Grunt",
"galactic_grunt_female": "Galactic Grunt",
"galactic_grunts": "Galactic Grunts",
"galactic_admin": "Galactic Admin",
"galactic_admin_female": "Galactic Admin",
"plasma_grunt": "Plasma Grunt",
"plasma_grunt_female": "Plasma Grunt",
"plasma_grunts": "Plasma Grunts",
"plasma_sage": "Plasma Sage",
"flare_grunt": "Flare Grunt",
"flare_grunt_female": "Flare Grunt",
"flare_grunts": "Flare Grunts",
"flare_admin": "Flare Admin",
"flare_admin_female": "Flare Admin",
} as const;
// Names of special trainers like gym leaders, elite four, and the champion

View File

@ -121,21 +121,31 @@ export const trainerClasses: SimpleTranslationEntries = {
"rocket_grunt": "Rocket Grunt",
"rocket_grunts": "Rocket Grunts",
"rocket_grunt_female": "Rocket Grunt",
"rocket_admin": "Rocket Admin",
"rocket_admin_female": "Rocket Admin",
"magma_grunt": "Magma Grunt",
"magma_grunt_female": "Magma Grunt",
"magma_grunts": "Magma Grunts",
"magma_admin": "Magma Admin",
"magma_admin_female": "Magma Admin",
"aqua_grunt": "Aqua Grunt",
"aqua_grunt_female": "Aqua Grunt",
"aqua_grunts": "Aqua Grunts",
"aqua_admin": "Aqua Admin",
"aqua_admin_female": "Aqua Admin",
"galactic_grunt": "Galactic Grunt",
"galactic_grunt_female": "Galactic Grunt",
"galactic_grunts": "Galactic Grunts",
"galactic_admin": "Galactic Admin",
"galactic_admin_female": "Galactic Admin",
"plasma_grunt": "Plasma Grunt",
"plasma_grunt_female": "Plasma Grunt",
"plasma_grunts": "Plasma Grunts",
"flare_grunt": "Flare Grunt",
"flare_grunt_female": "Flare Grunt",
"flare_grunts": "Flare Grunts",
"flare_admin": "Flare Admin",
"flare_admin_female": "Flare Admin",
} as const;
// Names of special trainers like gym leaders, elite four, and the champion

View File

@ -2898,6 +2898,18 @@ export const PGFdialogue: DialogueTranslationEntries = {
1: "Une fois de plus la Team Rocket senvole vers dautres cieux !"
},
},
"rocket_admin": {
"encounter": {
1: "Oh? You managed to get this far? You must be quite the trainer.",
2: "That's quite enough of you playing hero, kid.",
3: "I'll show you how scary an angry adult can be!"
},
"victory": {
1: "No! Forgive me Giovanni!",
2: "How could this be?",
3: "Urgh... You were too strong..."
},
},
"magma_grunt": {
"encounter": {
1: "Nespère pas recevoir de la pitié si tu te mets sur le chemin de la Team Magma !"
@ -2906,6 +2918,18 @@ export const PGFdialogue: DialogueTranslationEntries = {
1: "Je…?\nJai perdu ?!"
},
},
"magma_admin": {
"encounter": {
1: "Hehehe! So you've come all the way here! But you're too late!",
2: "You're going to meddle in Team Magma's affairs? You're so cute you're disgusting! I'll put you down kiddy!",
3: "I'm going to give you a little taste of pain! Resign yourself to it!"
},
"victory": {
1: "Hehehe... So I lost...",
2: "You're disgustingly strong!",
3: "Ahahaha! Ouch!"
},
},
"aqua_grunt": {
"encounter": {
1: "Aucune pitié si tu te mets sur le chemin de la Team Aqua, même pour une gamine !"
@ -2914,6 +2938,18 @@ export const PGFdialogue: DialogueTranslationEntries = {
1: "Comment ça ?"
},
},
"aqua_admin": {
"encounter": {
1: "I'm a cut above the grunts you've seen so far. I'm going to puvlerize you!",
2: "Hahn? What's this? Who's this spoiled brat?",
3: "What are you doing here? Did you follow us?"
},
"victory": {
1: "So I lost too...",
2: "Ahhh?! Did I go too easy on you?!",
3: "Wh-what was that?"
},
},
"galactic_grunt": {
"encounter": {
1: "Ne te mets pas en travers de la Team Galaxie !"
@ -2922,6 +2958,18 @@ export const PGFdialogue: DialogueTranslationEntries = {
1: "Désactivation…"
},
},
"galactic_admin": {
"encounter": {
1: "I'm one of Team Galactic's Commanders.",
2: "Anything that opposes Team Galactic must be crushed! Even the very thought of opposition will not be tolerated!",
3: "What's the matter? Don't tell me you're shaking?"
},
"victory": {
1: "This can't be?! I lost?! You... you uppity brat!",
2: "You, my friend, are tough!",
3: "Losing to some child... Being careless cost me too much."
},
},
"plasma_grunt": {
"encounter": {
1: "Pas de quatiers à ceux qui ne suivent pas notre idéal !"
@ -2930,6 +2978,18 @@ export const PGFdialogue: DialogueTranslationEntries = {
1: "Plasmaaaaaaaaa !"
},
},
"plasma_sage": {
"encounter": {
1: "You could become a threat to Team Plasma, so we will eliminate you here!",
2: "Oh, for crying out loud... I didn't expect to have to fight!",
3: "You're an impressive Trainer to have made it this far."
},
"victory": {
1: "Ghetsis...",
2: "It's bitter cold. I'm shivering. I'm suffering.",
3: "Hmph. You're a smarter Trainer than I expected."
},
},
"flare_grunt": {
"encounter": {
1: "Le style et le bon gout, il ny a que ça qui compte !"
@ -2938,6 +2998,18 @@ export const PGFdialogue: DialogueTranslationEntries = {
1: "Mon futur me semble guère radieux."
},
},
"flare_admin": {
"encounter": {
1: "Ah ha ha! It would be my pleasure. Come on, little Trainer! Let's see what you've got!",
2: "Hmm... You're more powerful than you look. I wonder how much energy there is inside you.",
3: "I've been waiting for you! I need to do a little research on you! Come, let us begin!"
},
"victory": {
1: "You're quite strong. Oh yes-very strong, indeed.",
2: "Ding-ding-ding! Yup, you did it! To the victor goes the spoils!",
3: "Wonderful! Amazing! You have tremendous skill and bravery!"
},
},
"rocket_boss_giovanni_1": {
"encounter": {
1: "Bien. Je dois admettre que je suis impressionné de te voir ici !"

View File

@ -128,21 +128,32 @@ export const trainerClasses: SimpleTranslationEntries = {
"rocket_grunt": "Sbire de la Team Rocket",
"rocket_grunt_female": "Sbire de la Team Rocket",
"rocket_grunts": "Sbires de la Team Rocket",
"rocket_admin": "Rocket Admin",
"rocket_admin_female": "Rocket Admin",
"magma_grunt": "Sbire de la Team Magma",
"magma_grunt_female": "Sbire de la Team Magma",
"magma_grunts": "Sbires de la Team Magma",
"magma_admin": "Magma Admin",
"magma_admin_female": "Magma Admin",
"aqua_grunt": "Sbire de la Team Aqua",
"aqua_grunt_female": "Sbire de la Team Aqua",
"aqua_grunts": "Sbires de la Team Aqua",
"aqua_admin": "Aqua Admin",
"aqua_admin_female": "Aqua Admin",
"galactic_grunt": "Sbire de la Team Galaxie",
"galactic_grunt_female": "Sbire de la Team Galaxie",
"galactic_grunts": "Sbires de la Team Galaxie",
"galactic_admin": "Galactic Admin",
"galactic_admin_female": "Galactic Admin",
"plasma_grunt": "Sbire de la Team Plasma",
"plasma_grunt_female": "Sbire de la Team Plasma",
"plasma_grunts": "Sbires de la Team Plasma",
"plasma_sage": "Plasma Sage",
"flare_grunt": "Sbire de la Team Flare",
"flare_grunt_female": "Sbire de la Team Flare",
"flare_grunts": "Sbires de la Team Flare",
"flare_admin": "Flare Admin",
"flare_admin_female": "Flare Admin",
} as const;
// Names of special trainers like gym leaders, elite four, and the champion

View File

@ -391,6 +391,18 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: "Team Rocket blasting off again!"
},
},
"rocket_admin": {
"encounter": {
1: "Oh? You managed to get this far? You must be quite the trainer.",
2: "That's quite enough of you playing hero, kid.",
3: "I'll show you how scary an angry adult can be!"
},
"victory": {
1: "No! Forgive me Giovanni!",
2: "How could this be?",
3: "Urgh... You were too strong..."
},
},
"magma_grunt": {
"encounter": {
1: " If you get in the way of Team Magma, dont expect any mercy!"
@ -399,6 +411,18 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: "Huh? I lost?!"
},
},
"magma_admin": {
"encounter": {
1: "Hehehe! So you've come all the way here! But you're too late!",
2: "You're going to meddle in Team Magma's affairs? You're so cute you're disgusting! I'll put you down kiddy!",
3: "I'm going to give you a little taste of pain! Resign yourself to it!"
},
"victory": {
1: "Hehehe... So I lost...",
2: "You're disgustingly strong!",
3: "Ahahaha! Ouch!"
},
},
"aqua_grunt": {
"encounter": {
1: "No one who crosses Team Aqua gets any mercy, not even kids!"
@ -407,6 +431,18 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: "You're kidding me!"
},
},
"aqua_admin": {
"encounter": {
1: "I'm a cut above the grunts you've seen so far. I'm going to puvlerize you!",
2: "Hahn? What's this? Who's this spoiled brat?",
3: "What are you doing here? Did you follow us?"
},
"victory": {
1: "So I lost too...",
2: "Ahhh?! Did I go too easy on you?!",
3: "Wh-what was that?"
},
},
"galactic_grunt": {
"encounter": {
1: "Don't mess with Team Galactic!"
@ -415,6 +451,18 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: "Shut down..."
},
},
"galactic_admin": {
"encounter": {
1: "I'm one of Team Galactic's Commanders.",
2: "Anything that opposes Team Galactic must be crushed! Even the very thought of opposition will not be tolerated!",
3: "What's the matter? Don't tell me you're shaking?"
},
"victory": {
1: "This can't be?! I lost?! You... you uppity brat!",
2: "You, my friend, are tough!",
3: "Losing to some child... Being careless cost me too much."
},
},
"plasma_grunt": {
"encounter": {
1: "We won't tolerate people who have different ideas!"
@ -423,6 +471,18 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: "Plasmaaaaaaaaa!"
},
},
"plasma_sage": {
"encounter": {
1: "You could become a threat to Team Plasma, so we will eliminate you here!",
2: "Oh, for crying out loud... I didn't expect to have to fight!",
3: "You're an impressive Trainer to have made it this far."
},
"victory": {
1: "Ghetsis...",
2: "It's bitter cold. I'm shivering. I'm suffering.",
3: "Hmph. You're a smarter Trainer than I expected."
},
},
"flare_grunt": {
"encounter": {
1: "Fashion is most important to us!"
@ -431,6 +491,18 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: "The future doesn't look bright for me."
},
},
"flare_admin": {
"encounter": {
1: "Ah ha ha! It would be my pleasure. Come on, little Trainer! Let's see what you've got!",
2: "Hmm... You're more powerful than you look. I wonder how much energy there is inside you.",
3: "I've been waiting for you! I need to do a little research on you! Come, let us begin!"
},
"victory": {
1: "You're quite strong. Oh yes-very strong, indeed.",
2: "Ding-ding-ding! Yup, you did it! To the victor goes the spoils!",
3: "Wonderful! Amazing! You have tremendous skill and bravery!"
},
},
"rocket_boss_giovanni_1": {
"encounter": {
1: "So! I must say, I am impressed you got here!"

View File

@ -120,23 +120,33 @@ export const trainerClasses: SimpleTranslationEntries = {
"workers": "Lavoratori",
"youngster": "Bullo",
"rocket_grunt": "Recluta Team Rocket",
"rocket_grunts": "Reclute Team Rocket",
"rocket_grunt_female": "Recluta Team Rocket",
"rocket_grunts": "Reclute Team Rocket",
"rocket_admin": "Rocket Admin",
"rocket_admin_female": "Rocket Admin",
"magma_grunt": "Recluta Team Magma",
"magma_grunt_female": "Recluta Team Magma",
"magma_grunts": "Reclute Team Magma",
"magma_admin": "Magma Admin",
"magma_admin_female": "Magma Admin",
"aqua_grunt": "Recluta Team Idro",
"aqua_grunt_female": "Recluta Team Idro",
"aqua_grunts": "Recluta Team Idro",
"aqua_admin": "Aqua Admin",
"aqua_admin_female": "Aqua Admin",
"galactic_grunt": "Recluta Team Galassia",
"galactic_grunt_female": "Recluta Team Galassia",
"galactic_grunts": "Reclute Team Galassia",
"galactic_admin": "Galactic Admin",
"galactic_admin_female": "Galactic Admin",
"plasma_grunt": "Seguace Plasma",
"plasma_grunt_female": "Seguace Plasma",
"plasma_grunts": "Seguaci Plasma",
"flare_grunt": "Recluta Team Flare",
"flare_grunt_female": "Recluta Team Flare",
"flare_grunts": "Reclute Team Flare",
"flare_admin": "Flare Admin",
"flare_admin_female": "Flare Admin",
} as const;
// Names of special trainers like gym leaders, elite four, and the champion

View File

@ -391,6 +391,18 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: "로켓단은 다시 떠오를 거니까!"
},
},
"rocket_admin": {
"encounter": {
1: "어라 어라… 결국 여기까지 오셨습니까? 꽤 우수한 트레이너인가 보군요.",
2: "영웅 놀이는 여기까지랍니다, 꼬마야.",
3: "어른이 화를 내면 무섭다는 걸 보여 드리죠!"
},
"victory": {
1: "크으… 비주기님 용서해 주세요…!",
2: "어떻게 이런 일이…",
3: "아아… 넌 너무 강하다…"
},
},
"magma_grunt": {
"encounter": {
1: " 마그마단을 방해한다면, 자비는 없닷!"
@ -399,6 +411,18 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: "하? 내가 졌어?!"
},
},
"magma_admin": {
"encounter": {
1: "……아하… ……역시 왔네…그치만 안타깝게 됐어……다 끝났거든",
2: "……남은……내 일은……너를……막는 것",
3: "……너랑……인게이지……하고 싶어……아하하하"
},
"victory": {
1: "……룰루리",
2: "……재밌쪄",
3: "…하아하아……으…하아하아…"
},
},
"aqua_grunt": {
"encounter": {
1: "아쿠아단을 넘본 사람에게는 자비는 없다, 꼬마도 마찬가지야!"
@ -407,6 +431,18 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: "말도 안돼!"
},
},
"aqua_admin": {
"encounter": {
1: "각오하는 게 좋을 거야! 네 얼굴이 눈물로 범벅이 되게 해주겠어!",
2: "아앙? 뭐야? 이 건방진 꼬맹이는…",
3: "…아니 넌!? 일부러 여기까지 쫓아온 거야?"
},
"victory": {
1: "하아… 하아…완전 지쳤어",
2: "크윽…!? 너무 봐줬나…!",
3: "뭐…뭐라고!?"
},
},
"galactic_grunt": {
"encounter": {
1: "갤럭시단을 방해하지 마!"
@ -415,6 +451,18 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: "사격 중지…… "
},
},
"galactic_admin": {
"encounter": {
1: "나는 갤럭시단에 있는 간부 중의 한 명.",
2: "갤럭시단을 방해한다면 일말의 가능성도 모두 제거한다!!",
3: "왜 그래? 설마 떨고 있는 거야?"
},
"victory": {
1: "설마! 내가 졌다고!? 건방진 아이로구나!!",
2: "…역시 강해!",
3: "어린아이에게 지다니… 방심이란 무섭구나."
},
},
"plasma_grunt": {
"encounter": {
1: "다른 생각을 가진사람들은 용납하지 않겠다!"
@ -423,6 +471,18 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: "플라-스마-!"
},
},
"plasma_sage": {
"encounter": {
1: "너는 플라스마단에게 있어 불안요소가 될 것이다. 여기서 제거하겠다!",
2: "이런 이런… 내가 싸워야만 하다니.",
3: "여기까지 오다니 대단한 트레이너군."
},
"victory": {
1: "게치스…",
2: "그건 그렇고 춥구먼. 나는 떨고 있다. 괴롭지만 살아 있다.",
3: "흐음. 의외로 똑똑한 트레이너군."
},
},
"flare_grunt": {
"encounter": {
1: "패션이 우리한텐 가장 중요하다고!"
@ -431,6 +491,18 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: "미래가 밝아 보이질 않네."
},
},
"flare_admin": {
"encounter": {
1: "왔다! 왔구나! 자! 자! 아직 끝나지 않았다!",
2: "너 강하구나. 에너지를 얼마나 갖고 있지?",
3: "기다리고 있었어! 너를 조사하겠다. 자 시작한다!"
},
"victory": {
1: "강하구나, 너는. 응, 정말 강해, 너는.",
2: "그렇지만 보스의 꿈이 이루어져 아름다운 세상이 태어날 것이다!",
3: "굉장하구나 너! 아주 굉장해! 나는 너를 인정하겠다"
},
},
"rocket_boss_giovanni_1": {
"encounter": {
1: "그래서! 여기까지 오다니, 감탄이 절로 나오는군!"

View File

@ -128,21 +128,32 @@ export const trainerClasses: SimpleTranslationEntries = {
"rocket_grunt": "로켓단 조무래기",
"rocket_grunt_female": "로켓단 조무래기",
"rocket_grunts": "로켓단 조무래기들",
"rocket_admin": "로켓단 간부",
"rocket_admin_female": "로켓단 간부",
"magma_grunt": "마그마단 조무래기",
"magma_grunt_female": "마그마단 조무래기",
"magma_grunts": "마그마단 조무래기들",
"magma_admin": "마그마단 간부",
"magma_admin_female": "마그마단 간부",
"aqua_grunt": "아쿠아단 조무래기",
"aqua_grunt_female": "아쿠아단 조무래기",
"aqua_grunts": "아쿠아단 조무래기들",
"aqua_admin": "아쿠아단 간부",
"aqua_admin_female": "아쿠아단 간부",
"galactic_grunt": "갤럭시단 조무래기",
"galactic_grunt_female": "갤럭시단 조무래기",
"galactic_grunts": "갤럭시단 조무래기들",
"galactic_admin": "갤럭시단 간부",
"galactic_admin_female": "갤럭시단 간부",
"plasma_grunt": "플라스마단 조무래기",
"plasma_grunt_female": "플라스마단 조무래기",
"plasma_grunts": "플라스마단 조무래기들",
"plasma_sage": "플라스마단 현인",
"flare_grunt": "플레어단 조무래기",
"flare_grunt_female": "플레어단 조무래기",
"flare_grunts": "플레어단 조무래기들",
"flare_admin": "플레어단 간부",
"flare_admin_female": "플레어단 간부",
} as const;
// Names of special trainers like gym leaders, elite four, and the champion

View File

@ -128,21 +128,32 @@ export const trainerClasses: SimpleTranslationEntries = {
"rocket_grunt": "Recruta da Equipe Rocket",
"rocket_grunt_female": "Recruta da Equipe Rocket",
"rocket_grunts": "Recrutas da Equipe Rocket",
"rocket_admin": "Rocket Admin",
"rocket_admin_female": "Rocket Admin",
"magma_grunt": "Recruta da Equipe Magma",
"magma_grunt_female": "Recruta da Equipe Magma",
"magma_grunts": "Recrutas da Equipe Magma",
"magma_admin": "Magma Admin",
"magma_admin_female": "Magma Admin",
"aqua_grunt": "Recruta da Equipe Aqua",
"aqua_grunt_female": "Recruta da Equipe Aqua",
"aqua_grunts": "Recrutas da Equipe Aqua",
"aqua_admin": "Aqua Admin",
"aqua_admin_female": "Aqua Admin",
"galactic_grunt": "Recruta da Equipe Galáctica",
"galactic_grunt_female": "Recruta da Equipe Galáctica",
"galactic_grunts": "Recrutas da Equipe Galáctica",
"galactic_admin": "Galactic Admin",
"galactic_admin_female": "Galactic Admin",
"plasma_grunt": "Recruta da Equipe Plasma",
"plasma_grunt_female": "Recruta da Equipe Plasma",
"plasma_grunts": "Recrutas da Equipe Plasma",
"plasma_sage": "Plasma Sage",
"flare_grunt": "Recruta da Equipe Flare",
"flare_grunt_female": "Recruta da Equipe Flare",
"flare_grunts": "Recrutas da Equipe Flare",
"flare_admin": "Flare Admin",
"flare_admin_female": "Flare Admin",
} as const;
// Names of special trainers like gym leaders, elite four, and the champion

View File

@ -390,6 +390,18 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: "好讨厌的感觉啊!"
},
},
"rocket_admin": {
"encounter": {
1: "Oh? You managed to get this far? You must be quite the trainer.",
2: "That's quite enough of you playing hero, kid.",
3: "I'll show you how scary an angry adult can be!"
},
"victory": {
1: "No! Forgive me Giovanni!",
2: "How could this be?",
3: "Urgh... You were too strong..."
},
},
"magma_grunt": {
"encounter": {
1: "如果你挡在熔岩队路上,那就别指望我们手下留情!"
@ -398,6 +410,18 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: "哈?我输了?!"
},
},
"magma_admin": {
"encounter": {
1: "Hehehe! So you've come all the way here! But you're too late!",
2: "You're going to meddle in Team Magma's affairs? You're so cute you're disgusting! I'll put you down kiddy!",
3: "I'm going to give you a little taste of pain! Resign yourself to it!"
},
"victory": {
1: "Hehehe... So I lost...",
2: "You're disgustingly strong!",
3: "Ahahaha! Ouch!"
},
},
"aqua_grunt": {
"encounter": {
1: "即使是小孩,如果要和海洋队作对,也别指望我们手下留情!"
@ -406,6 +430,18 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: "你在开玩笑吧?"
},
},
"aqua_admin": {
"encounter": {
1: "I'm a cut above the grunts you've seen so far. I'm going to puvlerize you!",
2: "Hahn? What's this? Who's this spoiled brat?",
3: "What are you doing here? Did you follow us?"
},
"victory": {
1: "So I lost too...",
2: "Ahhh?! Did I go too easy on you?!",
3: "Wh-what was that?"
},
},
"galactic_grunt": {
"encounter": {
1: "别惹银河队!"
@ -414,6 +450,18 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: "停机了…"
},
},
"galactic_admin": {
"encounter": {
1: "I'm one of Team Galactic's Commanders.",
2: "Anything that opposes Team Galactic must be crushed! Even the very thought of opposition will not be tolerated!",
3: "What's the matter? Don't tell me you're shaking?"
},
"victory": {
1: "This can't be?! I lost?! You... you uppity brat!",
2: "You, my friend, are tough!",
3: "Losing to some child... Being careless cost me too much."
},
},
"plasma_grunt": {
"encounter": {
1: "异端不共戴天!"
@ -422,6 +470,18 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: "等离子子子子子子!"
},
},
"plasma_sage": {
"encounter": {
1: "You could become a threat to Team Plasma, so we will eliminate you here!",
2: "Oh, for crying out loud... I didn't expect to have to fight!",
3: "You're an impressive Trainer to have made it this far."
},
"victory": {
1: "Ghetsis...",
2: "It's bitter cold. I'm shivering. I'm suffering.",
3: "Hmph. You're a smarter Trainer than I expected."
},
},
"flare_grunt": {
"encounter": {
1: "时尚最重要!"
@ -430,6 +490,18 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: "未来一片黑暗啊…"
},
},
"flare_admin": {
"encounter": {
1: "Ah ha ha! It would be my pleasure. Come on, little Trainer! Let's see what you've got!",
2: "Hmm... You're more powerful than you look. I wonder how much energy there is inside you.",
3: "I've been waiting for you! I need to do a little research on you! Come, let us begin!"
},
"victory": {
1: "You're quite strong. Oh yes-very strong, indeed.",
2: "Ding-ding-ding! Yup, you did it! To the victor goes the spoils!",
3: "Wonderful! Amazing! You have tremendous skill and bravery!"
},
},
"rocket_boss_giovanni_1": {
"encounter": {
1: "我不得不说,能来到这里,你的确很不简单!"

View File

@ -128,21 +128,32 @@ export const trainerClasses: SimpleTranslationEntries = {
"rocket_grunt": "火箭队手下",
"rocket_grunt_female": "火箭队手下",
"rocket_grunts": "火箭队手下们",
"rocket_admin": "Rocket Admin",
"rocket_admin_female": "Rocket Admin",
"magma_grunt": "熔岩队手下",
"magma_grunt_female": "熔岩队手下",
"magma_grunts": "熔岩队手下们",
"magma_admin": "Magma Admin",
"magma_admin_female": "Magma Admin",
"aqua_grunt": "海洋队手下",
"aqua_grunt_female": "海洋队手下",
"aqua_grunts": "海洋队手下们",
"aqua_admin": "Aqua Admin",
"aqua_admin_female": "Aqua Admin",
"galactic_grunt": "银河队手下",
"galactic_grunt_female": "银河队手下",
"galactic_grunts": "银河队手下们",
"galactic_admin": "Galactic Admin",
"galactic_admin_female": "Galactic Admin",
"plasma_grunt": "等离子队手下",
"plasma_grunt_female": "等离子队手下",
"plasma_grunts": "等离子队手下们",
"plasma_sage": "Plasma Sage",
"flare_grunt": "闪焰队手下",
"flare_grunt_female": "闪焰队手下",
"flare_grunts": "闪焰队手下们",
"flare_admin": "Flare Admin",
"flare_admin_female": "Flare Admin",
} as const;
// Names of special trainers like gym leaders, elite four, and the champion

View File

@ -390,6 +390,18 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: "Team Rocket blasting off again!"
},
},
"rocket_admin": {
"encounter": {
1: "Oh? You managed to get this far? You must be quite the trainer.",
2: "That's quite enough of you playing hero, kid.",
3: "I'll show you how scary an angry adult can be!"
},
"victory": {
1: "No! Forgive me Giovanni!",
2: "How could this be?",
3: "Urgh... You were too strong..."
},
},
"magma_grunt": {
"encounter": {
1: " If you get in the way of Team Magma, dont expect any mercy!"
@ -398,6 +410,18 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: "Huh? I lost?!"
},
},
"magma_admin": {
"encounter": {
1: "Hehehe! So you've come all the way here! But you're too late!",
2: "You're going to meddle in Team Magma's affairs? You're so cute you're disgusting! I'll put you down kiddy!",
3: "I'm going to give you a little taste of pain! Resign yourself to it!"
},
"victory": {
1: "Hehehe... So I lost...",
2: "You're disgustingly strong!",
3: "Ahahaha! Ouch!"
},
},
"aqua_grunt": {
"encounter": {
1: "No one who crosses Team Aqua gets any mercy, not even kids!"
@ -406,6 +430,18 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: "You're kidding me!"
},
},
"aqua_admin": {
"encounter": {
1: "I'm a cut above the grunts you've seen so far. I'm going to puvlerize you!",
2: "Hahn? What's this? Who's this spoiled brat?",
3: "What are you doing here? Did you follow us?"
},
"victory": {
1: "So I lost too...",
2: "Ahhh?! Did I go too easy on you?!",
3: "Wh-what was that?"
},
},
"galactic_grunt": {
"encounter": {
1: "Don't mess with Team Galactic!"
@ -414,6 +450,18 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: "Shut down..."
},
},
"galactic_admin": {
"encounter": {
1: "I'm one of Team Galactic's Commanders.",
2: "Anything that opposes Team Galactic must be crushed! Even the very thought of opposition will not be tolerated!",
3: "What's the matter? Don't tell me you're shaking?"
},
"victory": {
1: "This can't be?! I lost?! You... you uppity brat!",
2: "You, my friend, are tough!",
3: "Losing to some child... Being careless cost me too much."
},
},
"plasma_grunt": {
"encounter": {
1: "We won't tolerate people who have different ideas!"
@ -422,6 +470,18 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: "Plasmaaaaaaaaa!"
},
},
"plasma_sage": {
"encounter": {
1: "You could become a threat to Team Plasma, so we will eliminate you here!",
2: "Oh, for crying out loud... I didn't expect to have to fight!",
3: "You're an impressive Trainer to have made it this far."
},
"victory": {
1: "Ghetsis...",
2: "It's bitter cold. I'm shivering. I'm suffering.",
3: "Hmph. You're a smarter Trainer than I expected."
},
},
"flare_grunt": {
"encounter": {
1: "Fashion is most important to us!"
@ -430,6 +490,18 @@ export const PGMdialogue: DialogueTranslationEntries = {
1: "The future doesn't look bright for me."
},
},
"flare_admin": {
"encounter": {
1: "Ah ha ha! It would be my pleasure. Come on, little Trainer! Let's see what you've got!",
2: "Hmm... You're more powerful than you look. I wonder how much energy there is inside you.",
3: "I've been waiting for you! I need to do a little research on you! Come, let us begin!"
},
"victory": {
1: "You're quite strong. Oh yes-very strong, indeed.",
2: "Ding-ding-ding! Yup, you did it! To the victor goes the spoils!",
3: "Wonderful! Amazing! You have tremendous skill and bravery!"
},
},
"rocket_boss_giovanni_1": {
"encounter": {
1: "So! I must say, I am impressed you got here!"

View File

@ -120,21 +120,32 @@ export const trainerClasses: SimpleTranslationEntries = {
"workers": "工人組合",
"youngster": "短褲小子",
"rocket_grunts": "火箭队手下們",
"rocket_admin": "Rocket Admin",
"rocket_admin_female": "Rocket Admin",
"magma_grunt": "熔岩队手下",
"magma_grunt_female": "熔岩队手下",
"magma_grunts": "熔岩队手下們",
"magma_admin": "Magma Admin",
"magma_admin_female": "Magma Admin",
"aqua_grunt": "海洋队手下",
"aqua_grunt_female": "海洋队手下",
"aqua_grunts": "海洋队手下們",
"aqua_admin": "Aqua Admin",
"aqua_admin_female": "Aqua Admin",
"galactic_grunt": "银河队手下",
"galactic_grunt_female": "银河队手下",
"galactic_grunts": "银河队手下們",
"galactic_admin": "Galactic Admin",
"galactic_admin_female": "Galactic Admin",
"plasma_grunt": "等离子队手下",
"plasma_grunt_female": "等离子队手下",
"plasma_grunts": "等离子队手下們",
"plasma_sage": "Plasma Sage",
"flare_grunt": "闪焰队手下",
"flare_grunt_female": "闪焰队手下",
"flare_grunts": "闪焰队手下們",
"flare_admin": "Flare Admin",
"flare_admin_female": "Flare Admin",
} as const;
// Names of special trainers like gym leaders, elite four, and the champion