diff --git a/public/images/trainer/sailor.json b/public/images/trainer/sailor.json new file mode 100644 index 00000000000..6a9331dbaf6 --- /dev/null +++ b/public/images/trainer/sailor.json @@ -0,0 +1,41 @@ +{ + "textures": [ + { + "image": "sailor.png", + "format": "RGBA8888", + "size": { + "w": 72, + "h": 72 + }, + "scale": 1, + "frames": [ + { + "filename": "0001.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 72, + "h": 72 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 73, + "h": 73 + }, + "frame": { + "x": 0, + "y": 0, + "w": 39, + "h": 72 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:f692676a166fc1915532cd94d5799af4:fb833f76fb6797474657726bb59a7eee:aeb55e30992938f494b6cd2420158dda$" + } +} diff --git a/public/images/trainer/sailor.png b/public/images/trainer/sailor.png new file mode 100644 index 00000000000..ec61152bce3 Binary files /dev/null and b/public/images/trainer/sailor.png differ diff --git a/src/data/biomes.ts b/src/data/biomes.ts index bfee8904c46..43cafb46fce 100644 --- a/src/data/biomes.ts +++ b/src/data/biomes.ts @@ -1691,7 +1691,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { [BiomePoolTier.BOSS_ULTRA_RARE]: [] }, [Biome.SEA]: { - [BiomePoolTier.COMMON]: [ TrainerType.SWIMMER ], + [BiomePoolTier.COMMON]: [ TrainerType.SWIMMER, TrainerType.SAILOR ], [BiomePoolTier.UNCOMMON]: [], [BiomePoolTier.RARE]: [], [BiomePoolTier.SUPER_RARE]: [], @@ -1713,7 +1713,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { [BiomePoolTier.BOSS_ULTRA_RARE]: [] }, [Biome.BEACH]: { - [BiomePoolTier.COMMON]: [ TrainerType.FISHERMAN, TrainerType.PARASOL_LADY ], + [BiomePoolTier.COMMON]: [ TrainerType.FISHERMAN, TrainerType.PARASOL_LADY, TrainerType.SAILOR ], [BiomePoolTier.UNCOMMON]: [ TrainerType.ACE_TRAINER, TrainerType.BREEDER ], [BiomePoolTier.RARE]: [ TrainerType.BLACK_BELT ], [BiomePoolTier.SUPER_RARE]: [], @@ -7308,6 +7308,11 @@ export function initBiomes() { [ Biome.VOLCANO, BiomePoolTier.COMMON ] ] ], + [ TrainerType.SAILOR, [ + [ Biome.SEA, BiomePoolTier.COMMON ], + [ Biome.BEACH, BiomePoolTier.COMMON ] + ] + ], [ TrainerType.BROCK, [ [ Biome.CAVE, BiomePoolTier.BOSS ] ] diff --git a/src/data/dialogue.ts b/src/data/dialogue.ts index bed72ceb9bb..2076123610f 100644 --- a/src/data/dialogue.ts +++ b/src/data/dialogue.ts @@ -435,6 +435,20 @@ export const trainerTypeDialogue: TrainerTypeDialogue = { ] } ], + [TrainerType.SAILOR]: [ + { + encounter: [ + "dialogue:sailor.encounter.1", + "dialogue:sailor.encounter.2", + "dialogue:sailor.encounter.3", + ], + victory: [ + "dialogue:sailor.victory.1", + "dialogue:sailor.victory.2", + "dialogue:sailor.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 3b7e27a49e1..64eb07e22ce 100644 --- a/src/data/enums/trainer-type.ts +++ b/src/data/enums/trainer-type.ts @@ -40,6 +40,7 @@ export enum TrainerType { RICH, RICH_KID, ROUGHNECK, + SAILOR, SCIENTIST, SMASHER, SNOW_WORKER, diff --git a/src/data/trainer-config.ts b/src/data/trainer-config.ts index af47991ad14..8a955afa746 100644 --- a/src/data/trainer-config.ts +++ b/src/data/trainer-config.ts @@ -1059,6 +1059,7 @@ export const trainerConfigs: TrainerConfigs = { [TrainerType.RICH]: new TrainerConfig(++t).setMoneyMultiplier(5).setName("Gentleman").setHasGenders("Madame").setHasDouble("Rich Couple"), [TrainerType.RICH_KID]: new TrainerConfig(++t).setMoneyMultiplier(3.75).setName("Rich Boy").setHasGenders("Lady").setHasDouble("Rich Kids").setEncounterBgm(TrainerType.RICH), [TrainerType.ROUGHNECK]: new TrainerConfig(++t).setMoneyMultiplier(1.4).setEncounterBgm(TrainerType.ROUGHNECK).setSpeciesFilter(s => s.isOfType(Type.DARK)), + [TrainerType.SAILOR]: new TrainerConfig(++t).setMoneyMultiplier(1.4).setEncounterBgm(TrainerType.BACKPACKER).setSpeciesFilter(s => s.isOfType(Type.WATER) || s.isOfType(Type.FIGHTING)), [TrainerType.SCIENTIST]: new TrainerConfig(++t).setHasGenders("Scientist Female").setHasDouble("Scientists").setMoneyMultiplier(1.7).setEncounterBgm(TrainerType.SCIENTIST) .setSpeciesPools({ [TrainerPoolTier.COMMON]: [Species.MAGNEMITE, Species.GRIMER, Species.DROWZEE, Species.VOLTORB, Species.KOFFING], diff --git a/src/data/trainer-names.ts b/src/data/trainer-names.ts index 0aa5bb594d4..2ad2060f233 100644 --- a/src/data/trainer-names.ts +++ b/src/data/trainer-names.ts @@ -60,6 +60,7 @@ const trainerNameConfigs: TrainerNameConfigs = { [TrainerType.RICH]: new TrainerNameConfig(TrainerType.RICH, "Gentleman").hasGenderVariant("Madame"), [TrainerType.RICH_KID]: new TrainerNameConfig(TrainerType.RICH_KID, "Rich_Boy").hasGenderVariant("Lady"), [TrainerType.ROUGHNECK]: new TrainerNameConfig(TrainerType.ROUGHNECK), + [TrainerType.SAILOR]: new TrainerNameConfig(TrainerType.SAILOR), [TrainerType.SCIENTIST]: new TrainerNameConfig(TrainerType.SCIENTIST), [TrainerType.SMASHER]: new TrainerNameConfig(TrainerType.SMASHER), [TrainerType.SNOW_WORKER]: new TrainerNameConfig(TrainerType.SNOW_WORKER, "Worker"), @@ -111,6 +112,7 @@ export const trainerNamePools = { [TrainerType.RICH]: [["Alfred","Edward","Gregory","Preston","Thomas","Tucker","Walter","Clifford","Everett","Micah","Nate","Pierre","Terrance","Arthur","Brooks","Emanuel","Lamar","Jeremy","Leonardo","Milton","Frederic","Renaud","Robert","Yan","Daniel","Sheldon","Stonewall","Gerald","Ronald","Smith","Stanley","Reginald","Orson","Wilco","Caden","Glenn"],["Rebecca","Reina","Cassandra","Emilia","Grace","Marian","Elizabeth","Kathleen","Sayuri","Caroline","Judy"]], [TrainerType.RICH_KID]: [["Garret","Winston","Dawson","Enrique","Jason","Roman","Trey","Liam","Anthony","Brad","Cody","Manuel","Martin","Pierce","Rolan","Keenan","Filbert","Antoin","Cyus","Diek","Dugo","Flitz","Jurek","Lond","Perd","Quint","Basto","Benit","Brot","Denc","Guyit","Marcon","Perc","Puros","Roex","Sainz","Symin","Tark","Venak"],["Anette","Brianna","Cindy","Colleen","Daphne","Elizabeth","Naomi","Sarah","Charlotte","Gillian","Jacki","Lady","Melissa","Celeste","Colette","Elizandra","Isabel","Lynette","Magnolia","Sophie","Lina","Dulcie","Auro","Brin","Caril","Eloos","Gwin","Illa","Kowly","Rima","Ristin","Vesey","Brena","Deasy","Denslon","Kylet","Nemi","Rene","Sanol","Stouner","Sturk","Talmen","Zoila"]], [TrainerType.ROUGHNECK]: ["Camron","Corey","Gabriel","Isaiah","Jamal","Koji","Luke","Paxton","Raul","Zeek","Kirby","Chance","Dave","Fletcher","Johnny","Reese","Joey","Ricky","Silvester","Martin"], + [TrainerType.SAILOR]: ["Alberto","Bost","Brennan","Brenden","Claude","Cory","Damian","Dirk","Duncan","Dwayne","Dylan","Eddie","Edmond","Elijah","Ernest","Eugene","Garrett","Golos","Gratin","Grestly","Harry","Hols","Hudson","Huey","Jebol","Jeff","Leonald","Luther","Kelvin","Kenneth","Kent","Knook","Marc","Mifis","Monar","Morkor","Ordes","Oxlin","Parker","Paul","Philip","Roberto","Samson","Skyler","Stanly","Tebu","Terrell","Trevor","Yasu","Zachariah"], [TrainerType.SCIENTIST]: [["Jed","Marc","Mitch","Rich","Ross","Beau","Braydon","Connor","Ed","Ivan","Jerry","Jose","Joshua","Parker","Rodney","Taylor","Ted","Travis","Zackery","Darrius","Emilio","Fredrick","Shaun","Stefano","Travon","Daniel","Garett","Gregg","Linden","Lowell","Trenton","Dudley","Luke","Markus","Nathan","Orville","Randall","Ron","Ronald","Simon","Steve","William","Franklin","Clarke","Jacques","Terrance","Ernst","Justus","Ikaika","Jayson","Kyle","Reid","Tyrone","Adam","Albert","Alphonse","Cory","Donnie","Elton","Francis","Gordon","Herbert","Humphrey","Jordan","Julian","Keaton","Levi","Melvin","Murray","West","Craig","Coren","Dubik","Kotan","Lethco","Mante","Mort","Myron","Odlow","Ribek","Roeck","Vogi","Vonder","Zogo","Doimo","Doton","Durel","Hildon","Kukla","Messa","Nanot","Platen","Raburn","Reman","Acrod","Coffy","Elrok","Foss","Hardig","Hombol","Hospel","Kaller","Klots","Krilok","Limar","Loket","Mesak","Morbit","Newin","Orill","Tabor","Tekot"],["Blythe","Chan","Kathrine","Marie","Maria","Naoko","Samantha","Satomi","Shannon","Athena","Caroline","Lumi","Lumina","Marissa","Sonia"]], [TrainerType.SMASHER]: ["Aspen","Elena","Mari","Amy","Lizzy"], [TrainerType.SNOW_WORKER]: [["Braden","Brendon","Colin","Conrad","Dillan","Gary","Gerardo","Holden","Jackson","Mason","Quentin","Willy","Noel","Arnold","Brady","Brand","Cairn","Cliff","Don","Eddie","Felix","Filipe","Glenn","Gus","Heath","Matthew","Patton","Rich","Rob","Ryan","Scott","Shelby","Sterling","Tyler","Victor","Zack","Friedrich","Herman","Isaac","Leo","Maynard","Mitchell","Morgann","Nathan","Niel","Pasqual","Paul","Tavarius","Tibor","Dimitri","Narek","Yusif","Frank","Jeff","Vaclav","Ovid","Francis","Keith","Russel","Sangon","Toway","Bomber","Chean","Demit","Hubor","Kebile","Laber","Ordo","Retay","Ronix","Wagel","Dobit","Kaster","Lobel","Releo","Saken","Rustix"],["Georgia","Sandra","Yvonne"]], diff --git a/src/locales/de/dialogue.ts b/src/locales/de/dialogue.ts index c69fb1aacd0..d9ad65ee8d4 100644 --- a/src/locales/de/dialogue.ts +++ b/src/locales/de/dialogue.ts @@ -379,6 +379,18 @@ export const PGMdialogue: DialogueTranslationEntries = { 3: "Ow! I scorched the tip of my nose!" }, }, + "sailor": { + "encounter": { + 1: "Matey, you're walking the plank if you lose!", + 2: "Come on then! My sailor's pride is at stake!", + 3: "Ahoy there! Are you seasick?" + }, + "victory": { + 1: "Argh! Beaten by a kid!", + 2: "Your spirit sank me!", + 3: "I think it's me that's seasick..." + }, + }, "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 6ac1abbcabf..b7d7ec01617 100644 --- a/src/locales/de/trainers.ts +++ b/src/locales/de/trainers.ts @@ -95,6 +95,7 @@ export const trainerClasses: SimpleTranslationEntries = { "rich_kid_female": "Rich Kid", "rich_kids": "Schnösel", "roughneck": "Raufbold", + "sailor": "Matrose", "scientist": "Forscher", "scientist_female": "Forscherin", "scientists": "Forscher", diff --git a/src/locales/en/dialogue.ts b/src/locales/en/dialogue.ts index c5b0d72d3d7..601e6363f3a 100644 --- a/src/locales/en/dialogue.ts +++ b/src/locales/en/dialogue.ts @@ -371,6 +371,18 @@ export const PGMdialogue: DialogueTranslationEntries = { 3: "Ow! I scorched the tip of my nose!" }, }, + "sailor": { + "encounter": { + 1: "Matey, you're walking the plank if you lose!", + 2: "Come on then! My sailor's pride is at stake!", + 3: "Ahoy there! Are you seasick?" + }, + "victory": { + 1: "Argh! Beaten by a kid!", + 2: "Your spirit sank me!", + 3: "I think it's me that's seasick..." + }, + }, "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 cd6f78ccc13..701980f8d37 100644 --- a/src/locales/en/trainers.ts +++ b/src/locales/en/trainers.ts @@ -95,6 +95,7 @@ export const trainerClasses: SimpleTranslationEntries = { "rich_kid_female": "Rich Kid", "rich_kids": "Rich Kids", "roughneck": "Roughneck", + "sailor": "Sailor", "scientist": "Scientist", "scientist_female": "Scientist", "scientists": "Scientists", diff --git a/src/locales/es/dialogue.ts b/src/locales/es/dialogue.ts index faabab3077d..938ef331088 100644 --- a/src/locales/es/dialogue.ts +++ b/src/locales/es/dialogue.ts @@ -371,6 +371,18 @@ export const PGMdialogue: DialogueTranslationEntries = { 3: "Ow! I scorched the tip of my nose!" }, }, + "sailor": { + "encounter": { + 1: "¡Amigo, te haré caminar por la borda si pierdes!", + 2: "¡Adelante! ¡Mi orgullo como marinero está en auge!", + 3: "¡Ah del barco! ¿Estás mareado?" + }, + "victory": { + 1: "¡Argh! ¡Derrotado por un niño!", + 2: "¡Tu espíritu me ha hundido!", + 3: "Creo que soy yo quien está mareado..." + }, + }, "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 3e2b2b1a788..6d776f44c9c 100644 --- a/src/locales/es/trainers.ts +++ b/src/locales/es/trainers.ts @@ -94,6 +94,7 @@ export const trainerClasses: SimpleTranslationEntries = { "rich_kid_female": "Niña Bien", "rich_kids": "Niños Bien", "roughneck": "Calvo", + "sailor": "Marinero", "scientist": "Científico", "scientist_female": "Científica", "scientists": "Científicos", diff --git a/src/locales/fr/dialogue.ts b/src/locales/fr/dialogue.ts index befc9d96caa..950703bfded 100644 --- a/src/locales/fr/dialogue.ts +++ b/src/locales/fr/dialogue.ts @@ -371,6 +371,18 @@ export const PGMdialogue: DialogueTranslationEntries = { 3: "Ow! I scorched the tip of my nose!" }, }, + "sailor": { + "encounter": { + 1: "Matey, you're walking the plank if you lose!", + 2: "Come on then! My sailor's pride is at stake!", + 3: "Ahoy there! Are you seasick?" + }, + "victory": { + 1: "Argh! Beaten by a kid!", + 2: "Your spirit sank me!", + 3: "I think it's me that's seasick..." + }, + }, "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 6ed221a7b86..a44c03e1b68 100644 --- a/src/locales/fr/trainers.ts +++ b/src/locales/fr/trainers.ts @@ -95,6 +95,7 @@ export const trainerClasses: SimpleTranslationEntries = { "rich_kid_female": "Mademoiselle", "rich_kids": "Richards", "roughneck": "Loubard", + "sailor": "Marin", "scientist": "Scientifique", "scientist_female": "Scientifique", "scientists": "Scientifiques", diff --git a/src/locales/it/dialogue.ts b/src/locales/it/dialogue.ts index faabab3077d..26602079f65 100644 --- a/src/locales/it/dialogue.ts +++ b/src/locales/it/dialogue.ts @@ -371,6 +371,18 @@ export const PGMdialogue: DialogueTranslationEntries = { 3: "Ow! I scorched the tip of my nose!" }, }, + "sailor": { + "encounter": { + 1: "Matey, you're walking the plank if you lose!", + 2: "Come on then! My sailor's pride is at stake!", + 3: "Ahoy there! Are you seasick?" + }, + "victory": { + 1: "Argh! Beaten by a kid!", + 2: "Your spirit sank me!", + 3: "I think it's me that's seasick..." + }, + }, "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 9c3f025541e..9c0a644c1c6 100644 --- a/src/locales/it/trainers.ts +++ b/src/locales/it/trainers.ts @@ -95,6 +95,7 @@ export const trainerClasses: SimpleTranslationEntries = { "rich_kid_female": "Rich Kid", "rich_kids": "Rich Kids", "roughneck": "Roughneck", + "sailor": "Sailor", "scientist": "Scientist", "scientist_female": "Scientist", "scientists": "Scientists", diff --git a/src/locales/ko/dialogue.ts b/src/locales/ko/dialogue.ts index 795bc82ae7c..7867ae7b021 100644 --- a/src/locales/ko/dialogue.ts +++ b/src/locales/ko/dialogue.ts @@ -371,6 +371,18 @@ export const PGMdialogue: DialogueTranslationEntries = { 3: "Ow! I scorched the tip of my nose!" }, }, + "sailor": { + "encounter": { + 1: "Matey, you're walking the plank if you lose!", + 2: "Come on then! My sailor's pride is at stake!", + 3: "Ahoy there! Are you seasick?" + }, + "victory": { + 1: "Argh! Beaten by a kid!", + 2: "Your spirit sank me!", + 3: "I think it's me that's seasick..." + }, + }, "brock": { "encounter": { 1: "내 전문인 바위 타입 포켓몬으로 널 쓰러뜨려줄게! 덤벼!", diff --git a/src/locales/ko/trainers.ts b/src/locales/ko/trainers.ts index 62e8de560d2..0bc99640333 100644 --- a/src/locales/ko/trainers.ts +++ b/src/locales/ko/trainers.ts @@ -101,6 +101,7 @@ export const trainerClasses: SimpleTranslationEntries = { "smasher": "테니스선수", "snow_worker": "작업원", "snow_worker_female": "작업원", + "sailor": "선원", "striker": "축구선수", "school_kid": "학원끝난 아이", "school_kid_female": "학원끝난 아이", diff --git a/src/locales/pt_BR/dialogue.ts b/src/locales/pt_BR/dialogue.ts index cf5ff6ccf4f..1258e41cb54 100644 --- a/src/locales/pt_BR/dialogue.ts +++ b/src/locales/pt_BR/dialogue.ts @@ -371,6 +371,18 @@ export const PGMdialogue: DialogueTranslationEntries = { 3: "Ai! Queimei minha língua!" }, }, + "sailor": { + "encounter": { + 1: "Matey, you're walking the plank if you lose!", + 2: "Come on then! My sailor's pride is at stake!", + 3: "Ahoy there! Are you seasick?" + }, + "victory": { + 1: "Argh! Beaten by a kid!", + 2: "Your spirit sank me!", + 3: "I think it's me that's seasick..." + }, + }, "brock": { "encounter": { 1: "Minha especialidade em Pokémon do tipo Pedra vai te derrubar! Vamos lá!", diff --git a/src/locales/pt_BR/trainers.ts b/src/locales/pt_BR/trainers.ts index 5d624c60ad5..f93875dcbfc 100644 --- a/src/locales/pt_BR/trainers.ts +++ b/src/locales/pt_BR/trainers.ts @@ -95,6 +95,7 @@ export const trainerClasses: SimpleTranslationEntries = { "rich_kid_female": "Garota Rica", "rich_kids": "Garotos Ricos", "roughneck": "Arruaceiro", + "sailor": "Marinheiro", "scientist": "Cientista", "scientist_female": "Cientista", "scientists": "Cientistas", diff --git a/src/locales/zh_CN/dialogue.ts b/src/locales/zh_CN/dialogue.ts index faabab3077d..26602079f65 100644 --- a/src/locales/zh_CN/dialogue.ts +++ b/src/locales/zh_CN/dialogue.ts @@ -371,6 +371,18 @@ export const PGMdialogue: DialogueTranslationEntries = { 3: "Ow! I scorched the tip of my nose!" }, }, + "sailor": { + "encounter": { + 1: "Matey, you're walking the plank if you lose!", + 2: "Come on then! My sailor's pride is at stake!", + 3: "Ahoy there! Are you seasick?" + }, + "victory": { + 1: "Argh! Beaten by a kid!", + 2: "Your spirit sank me!", + 3: "I think it's me that's seasick..." + }, + }, "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 ae0680a3c75..28b0760cc9b 100644 --- a/src/locales/zh_CN/trainers.ts +++ b/src/locales/zh_CN/trainers.ts @@ -95,6 +95,7 @@ export const trainerClasses: SimpleTranslationEntries = { "rich_kid_female": "Rich Kid", "rich_kids": "富二代组合", "roughneck": "光头男", + "sailor": "水手", "scientist": "研究员", "scientist_female": "研究员", "scientists": "研究员组合", diff --git a/src/locales/zh_TW/dialogue.ts b/src/locales/zh_TW/dialogue.ts index 7cb29ec8191..5e79471f771 100644 --- a/src/locales/zh_TW/dialogue.ts +++ b/src/locales/zh_TW/dialogue.ts @@ -371,6 +371,18 @@ export const PGMdialogue: DialogueTranslationEntries = { 3: "Ow! I scorched the tip of my nose!" }, }, + "sailor": { + "encounter": { + 1: "Matey, you're walking the plank if you lose!", + 2: "Come on then! My sailor's pride is at stake!", + 3: "Ahoy there! Are you seasick?" + }, + "victory": { + 1: "Argh! Beaten by a kid!", + 2: "Your spirit sank me!", + 3: "I think it's me that's seasick..." + }, + }, "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 f20ee156c3a..07b2949bdd8 100644 --- a/src/locales/zh_TW/trainers.ts +++ b/src/locales/zh_TW/trainers.ts @@ -95,6 +95,7 @@ export const trainerClasses: SimpleTranslationEntries = { "rich_kid_female": "富家孩子", "rich_kids": "富二代組合", "roughneck": "光頭男", + "sailor": "水手", "scientist": "研究員", "scientist_female": "研究員", "scientists": "研究員組合",