From ba3999fe4a88323403338d77acb97c8fdda62beb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elouan=20App=C3=A9r=C3=A9?= Date: Mon, 31 Aug 2015 22:21:14 +0200 Subject: [PATCH] Release commit --- CMakeLists.txt | 15 +- LibPkmGC/CMakeLists.txt | 22 +- LibPkmGC/include/LibPkmGC/Base/Pokemon.h | 5 + LibPkmGC/src/LibPkmGC/Base/Pokemon.cpp | 21 ++ LibPkmGC/src/LibPkmGC/GC/Common/Pokemon.cpp | 11 +- PkmGCSaveEditor/CMakeLists.txt | 4 +- PkmGCSaveEditor/README.md | 4 - PkmGCSaveEditor/src/Core/ItemPocketEditor.cpp | 2 +- PkmGCSaveEditor/src/GCUIs/PokemonUI.cpp | 21 +- PkmGCSaveEditor/src/GCUIs/PokemonUI.h | 4 +- PkmGCSaveEditor/src/GCUIs/StrategyMemoUI.cpp | 2 +- PkmGCSaveEditor/src/MainWindow.cpp | 9 +- .../translations/PkmGCSaveEditor_en.ts | 192 +++++++++--------- .../translations/PkmGCSaveEditor_fr.ts | 192 +++++++++--------- 14 files changed, 271 insertions(+), 233 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2c053ea..ebfd145 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,19 +5,22 @@ option(BUILD_PKMGCSAVEEDITOR "Build PkmGCSaveEditor" ON) message("BUILD_PKMGCSAVEEDITOR:\t${BUILD_PKMGCSAVEEDITOR}") set(CMAKE_INSTALL_PREFIX installdir) +set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP ON) +include(InstallRequiredSystemLibraries) +install(FILES ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS} DESTINATION Release/bin CONFIGURATIONS Release RelWithDebInfo MinSizeRel COMPONENT Runtime) add_subdirectory(LibPkmGC) add_definitions(${LIBPKMGC_DEFINITIONS}) if(BUILD_PKMGCSAVEEDITOR) add_subdirectory(PkmGCSaveEditor) - install(FILES ${LIBPKMGC_RUNTIME} DESTINATION Debug/bin CONFIGURATIONS Debug) - install(FILES ${LIBPKMGC_RUNTIME} DESTINATION Release/bin CONFIGURATIONS Release RelWithDebInfo MinSizeRel) + install(FILES ${LIBPKMGC_RUNTIME} DESTINATION Debug/bin CONFIGURATIONS Debug COMPONENT Runtime) + install(FILES ${LIBPKMGC_RUNTIME} DESTINATION Release/bin CONFIGURATIONS Release RelWithDebInfo MinSizeRel COMPONENT Runtime) - install(FILES ${QT5_RUNTIME_DEBUG} DESTINATION Debug/bin CONFIGURATIONS Debug) - install(FILES ${QT5_RUNTIME_RELEASE} DESTINATION Release/bin CONFIGURATIONS Release RelWithDebInfo MinSizeRel) + install(FILES ${QT5_RUNTIME_DEBUG} DESTINATION Debug/bin CONFIGURATIONS Debug COMPONENT Runtime) + install(FILES ${QT5_RUNTIME_RELEASE} DESTINATION Release/bin CONFIGURATIONS Release RelWithDebInfo MinSizeRel COMPONENT Runtime) - install(FILES ${QT5_TRANSLATION_QM} DESTINATION Debug/bin/languages CONFIGURATIONS Debug) - install(FILES ${QT5_TRANSLATION_QM} DESTINATION Release/bin/languages CONFIGURATIONS Release RelWithDebInfo MinSizeRel) + install(FILES ${QT5_TRANSLATION_QM} DESTINATION Debug/bin/languages CONFIGURATIONS Debug COMPONENT Translations OPTIONAL) + install(FILES ${QT5_TRANSLATION_QM} DESTINATION Release/bin/languages CONFIGURATIONS Release RelWithDebInfo MinSizeRel COMPONENT Translations OPTIONAL) endif() diff --git a/LibPkmGC/CMakeLists.txt b/LibPkmGC/CMakeLists.txt index 497f2a7..8157102 100644 --- a/LibPkmGC/CMakeLists.txt +++ b/LibPkmGC/CMakeLists.txt @@ -28,18 +28,24 @@ if(LIBPKMGC_DYN_LIB) add_definitions(-DLIBPKMGC_DYN_LIB) add_library(LibPkmGC SHARED ${all_files}) set(LIBPKMGC_RUNTIME $ CACHE INTERNAL "Runtime dependencies for projects linking against this library" FORCE) - install(FILES $ $ DESTINATION Release/lib/shared CONFIGURATIONS Release RelWithDebInfo MinSizeRel) - install(FILES $ $ DESTINATION Debug/lib/shared CONFIGURATIONS Debug) - install(FILES "README.md" "LICENSE" DESTINATION Debug/lib/shared CONFIGURATIONS Debug) - install(FILES "README.md" "LICENSE" DESTINATION Release/lib/shared CONFIGURATIONS Release RelWithDebInfo MinSizeRel) + install(FILES $ $ DESTINATION Release/lib/shared CONFIGURATIONS Release RelWithDebInfo MinSizeRel COMPONENT Libraries) + install(FILES $ $ DESTINATION Debug/lib/shared CONFIGURATIONS Debug COMPONENT Libraries) + install(FILES "README.md" "LICENSE" DESTINATION Debug/lib/shared CONFIGURATIONS Debug COMPONENT Libraries) + install(FILES "README.md" "LICENSE" DESTINATION Release/lib/shared CONFIGURATIONS Release RelWithDebInfo MinSizeRel COMPONENT Libraries) else() set(LIBPKMGC_DEFINITIONS -DLIBPKMGC_STATIC_LIB CACHE INTERNAL "LibPkmGC's definitions" FORCE) add_definitions(-DLIBPKMGC_STATIC_LIB) add_library(LibPkmGC STATIC ${all_files}) - install(FILES $ DESTINATION Release/lib/static CONFIGURATIONS Release RelWithDebInfo MinSizeRel) - install(FILES $ DESTINATION Debug/lib/static CONFIGURATIONS Debug) - install(FILES "README.md" "LICENSE" DESTINATION Debug/lib/static CONFIGURATIONS Debug) - install(FILES "README.md" "LICENSE" DESTINATION Release/lib/static CONFIGURATIONS Release RelWithDebInfo MinSizeRel) + install(FILES $ DESTINATION Release/lib/static CONFIGURATIONS Release RelWithDebInfo MinSizeRel COMPONENT Libraries) + install(FILES $ DESTINATION Debug/lib/static CONFIGURATIONS Debug COMPONENT Libraries) + install(FILES "README.md" "LICENSE" DESTINATION Debug/lib/static CONFIGURATIONS Debug COMPONENT Libraries) + install(FILES "README.md" "LICENSE" DESTINATION Release/lib/static CONFIGURATIONS Release RelWithDebInfo MinSizeRel COMPONENT Libraries) endif() +install(DIRECTORY "include/LibPkmGC" DESTINATION "Release/include" CONFIGURATIONS Release RelWithDebInfo MinSizeRel COMPONENT Headers) +install(DIRECTORY "include/LibPkmGC" DESTINATION "Debug/include" CONFIGURATIONS Release RelWithDebInfo MinSizeRel COMPONENT Headers) + +install(FILES "README.md" "LICENSE" DESTINATION "Debug/include" CONFIGURATIONS Debug COMPONENT Headers) +install(FILES "README.md" "LICENSE" DESTINATION "Release/include" CONFIGURATIONS Release RelWithDebInfo MinSizeRel COMPONENT Headers) + set_target_properties(LibPkmGC PROPERTIES PREFIX "" IMPORT_PREFIX "") \ No newline at end of file diff --git a/LibPkmGC/include/LibPkmGC/Base/Pokemon.h b/LibPkmGC/include/LibPkmGC/Base/Pokemon.h index 276c6b5..a969934 100644 --- a/LibPkmGC/include/LibPkmGC/Base/Pokemon.h +++ b/LibPkmGC/include/LibPkmGC/Base/Pokemon.h @@ -48,6 +48,11 @@ public: static u8 calculateLevelFromExp(PokemonSpeciesIndex species, u32 experience); static u32 calculateExpFromLevel(PokemonSpeciesIndex species, u8 level); + static u32 fixExperienceProportionally(PokemonSpeciesIndex oldSpecies, u32 oldExp, PokemonSpeciesIndex newSpecies); + + u32 fixExperienceProportionally(PokemonSpeciesIndex newSpecies); + PokemonSpeciesData getThisSpeciesData(void) const; + const u32* getExpTable(void) const; void calculateStats(u16 outStats[6]) const; u8 calculateLevelFromExp(void) const; u32 calculateExpFromLevel(u8 lvl) const; diff --git a/LibPkmGC/src/LibPkmGC/Base/Pokemon.cpp b/LibPkmGC/src/LibPkmGC/Base/Pokemon.cpp index 9d57112..5019c80 100644 --- a/LibPkmGC/src/LibPkmGC/Base/Pokemon.cpp +++ b/LibPkmGC/src/LibPkmGC/Base/Pokemon.cpp @@ -60,6 +60,15 @@ u32 Pokemon::calculateExpFromLevel(PokemonSpeciesIndex species, u8 level) { return expTable[level]; } +u32 Pokemon::fixExperienceProportionally(PokemonSpeciesIndex oldSpecies, u32 oldExp, PokemonSpeciesIndex newSpecies) { + // Rule of 3 + u8 l = calculateLevelFromExp(oldSpecies, oldExp); + const u32 *oldT = LibPkmGC::getSpeciesExpTable(oldSpecies), *newT = LibPkmGC::getSpeciesExpTable(newSpecies); + if (l == 100) return newT[100]; + return newT[l] + (newT[l + 1] - newT[l])*(oldExp - oldT[l]) / (oldT[l + 1] - oldT[l]); + +} + Pokemon::Pokemon(size_t inSize, const u8* inData) : DataStruct(inSize, inData) { } @@ -80,6 +89,18 @@ u32 Pokemon::calculateExpFromLevel(u8 lvl) const { void Pokemon::updateExpFromLevel(u8 lvl) { experience = calculateExpFromLevel(lvl); } +u32 Pokemon::fixExperienceProportionally(PokemonSpeciesIndex newSpecies){ + return fixExperienceProportionally(species, experience, newSpecies); +} + +PokemonSpeciesData Pokemon::getThisSpeciesData(void) const { + return LibPkmGC::getSpeciesData(species); +} + +const u32 * Pokemon::getExpTable(void) const { + return LibPkmGC::getSpeciesExpTable(species); +} + void Pokemon::calculateStats(u16 outStats[6]) const { calculateStats(species, (PokemonNatureIndex)(PID % 25), calculateLevelFromExp(), IVs, EVs, outStats); } diff --git a/LibPkmGC/src/LibPkmGC/GC/Common/Pokemon.cpp b/LibPkmGC/src/LibPkmGC/GC/Common/Pokemon.cpp index 53d670a..f562c12 100644 --- a/LibPkmGC/src/LibPkmGC/GC/Common/Pokemon.cpp +++ b/LibPkmGC/src/LibPkmGC/GC/Common/Pokemon.cpp @@ -42,7 +42,7 @@ void Pokemon::swap(Pokemon& other) { PokemonAbilityIndex Pokemon::getAbility(void) const { - const PokemonSpeciesData dt = getSpeciesData(species); + const PokemonSpeciesData dt = getThisSpeciesData(); return (pkmFlags[LIBPKMGC_GC_SECOND_ABILITY_FLAG]) ? dt.possibleAbilities[1] : dt.possibleAbilities[0]; } @@ -55,15 +55,6 @@ Pokemon& Pokemon::operator=(Pokemon const& other) { return *this; } -/* -bool Pokemon::hasSecondAbility(void) const { - return isSecondAbilityDefined() && pkmFlags[LIBPKMGC_GC_SECOND_ABILITY_FLAG]; -} - -void Pokemon::setSpecialAbilityStatus(bool status) { - pkmFlags[LIBPKMGC_GC_SECOND_ABILITY_FLAG] = status; -}*/ - void Pokemon::swap(Base::Pokemon & other) { return swap((Pokemon&)other); } diff --git a/PkmGCSaveEditor/CMakeLists.txt b/PkmGCSaveEditor/CMakeLists.txt index 9554518..2a0d678 100644 --- a/PkmGCSaveEditor/CMakeLists.txt +++ b/PkmGCSaveEditor/CMakeLists.txt @@ -46,8 +46,8 @@ if(Qt5LinguistTools_FOUND) add_custom_target(PkmGCSaveEditor_translations_update DEPENDS ${TRANSLATION_MESSAGES}) add_custom_target(PkmGCSaveEditor_translations DEPENDS ${TRANSLATION_QM}) - install(FILES ${TRANSLATION_QM} DESTINATION Debug/bin/languages CONFIGURATIONS Debug) - install(FILES ${TRANSLATION_QM} DESTINATION Release/bin/languages CONFIGURATIONS Release RelWithDebInfo MinSizeRel) + install(FILES ${TRANSLATION_QM} DESTINATION Debug/bin/languages CONFIGURATIONS Debug COMPONENT Translations OPTIONAL) + install(FILES ${TRANSLATION_QM} DESTINATION Release/bin/languages CONFIGURATIONS Release RelWithDebInfo MinSizeRel COMPONENT Translations OPTIONAL) else(Qt5LinguistTools_FOUND) message("Qt5LinguistTools was NOT found. The translation files will not be able to be updated.") endif(Qt5LinguistTools_FOUND) diff --git a/PkmGCSaveEditor/README.md b/PkmGCSaveEditor/README.md index 3e58319..8310d7c 100644 --- a/PkmGCSaveEditor/README.md +++ b/PkmGCSaveEditor/README.md @@ -17,10 +17,6 @@ Editing your Mailbox and your Battle Mode data. * Interface: English, French * Dumped names (thanks [Tiddlywinks](http://projectpokemon.org/forums/showthread.php?46253-Stars-Pokemon-colosseum-and-XD-hacking-tutorial-part-2-Text-editing&p=205271&viewfull=1#post205271)!): English, French, German, Spanish, Italian, Japanese -##Download links: -* PkmGCSaveEditor v1.0.0 Win32 binaries: -* Source: https://github.com/TuxSH/PkmGCTools . You will need CMake ≥ 2.8.12, Qt ≥ 5.2, Boost ≥ 1.55 to compile this project. - ##Special thanks to: Ralf (for his "offset tables"), StarsMMD, Tiddlywinks. diff --git a/PkmGCSaveEditor/src/Core/ItemPocketEditor.cpp b/PkmGCSaveEditor/src/Core/ItemPocketEditor.cpp index a8b15c9..0afbad3 100644 --- a/PkmGCSaveEditor/src/Core/ItemPocketEditor.cpp +++ b/PkmGCSaveEditor/src/Core/ItemPocketEditor.cpp @@ -81,7 +81,7 @@ void ItemPocketEditor::saveChanges(void) { } LibPkmGC::Item ItemPocketEditor::editedItem(void) const{ - Item item_ = { itemNameFld->currentItemIndex(), quantityFld->value() }; + Item item_ = { itemNameFld->currentItemIndex(), (u16) quantityFld->value() }; return item_; } diff --git a/PkmGCSaveEditor/src/GCUIs/PokemonUI.cpp b/PkmGCSaveEditor/src/GCUIs/PokemonUI.cpp index 15ed70b..e595b27 100644 --- a/PkmGCSaveEditor/src/GCUIs/PokemonUI.cpp +++ b/PkmGCSaveEditor/src/GCUIs/PokemonUI.cpp @@ -101,6 +101,7 @@ void PokemonUI::initWidget(void){ LanguageIndex lg = generateDumpedNamesLanguage(); + oldSpecies = (PokemonSpeciesIndex)-1; // invalid mainLayout = new QVBoxLayout; tabs = new QTabWidget; @@ -455,6 +456,7 @@ void PokemonUI::parseData(void){ abilityFld->setCurrentIndex((pkm->pkmFlags[LIBPKMGC_GC_SECOND_ABILITY_FLAG]) ? 1 : 0); + oldSpecies = pkm->species; } void PokemonUI::saveChanges(void){ @@ -649,12 +651,18 @@ void PokemonUI::updateAbilityList(void) { } -void PokemonUI::updateExperienceFromLevel(void) { +void PokemonUI::updateExperienceFromLevel(bool proportionally) { + proportionally = false; // not working a.t.m if (syncLevelAndExpFldsCheckBox->isChecked()) { - u8 lvl = Pokemon::calculateLevelFromExp(nameIndexToPkmSpeciesIndex((size_t)speciesFld->currentIndex()), (u32)experienceFld->value()); - if (lvl == levelFld->unsignedValue()) return; - u32 experience = Pokemon::calculateExpFromLevel(nameIndexToPkmSpeciesIndex((size_t)speciesFld->currentIndex()), (u8)levelFld->value()); - + u32 experience = 0; + if (!proportionally) { + u8 lvl = Base::Pokemon::calculateLevelFromExp(nameIndexToPkmSpeciesIndex((size_t)speciesFld->currentIndex()), (u32)experienceFld->value()); + if (lvl == levelFld->unsignedValue()) return; + experience = Base::Pokemon::calculateExpFromLevel(nameIndexToPkmSpeciesIndex((size_t)speciesFld->currentIndex()), (u8)levelFld->value()); + } + else { + experience = Base::Pokemon::fixExperienceProportionally(oldSpecies, experienceFld->unsignedValue(), nameIndexToPkmSpeciesIndex(speciesFld->currentIndex())); + } experienceFld->disconnect(SIGNAL(valueChanged(int))); experienceFld->setValue((int)experience); connect(experienceFld, SIGNAL(valueChanged(int)), this, SLOT(updateLevelFromExperience())); @@ -677,7 +685,8 @@ void PokemonUI::speciesChangeHandler(void) { updateAbilityList(); u32 maxExperience = Pokemon::calculateExpFromLevel(nameIndexToPkmSpeciesIndex((size_t)speciesFld->currentIndex()), 100); experienceFld->setUnsignedRange(0, maxExperience); - updateExperienceFromLevel(); + updateExperienceFromLevel(oldSpecies != (PokemonSpeciesIndex)-1); + if (oldSpecies != (PokemonSpeciesIndex)-1) oldSpecies = nameIndexToPkmSpeciesIndex(speciesFld->currentIndex()); } void PokemonUI::PIDChangeHandler(void) { diff --git a/PkmGCSaveEditor/src/GCUIs/PokemonUI.h b/PkmGCSaveEditor/src/GCUIs/PokemonUI.h index 4a208bb..cff17cc 100644 --- a/PkmGCSaveEditor/src/GCUIs/PokemonUI.h +++ b/PkmGCSaveEditor/src/GCUIs/PokemonUI.h @@ -188,12 +188,12 @@ private: QButtonGroup *specialRibbonsFldGroup; QCheckBox *specialRibbonsFlds[12]; - + LibPkmGC::PokemonSpeciesIndex oldSpecies; public slots: void updateMainStats(void); void updatePkmAttributes(void); void updateAbilityList(void); - void updateExperienceFromLevel(void); + void updateExperienceFromLevel(bool proportionally = false); void updateLevelFromExperience(void); void speciesChangeHandler(void); void PIDChangeHandler(void); diff --git a/PkmGCSaveEditor/src/GCUIs/StrategyMemoUI.cpp b/PkmGCSaveEditor/src/GCUIs/StrategyMemoUI.cpp index 73d2c8f..32b7fb4 100644 --- a/PkmGCSaveEditor/src/GCUIs/StrategyMemoUI.cpp +++ b/PkmGCSaveEditor/src/GCUIs/StrategyMemoUI.cpp @@ -99,7 +99,7 @@ void StrategyMemoUI::setCurrentEntry(int index) { void StrategyMemoUI::updateEntryNameAndNbEntries(int index, size_t nameIndex) { updateEntryName(index, nameIndex); strategyMemo->entries[index]->species = nameIndexToPkmSpeciesIndex(nameIndex); - strategyMemo->nbEntries = strategyMemo->recount(); + strategyMemo->nbEntries = (u16) strategyMemo->recount(); nbEntriesFld->setUnsignedValue(strategyMemo->nbEntries); } diff --git a/PkmGCSaveEditor/src/MainWindow.cpp b/PkmGCSaveEditor/src/MainWindow.cpp index d1e8204..0640d6d 100644 --- a/PkmGCSaveEditor/src/MainWindow.cpp +++ b/PkmGCSaveEditor/src/MainWindow.cpp @@ -113,6 +113,9 @@ MainWindow::MainWindow() : QMainWindow(), centralWidget(new MWCentralWidget) { dumpedNamesLanguageChanged(dumpedNamesLangGroup->actions()[(size_t)dumpedNamesLanguage]); updateStatusBar(); + + saveFileAction->setDisabled(true); + saveFileAsAction->setDisabled(true); } void MainWindow::createDumpedNamesLanguageMenu(void) { @@ -367,9 +370,13 @@ void MainWindow::openSaveFile(void) { if (currentSaveSlot == NULL) { currentSaveFileName = ""; this->setWindowTitle("PkmGCSaveEditor"); + saveFileAction->setDisabled(true); + saveFileAsAction->setDisabled(true); } else { this->setWindowTitle("PkmGCSaveEditor - " + currentSaveFileName); + saveFileAction->setDisabled(false); + saveFileAsAction->setDisabled(false); } centralWidget->currentSaveSlotChangeHandler(); @@ -420,7 +427,7 @@ void MainWindow::saveSaveFileAs(void) { QString previousFileName = currentSaveFileName; QString filters = ((saveFile->hasGCIData) ? gcifilter + ";;" : "") + rawfilter + ";;" + tr("All files (*)"); - currentSaveFileName = QFileDialog::getSaveFileName(this, tr("Save save file"), lastPkmDirectory, filters); + currentSaveFileName = QFileDialog::getSaveFileName(this, tr("Save save file"), lastSaveDirectory, filters); if (!saveSaveFile()) { currentSaveFileName = previousFileName; diff --git a/PkmGCSaveEditor/translations/PkmGCSaveEditor_en.ts b/PkmGCSaveEditor/translations/PkmGCSaveEditor_en.ts index 4bc1960..fa71d4d 100644 --- a/PkmGCSaveEditor/translations/PkmGCSaveEditor_en.ts +++ b/PkmGCSaveEditor/translations/PkmGCSaveEditor_en.ts @@ -492,264 +492,264 @@ World - + Reset Reset - + Egg Egg - + Second ability Second ability - + Invalid Pokémon Invalid Pokémon - + Not tradable in-game Not tradable in-game - + Unknown Unknown - + Caught Caught - + Species Species - + Name or nickname Name or nickname - + PID PID - + Attributes Attributes - + Ability Ability - + Experience and level Experience and level - + Held item Held item - + Happiness Happiness - + Pokérus Pokérus - + Status Status - + Flags Flags - + Markings Markings - + Core information Core information - + Original trainer Original trainer - + Game version Game version - + Copy info from save Copy info from save - + Generate shiny IDs Generate shiny IDs - + Ball caught with Ball caught with - + Location caught Location caught - + IV IV - + EV EV - + Stat Stat - + Current HP Current HP - + Update stats automatically Update stats automatically - + Luster Luster - + Main stats Main stats - + Contest stats Contest stats - + Contest ribbons Contest ribbons - + Contest type Contest type - + Achievement Achievement - + Special ribbons Special ribbons - + General General - + Met/OT Met/OT - + Stats Stats - + Moves Moves - + Ribbons Ribbons - + Genderless Genderless - + Unown form: Unown form: - + will evolve into: will evolve into: - - + + Invalid version info Invalid version info - - + + "Invalid Pokémon" flag set "Invalid Pokémon" flag set - + Location caught (see <a href='http://bulbapedia.bulbagarden.net/wiki/List_of_locations_by_index_number_(Generation_III)'>here</a>) Location caught (see <a href='http://bulbapedia.bulbagarden.net/wiki/List_of_locations_by_index_number_(Generation_III)'>here</a>) - + Location caught (see <a href='http://bulbapedia.bulbagarden.net/wiki/List_of_locations_by_index_number_(GCN)'>here</a>) Location caught (see <a href='http://bulbapedia.bulbagarden.net/wiki/List_of_locations_by_index_number_(GCN)'>here</a>) - + Warning Warning - + The version info you specified is invalid. The game will therefore consider this Pokémon invalid. The version info you specified is invalid. The game will therefore consider this Pokémon invalid. @@ -873,141 +873,141 @@ MainWindow - + &File &File - + &Options &Options - + &Interface language &Interface language - + &Dumped names language &Dumped names language - + &Open... &Open... - + &Save &Save - + Save &as... Save &as... - + &Exit &Exit - - + + Select &automatically Select &automatically - - - + + + GCI save files (*.gci) GCI save files (*.gci) - - - + + + Raw save files (*.bin) Raw save files (*.bin) - + The save file has been modified. The save file has been modified. - + Do you want to save your changes? Do you want to save your changes? - + Could not open file. Could not open file. - + An error occured while reading the specified save file. An error occured while reading the specified save file. - + Open save file Open save file - + All Files (*) All Files (*) - - - - - - + + + + + + Error Error - + Invalid file size. Invalid file size. - - + + Warning Warning - + The backup save slot was loaded because the most recent save slot is corrupt. The backup save slot was loaded because the most recent save slot is corrupt. - + The second backup save slot was loaded because the other ones are corrupt. The second backup save slot was loaded because the other ones are corrupt. - + All save slots are corrupt. All save slots are corrupt. - + No save file loaded No save file loaded - + %1, %n save(s) %1, %n save @@ -1015,32 +1015,32 @@ - + Colosseum Colosseum - + XD XD - + Could not write to file. Could not write to file. - + An error occured while writing to the specified save file. An error occured while writing to the specified save file. - + All files (*) All files (*) - + Save save file Save save file diff --git a/PkmGCSaveEditor/translations/PkmGCSaveEditor_fr.ts b/PkmGCSaveEditor/translations/PkmGCSaveEditor_fr.ts index 17c250c..995ff24 100644 --- a/PkmGCSaveEditor/translations/PkmGCSaveEditor_fr.ts +++ b/PkmGCSaveEditor/translations/PkmGCSaveEditor_fr.ts @@ -492,264 +492,264 @@ Monde - + Reset RaZ - + Egg Œuf - + Second ability Second talent - + Invalid Pokémon Pokémon invalide - + Not tradable in-game Non échangeable en interne - + Unknown Inconnu - + Caught Capturé - + Species Espèce - + Name or nickname Nom ou surnom - + PID PID - + Attributes Caractéristiques - + Ability Talent - + Experience and level Expérience et niveau - + Held item Objet tenu - + Happiness Bonheur - + Pokérus Pokérus - + Status Statut - + Flags Drapeaux - + Markings Marques - + Core information Informations essentielles - + Original trainer Dresseur d'origine - + Game version Version du jeu - + Copy info from save Recopier les infos à partir de la sauvegarde - + Generate shiny IDs Générer des IDs rendant ce Pokémon shiny - + Ball caught with Pokéball utilisée - + Location caught Lieu de capture - + IV IV - + EV EV - + Stat Statistique - + Current HP PVs actuels - + Update stats automatically Mettre à jour les statistiques automatiquement - + Luster Lustre - + Main stats Statistiques principales - + Contest stats Statistiques de concours - + Contest ribbons Rubans de concours - + Contest type Type de concours - + Achievement Avancement - + Special ribbons Rubans spéciaux - + General Général - + Met/OT Infos de rencontre/D.O - + Stats Statistiques - + Moves Attaques - + Ribbons Rubans - + Genderless Asexué - + Unown form: Forme Zarbi : - + will evolve into: évoluera en : - - + + Invalid version info Infos de version invalides - - + + "Invalid Pokémon" flag set Drapeau "Pokémon invalide" activé - + Location caught (see <a href='http://bulbapedia.bulbagarden.net/wiki/List_of_locations_by_index_number_(Generation_III)'>here</a>) Lieu de capture (cf. <a href='http://bulbapedia.bulbagarden.net/wiki/List_of_locations_by_index_number_(Generation_III)'>Bulbapedia</a>) - + Location caught (see <a href='http://bulbapedia.bulbagarden.net/wiki/List_of_locations_by_index_number_(GCN)'>here</a>) Lieu de capture (cf. <a href='http://bulbapedia.bulbagarden.net/wiki/List_of_locations_by_index_number_(GCN)'>Bulbapedia</a>) - + Warning Avertissement - + The version info you specified is invalid. The game will therefore consider this Pokémon invalid. Les informations sur la version du jeu que vous avez entrées sont invalides. Le jeu considérera de ce fait ce Pokémon invalide. @@ -873,141 +873,141 @@ MainWindow - + &File &Fichier - + &Options &Options - + &Interface language Langue de l'&interface - + &Dumped names language Langue des noms &extraits - + &Open... &Ouvrir... - + &Save &Enregistrer - + Save &as... Enregistrer &sous... - + &Exit &Quitter - - + + Select &automatically Sélectionner &automatiquement - - - + + + GCI save files (*.gci) Fichiers de sauvegarde GCI (*.gci) - - - + + + Raw save files (*.bin) Fichiers de sauvegarde bruts (*.bin) - + The save file has been modified. Le fichier de sauvegarde a été modifié. - + Do you want to save your changes? Voulez-vous enregistrer vos modifications ? - + Could not open file. Impossible d'ouvrir le fichier. - + An error occured while reading the specified save file. Une erreur s'est produite durant la lecture du fichier de sauvegarde. - + Open save file Ouvrir fichier de sauvegarde - + All Files (*) Tous les fichiers (*) - - - - - - + + + + + + Error Erreur - + Invalid file size. Taille de fichier invalide - - + + Warning Avertissement - + The backup save slot was loaded because the most recent save slot is corrupt. L'emplacement de sauvegarde de secours a été chargé car l'emplacement le plus récent est corrompu - + The second backup save slot was loaded because the other ones are corrupt. Le deuxième emplacement de sauvegarde de secours a été chargé car l'emplacement le plus récent est corrompu - + All save slots are corrupt. Tous les emplacements de sauvegarde sont corrompus. - + No save file loaded Aucune sauvegarde chargée - + %1, %n save(s) %1, %n sauvegarde @@ -1015,32 +1015,32 @@ - + Colosseum Colosseum - + XD XD - + Could not write to file. Impossible d'écrire dans le fichier. - + An error occured while writing to the specified save file. Une erreur s'est produite pendant l'écriture des données sur le fichier de sauvegarde. - + All files (*) Tous les fichiers (*) - + Save save file Sauvegarder fichier de sauvegarde