diff --git a/public/images/trainer/firebreather.json b/public/images/trainer/firebreather.json new file mode 100644 index 00000000000..7bc1cd3586f --- /dev/null +++ b/public/images/trainer/firebreather.json @@ -0,0 +1,41 @@ +{ + "textures": [ + { + "image": "firebreather.png", + "format": "RGBA8888", + "size": { + "w": 80, + "h": 72 + }, + "scale": 1, + "frames": [ + { + "filename": "0001.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 80, + "h": 72 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 80, + "h": 72 + }, + "frame": { + "x": 0, + "y": 0, + "w": 80, + "h": 72 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:f692676a166fc1915532cd94d5799af4:fb833f76fb6797474657726bb59a7eee:aeb55e30992938f494b6cd2420158dda$" + } +} diff --git a/public/images/trainer/firebreather.png b/public/images/trainer/firebreather.png new file mode 100644 index 00000000000..829496bd56e Binary files /dev/null and b/public/images/trainer/firebreather.png differ diff --git a/src/data/biomes.ts b/src/data/biomes.ts index 4a29d10debb..bfee8904c46 100644 --- a/src/data/biomes.ts +++ b/src/data/biomes.ts @@ -1823,7 +1823,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { [BiomePoolTier.BOSS_ULTRA_RARE]: [] }, [Biome.VOLCANO]: { - [BiomePoolTier.COMMON]: [], + [BiomePoolTier.COMMON]: [ TrainerType.FIREBREATHER ], [BiomePoolTier.UNCOMMON]: [], [BiomePoolTier.RARE]: [], [BiomePoolTier.SUPER_RARE]: [], @@ -7304,6 +7304,10 @@ export function initBiomes() { [ Biome.GRAVEYARD, BiomePoolTier.UNCOMMON ] ] ], + [ TrainerType.FIREBREATHER, [ + [ Biome.VOLCANO, BiomePoolTier.COMMON ] + ] + ], [ TrainerType.BROCK, [ [ Biome.CAVE, BiomePoolTier.BOSS ] ] diff --git a/src/data/dialogue.ts b/src/data/dialogue.ts index 089082bee81..bed72ceb9bb 100644 --- a/src/data/dialogue.ts +++ b/src/data/dialogue.ts @@ -421,6 +421,20 @@ export const trainerTypeDialogue: TrainerTypeDialogue = { ] } ], + [TrainerType.FIREBREATHER]: [ + { + encounter: [ + "dialogue:firebreather.encounter.1", + "dialogue:firebreather.encounter.2", + "dialogue:firebreather.encounter.3", + ], + victory: [ + "dialogue:firebreather.victory.1", + "dialogue:firebreather.victory.2", + "dialogue:firebreather.victory.3", + ] + } + ], [TrainerType.BROCK]: { encounter: [ "dialogue:brock.encounter.1", diff --git a/src/data/enums/trainer-type.ts b/src/data/enums/trainer-type.ts index 84fac0e4408..3b7e27a49e1 100644 --- a/src/data/enums/trainer-type.ts +++ b/src/data/enums/trainer-type.ts @@ -16,6 +16,7 @@ export enum TrainerType { DANCER, DEPOT_AGENT, DOCTOR, + FIREBREATHER, FISHERMAN, GUITARIST, HARLEQUIN, diff --git a/src/data/trainer-config.ts b/src/data/trainer-config.ts index 11671110611..83c4f45b244 100644 --- a/src/data/trainer-config.ts +++ b/src/data/trainer-config.ts @@ -989,6 +989,8 @@ export const trainerConfigs: TrainerConfigs = { [TrainerType.DEPOT_AGENT]: new TrainerConfig(++t).setMoneyMultiplier(1.45).setEncounterBgm(TrainerType.CLERK), [TrainerType.DOCTOR]: new TrainerConfig(++t).setHasGenders("Nurse", "lass").setHasDouble("Medical Team").setMoneyMultiplier(3).setEncounterBgm(TrainerType.CLERK) .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) .setPartyTemplates(trainerPartyTemplates.TWO_WEAK_SAME_ONE_AVG, trainerPartyTemplates.ONE_AVG, trainerPartyTemplates.THREE_WEAK_SAME, trainerPartyTemplates.ONE_STRONG, trainerPartyTemplates.SIX_WEAKER) .setSpeciesPools({ diff --git a/src/data/trainer-names.ts b/src/data/trainer-names.ts index e85ee93d96f..0aa5bb594d4 100644 --- a/src/data/trainer-names.ts +++ b/src/data/trainer-names.ts @@ -36,6 +36,7 @@ const trainerNameConfigs: TrainerNameConfigs = { [TrainerType.DANCER]: new TrainerNameConfig(TrainerType.DANCER), [TrainerType.DEPOT_AGENT]: new TrainerNameConfig(TrainerType.DEPOT_AGENT), [TrainerType.DOCTOR]: new TrainerNameConfig(TrainerType.DOCTOR).hasGenderVariant("Nurse"), + [TrainerType.FIREBREATHER]: new TrainerNameConfig(TrainerType.FIREBREATHER), [TrainerType.FISHERMAN]: new TrainerNameConfig(TrainerType.FISHERMAN), [TrainerType.GUITARIST]: new TrainerNameConfig(TrainerType.GUITARIST), [TrainerType.HARLEQUIN]: new TrainerNameConfig(TrainerType.HARLEQUIN), @@ -87,6 +88,7 @@ export const trainerNamePools = { [TrainerType.DANCER]: ["Brian","Davey","Dirk","Edmond","Mickey","Raymond","Cara","Julia","Maika","Mireille","Ronda","Zoe"], [TrainerType.DEPOT_AGENT]: ["Josh","Hank","Vincent"], [TrainerType.DOCTOR]: [["Hank","Jerry","Jules","Logan","Wayne","Braid","Derek","Heath","Julius","Kit","Graham"],["Kirsten","Sachiko","Shery","Carol","Dixie","Mariah"]], + [TrainerType.FIREBREATHER]: ["Bill","Burt","Cliff","Dick","Lyle","Ned","Otis","Ray","Richard","Walt"], [TrainerType.FISHERMAN]: ["Andre","Arnold","Barney","Chris","Edgar","Henry","Jonah","Justin","Kyle","Martin","Marvin","Ralph","Raymond","Scott","Stephen","Wilton","Tully","Andrew","Barny","Carter","Claude","Dale","Elliot","Eugene","Ivan","Ned","Nolan","Roger","Ronald","Wade","Wayne","Darian","Kai","Chip","Hank","Kaden","Tommy","Tylor","Alec","Brett","Cameron","Cody","Cole","Cory","Erick","George","Joseph","Juan","Kenneth","Luc","Miguel","Travis","Walter","Zachary","Josh","Gideon","Kyler","Liam","Murphy","Bruce","Damon","Devon","Hubert","Jones","Lydon","Mick","Pete","Sean","Sid","Vince","Bucky","Dean","Eustace","Kenzo","Leroy","Mack","Ryder","Ewan","Finn","Murray","Seward","Shad","Wharton","Finley","Fisher","Fisk","River","Sheaffer","Timin","Carl","Ernest","Hal","Herbert","Hisato","Mike","Vernon","Harriet","Marina","Chase"], [TrainerType.GUITARIST]: ["Anna","Beverly","January","Tina","Alicia","Claudia","Julia","Lidia","Mireia","Noelia","Sara","Sheila","Tatiana"], [TrainerType.HARLEQUIN]: ["Charley","Ian","Jack","Kerry","Louis","Pat","Paul","Rick","Anders","Clarence","Gary"], diff --git a/src/locales/de/dialogue.ts b/src/locales/de/dialogue.ts index 6f02521569d..c69fb1aacd0 100644 --- a/src/locales/de/dialogue.ts +++ b/src/locales/de/dialogue.ts @@ -367,6 +367,18 @@ export const PGMdialogue: DialogueTranslationEntries = { 1: "Ich werde für das nächste Rennen tunen." }, }, + "firebreather": { + "encounter": { + 1: "My flames shall devour you!", + 2: "My soul is on fire. I'll show you how hot it burns!", + 3: "Step right up and take a look!" + }, + "victory": { + 1: "I burned down to ashes...", + 2: "Yow! That's hot!", + 3: "Ow! I scorched the tip of my nose!" + }, + }, "brock": { "encounter": { 1: "Meine Expertise in Bezug auf Gesteins-Pokémon wird dich besiegen! Komm schon!", diff --git a/src/locales/de/trainers.ts b/src/locales/de/trainers.ts index aa03cf6c903..6ac1abbcabf 100644 --- a/src/locales/de/trainers.ts +++ b/src/locales/de/trainers.ts @@ -48,6 +48,7 @@ export const trainerClasses: SimpleTranslationEntries = { "depot_agent": "Bahnangestellter", "doctor": "Arzt", "doctor_female": "Ärztin", + "firebreather": "Feuerspucker", "fisherman": "Angler", "fisherman_female": "Angler", // Seems to be the same in german but exists in other languages like italian "gentleman": "Gentleman", diff --git a/src/locales/en/dialogue.ts b/src/locales/en/dialogue.ts index 2712161b2bf..a89c90c97d6 100644 --- a/src/locales/en/dialogue.ts +++ b/src/locales/en/dialogue.ts @@ -359,6 +359,18 @@ export const PGMdialogue: DialogueTranslationEntries = { 1: "I'll tune up for the next race." }, }, + "firebreather": { + "encounter": { + 1: "My flames shall devour you!", + 2: "My soul is on fire. I'll show you how hot it burns!", + 3: "Step right up and take a look!" + }, + "victory": { + 1: "I burned down to ashes...", + 2: "Yow! That's hot!", + 3: "Ow! I scorched the tip of my nose!" + }, + }, "brock": { "encounter": { 1: "My expertise on Rock-type Pokémon will take you down! Come on!", diff --git a/src/locales/en/trainers.ts b/src/locales/en/trainers.ts index 7f83f8169f6..cd6f78ccc13 100644 --- a/src/locales/en/trainers.ts +++ b/src/locales/en/trainers.ts @@ -48,6 +48,7 @@ export const trainerClasses: SimpleTranslationEntries = { "depot_agent": "Depot Agent", "doctor": "Doctor", "doctor_female": "Doctor", + "firebreather": "Firebreather", "fisherman": "Fisherman", "fisherman_female": "Fisherman", "gentleman": "Gentleman", diff --git a/src/locales/es/dialogue.ts b/src/locales/es/dialogue.ts index 6d74177f252..faabab3077d 100644 --- a/src/locales/es/dialogue.ts +++ b/src/locales/es/dialogue.ts @@ -359,6 +359,18 @@ export const PGMdialogue: DialogueTranslationEntries = { 1: "I'll tune up for the next race." }, }, + "firebreather": { + "encounter": { + 1: "My flames shall devour you!", + 2: "My soul is on fire. I'll show you how hot it burns!", + 3: "Step right up and take a look!" + }, + "victory": { + 1: "I burned down to ashes...", + 2: "Yow! That's hot!", + 3: "Ow! I scorched the tip of my nose!" + }, + }, "brock": { "encounter": { 1: "My expertise on Rock-type Pokémon will take you down! Come on!", diff --git a/src/locales/es/trainers.ts b/src/locales/es/trainers.ts index 9860af13266..3e2b2b1a788 100644 --- a/src/locales/es/trainers.ts +++ b/src/locales/es/trainers.ts @@ -48,6 +48,7 @@ export const trainerClasses: SimpleTranslationEntries = { "depot_agent": "Ferroviario", "doctor": "Enfermero", "doctor_female": "Enfermera", + "firebreather": "Comefuegos", "fisherman": "Pescador", "fisherman_female": "Pescadora", "gentleman": "Aristócrata", diff --git a/src/locales/fr/dialogue.ts b/src/locales/fr/dialogue.ts index 746359b36cd..befc9d96caa 100644 --- a/src/locales/fr/dialogue.ts +++ b/src/locales/fr/dialogue.ts @@ -359,6 +359,18 @@ export const PGMdialogue: DialogueTranslationEntries = { 1: "I'll tune up for the next race." }, }, + "firebreather": { + "encounter": { + 1: "My flames shall devour you!", + 2: "My soul is on fire. I'll show you how hot it burns!", + 3: "Step right up and take a look!" + }, + "victory": { + 1: "I burned down to ashes...", + 2: "Yow! That's hot!", + 3: "Ow! I scorched the tip of my nose!" + }, + }, "brock": { "encounter": { 1: "My expertise on Rock-type Pokémon will take you down! Come on!", diff --git a/src/locales/fr/trainers.ts b/src/locales/fr/trainers.ts index 55178fe3da3..6ed221a7b86 100644 --- a/src/locales/fr/trainers.ts +++ b/src/locales/fr/trainers.ts @@ -48,6 +48,7 @@ export const trainerClasses: SimpleTranslationEntries = { "depot_agent": "Cheminot", "doctor": "Docteur", "doctor_female": "Docteure", + "firebreather": "Firebreather", "fisherman": "Pêcheur", "fisherman_female": "Pêcheuse", "gentleman": "Gentleman", diff --git a/src/locales/it/dialogue.ts b/src/locales/it/dialogue.ts index 6d74177f252..faabab3077d 100644 --- a/src/locales/it/dialogue.ts +++ b/src/locales/it/dialogue.ts @@ -359,6 +359,18 @@ export const PGMdialogue: DialogueTranslationEntries = { 1: "I'll tune up for the next race." }, }, + "firebreather": { + "encounter": { + 1: "My flames shall devour you!", + 2: "My soul is on fire. I'll show you how hot it burns!", + 3: "Step right up and take a look!" + }, + "victory": { + 1: "I burned down to ashes...", + 2: "Yow! That's hot!", + 3: "Ow! I scorched the tip of my nose!" + }, + }, "brock": { "encounter": { 1: "My expertise on Rock-type Pokémon will take you down! Come on!", diff --git a/src/locales/it/trainers.ts b/src/locales/it/trainers.ts index 534fe12832d..9c3f025541e 100644 --- a/src/locales/it/trainers.ts +++ b/src/locales/it/trainers.ts @@ -48,6 +48,7 @@ export const trainerClasses: SimpleTranslationEntries = { "depot_agent": "Depot Agent", "doctor": "Doctor", "doctor_female": "Doctor", + "firebreather": "Firebreather", "fisherman": "Fisherman", "fisherman_female": "Fisherman", "gentleman": "Gentleman", diff --git a/src/locales/ko/dialogue.ts b/src/locales/ko/dialogue.ts index 201581c0555..8fb8da64206 100644 --- a/src/locales/ko/dialogue.ts +++ b/src/locales/ko/dialogue.ts @@ -359,6 +359,18 @@ export const PGMdialogue: DialogueTranslationEntries = { 1: "I'll tune up for the next race." }, }, + "firebreather": { + "encounter": { + 1: "My flames shall devour you!", + 2: "My soul is on fire. I'll show you how hot it burns!", + 3: "Step right up and take a look!" + }, + "victory": { + 1: "I burned down to ashes...", + 2: "Yow! That's hot!", + 3: "Ow! I scorched the tip of my nose!" + }, + }, "brock": { "encounter": { 1: "My expertise on Rock-type Pokémon will take you down! Come on!", diff --git a/src/locales/ko/trainers.ts b/src/locales/ko/trainers.ts index e119cac0bf1..62e8de560d2 100644 --- a/src/locales/ko/trainers.ts +++ b/src/locales/ko/trainers.ts @@ -48,6 +48,7 @@ export const trainerClasses: SimpleTranslationEntries = { "depot_agent": "역무원", "doctor": "의사", "doctor_female": "간호사", // doctor_f.png 파일이 간호사 + "firebreather": "Firebreather", "fisherman": "낚시꾼", "fisherman_female": "낚시꾼", "gentleman": "신사", diff --git a/src/locales/pt_BR/dialogue.ts b/src/locales/pt_BR/dialogue.ts index 6d74177f252..faabab3077d 100644 --- a/src/locales/pt_BR/dialogue.ts +++ b/src/locales/pt_BR/dialogue.ts @@ -359,6 +359,18 @@ export const PGMdialogue: DialogueTranslationEntries = { 1: "I'll tune up for the next race." }, }, + "firebreather": { + "encounter": { + 1: "My flames shall devour you!", + 2: "My soul is on fire. I'll show you how hot it burns!", + 3: "Step right up and take a look!" + }, + "victory": { + 1: "I burned down to ashes...", + 2: "Yow! That's hot!", + 3: "Ow! I scorched the tip of my nose!" + }, + }, "brock": { "encounter": { 1: "My expertise on Rock-type Pokémon will take you down! Come on!", diff --git a/src/locales/pt_BR/trainers.ts b/src/locales/pt_BR/trainers.ts index 5486d2ebb4d..ee6a78dd926 100644 --- a/src/locales/pt_BR/trainers.ts +++ b/src/locales/pt_BR/trainers.ts @@ -48,6 +48,7 @@ export const trainerClasses: SimpleTranslationEntries = { "depot_agent": "Ferroviário", "doctor": "Doutor", "doctor_female": "Doutora", + "firebreather": "Firebreather", "fishermen": "Pescador", "fishermen_female": "Pescadora", "gentleman": "Cavalheiro", diff --git a/src/locales/zh_CN/dialogue.ts b/src/locales/zh_CN/dialogue.ts index 6d74177f252..faabab3077d 100644 --- a/src/locales/zh_CN/dialogue.ts +++ b/src/locales/zh_CN/dialogue.ts @@ -359,6 +359,18 @@ export const PGMdialogue: DialogueTranslationEntries = { 1: "I'll tune up for the next race." }, }, + "firebreather": { + "encounter": { + 1: "My flames shall devour you!", + 2: "My soul is on fire. I'll show you how hot it burns!", + 3: "Step right up and take a look!" + }, + "victory": { + 1: "I burned down to ashes...", + 2: "Yow! That's hot!", + 3: "Ow! I scorched the tip of my nose!" + }, + }, "brock": { "encounter": { 1: "My expertise on Rock-type Pokémon will take you down! Come on!", diff --git a/src/locales/zh_CN/trainers.ts b/src/locales/zh_CN/trainers.ts index 0dfa83a0d36..ae0680a3c75 100644 --- a/src/locales/zh_CN/trainers.ts +++ b/src/locales/zh_CN/trainers.ts @@ -48,6 +48,7 @@ export const trainerClasses: SimpleTranslationEntries = { "depot_agent": "铁路员工", "doctor": "医生", "doctor_female": "医生", + "firebreather": "Firebreather", "fisherman": "垂钓者", "fisherman_female": "垂钓者", "gentleman": "绅士", diff --git a/src/locales/zh_TW/dialogue.ts b/src/locales/zh_TW/dialogue.ts index 4e42f8f5833..7cb29ec8191 100644 --- a/src/locales/zh_TW/dialogue.ts +++ b/src/locales/zh_TW/dialogue.ts @@ -359,6 +359,18 @@ export const PGMdialogue: DialogueTranslationEntries = { 1: "I'll tune up for the next race." }, }, + "firebreather": { + "encounter": { + 1: "My flames shall devour you!", + 2: "My soul is on fire. I'll show you how hot it burns!", + 3: "Step right up and take a look!" + }, + "victory": { + 1: "I burned down to ashes...", + 2: "Yow! That's hot!", + 3: "Ow! I scorched the tip of my nose!" + }, + }, "brock": { "encounter": { 1: "My expertise on Rock-type Pokémon will take you down! Come on!", diff --git a/src/locales/zh_TW/trainers.ts b/src/locales/zh_TW/trainers.ts index 19529af4660..f20ee156c3a 100644 --- a/src/locales/zh_TW/trainers.ts +++ b/src/locales/zh_TW/trainers.ts @@ -48,6 +48,7 @@ export const trainerClasses: SimpleTranslationEntries = { "depot_agent": "鐵路員工", "doctor": "醫生", "doctor_female": "醫生", + "firebreather": "Firebreather", "fisherman": "垂釣者", "fisherman_female": "垂釣者", "gentleman": "紳士",