mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2025-08-20 21:33:40 -07:00
Localization support
This commit is contained in:
parent
568639dfc0
commit
1595598941
2 changed files with 395 additions and 12 deletions
|
@ -1026,17 +1026,55 @@ void RandomizerOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, va_l
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item00->itemEntry.modIndex == MOD_NONE) {
|
if (item00->itemEntry.modIndex == MOD_NONE) {
|
||||||
|
std::string message;
|
||||||
|
|
||||||
|
switch (gSaveContext.language) {
|
||||||
|
case LANGUAGE_FRA:
|
||||||
|
message = "Vous obtenez: ";
|
||||||
|
break;
|
||||||
|
case LANGUAGE_GER:
|
||||||
|
message = "Du hast: ";
|
||||||
|
break;
|
||||||
|
case LANGUAGE_ENG:
|
||||||
|
default:
|
||||||
|
message = "You found ";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
Notification::Emit({
|
Notification::Emit({
|
||||||
.itemIcon = GetTextureForItemId(item00->itemEntry.itemId),
|
.itemIcon = GetTextureForItemId(item00->itemEntry.itemId),
|
||||||
.message = "You found ",
|
.message = message,
|
||||||
.suffix = SohUtils::GetItemName(item00->itemEntry.itemId),
|
.suffix = SohUtils::GetItemName(item00->itemEntry.itemId),
|
||||||
});
|
});
|
||||||
} else if (item00->itemEntry.modIndex == MOD_RANDOMIZER) {
|
} else if (item00->itemEntry.modIndex == MOD_RANDOMIZER) {
|
||||||
Notification::Emit({
|
std::string message;
|
||||||
.message = "You found ",
|
std::string itemName;
|
||||||
.suffix = Rando::StaticData::RetrieveItem((RandomizerGet)item00->itemEntry.getItemId)
|
|
||||||
|
switch (gSaveContext.language) {
|
||||||
|
case LANGUAGE_FRA:
|
||||||
|
message = "Vous obtenez: ";
|
||||||
|
itemName = Rando::StaticData::RetrieveItem((RandomizerGet)item00->itemEntry.getItemId)
|
||||||
.GetName()
|
.GetName()
|
||||||
.english,
|
.french;
|
||||||
|
break;
|
||||||
|
case LANGUAGE_GER:
|
||||||
|
message = "Du hast: ";
|
||||||
|
itemName = Rando::StaticData::RetrieveItem((RandomizerGet)item00->itemEntry.getItemId)
|
||||||
|
.GetName()
|
||||||
|
.german;
|
||||||
|
break;
|
||||||
|
case LANGUAGE_ENG:
|
||||||
|
default:
|
||||||
|
message = "You found ";
|
||||||
|
itemName = Rando::StaticData::RetrieveItem((RandomizerGet)item00->itemEntry.getItemId)
|
||||||
|
.GetName()
|
||||||
|
.english;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
Notification::Emit({
|
||||||
|
.message = message,
|
||||||
|
.suffix = itemName,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
359
soh/soh/util.cpp
359
soh/soh/util.cpp
|
@ -7,6 +7,7 @@
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <spdlog/spdlog.h>
|
#include <spdlog/spdlog.h>
|
||||||
#include "Enhancements/randomizer/randomizerTypes.h"
|
#include "Enhancements/randomizer/randomizerTypes.h"
|
||||||
|
#include <variables.h>
|
||||||
|
|
||||||
std::vector<std::string> sceneNames = {
|
std::vector<std::string> sceneNames = {
|
||||||
"Inside the Deku Tree",
|
"Inside the Deku Tree",
|
||||||
|
@ -121,7 +122,7 @@ std::vector<std::string> sceneNames = {
|
||||||
"Treasure Chest Room",
|
"Treasure Chest Room",
|
||||||
};
|
};
|
||||||
|
|
||||||
std::vector<std::string> itemNames = {
|
std::vector<std::string> itemNamesEng = {
|
||||||
"Deku Stick",
|
"Deku Stick",
|
||||||
"Deku Nut",
|
"Deku Nut",
|
||||||
"Bomb",
|
"Bomb",
|
||||||
|
@ -280,7 +281,327 @@ std::vector<std::string> itemNames = {
|
||||||
"Deku Nut Upgrade (40)",
|
"Deku Nut Upgrade (40)",
|
||||||
};
|
};
|
||||||
|
|
||||||
std::vector<std::string> questItemNames = {
|
std::vector<std::string> itemNamesFra = {
|
||||||
|
"Bâton Mojo",
|
||||||
|
"Noix Mojo",
|
||||||
|
"Bombe",
|
||||||
|
"Arc des Fées",
|
||||||
|
"Flèche de Feu",
|
||||||
|
"Feu de Din",
|
||||||
|
"Lance-Pierre des Fées",
|
||||||
|
"Ocarina des Fées",
|
||||||
|
"Ocarina du Temps",
|
||||||
|
"Missile Teigneux",
|
||||||
|
"Grappin",
|
||||||
|
"Super Grappin",
|
||||||
|
"Flèche de Glace",
|
||||||
|
"Vent de Farore",
|
||||||
|
"Boomerang",
|
||||||
|
"Loupe de Vérité",
|
||||||
|
"Haricot Magique",
|
||||||
|
"Marteau des Titans",
|
||||||
|
"Flèche de Lumière",
|
||||||
|
"Amour de Nayru",
|
||||||
|
"Bouteille Vide",
|
||||||
|
"Potion Rouge",
|
||||||
|
"Potion Verte",
|
||||||
|
"Potion Bleue",
|
||||||
|
"Fée en Bouteille",
|
||||||
|
"Poisson",
|
||||||
|
"Lait Lon Lon et Bouteille",
|
||||||
|
"Lettre de Ruto",
|
||||||
|
"Flamme Bleue",
|
||||||
|
"Insectes",
|
||||||
|
"Grand Spectre",
|
||||||
|
"Lait Lon Lon (Demi)",
|
||||||
|
"Spectre",
|
||||||
|
"Oeuf Suspect",
|
||||||
|
"Poule",
|
||||||
|
"Lettre de Zelda",
|
||||||
|
"Masque Pikachu",
|
||||||
|
"Masque de Mort",
|
||||||
|
"Masque du Fantôme",
|
||||||
|
"Capuche de Lapin",
|
||||||
|
"Masque Goron",
|
||||||
|
"Masque Zora",
|
||||||
|
"Masque Gerudo",
|
||||||
|
"Masque de Vérité",
|
||||||
|
"ÉPUISÉ",
|
||||||
|
"Oeuf de Poche",
|
||||||
|
"Cocotte de Poche",
|
||||||
|
"Cocorico Bleu",
|
||||||
|
"Champignon Suspect",
|
||||||
|
"Potion Suspecte",
|
||||||
|
"Scie de Charpentier",
|
||||||
|
"Épée Goron (Cassée)",
|
||||||
|
"Ordonnance",
|
||||||
|
"Grenouille Oeil",
|
||||||
|
"Gouttes pour les Yeux",
|
||||||
|
"Certificat",
|
||||||
|
"Arc des Fées & Flèche de Feu",
|
||||||
|
"Arc des Fées & Flèche de Glace",
|
||||||
|
"Arc des Fées & Flèche de Lumière",
|
||||||
|
"Épée Kokiri",
|
||||||
|
"Épée de Légende",
|
||||||
|
"Lame des Géants & Épée Biggoron",
|
||||||
|
"Bouclier Mojo",
|
||||||
|
"Bouclier Hylien",
|
||||||
|
"Bouclier Miroir",
|
||||||
|
"Tunique Kokiri",
|
||||||
|
"Tunique Goron",
|
||||||
|
"Tunique Zora",
|
||||||
|
"Bottes Kokiri",
|
||||||
|
"Bottes de Plomb",
|
||||||
|
"Bottes des Airs",
|
||||||
|
"Sac de Graines (30)",
|
||||||
|
"Sac de Graines (40)",
|
||||||
|
"Sac de Graines (50)",
|
||||||
|
"Carquois (30)",
|
||||||
|
"Grand Carquois (40)",
|
||||||
|
"Très Grand Carquois (50)",
|
||||||
|
"Sac de Bombes (20)",
|
||||||
|
"Grand Sac de Bombes (30)",
|
||||||
|
"Très Grand Sac de Bombes (40)",
|
||||||
|
"Bracelet Goron",
|
||||||
|
"Gantelets d'Argent",
|
||||||
|
"Gantelets d'Or",
|
||||||
|
"Écaille d'Argent",
|
||||||
|
"Écaille d'Or",
|
||||||
|
"Lame des Géants (Cassée)",
|
||||||
|
"Bourse d'Adulte",
|
||||||
|
"Bourse de Géant",
|
||||||
|
"Graines Mojo (5)",
|
||||||
|
"Canne à Pêche",
|
||||||
|
"Menuet des Bois",
|
||||||
|
"Boléro du Feu",
|
||||||
|
"Sérénade de l'Eau",
|
||||||
|
"Requiem de l'Esprit",
|
||||||
|
"Nocturne de l'Ombre",
|
||||||
|
"Prélude de la Lumière",
|
||||||
|
"Berceuse de Zelda",
|
||||||
|
"Chanson d'Epona",
|
||||||
|
"Chanson de Saria",
|
||||||
|
"Chant du Soleil",
|
||||||
|
"Chant du Temps",
|
||||||
|
"Chant des Tempêtes",
|
||||||
|
"Médaillon de la Forêt",
|
||||||
|
"Médaillon du Feu",
|
||||||
|
"Médaillon de l'Eau",
|
||||||
|
"Médaillon de l'Esprit",
|
||||||
|
"Médaillon de l'Ombre",
|
||||||
|
"Médaillon de la Lumière",
|
||||||
|
"Émeraude Kokiri",
|
||||||
|
"Rubis Goron",
|
||||||
|
"Saphir Zora",
|
||||||
|
"Pierre de Souffrance",
|
||||||
|
"Carte Gerudo",
|
||||||
|
"Symbole de Skulltula d'Or",
|
||||||
|
"Réceptacle de Coeur",
|
||||||
|
"Quart de Coeur",
|
||||||
|
"Clé du Boss",
|
||||||
|
"Boussole",
|
||||||
|
"Carte du Donjon",
|
||||||
|
"Petite Clé",
|
||||||
|
"Petite Magie",
|
||||||
|
"Grande Magie",
|
||||||
|
"Quart de Coeur",
|
||||||
|
"[Retiré]",
|
||||||
|
"[Retiré]",
|
||||||
|
"[Retiré]",
|
||||||
|
"[Retiré]",
|
||||||
|
"[Retiré]",
|
||||||
|
"[Retiré]",
|
||||||
|
"[Retiré]",
|
||||||
|
"Lait Lon Lon",
|
||||||
|
"Coeur",
|
||||||
|
"Rubis Vert",
|
||||||
|
"Rubis Bleu",
|
||||||
|
"Rubis Rouge",
|
||||||
|
"Rubis Pourpre",
|
||||||
|
"Rubis Argenté",
|
||||||
|
"[Retiré]",
|
||||||
|
"Bâtons Mojo (5)",
|
||||||
|
"Bâtons Mojo (10)",
|
||||||
|
"Noix Mojo (5)",
|
||||||
|
"Noix Mojo (10)",
|
||||||
|
"Bombes (5)",
|
||||||
|
"Bombes (10)",
|
||||||
|
"Bombes (20)",
|
||||||
|
"Bombes (30)",
|
||||||
|
"Flèches (Petites)",
|
||||||
|
"Flèches (Moyennes)",
|
||||||
|
"Flèches (Grandes)",
|
||||||
|
"Graines Mojo (30)",
|
||||||
|
"Missile Teigneux (5)",
|
||||||
|
"Missile Teigneux (20)",
|
||||||
|
"Amélioration Bâtons Mojo (20)",
|
||||||
|
"Amélioration Bâtons Mojo (30)",
|
||||||
|
"Amélioration Noix Mojo (30)",
|
||||||
|
"Amélioration Noix Mojo (40)",
|
||||||
|
};
|
||||||
|
|
||||||
|
std::vector<std::string> itemNamesGer = {
|
||||||
|
"Deku-Stab",
|
||||||
|
"Deku-Nuss",
|
||||||
|
"Bombe",
|
||||||
|
"Feenbogen",
|
||||||
|
"Feuerpfeil",
|
||||||
|
"Dins Feuerinferno",
|
||||||
|
"Feen-Schleuder",
|
||||||
|
"Feen-Okarina",
|
||||||
|
"Okarina der Zeit",
|
||||||
|
"Krabbelmine",
|
||||||
|
"Enterhaken",
|
||||||
|
"Enterhaken (Lang)",
|
||||||
|
"Eispfeil",
|
||||||
|
"Farores Donnersturm",
|
||||||
|
"Bumerang",
|
||||||
|
"Auge der Wahrheit",
|
||||||
|
"Zauberbohne",
|
||||||
|
"Megatonhammer",
|
||||||
|
"Lichtpfeil",
|
||||||
|
"Nayrus Umarmung",
|
||||||
|
"Leere Flasche",
|
||||||
|
"Roter Trank",
|
||||||
|
"Grüner Trank",
|
||||||
|
"Blauer Trank",
|
||||||
|
"Fee in Flasche",
|
||||||
|
"Fisch",
|
||||||
|
"Lon Lon Milch & Flasche",
|
||||||
|
"Brief von Ruto",
|
||||||
|
"Blaue Flamme",
|
||||||
|
"Insekten",
|
||||||
|
"Großer Irrgeist",
|
||||||
|
"Lon Lon Milch (Halb)",
|
||||||
|
"Irrgeist",
|
||||||
|
"Seltsames Ei",
|
||||||
|
"Huhn",
|
||||||
|
"Brief von Zelda",
|
||||||
|
"Fuchsmaske",
|
||||||
|
"Totenkopfmaske",
|
||||||
|
"Schädelmaske",
|
||||||
|
"Hasenohren",
|
||||||
|
"Goron-Maske",
|
||||||
|
"Zora-Maske",
|
||||||
|
"Gerudo-Maske",
|
||||||
|
"Maske der Wahrheit",
|
||||||
|
"AUSVERKAUFT",
|
||||||
|
"Taschenei",
|
||||||
|
"Taschenhuhn",
|
||||||
|
"Cojiro",
|
||||||
|
"Seltsamer Pilz",
|
||||||
|
"Seltsamer Trank",
|
||||||
|
"Säge des Schmugglers",
|
||||||
|
"Goronen-Schwert (Kaputt)",
|
||||||
|
"Rezept",
|
||||||
|
"Augenfrosch",
|
||||||
|
"Augentropfen",
|
||||||
|
"Abholschein",
|
||||||
|
"Feenbogen & Feuerpfeil",
|
||||||
|
"Feenbogen & Eispfeil",
|
||||||
|
"Feenbogen & Lichtpfeil",
|
||||||
|
"Kokiri-Schwert",
|
||||||
|
"Master-Schwert",
|
||||||
|
"Riesenmesser & Biggorons Schwert",
|
||||||
|
"Deku-Schild",
|
||||||
|
"Hylia-Schild",
|
||||||
|
"Spiegelschild",
|
||||||
|
"Kokiri-Gewand",
|
||||||
|
"Goronen-Gewand",
|
||||||
|
"Zora-Gewand",
|
||||||
|
"Kokiri-Stiefel",
|
||||||
|
"Eisenstiefel",
|
||||||
|
"Schwebestiefel",
|
||||||
|
"Kugelbeutel (30)",
|
||||||
|
"Kugelbeutel (40)",
|
||||||
|
"Kugelbeutel (50)",
|
||||||
|
"Köcher (30)",
|
||||||
|
"Großer Köcher (40)",
|
||||||
|
"Riesenköcher (50)",
|
||||||
|
"Bombentasche (20)",
|
||||||
|
"Große Bombentasche (30)",
|
||||||
|
"Riesen-Bombentasche (40)",
|
||||||
|
"Goronen-Armband",
|
||||||
|
"Silberhandschuhe",
|
||||||
|
"Goldhandschuhe",
|
||||||
|
"Silberschuppe",
|
||||||
|
"Goldschuppe",
|
||||||
|
"Riesenmesser (Kaputt)",
|
||||||
|
"Erwachsenenbörse",
|
||||||
|
"Riesenbörse",
|
||||||
|
"Deku-Samen (5)",
|
||||||
|
"Angel",
|
||||||
|
"Menuett des Waldes",
|
||||||
|
"Bolero des Feuers",
|
||||||
|
"Serenade des Wassers",
|
||||||
|
"Requiem der Geister",
|
||||||
|
"Nocturne der Schatten",
|
||||||
|
"Präludium des Lichts",
|
||||||
|
"Zeldas Wiegenlied",
|
||||||
|
"Eponas Lied",
|
||||||
|
"Sarias Lied",
|
||||||
|
"Sonnenlied",
|
||||||
|
"Hymne der Zeit",
|
||||||
|
"Sturm-Lied",
|
||||||
|
"Amulett des Waldes",
|
||||||
|
"Amulett des Feuers",
|
||||||
|
"Amulett des Wassers",
|
||||||
|
"Amulett der Geister",
|
||||||
|
"Amulett der Schatten",
|
||||||
|
"Amulett des Lichts",
|
||||||
|
"Kokiri-Smaragd",
|
||||||
|
"Goronen-Rubin",
|
||||||
|
"Zora-Saphir",
|
||||||
|
"Stein des Wissens",
|
||||||
|
"Gerudo-Pass",
|
||||||
|
"Goldene Skulltula-Marke",
|
||||||
|
"Herzcontainer",
|
||||||
|
"Herzteil",
|
||||||
|
"Boss-Schlüssel",
|
||||||
|
"Kompass",
|
||||||
|
"Dungeon-Karte",
|
||||||
|
"Kleiner Schlüssel",
|
||||||
|
"Kleine Magie",
|
||||||
|
"Große Magie",
|
||||||
|
"Herzteil",
|
||||||
|
"[Entfernt]",
|
||||||
|
"[Entfernt]",
|
||||||
|
"[Entfernt]",
|
||||||
|
"[Entfernt]",
|
||||||
|
"[Entfernt]",
|
||||||
|
"[Entfernt]",
|
||||||
|
"[Entfernt]",
|
||||||
|
"Lon Lon Milch",
|
||||||
|
"Herz",
|
||||||
|
"Grüner Rubin",
|
||||||
|
"Blauer Rubin",
|
||||||
|
"Roter Rubin",
|
||||||
|
"Violetter Rubin",
|
||||||
|
"Silberner Rubin",
|
||||||
|
"[Entfernt]",
|
||||||
|
"Deku-Stäbe (5)",
|
||||||
|
"Deku-Stäbe (10)",
|
||||||
|
"Deku-Nüsse (5)",
|
||||||
|
"Deku-Nüsse (10)",
|
||||||
|
"Bomben (5)",
|
||||||
|
"Bomben (10)",
|
||||||
|
"Bomben (20)",
|
||||||
|
"Bomben (30)",
|
||||||
|
"Pfeile (Klein)",
|
||||||
|
"Pfeile (Mittel)",
|
||||||
|
"Pfeile (Groß)",
|
||||||
|
"Deku-Samen (30)",
|
||||||
|
"Krabbelmine (5)",
|
||||||
|
"Krabbelmine (20)",
|
||||||
|
"Deku-Stab-Erweiterung (20)",
|
||||||
|
"Deku-Stab-Erweiterung (30)",
|
||||||
|
"Deku-Nuss-Erweiterung (30)",
|
||||||
|
"Deku-Nuss-Erweiterung (40)",
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
std::vector<std::string> questItemNamesEng = {
|
||||||
"Forest Medallion", "Fire Medallion", "Water Medallion", "Spirit Medallion", "Shadow Medallion",
|
"Forest Medallion", "Fire Medallion", "Water Medallion", "Spirit Medallion", "Shadow Medallion",
|
||||||
"Light Medallion", "Minuet of Forest", "Bolero of Fire", "Serenade of Water", "Requiem of Spirit",
|
"Light Medallion", "Minuet of Forest", "Bolero of Fire", "Serenade of Water", "Requiem of Spirit",
|
||||||
"Nocturne of Shadow", "Prelude of Light", "Zelda's Lullaby", "Epona's Song", "Saria's Song",
|
"Nocturne of Shadow", "Prelude of Light", "Zelda's Lullaby", "Epona's Song", "Saria's Song",
|
||||||
|
@ -288,6 +609,16 @@ std::vector<std::string> questItemNames = {
|
||||||
"Zora's Sapphire", "Stone of Agony", "Gerudo's Card", "Gold Skulltula Token",
|
"Zora's Sapphire", "Stone of Agony", "Gerudo's Card", "Gold Skulltula Token",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
std::vector<std::string> questItemNamesFra = {
|
||||||
|
"Médaillon de la Forêt", "Médaillon du Feu", "Médaillon de l'Eau", "Médaillon de l'Esprit",
|
||||||
|
"Médaillon de l'Ombre", "Médaillon de la Lumière", "Menuet des Bois", "Boléro du Feu",
|
||||||
|
"Sérénade de l'Eau", "Requiem de l'Esprit", "Nocturne de l'Ombre", "Prélude de la Lumière",
|
||||||
|
"Berceuse de Zelda", "Chanson d'Epona", "Chanson de Saria", "Chant du Soleil",
|
||||||
|
"Chant du Temps", "Chant des Tempêtes", "Émeraude Kokiri", "Rubis Goron",
|
||||||
|
"Saphir Zora", "Pierre de Souffrance", "Carte Gerudo", "Symbole de Skulltula d'Or",
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
std::array<std::string, RA_MAX> rcareaPrefixes = {
|
std::array<std::string, RA_MAX> rcareaPrefixes = {
|
||||||
"KF",
|
"KF",
|
||||||
"LW",
|
"LW",
|
||||||
|
@ -334,23 +665,37 @@ const std::string& SohUtils::GetSceneName(int32_t scene) {
|
||||||
}
|
}
|
||||||
|
|
||||||
const std::string& SohUtils::GetItemName(int32_t item) {
|
const std::string& SohUtils::GetItemName(int32_t item) {
|
||||||
if (item > itemNames.size()) {
|
const std::vector<std::string>* currentItemNames = nullptr;
|
||||||
|
|
||||||
|
switch (gSaveContext.language) {
|
||||||
|
case LANGUAGE_FRA:
|
||||||
|
currentItemNames = &itemNamesFra;
|
||||||
|
break;
|
||||||
|
case LANGUAGE_GER:
|
||||||
|
currentItemNames = &itemNamesGer;
|
||||||
|
break;
|
||||||
|
case LANGUAGE_ENG:
|
||||||
|
default:
|
||||||
|
currentItemNames = &itemNamesEng;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (item >= currentItemNames->size()) {
|
||||||
SPDLOG_WARN("Passed invalid item id to SohUtils::GetItemName: ({})", item);
|
SPDLOG_WARN("Passed invalid item id to SohUtils::GetItemName: ({})", item);
|
||||||
assert(false);
|
assert(false);
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
return (*currentItemNames)[item];
|
||||||
return itemNames[item];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const std::string& SohUtils::GetQuestItemName(int32_t item) {
|
const std::string& SohUtils::GetQuestItemName(int32_t item) {
|
||||||
if (item > questItemNames.size()) {
|
if (item > questItemNamesEng.size()) {
|
||||||
SPDLOG_WARN("Passed invalid quest item id to SohUtils::GetQuestItemName: ({})", item);
|
SPDLOG_WARN("Passed invalid quest item id to SohUtils::GetQuestItemName: ({})", item);
|
||||||
assert(false);
|
assert(false);
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
return questItemNames[item];
|
return questItemNamesEng[item];
|
||||||
}
|
}
|
||||||
|
|
||||||
const std::string& SohUtils::GetRandomizerCheckAreaPrefix(int32_t rcarea) {
|
const std::string& SohUtils::GetRandomizerCheckAreaPrefix(int32_t rcarea) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue