Merge branch 'pr/330'

This commit is contained in:
Chacolay 2024-04-29 12:02:59 -04:00
commit a32ba073d0
8 changed files with 484 additions and 302 deletions

View File

@ -1,380 +1,380 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
export const pokemon: SimpleTranslationEntries = {
"bulbasaur": "Bulbasaur",
"ivysaur": "Ivysaur",
"venusaur": "Venusaur",
"charmander": "Charmander",
"charmeleon": "Charmeleon",
"charizard": "Charizard",
"squirtle": "Squirtle",
"wartortle": "Wartortle",
"blastoise": "Blastoise",
"caterpie": "Caterpie",
"metapod": "Metapod",
"butterfree": "Butterfree",
"weedle": "Weedle",
"kakuna": "Kakuna",
"beedrill": "Beedrill",
"pidgey": "Pidgey",
"pidgeotto": "Pidgeotto",
"pidgeot": "Pidgeot",
"rattata": "Rattata",
"raticate": "Raticate",
"spearow": "Spearow",
"fearow": "Fearow",
"ekans": "Ekans",
"bulbasaur": "Bisasam",
"ivysaur": "Bisaknosp",
"venusaur": "Bisaflor",
"charmander": "Glumanda",
"charmeleon": "Glutexo",
"charizard": "Glurak",
"squirtle": "Schiggy",
"wartortle": "Schillok",
"blastoise": "Turtok",
"caterpie": "Raupy",
"metapod": "Safcon",
"butterfree": "Smettbo",
"weedle": "Hornliu",
"kakuna": "Kokuna",
"beedrill": "Bibor",
"pidgey": "Taubsi",
"pidgeotto": "Tauboga",
"pidgeot": "Tauboss",
"rattata": "Rattfratz",
"raticate": "Rattikarl",
"spearow": "Habitak",
"fearow": "Ibitak",
"ekans": "Rettan",
"arbok": "Arbok",
"pikachu": "Pikachu",
"raichu": "Raichu",
"sandshrew": "Sandshrew",
"sandslash": "Sandslash",
"sandshrew": "Sandan",
"sandslash": "Sandamer",
"nidoran_f": "Nidoran♀",
"nidorina": "Nidorina",
"nidoqueen": "Nidoqueen",
"nidoran_m": "Nidoran♂",
"nidorino": "Nidorino",
"nidoking": "Nidoking",
"clefairy": "Clefairy",
"clefable": "Clefable",
"clefairy": "Piepi",
"clefable": "Pixi",
"vulpix": "Vulpix",
"ninetales": "Ninetales",
"jigglypuff": "Jigglypuff",
"wigglytuff": "Wigglytuff",
"ninetales": "Vulnona",
"jigglypuff": "Pummeluff",
"wigglytuff": "Knuddeluff",
"zubat": "Zubat",
"golbat": "Golbat",
"oddish": "Oddish",
"gloom": "Gloom",
"vileplume": "Vileplume",
"oddish": "Myrapla",
"gloom": "Duflor",
"vileplume": "Giflor",
"paras": "Paras",
"parasect": "Parasect",
"venonat": "Venonat",
"venomoth": "Venomoth",
"diglett": "Diglett",
"dugtrio": "Dugtrio",
"meowth": "Meowth",
"persian": "Persian",
"psyduck": "Psyduck",
"golduck": "Golduck",
"mankey": "Mankey",
"primeape": "Primeape",
"growlithe": "Growlithe",
"arcanine": "Arcanine",
"poliwag": "Poliwag",
"poliwhirl": "Poliwhirl",
"poliwrath": "Poliwrath",
"parasect": "Parasek",
"venonat": "Bluzuk",
"venomoth": "Omot",
"diglett": "Digda",
"dugtrio": "Digdri",
"meowth": "Mauzi",
"persian": "Snobilikat",
"psyduck": "Enton",
"golduck": "Entoron",
"mankey": "Menki",
"primeape": "Rasaff",
"growlithe": "Fukano",
"arcanine": "Arkani",
"poliwag": "Quapsel",
"poliwhirl": "Quaputzi",
"poliwrath": "Quappo",
"abra": "Abra",
"kadabra": "Kadabra",
"alakazam": "Alakazam",
"machop": "Machop",
"machoke": "Machoke",
"machamp": "Machamp",
"bellsprout": "Bellsprout",
"weepinbell": "Weepinbell",
"victreebel": "Victreebel",
"tentacool": "Tentacool",
"tentacruel": "Tentacruel",
"geodude": "Geodude",
"graveler": "Graveler",
"golem": "Golem",
"ponyta": "Ponyta",
"rapidash": "Rapidash",
"slowpoke": "Slowpoke",
"slowbro": "Slowbro",
"magnemite": "Magnemite",
"alakazam": "Simsala",
"machop": "Machollo",
"machoke": "Maschock",
"machamp": "Machomei",
"bellsprout": "Knofensa",
"weepinbell": "Ultrigaria",
"victreebel": "Sarzenia",
"tentacool": "Tentacha",
"tentacruel": "Tentoxa",
"geodude": "Kleinstein",
"graveler": "Georok",
"golem": "Geowaz",
"ponyta": "Ponita",
"rapidash": "Gallopa",
"slowpoke": "Flegmon",
"slowbro": "Lahmus",
"magnemite": "Magnetilo",
"magneton": "Magneton",
"farfetchd": "Farfetch'd",
"doduo": "Doduo",
"dodrio": "Dodrio",
"seel": "Seel",
"dewgong": "Dewgong",
"grimer": "Grimer",
"muk": "Muk",
"shellder": "Shellder",
"cloyster": "Cloyster",
"gastly": "Gastly",
"haunter": "Haunter",
"farfetchd": "Porenta",
"doduo": "Dodu",
"dodrio": "Dodri",
"seel": "Jurob",
"dewgong": "Jugong",
"grimer": "Sleima",
"muk": "Sleimok",
"shellder": "Muschas",
"cloyster": "Austos",
"gastly": "Nebulak",
"haunter": "Alpollo",
"gengar": "Gengar",
"onix": "Onix",
"drowzee": "Drowzee",
"drowzee": "Traumato",
"hypno": "Hypno",
"krabby": "Krabby",
"kingler": "Kingler",
"voltorb": "Voltorb",
"electrode": "Electrode",
"exeggcute": "Exeggcute",
"exeggutor": "Exeggutor",
"cubone": "Cubone",
"marowak": "Marowak",
"hitmonlee": "Hitmonlee",
"hitmonchan": "Hitmonchan",
"lickitung": "Lickitung",
"koffing": "Koffing",
"weezing": "Weezing",
"rhyhorn": "Rhyhorn",
"rhydon": "Rhydon",
"chansey": "Chansey",
"voltorb": "Voltobal",
"electrode": "Lektrobal",
"exeggcute": "Owei",
"exeggutor": "Kokowei",
"cubone": "Tragosso",
"marowak": "Knogga",
"hitmonlee": "Kicklee",
"hitmonchan": "Nockchan",
"lickitung": "Schlurp",
"koffing": "Smogon",
"weezing": "Smogmog",
"rhyhorn": "Rihorn",
"rhydon": "Rizeros",
"chansey": "Chaneira",
"tangela": "Tangela",
"kangaskhan": "Kangaskhan",
"horsea": "Horsea",
"seadra": "Seadra",
"goldeen": "Goldeen",
"seaking": "Seaking",
"staryu": "Staryu",
"kangaskhan": "Kangama",
"horsea": "Seeper",
"seadra": "Seemon",
"goldeen": "Goldini",
"seaking": "Golking",
"staryu": "Sterndu",
"starmie": "Starmie",
"mr_mime": "Mr. Mime",
"scyther": "Scyther",
"jynx": "Jynx",
"electabuzz": "Electabuzz",
"mr_mime": "Pantimos",
"scyther": "Sichlor",
"jynx": "Rossana",
"electabuzz": "Elektek",
"magmar": "Magmar",
"pinsir": "Pinsir",
"tauros": "Tauros",
"magikarp": "Magikarp",
"gyarados": "Gyarados",
"magikarp": "Karpador",
"gyarados": "Garados",
"lapras": "Lapras",
"ditto": "Ditto",
"eevee": "Eevee",
"vaporeon": "Vaporeon",
"jolteon": "Jolteon",
"flareon": "Flareon",
"eevee": "Evoli",
"vaporeon": "Aquana",
"jolteon": "Blitza",
"flareon": "Flamara",
"porygon": "Porygon",
"omanyte": "Omanyte",
"omastar": "Omastar",
"omanyte": "Amonitas",
"omastar": "Amoroso",
"kabuto": "Kabuto",
"kabutops": "Kabutops",
"aerodactyl": "Aerodactyl",
"snorlax": "Snorlax",
"articuno": "Articuno",
"snorlax": "Relaxo",
"articuno": "Arktos",
"zapdos": "Zapdos",
"moltres": "Moltres",
"moltres": "Lavados",
"dratini": "Dratini",
"dragonair": "Dragonair",
"dragonite": "Dragonite",
"mewtwo": "Mewtwo",
"dragonair": "Dragonir",
"dragonite": "Dragoran",
"mewtwo": "Mewtu",
"mew": "Mew",
"chikorita": "Chikorita",
"bayleef": "Bayleef",
"meganium": "Meganium",
"cyndaquil": "Cyndaquil",
"quilava": "Quilava",
"typhlosion": "Typhlosion",
"totodile": "Totodile",
"croconaw": "Croconaw",
"feraligatr": "Feraligatr",
"sentret": "Sentret",
"furret": "Furret",
"chikorita": "Endivie",
"bayleef": "Lorblatt",
"meganium": "Meganie",
"cyndaquil": "Feurigel",
"quilava": "Igelavar",
"typhlosion": "Tornupto",
"totodile": "Karnimani",
"croconaw": "Tyracroc",
"feraligatr": "Impergator",
"sentret": "Wiesor",
"furret": "Wiesenior",
"hoothoot": "Hoothoot",
"noctowl": "Noctowl",
"noctowl": "Noctuh",
"ledyba": "Ledyba",
"ledian": "Ledian",
"spinarak": "Spinarak",
"spinarak": "Webarak",
"ariados": "Ariados",
"crobat": "Crobat",
"chinchou": "Chinchou",
"crobat": "Iksbat",
"chinchou": "Lampi",
"lanturn": "Lanturn",
"pichu": "Pichu",
"cleffa": "Cleffa",
"igglybuff": "Igglybuff",
"cleffa": "Pii",
"igglybuff": "Fluffeluff",
"togepi": "Togepi",
"togetic": "Togetic",
"natu": "Natu",
"xatu": "Xatu",
"mareep": "Mareep",
"flaaffy": "Flaaffy",
"mareep": "Voltilamm",
"flaaffy": "Waaty",
"ampharos": "Ampharos",
"bellossom": "Bellossom",
"bellossom": "Blubella",
"marill": "Marill",
"azumarill": "Azumarill",
"sudowoodo": "Sudowoodo",
"politoed": "Politoed",
"hoppip": "Hoppip",
"skiploom": "Skiploom",
"jumpluff": "Jumpluff",
"aipom": "Aipom",
"sunkern": "Sunkern",
"sunflora": "Sunflora",
"sudowoodo": "Mogelbaum",
"politoed": "Quaxo",
"hoppip": "Hoppspross",
"skiploom": "Hubelupf",
"jumpluff": "Papungha",
"aipom": "Griffel",
"sunkern": "Sonnkern",
"sunflora": "Sonnflora",
"yanma": "Yanma",
"wooper": "Wooper",
"quagsire": "Quagsire",
"espeon": "Espeon",
"umbreon": "Umbreon",
"murkrow": "Murkrow",
"slowking": "Slowking",
"misdreavus": "Misdreavus",
"unown": "Unown",
"wobbuffet": "Wobbuffet",
"wooper": "Felino",
"quagsire": "Morlord",
"espeon": "Psiana",
"umbreon": "Nachtara",
"murkrow": "Kramurx",
"slowking": "Laschoking",
"misdreavus": "Traunfugil",
"unown": "Icognito",
"wobbuffet": "Woingenau",
"girafarig": "Girafarig",
"pineco": "Pineco",
"forretress": "Forretress",
"dunsparce": "Dunsparce",
"gligar": "Gligar",
"steelix": "Steelix",
"pineco": "Tannza",
"forretress": "Forstellka",
"dunsparce": "Dummisel",
"gligar": "Skorgla",
"steelix": "Stahlos",
"snubbull": "Snubbull",
"granbull": "Granbull",
"qwilfish": "Qwilfish",
"scizor": "Scizor",
"shuckle": "Shuckle",
"heracross": "Heracross",
"sneasel": "Sneasel",
"qwilfish": "Baldorfish",
"scizor": "Scherox",
"shuckle": "Pottrott",
"heracross": "Skaraborn",
"sneasel": "Sniebel",
"teddiursa": "Teddiursa",
"ursaring": "Ursaring",
"slugma": "Slugma",
"slugma": "Schneckmag",
"magcargo": "Magcargo",
"swinub": "Swinub",
"piloswine": "Piloswine",
"corsola": "Corsola",
"swinub": "Quiekel",
"piloswine": "Keifel",
"corsola": "Corasonn",
"remoraid": "Remoraid",
"octillery": "Octillery",
"delibird": "Delibird",
"mantine": "Mantine",
"skarmory": "Skarmory",
"houndour": "Houndour",
"houndoom": "Houndoom",
"kingdra": "Kingdra",
"delibird": "Botogel",
"mantine": "Mantax",
"skarmory": "Panzaeron",
"houndour": "Hunduster",
"houndoom": "Hundemon",
"kingdra": "Seedraking",
"phanpy": "Phanpy",
"donphan": "Donphan",
"porygon2": "Porygon2",
"stantler": "Stantler",
"smeargle": "Smeargle",
"tyrogue": "Tyrogue",
"hitmontop": "Hitmontop",
"smoochum": "Smoochum",
"stantler": "Damhirplex",
"smeargle": "Farbeagle",
"tyrogue": "Rabauz",
"hitmontop": "Kapoera",
"smoochum": "Kussilla",
"elekid": "Elekid",
"magby": "Magby",
"miltank": "Miltank",
"blissey": "Blissey",
"blissey": "Heiteira",
"raikou": "Raikou",
"entei": "Entei",
"suicune": "Suicune",
"larvitar": "Larvitar",
"pupitar": "Pupitar",
"tyranitar": "Tyranitar",
"tyranitar": "Despotar",
"lugia": "Lugia",
"ho_oh": "Ho-Oh",
"celebi": "Celebi",
"treecko": "Treecko",
"grovyle": "Grovyle",
"sceptile": "Sceptile",
"torchic": "Torchic",
"combusken": "Combusken",
"blaziken": "Blaziken",
"mudkip": "Mudkip",
"marshtomp": "Marshtomp",
"swampert": "Swampert",
"poochyena": "Poochyena",
"mightyena": "Mightyena",
"zigzagoon": "Zigzagoon",
"linoone": "Linoone",
"wurmple": "Wurmple",
"silcoon": "Silcoon",
"beautifly": "Beautifly",
"cascoon": "Cascoon",
"dustox": "Dustox",
"lotad": "Lotad",
"lombre": "Lombre",
"ludicolo": "Ludicolo",
"seedot": "Seedot",
"nuzleaf": "Nuzleaf",
"shiftry": "Shiftry",
"taillow": "Taillow",
"swellow": "Swellow",
"treecko": "Geckarbor",
"grovyle": "Reptain",
"sceptile": "Gewaldro",
"torchic": "Flemmli",
"combusken": "Jungglut",
"blaziken": "Lohgock",
"mudkip": "Hydropi",
"marshtomp": "Moorabbel",
"swampert": "Sumpex",
"poochyena": "Fiffyen",
"mightyena": "Magnayen",
"zigzagoon": "Zigzachs",
"linoone": "Geradaks",
"wurmple": "Waumpel",
"silcoon": "Schaloko",
"beautifly": "Papinella",
"cascoon": "Panekon",
"dustox": "Pudox",
"lotad": "Loturzel",
"lombre": "Lombrero",
"ludicolo": "Kappalores",
"seedot": "Samurzel",
"nuzleaf": "Blanas",
"shiftry": "Tengulist",
"taillow": "Schwalbini",
"swellow": "Schwalboss",
"wingull": "Wingull",
"pelipper": "Pelipper",
"ralts": "Ralts",
"ralts": "Trasla",
"kirlia": "Kirlia",
"gardevoir": "Gardevoir",
"surskit": "Surskit",
"masquerain": "Masquerain",
"shroomish": "Shroomish",
"breloom": "Breloom",
"slakoth": "Slakoth",
"vigoroth": "Vigoroth",
"slaking": "Slaking",
"surskit": "Geweiher",
"masquerain": "Maskeregen",
"shroomish": "Knilz",
"breloom": "Kapilz",
"slakoth": "Bummelz",
"vigoroth": "Muntier",
"slaking": "Letarking",
"nincada": "Nincada",
"ninjask": "Ninjask",
"shedinja": "Shedinja",
"whismur": "Whismur",
"loudred": "Loudred",
"exploud": "Exploud",
"shedinja": "Ninjatom",
"whismur": "Flurmel",
"loudred": "Krakeelo",
"exploud": "Krawumms",
"makuhita": "Makuhita",
"hariyama": "Hariyama",
"azurill": "Azurill",
"nosepass": "Nosepass",
"skitty": "Skitty",
"delcatty": "Delcatty",
"sableye": "Sableye",
"mawile": "Mawile",
"aron": "Aron",
"lairon": "Lairon",
"aggron": "Aggron",
"nosepass": "Nasgnet",
"skitty": "Eneco",
"delcatty": "Enekoro",
"sableye": "Zobiris",
"mawile": "Flunkifer",
"aron": "Stollunior",
"lairon": "Stollrak",
"aggron": "Stolloss",
"meditite": "Meditite",
"medicham": "Medicham",
"electrike": "Electrike",
"manectric": "Manectric",
"medicham": "Meditalis",
"electrike": "Frizelbliz",
"manectric": "Voltenso",
"plusle": "Plusle",
"minun": "Minun",
"volbeat": "Volbeat",
"illumise": "Illumise",
"roselia": "Roselia",
"gulpin": "Gulpin",
"swalot": "Swalot",
"carvanha": "Carvanha",
"sharpedo": "Sharpedo",
"gulpin": "Schluppuck",
"swalot": "Schluckwech",
"carvanha": "Kanivanha",
"sharpedo": "Tohaido",
"wailmer": "Wailmer",
"wailord": "Wailord",
"numel": "Numel",
"numel": "Camaub",
"camerupt": "Camerupt",
"torkoal": "Torkoal",
"torkoal": "Qurtel",
"spoink": "Spoink",
"grumpig": "Grumpig",
"spinda": "Spinda",
"trapinch": "Trapinch",
"grumpig": "Groink",
"spinda": "Pandir",
"trapinch": "Knacklion",
"vibrava": "Vibrava",
"flygon": "Flygon",
"cacnea": "Cacnea",
"cacturne": "Cacturne",
"swablu": "Swablu",
"flygon": "Libelldra",
"cacnea": "Tuska",
"cacturne": "Noktuska",
"swablu": "Wablu",
"altaria": "Altaria",
"zangoose": "Zangoose",
"seviper": "Seviper",
"lunatone": "Lunatone",
"solrock": "Solrock",
"barboach": "Barboach",
"whiscash": "Whiscash",
"corphish": "Corphish",
"crawdaunt": "Crawdaunt",
"baltoy": "Baltoy",
"claydol": "Claydol",
"lileep": "Lileep",
"cradily": "Cradily",
"zangoose": "Sengo",
"seviper": "Vipitis",
"lunatone": "Lunastein",
"solrock": "Sonnfel",
"barboach": "Schmerbe",
"whiscash": "Welsar",
"corphish": "Krebscorps",
"crawdaunt": "Krebutack",
"baltoy": "Puppance",
"claydol": "Lepumentas",
"lileep": "Liliep",
"cradily": "Wielie",
"anorith": "Anorith",
"armaldo": "Armaldo",
"feebas": "Feebas",
"feebas": "Barschwa",
"milotic": "Milotic",
"castform": "Castform",
"castform": "Formeo",
"kecleon": "Kecleon",
"shuppet": "Shuppet",
"banette": "Banette",
"duskull": "Duskull",
"dusclops": "Dusclops",
"duskull": "Zwirrlicht",
"dusclops": "Zwirrklop",
"tropius": "Tropius",
"chimecho": "Chimecho",
"chimecho": "Palimpalim",
"absol": "Absol",
"wynaut": "Wynaut",
"snorunt": "Snorunt",
"glalie": "Glalie",
"spheal": "Spheal",
"sealeo": "Sealeo",
"walrein": "Walrein",
"clamperl": "Clamperl",
"huntail": "Huntail",
"gorebyss": "Gorebyss",
"wynaut": "Isso",
"snorunt": "Schneppke",
"glalie": "Firnontor",
"spheal": "Seemops",
"sealeo": "Seejong",
"walrein": "Walraisa",
"clamperl": "Perlu",
"huntail": "Aalabyss",
"gorebyss": "Saganabyss",
"relicanth": "Relicanth",
"luvdisc": "Luvdisc",
"bagon": "Bagon",
"shelgon": "Shelgon",
"salamence": "Salamence",
"beldum": "Beldum",
"luvdisc": "Liebiskus",
"bagon": "Kindwurm",
"shelgon": "Draschel",
"salamence": "Brutalanda",
"beldum": "Tanhel",
"metang": "Metang",
"metagross": "Metagross",
"regirock": "Regirock",

View File

@ -0,0 +1,38 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
export const tutorial: SimpleTranslationEntries = {
"intro": `Welcome to PokéRogue! This is a battle-focused Pokémon fangame with roguelite elements.
$This game is not monetized and we claim no ownership of Pokémon nor of the copyrighted assets used.
$The game is a work in progress, but fully playable.\nFor bug reports, please use the Discord community.
$If the game runs slowly, please ensure 'Hardware Acceleration' is turned on in your browser settings.`,
"accessMenu": `To access the menu, press M or Escape while awaiting input.\nThe menu contains settings and various features.`,
"menu": `From this menu you can access the settings.
$From the settings you can change game speed, window style, and other options.
$There are also various other features here, so be sure to check them all!`,
"starterSelect": `From this screen, you can select your starters.\nThese are your initial party members.
$Each starter has a value. Your party can have up to\n6 members as long as the total does not exceed 10.
$You can also select gender, ability, and form depending on\nthe variants you've caught or hatched.
$The IVs for a species are also the best of every one you've\ncaught or hatched, so try to get lots of the same species!`,
"pokerus": `A daily random 3 selectable starters have a purple border.
$If you see a starter you own with one of these,\ntry adding it to your party. Be sure to check its summary!`,
"selectItem": `After every battle, you are given a choice of 3 random items.\nYou may only pick one.
$These range from consumables, to Pokémon held items, to passive permanent items.
$Most non-consumable item effects will stack in various ways.
$Some items will only show up if they can be used, such as evolution items.
$You can also transfer held items between Pokémon using the transfer option.
$The transfer option will appear in the bottom right once you have obtained a held item.
$You may purchase consumable items with money, and a larger variety will be available the further you get.
$Be sure to buy these before you pick your random item, as it will progress to the next battle once you do.`,
"eggGacha": `From this screen, you can redeem your vouchers for\nPokémon eggs.
$Eggs have to be hatched and get closer to hatching after\nevery battle. Rarer eggs take longer to hatch.
$Hatched Pokémon also won't be added to your party, they will\nbe added to your starters.
$Pokémon hatched from eggs generally have better IVs than\nwild Pokémon.
$Some Pokémon can only even be obtained from eggs.
$There are 3 different machines to pull from with different\nbonuses, so pick the one that suits you best!`,
} as const;

View File

@ -0,0 +1,38 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
export const tutorial: SimpleTranslationEntries = {
"intro": `Welcome to PokéRogue! This is a battle-focused Pokémon fangame with roguelite elements.
$This game is not monetized and we claim no ownership of Pokémon nor of the copyrighted assets used.
$The game is a work in progress, but fully playable.\nFor bug reports, please use the Discord community.
$If the game runs slowly, please ensure 'Hardware Acceleration' is turned on in your browser settings.`,
"accessMenu": `To access the menu, press M or Escape while awaiting input.\nThe menu contains settings and various features.`,
"menu": `From this menu you can access the settings.
$From the settings you can change game speed, window style, and other options.
$There are also various other features here, so be sure to check them all!`,
"starterSelect": `From this screen, you can select your starters.\nThese are your initial party members.
$Each starter has a value. Your party can have up to\n6 members as long as the total does not exceed 10.
$You can also select gender, ability, and form depending on\nthe variants you've caught or hatched.
$The IVs for a species are also the best of every one you've\ncaught or hatched, so try to get lots of the same species!`,
"pokerus": `A daily random 3 selectable starters have a purple border.
$If you see a starter you own with one of these,\ntry adding it to your party. Be sure to check its summary!`,
"selectItem": `After every battle, you are given a choice of 3 random items.\nYou may only pick one.
$These range from consumables, to Pokémon held items, to passive permanent items.
$Most non-consumable item effects will stack in various ways.
$Some items will only show up if they can be used, such as evolution items.
$You can also transfer held items between Pokémon using the transfer option.
$The transfer option will appear in the bottom right once you have obtained a held item.
$You may purchase consumable items with money, and a larger variety will be available the further you get.
$Be sure to buy these before you pick your random item, as it will progress to the next battle once you do.`,
"eggGacha": `From this screen, you can redeem your vouchers for\nPokémon eggs.
$Eggs have to be hatched and get closer to hatching after\nevery battle. Rarer eggs take longer to hatch.
$Hatched Pokémon also won't be added to your party, they will\nbe added to your starters.
$Pokémon hatched from eggs generally have better IVs than\nwild Pokémon.
$Some Pokémon can only even be obtained from eggs.
$There are 3 different machines to pull from with different\nbonuses, so pick the one that suits you best!`,
} as const;

View File

@ -0,0 +1,38 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
export const tutorial: SimpleTranslationEntries = {
"intro": `Welcome to PokéRogue! This is a battle-focused Pokémon fangame with roguelite elements.
$This game is not monetized and we claim no ownership of Pokémon nor of the copyrighted assets used.
$The game is a work in progress, but fully playable.\nFor bug reports, please use the Discord community.
$If the game runs slowly, please ensure 'Hardware Acceleration' is turned on in your browser settings.`,
"accessMenu": `To access the menu, press M or Escape while awaiting input.\nThe menu contains settings and various features.`,
"menu": `From this menu you can access the settings.
$From the settings you can change game speed, window style, and other options.
$There are also various other features here, so be sure to check them all!`,
"starterSelect": `From this screen, you can select your starters.\nThese are your initial party members.
$Each starter has a value. Your party can have up to\n6 members as long as the total does not exceed 10.
$You can also select gender, ability, and form depending on\nthe variants you've caught or hatched.
$The IVs for a species are also the best of every one you've\ncaught or hatched, so try to get lots of the same species!`,
"pokerus": `A daily random 3 selectable starters have a purple border.
$If you see a starter you own with one of these,\ntry adding it to your party. Be sure to check its summary!`,
"selectItem": `After every battle, you are given a choice of 3 random items.\nYou may only pick one.
$These range from consumables, to Pokémon held items, to passive permanent items.
$Most non-consumable item effects will stack in various ways.
$Some items will only show up if they can be used, such as evolution items.
$You can also transfer held items between Pokémon using the transfer option.
$The transfer option will appear in the bottom right once you have obtained a held item.
$You may purchase consumable items with money, and a larger variety will be available the further you get.
$Be sure to buy these before you pick your random item, as it will progress to the next battle once you do.`,
"eggGacha": `From this screen, you can redeem your vouchers for\nPokémon eggs.
$Eggs have to be hatched and get closer to hatching after\nevery battle. Rarer eggs take longer to hatch.
$Hatched Pokémon also won't be added to your party, they will\nbe added to your starters.
$Pokémon hatched from eggs generally have better IVs than\nwild Pokémon.
$Some Pokémon can only even be obtained from eggs.
$There are 3 different machines to pull from with different\nbonuses, so pick the one that suits you best!`,
} as const;

View File

@ -0,0 +1,38 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
export const tutorial: SimpleTranslationEntries = {
"intro": `Welcome to PokéRogue! This is a battle-focused Pokémon fangame with roguelite elements.
$This game is not monetized and we claim no ownership of Pokémon nor of the copyrighted assets used.
$The game is a work in progress, but fully playable.\nFor bug reports, please use the Discord community.
$If the game runs slowly, please ensure 'Hardware Acceleration' is turned on in your browser settings.`,
"accessMenu": `To access the menu, press M or Escape while awaiting input.\nThe menu contains settings and various features.`,
"menu": `From this menu you can access the settings.
$From the settings you can change game speed, window style, and other options.
$There are also various other features here, so be sure to check them all!`,
"starterSelect": `From this screen, you can select your starters.\nThese are your initial party members.
$Each starter has a value. Your party can have up to\n6 members as long as the total does not exceed 10.
$You can also select gender, ability, and form depending on\nthe variants you've caught or hatched.
$The IVs for a species are also the best of every one you've\ncaught or hatched, so try to get lots of the same species!`,
"pokerus": `A daily random 3 selectable starters have a purple border.
$If you see a starter you own with one of these,\ntry adding it to your party. Be sure to check its summary!`,
"selectItem": `After every battle, you are given a choice of 3 random items.\nYou may only pick one.
$These range from consumables, to Pokémon held items, to passive permanent items.
$Most non-consumable item effects will stack in various ways.
$Some items will only show up if they can be used, such as evolution items.
$You can also transfer held items between Pokémon using the transfer option.
$The transfer option will appear in the bottom right once you have obtained a held item.
$You may purchase consumable items with money, and a larger variety will be available the further you get.
$Be sure to buy these before you pick your random item, as it will progress to the next battle once you do.`,
"eggGacha": `From this screen, you can redeem your vouchers for\nPokémon eggs.
$Eggs have to be hatched and get closer to hatching after\nevery battle. Rarer eggs take longer to hatch.
$Hatched Pokémon also won't be added to your party, they will\nbe added to your starters.
$Pokémon hatched from eggs generally have better IVs than\nwild Pokémon.
$Some Pokémon can only even be obtained from eggs.
$There are 3 different machines to pull from with different\nbonuses, so pick the one that suits you best!`,
} as const;

View File

@ -0,0 +1,38 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
export const tutorial: SimpleTranslationEntries = {
"intro": `Welcome to PokéRogue! This is a battle-focused Pokémon fangame with roguelite elements.
$This game is not monetized and we claim no ownership of Pokémon nor of the copyrighted assets used.
$The game is a work in progress, but fully playable.\nFor bug reports, please use the Discord community.
$If the game runs slowly, please ensure 'Hardware Acceleration' is turned on in your browser settings.`,
"accessMenu": `To access the menu, press M or Escape while awaiting input.\nThe menu contains settings and various features.`,
"menu": `From this menu you can access the settings.
$From the settings you can change game speed, window style, and other options.
$There are also various other features here, so be sure to check them all!`,
"starterSelect": `From this screen, you can select your starters.\nThese are your initial party members.
$Each starter has a value. Your party can have up to\n6 members as long as the total does not exceed 10.
$You can also select gender, ability, and form depending on\nthe variants you've caught or hatched.
$The IVs for a species are also the best of every one you've\ncaught or hatched, so try to get lots of the same species!`,
"pokerus": `A daily random 3 selectable starters have a purple border.
$If you see a starter you own with one of these,\ntry adding it to your party. Be sure to check its summary!`,
"selectItem": `After every battle, you are given a choice of 3 random items.\nYou may only pick one.
$These range from consumables, to Pokémon held items, to passive permanent items.
$Most non-consumable item effects will stack in various ways.
$Some items will only show up if they can be used, such as evolution items.
$You can also transfer held items between Pokémon using the transfer option.
$The transfer option will appear in the bottom right once you have obtained a held item.
$You may purchase consumable items with money, and a larger variety will be available the further you get.
$Be sure to buy these before you pick your random item, as it will progress to the next battle once you do.`,
"eggGacha": `From this screen, you can redeem your vouchers for\nPokémon eggs.
$Eggs have to be hatched and get closer to hatching after\nevery battle. Rarer eggs take longer to hatch.
$Hatched Pokémon also won't be added to your party, they will\nbe added to your starters.
$Pokémon hatched from eggs generally have better IVs than\nwild Pokémon.
$Some Pokémon can only even be obtained from eggs.
$There are 3 different machines to pull from with different\nbonuses, so pick the one that suits you best!`,
} as const;

View File

@ -45,6 +45,12 @@ import { commandUiHandler as deCommandUiHandler } from '../locales/de/command-ui
import { fightUiHandler as enFightUiHandler } from '../locales/en/fight-ui-handler';
import { fightUiHandler as frFightUiHandler } from '../locales/fr/fight-ui-handler';
import { tutorial as enTutorial } from '../locales/en/tutorial';
import { tutorial as esTutorial } from '../locales/es/tutorial';
import { tutorial as frTutorial } from '../locales/fr/tutorial';
import { tutorial as itTutorial} from '../locales/it/tutorial';
import { tutorial as deTutorial } from '../locales/de/tutorial';
export interface SimpleTranslationEntries {
[key: string]: string
}
@ -113,6 +119,7 @@ export function initI18n(): void {
pokemonStat: enPokemonStat,
commandUiHandler: enCommandUiHandler,
fightUiHandler: enFightUiHandler,
tutorial: enTutorial,
},
es: {
menu: esMenu,
@ -123,6 +130,7 @@ export function initI18n(): void {
pokemon: esPokemon,
pokemonStat: esPokemonStat,
commandUiHandler: esCommandUiHandler,
tutorial: esTutorial,
},
fr: {
menu: frMenu,
@ -134,11 +142,13 @@ export function initI18n(): void {
pokemonStat: frPokemonStat,
commandUiHandler: frCommandUiHandler,
fightUiHandler: frFightUiHandler,
tutorial: frTutorial,
},
it: {
menu: itMenu,
menuUiHandler: itMenuUiHandler,
pokemonStat: itPokemonStat,
tutorial: itTutorial,
},
de: {
menu: deMenu,
@ -149,6 +159,7 @@ export function initI18n(): void {
pokemon: dePokemon,
pokemonStat: dePokemonStat,
commandUiHandler: deCommandUiHandler,
tutorial: deTutorial,
}
},
});
@ -167,6 +178,7 @@ declare module 'i18next' {
pokemonStat: typeof enPokemonStat;
commandUiHandler: typeof enCommandUiHandler;
fightUiHandler: typeof enFightUiHandler;
tutorial: typeof enTutorial;
};
}
}

View File

@ -1,6 +1,7 @@
import BattleScene from "./battle-scene";
import AwaitableUiHandler from "./ui/awaitable-ui-handler";
import { Mode } from "./ui/ui";
import i18next from './plugins/i18n';
export enum Tutorial {
Intro = "INTRO",
@ -15,63 +16,42 @@ export enum Tutorial {
const tutorialHandlers = {
[Tutorial.Intro]: (scene: BattleScene) => {
return new Promise<void>(resolve => {
scene.ui.showText(`Welcome to PokéRogue! This is a battle-focused Pokémon fangame with roguelite elements.
$This game is not monetized and we claim no ownership of Pokémon nor of the copyrighted assets used.
$The game is a work in progress, but fully playable.\nFor bug reports, please use the Discord community.
$If the game runs slowly, please ensure 'Hardware Acceleration' is turned on in your browser settings.`, null, () => resolve(), null, true);
scene.ui.showText(i18next.t("tutorial:intro"), null, () => resolve(), null, true);
});
},
[Tutorial.Access_Menu]: (scene: BattleScene) => {
return new Promise<void>(resolve => {
if (scene.enableTouchControls)
return resolve();
scene.showFieldOverlay(1000).then(() => scene.ui.showText(`To access the menu, press M or Escape while awaiting input.\nThe menu contains settings and various features.`, null, () => scene.hideFieldOverlay(1000).then(() => resolve()), null, true));
scene.showFieldOverlay(1000).then(() => scene.ui.showText(i18next.t("tutorial:accessMenu"), null, () => scene.hideFieldOverlay(1000).then(() => resolve()), null, true));
});
},
[Tutorial.Menu]: (scene: BattleScene) => {
return new Promise<void>(resolve => {
scene.gameData.saveTutorialFlag(Tutorial.Access_Menu, true);
scene.ui.showText(`From this menu you can access the settings.
$From the settings you can change game speed, window style, and other options.
$There are also various other features here, so be sure to check them all!`, null, () => scene.ui.showText('', null, () => resolve()), null, true);
scene.ui.showText(i18next.t("tutorial:menu"), null, () => scene.ui.showText('', null, () => resolve()), null, true);
});
},
[Tutorial.Starter_Select]: (scene: BattleScene) => {
return new Promise<void>(resolve => {
scene.ui.showText(`From this screen, you can select your starters.\nThese are your initial party members.
$Each starter has a value. Your party can have up to\n6 members as long as the total does not exceed 10.
$You can also select gender, ability, and form depending on\nthe variants you've caught or hatched.
$The IVs for a species are also the best of every one you've\ncaught or hatched, so try to get lots of the same species!`, null, () => scene.ui.showText('', null, () => resolve()), null, true);
scene.ui.showText(i18next.t("tutorial:starterSelect"), null, () => scene.ui.showText('', null, () => resolve()), null, true);
});
},
[Tutorial.Pokerus]: (scene: BattleScene) => {
return new Promise<void>(resolve => {
scene.ui.showText(`A daily random 3 selectable starters have a purple border.
$If you see a starter you own with one of these,\ntry adding it to your party. Be sure to check its summary!`, null, () => scene.ui.showText('', null, () => resolve()), null, true);
scene.ui.showText(i18next.t("tutorial:pokerus"), null, () => scene.ui.showText('', null, () => resolve()), null, true);
});
},
[Tutorial.Select_Item]: (scene: BattleScene) => {
return new Promise<void>(resolve => {
scene.ui.setModeWithoutClear(Mode.MESSAGE).then(() => {
scene.ui.showText(`After every battle, you are given a choice of 3 random items.\nYou may only pick one.
$These range from consumables, to Pokémon held items, to passive permanent items.
$Most non-consumable item effects will stack in various ways.
$Some items will only show up if they can be used, such as evolution items.
$You can also transfer held items between Pokémon using the transfer option.
$The transfer option will appear in the bottom right once you have obtained a held item.
$You may purchase consumable items with money, and a larger variety will be available the further you get.
$Be sure to buy these before you pick your random item, as it will progress to the next battle once you do.`, null, () => scene.ui.showText('', null, () => scene.ui.setModeWithoutClear(Mode.MODIFIER_SELECT).then(() => resolve())), null, true);
scene.ui.showText(i18next.t("tutorial:selectItem"), null, () => scene.ui.showText('', null, () => scene.ui.setModeWithoutClear(Mode.MODIFIER_SELECT).then(() => resolve())), null, true);
});
});
},
[Tutorial.Egg_Gacha]: (scene: BattleScene) => {
return new Promise<void>(resolve => {
scene.ui.showText(`From this screen, you can redeem your vouchers for\nPokémon eggs.
$Eggs have to be hatched and get closer to hatching after\nevery battle. Rarer eggs take longer to hatch.
$Hatched Pokémon also won't be added to your party, they will\nbe added to your starters.
$Pokémon hatched from eggs generally have better IVs than\nwild Pokémon.
$Some Pokémon can only even be obtained from eggs.
$There are 3 different machines to pull from with different\nbonuses, so pick the one that suits you best!`, null, () => scene.ui.showText('', null, () => resolve()), null, true);
scene.ui.showText(i18next.t("tutorial:eggGacha"), null, () => scene.ui.showText('', null, () => resolve()), null, true);
});
},
};