mirror of
https://github.com/TuxSH/PkmGCTools.git
synced 2026-09-07 08:15:30 -05:00
Fixed a lot of critical bugs (affecting IVs, etc...), especially for Colosseum. Money and Pokécoupons are now limited to 9,999,999. Bag items are limited again to 99 in Colosseum.
This commit is contained in:
10
CHANGELOG.md
10
CHANGELOG.md
@@ -1,6 +1,14 @@
|
||||
###PkmGCTools v1.1.1:
|
||||
Fixed a lot of critical bugs (affecting IVs, etc...). Money and Pokécoupons are now limited to 9,999,999. Bag items are limited again to 99 in Pokémon Colosseum.
|
||||
|
||||
To users of previous versions:
|
||||
* If and only if you have modified a Colosseum save file with that previous version, please load this save file again,
|
||||
and click "Bugs affecting Pokémon..."(in "Options", "Bug fixes"). Do it only once and only once (for each concerned save file).
|
||||
* If you have imported or exported a Pokémon in the GBA format, please check its status alteration, its EVs, and its game of origin.
|
||||
|
||||
###PkmGCTools v1.1:
|
||||
* GBA Pokémon are now **fully** supported.
|
||||
* As a consequence onversion between Colosseum, XD and GBA Pokémon is now **fully** supported.
|
||||
* As a consequence conversion between Colosseum, XD and GBA Pokémon is now **fully** supported.
|
||||
* It is done (almost) exactly like it is in Colosseum/XD during a GC<->GBA trade (meaning, for example, that the data specific to shadow Pokémon is lost).
|
||||
* Please note that A-Save discards all party-related information (e.g status alteration). The Devil is in the detail...
|
||||
* The maximum number for items has been raised to 999.
|
||||
|
||||
@@ -42,6 +42,8 @@ public:
|
||||
|
||||
void save(void);
|
||||
|
||||
void fixBugsAffectingPokemon(void);
|
||||
|
||||
protected:
|
||||
void loadFields(void);
|
||||
|
||||
|
||||
@@ -83,7 +83,7 @@ public:
|
||||
s32 storyModeSaveCount;
|
||||
u8 checksum[20]; // digest
|
||||
|
||||
|
||||
void fixBugsAffectingPokemon(void);
|
||||
protected:
|
||||
void loadData(u32 flags = 0);
|
||||
void deleteFields(void);
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
#include <boost/config/warning_disable.hpp>
|
||||
#include <boost/config.hpp>
|
||||
|
||||
#define LIBPKMGC_VERSION 1001000
|
||||
#define LIBPKMGC_VERSION 1001001
|
||||
#define LIBPKMGC_VERSION_MAJOR ((LIBPKMGC_VERSION / 1000000) % 1000)
|
||||
#define LIBPKMGC_VERSION_MINOR ((LIBPKMGC_VERSION / 1000) % 1000)
|
||||
#define LIBPKMGC_VERSION_BUILD (LIBPKMGC_VERSION % 1000)
|
||||
|
||||
@@ -59,8 +59,8 @@ using namespace LE;
|
||||
#define LD_ARRAY(type,ar,sz,off) toArrayOfIntegers<u8*,type*>(ar, BUFFER_NAME+off, BUFFER_NAME+off+(sizeof(type)*sz))
|
||||
#define LD_ARRAY_MAX(type,ar,sz,off,mx) toArrayOfIntegers<u8*,type*>(ar, BUFFER_NAME+off, BUFFER_NAME+off+(sizeof(type)*sz));\
|
||||
for(size_t i__ = 0; i__ < sz; ++i__) ar[i__] = (ar[i__] > mx) ? mx : ar[i__];
|
||||
#define LD_ARRAY_CONV(type,ar,sz,off,type2) type ar##_tmp[sz]; toArrayOfIntegers<u8*,type*>(ar, BUFFER_NAME+off, BUFFER_NAME+off+(sizeof(type)*sz));\
|
||||
for(size_t i__ = 0; i__ < sz; ++i__) ar[i__] = (ar##_tmp[i__] > mx) ? mx : ar##_tmp[i__];
|
||||
#define LD_ARRAY_CONV(type,ar,sz,off,type2) type ar##_tmp[sz]; toArrayOfIntegers<u8*,type*>(ar##_tmp, BUFFER_NAME+off, BUFFER_NAME+off+(sizeof(type)*sz));\
|
||||
for(size_t i__ = 0; i__ < sz; ++i__) ar[i__] = (type2)((ar##_tmp[i__] > (type2)-1) ? (type2)-1 : ar##_tmp[i__]);
|
||||
#define LD_ARRAY_E(type,ar,sz,off,etype) toArrayOfEnumIntegers<type,u8*,etype*>(ar, BUFFER_NAME+off, BUFFER_NAME+off+(sizeof(type)*sz))
|
||||
#define LD_ARRAY_E_MAX(type,ar,sz,off,etype,mx) toArrayOfEnumIntegers<type,u8*,etype*>(ar, BUFFER_NAME+off, BUFFER_NAME+off+(sizeof(type)*sz));\
|
||||
for(size_t i__ = 0; i__ < sz; ++i__) ar[i__] = ((u32)ar[i__] > (u32)mx) ? (etype)0 : ar[i__];
|
||||
@@ -77,8 +77,8 @@ for(size_t i__ = 0; i__ < sz; ++i__) ar[i__] = ((u32)ar[i__] > (u32)mx) ? (etype
|
||||
#define SV_ARRAY(type,ar,sz,off) fromArrayOfIntegers<type*, u8*>(BUFFER_NAME+off, ar, ar+sz)
|
||||
#define SV_ARRAY_MAX(type,ar,sz,off,mx) for(size_t i__ = 0; i__ < sz; ++i__) ar[i__] = (ar[i__] > mx) ? mx : ar[i__];\
|
||||
fromArrayOfIntegers<type*, u8*>(BUFFER_NAME+off, ar, ar+sz)
|
||||
#define SV_ARRAY_CONV(type,ar,sz,off,type2) type ar##_tmp[sz]; for(size_t i__=0;i__<sz;++i__) ar##_tmp[i__] = (ar[i__] > mx) ? mx : (type) ar[i__];\
|
||||
fromArrayOfIntegers<type*, u8*>(BUFFER_NAME+off, ar, ar+sz)
|
||||
#define SV_ARRAY_CONV(type,ar,sz,off,type2) type ar##_tmp[sz]; for(size_t i__=0;i__<sz;++i__) ar##_tmp[i__] = ((ar[i__] > (type)-1) ? (type)-1 : (type) ar[i__]);\
|
||||
fromArrayOfIntegers<type*, u8*>(BUFFER_NAME+off, ar##_tmp, ar##_tmp+sz)
|
||||
#define SV_ARRAY_E(type,ar,sz,off,etype) fromArrayOfEnumIntegers<type,etype*, u8*>(BUFFER_NAME+off, ar, ar+sz)
|
||||
#define SV_ARRAY_E_MAX(type,ar,sz,off,etype,mx) for(size_t i__ = 0; i__ < sz; ++i__) ar[i__] = ((u32)ar[i__] > (u32)mx) ? (etype)0 : ar[i__];\
|
||||
fromArrayOfEnumIntegers<type,etype*, u8*>(BUFFER_NAME+off, ar, ar+sz)
|
||||
|
||||
@@ -37,7 +37,7 @@ u16 Pokemon::calculateStat(size_t statIndex, PokemonSpeciesIndex species, Pokemo
|
||||
|
||||
// We're applying bonuses now
|
||||
if(i == 0) return ((outStat + 100) * level / 100) + 10; // HP
|
||||
else return (outStat * level / 100 + 5) * n[(size_t)getNatureStatAffinity(natureIndex, i) ] / 100;
|
||||
else return (outStat * level / 100 + 5) * n[getNatureStatAffinity(natureIndex, i)] / 100;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -48,8 +48,8 @@ void PlayerData::loadFields(void) {
|
||||
LD_FIELD_E(u8, trainerGender, 0xa80, Gender);
|
||||
if (trainerGender > Female) trainerGender = Male;
|
||||
|
||||
LD_FIELD(u32, money, 0xa84);
|
||||
LD_FIELD(u32, pkCoupons, 0xa88);
|
||||
LD_FIELD_MAX(u32, money, 0xa84, 9999999);
|
||||
LD_FIELD_MAX(u32, pkCoupons, 0xa88, 9999999);
|
||||
|
||||
LD_SUBSTRUCTURE_ARRAY(Pokemon, party, 6, 0x30);
|
||||
LD_SUBSTRUCTURE(BagData, bag, 0x780);
|
||||
@@ -59,8 +59,8 @@ void PlayerData::save(void) {
|
||||
GC::PlayerData::save();
|
||||
if (trainerGender > Female) trainerGender = Male;
|
||||
SV_FIELD_E(u8, trainerGender, 0xa80, Gender);
|
||||
SV_FIELD(u32, money, 0xa84);
|
||||
SV_FIELD(u32, pkCoupons, 0xa88);
|
||||
SV_FIELD_MAX(u32, money, 0xa84, 9999999);
|
||||
SV_FIELD_MAX(u32, pkCoupons, 0xa88, 9999999);
|
||||
SV_FIELD(u32, pkCoupons, 0xa8c);
|
||||
|
||||
SV_SUBSTRUCTURE_ARRAY(Pokemon, party, 6, 0x30);
|
||||
|
||||
@@ -68,6 +68,7 @@ void Pokemon::loadFields(void) {
|
||||
LD_FIELD_E(u16, partyData.status, 0x65, PokemonStatus);
|
||||
LD_FIELD(s8, partyData.turnsOfSleepRemaining, 0x69);
|
||||
LD_FIELD(s8, partyData.turnsOfBadPoison, 0x6b);
|
||||
|
||||
u32 st = pokemonStatusToBitField(partyData.status, 0, partyData.turnsOfSleepRemaining);
|
||||
SV_FIELD(u32, st, 0x74);
|
||||
|
||||
@@ -80,8 +81,9 @@ void Pokemon::loadFields(void) {
|
||||
LD_ARRAY(u16, EVs_tmp, 6, 0x98);
|
||||
for (size_t i = 0; i < 6; ++i) EVs[i] = (u8)((EVs_tmp[i] > 255) ? 255 : EVs_tmp[i]);
|
||||
|
||||
LD_ARRAY(u8, IVs, 6, 0xa4);
|
||||
for (size_t i = 0; i < 6; ++i) IVs[i] = (IVs[i] > 31) ? 31 : IVs[i];
|
||||
u16 IVs_tmp[6]; // IVs are internally stored as u16
|
||||
LD_ARRAY(u16, IVs_tmp, 6, 0xa4);
|
||||
for (size_t i = 0; i < 6; ++i) IVs[i] = (u8)((IVs_tmp[i] > 31) ? 31 : IVs_tmp[i]);
|
||||
|
||||
LD_FIELD_CONV(u16, happiness, 0xb0, u8);
|
||||
|
||||
@@ -101,8 +103,8 @@ void Pokemon::loadFields(void) {
|
||||
LD_FIELD(u16, unk1, 0xd4);
|
||||
LD_FIELD(u16, shadowPkmID, 0xd8);
|
||||
|
||||
SV_FIELD_B(u8, obedient, 0xf8);
|
||||
SV_FIELD(u8, encounterType, 0xfb);
|
||||
LD_FIELD_B(u8, obedient, 0xf8);
|
||||
LD_FIELD(u8, encounterType, 0xfb);
|
||||
markings.load(marksTmp);
|
||||
for (size_t i = 0; i < 4; ++i)
|
||||
moves[i].load(data + 0x78 + 4 * i);
|
||||
@@ -136,8 +138,8 @@ void Pokemon::save(void) {
|
||||
if (partyData.level > 100) partyData.level = 100;
|
||||
SV_FIELD(u8, partyData.level, 0x60);
|
||||
SV_FIELD_E(u16, partyData.status, 0x65, PokemonStatus);
|
||||
LD_FIELD(s8, partyData.turnsOfSleepRemaining, 0x69);
|
||||
LD_FIELD(s8, partyData.turnsOfBadPoison, 0x6b);
|
||||
SV_FIELD(s8, partyData.turnsOfSleepRemaining, 0x69);
|
||||
SV_FIELD(s8, partyData.turnsOfBadPoison, 0x6b);
|
||||
SV_FIELD_E(u16, heldItem, 0x88, ItemIndex);
|
||||
|
||||
SV_FIELD_MAX(u16, partyData.currentHP, 0x8a, partyData.stats[0]);
|
||||
@@ -145,8 +147,12 @@ void Pokemon::save(void) {
|
||||
|
||||
u16 EVs_tmp[6]; for (size_t i = 0; i < 6; ++i) EVs_tmp[i] = (u16)EVs[i];
|
||||
SV_ARRAY(u16, EVs_tmp, 6, 0x98);
|
||||
for (size_t i = 0; i < 6; ++i) IVs[i] = (IVs[i] > 31) ? 31 : IVs[i];
|
||||
SV_ARRAY(u8, IVs, 6, 0xa4);
|
||||
u16 IVs_tmp[6];
|
||||
for (size_t i = 0; i < 6; ++i) {
|
||||
IVs[i] = (IVs[i] > 31) ? 31 : IVs[i];
|
||||
IVs_tmp[i] = IVs[i];
|
||||
}
|
||||
SV_ARRAY(u16, IVs_tmp, 6, 0xa4);
|
||||
|
||||
SV_FIELD(u16, (u16)happiness, 0xb0);
|
||||
SV_ARRAY(u8, contestStats, 5, 0xb2);
|
||||
@@ -158,7 +164,7 @@ void Pokemon::save(void) {
|
||||
|
||||
|
||||
SV_FIELD(u8, pkrsStatus, 0xca);
|
||||
LD_ARRAY_B(u8, pkmFlags, 3, 0xcb);
|
||||
SV_ARRAY_B(u8, pkmFlags, 3, 0xcb);
|
||||
SV_FIELD_MAX(u8, GCUnk, 0xce, 31);
|
||||
SV_FIELD(u8, markings.save(), 0xcf);
|
||||
SV_FIELD_MAX(s8, partyData.pkrsDaysRemaining, 0xd0, 4);
|
||||
|
||||
@@ -46,12 +46,9 @@ Save* Save::create(void) const {
|
||||
0x6000: SaveSlot saveSlots[3]
|
||||
*/
|
||||
void Save::loadFields(void) {
|
||||
// deleteFields();
|
||||
|
||||
saveSlots = new GC::SaveEditing::SaveSlot*[3];
|
||||
u8* start = data + 0x6000;
|
||||
/*delete saveSlots[0];
|
||||
delete saveSlots[1];*/
|
||||
|
||||
saveSlots[0] = new SaveSlot(start, _is_decrypted);
|
||||
saveSlots[1] = new SaveSlot(start + 0x1e000, _is_decrypted);
|
||||
saveSlots[2] = new SaveSlot(start + 0x1e000*2, _is_decrypted);
|
||||
@@ -62,6 +59,11 @@ void Save::save(void) {
|
||||
SV_SUBSTRUCTURE_ARRAY(SaveSlot, saveSlots, 3, 0x6000);
|
||||
}
|
||||
|
||||
void Save::fixBugsAffectingPokemon(void) {
|
||||
for (size_t i = 0; i < 3; ++i) {
|
||||
static_cast<SaveSlot*>(saveSlots[i])->fixBugsAffectingPokemon();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -210,6 +210,25 @@ bool SaveSlot::isCorrupt(void) {
|
||||
}
|
||||
|
||||
|
||||
inline void doFixBugsAffectingPokemon(Pokemon* pkm) {
|
||||
// LibPkmGC <= 1.1.2 : For Pok<6F>mon Colosseum, IVs were loaded/saved as u8's where they were actually u16's. obedient was always set to true, and encounterType to a random value.
|
||||
|
||||
std::copy(pkm->data + 0xa4, pkm->data + 0xa4 + 6, pkm->IVs);
|
||||
pkm->obedient = pkm->species == Mew || pkm->species == Deoxys;
|
||||
pkm->encounterType = 0;
|
||||
}
|
||||
void SaveSlot::fixBugsAffectingPokemon(void) {
|
||||
for (size_t i = 0; i < 6; ++i)
|
||||
doFixBugsAffectingPokemon((Pokemon*)player->party[i]);
|
||||
|
||||
for (size_t i = 0; i < 3; ++i) {
|
||||
for (size_t j = 0; j < 30; ++j)
|
||||
doFixBugsAffectingPokemon((Pokemon*)PC->boxes[i]->pkm[j]);
|
||||
}
|
||||
|
||||
doFixBugsAffectingPokemon((Pokemon*)daycare->pkm);
|
||||
}
|
||||
|
||||
void SaveSlot::loadData(u32 flags) {
|
||||
bool decrypted = (flags & 1) == 1;
|
||||
|
||||
|
||||
@@ -14,8 +14,8 @@ void VersionInfo::load(u8 lg, u8 gm) {
|
||||
const LanguageIndex L[] = { NoLanguage, Japanese, English, French, Italian, German, NoLanguage, Spanish };
|
||||
GameIndex G[16] = { NoGame, Sapphire, Ruby, Emerald, FireRed, LeafGreen }; G[15] = Colosseum_XD;
|
||||
|
||||
game = G[(gm > 7) ? 0 : gm];
|
||||
language = L[(lg > 15) ? 0 : lg];
|
||||
game = G[(gm > 15) ? 0 : gm];
|
||||
language = L[(lg > 7) ? 0 : lg];
|
||||
|
||||
switch (language){
|
||||
case Japanese: originalRegion = NTSC_J; break;
|
||||
@@ -29,7 +29,7 @@ void VersionInfo::load(u8 lg, u8 gm) {
|
||||
|
||||
void VersionInfo::save(u8& lg, u8& gm) {
|
||||
const u8 L[] = { 0, 1, 2, 5, 3, 4, 7 };
|
||||
u8 G[12] = { 0, 4, 5, 1, 2, 3 }; G[11] = 15;
|
||||
u8 G[12] = { 0, 4, 5, 0,0,0,0,0, 1, 2, 3 }; G[11] = 15;
|
||||
|
||||
game = (game > Colosseum_XD) ? NoGame : game;
|
||||
language = (language > Spanish) ? NoLanguage : language;
|
||||
@@ -98,7 +98,7 @@ PokemonStatus pokemonStatusFromBitField(u16 status, s8 * turnsOfBadPoison, s8 *
|
||||
s8 tobp = 0, tosr = 0;
|
||||
tosr = (s8)(status & 7);
|
||||
tobp = (s8)((status >> 8) & 0xf);
|
||||
if (tobp != 0) ret = Asleep;
|
||||
if (tosr != 0) ret = Asleep;
|
||||
|
||||
status >>= 3;
|
||||
for (size_t i = 0; i < 5 && ret == NoStatus; ++i) {
|
||||
|
||||
@@ -214,7 +214,7 @@ void Pokemon::loadFields(void) {
|
||||
LD_FIELD_MAX(u32, experience, 36, getSpeciesExpTable(species)[100]);
|
||||
LD_FIELD(u8, happiness, 41);
|
||||
LD_FIELD(u16, unk2, 42);
|
||||
for (size_t i = 0; i < 6; ++i) EVs[i] = data[56 + statsOrder[i]];
|
||||
for (size_t i = 0; i < 6; ++i) EVs[statsOrder[i]] = data[56 + i];
|
||||
|
||||
LD_ARRAY(u8, contestStats, 5, 62);
|
||||
LD_FIELD(u8, contestLuster, 67);
|
||||
@@ -272,7 +272,7 @@ void Pokemon::loadFields(void) {
|
||||
|
||||
u32 st;
|
||||
LD_FIELD(u32, st, 80);
|
||||
pokemonStatusFromBitField((u16)st, &(partyData.turnsOfBadPoison), &(partyData.turnsOfSleepRemaining));
|
||||
partyData.status = pokemonStatusFromBitField((u16)st, &(partyData.turnsOfBadPoison), &(partyData.turnsOfSleepRemaining));
|
||||
|
||||
LD_FIELD_MAX(u8, partyData.level, 84, 100);
|
||||
LD_FIELD_MAX(s8, partyData.pkrsDaysRemaining, 85, 4);
|
||||
@@ -343,8 +343,8 @@ void Pokemon::save(void) {
|
||||
SV_FIELD_MAX(u32, experience, 36, getSpeciesExpTable(species)[100]);
|
||||
SV_FIELD(u8, happiness, 41);
|
||||
SV_FIELD(u16, unk2, 42);
|
||||
for (size_t i = 0; i < 6; ++i) data[56 + statsOrder[i]] = EVs[i];
|
||||
|
||||
for (size_t i = 0; i < 6; ++i) data[56 + i] = EVs[statsOrder[i]];
|
||||
SV_ARRAY(u8, contestStats, 5, 62);
|
||||
SV_FIELD(u8, contestLuster, 67);
|
||||
|
||||
|
||||
@@ -110,7 +110,7 @@ SaveSlot& SaveSlot::operator=(SaveSlot const& other) {
|
||||
|
||||
void SaveSlot::reload(const u8* inData, u32 flags) {
|
||||
if (inData == NULL) Base::DataStruct::reload(NULL, 1);
|
||||
else Base::DataStruct::reload(inData, 0);
|
||||
else Base::DataStruct::reload(inData, flags);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -48,8 +48,8 @@ void PlayerData::loadFields(void) {
|
||||
LD_FIELD_E(u8, trainerGender, 0x8e0, Gender);
|
||||
if (trainerGender > Female) trainerGender = Male;
|
||||
|
||||
LD_FIELD(u32, money, 0x8e4);
|
||||
LD_FIELD(u32, pkCoupons, 0x8e8);
|
||||
LD_FIELD_MAX(u32, money, 0x8e4, 9999999);
|
||||
LD_FIELD_MAX(u32, pkCoupons, 0x8e8, 9999999);
|
||||
|
||||
LD_SUBSTRUCTURE_ARRAY(Pokemon, party, 6, 0x30);
|
||||
LD_SUBSTRUCTURE(BagData, bag, 0x4c8);
|
||||
@@ -60,8 +60,8 @@ void PlayerData::save(void) {
|
||||
if (trainerGender > Female) trainerGender = Male;
|
||||
SV_FIELD_E(u8, trainerGender, 0x8e0, Gender);
|
||||
|
||||
SV_FIELD(u32, money, 0x8e4);
|
||||
SV_FIELD(u32, pkCoupons, 0x8e8);
|
||||
SV_FIELD_MAX(u32, money, 0x8e4, 9999999);
|
||||
SV_FIELD_MAX(u32, pkCoupons, 0x8e8, 9999999);
|
||||
SV_FIELD(u32, pkCoupons, 0x8ec);
|
||||
|
||||
SV_SUBSTRUCTURE_ARRAY(Pokemon, party, 6, 0x30);
|
||||
|
||||
@@ -180,7 +180,7 @@ void Pokemon::save(void) {
|
||||
data[0x7d] = (data[0x7d] & 0xf0) | unimplementedRibbons;
|
||||
SV_ARRAY(u16, partyData.stats, 6, 0x90);
|
||||
|
||||
u16 EVs_tmp[6]; for (size_t i = 0; i < 6; ++i) EVs_tmp[i] = (u16)EVs[i];
|
||||
u16 EVs_tmp[6]; for (size_t i = 0; i < 6; ++i) EVs_tmp[i] = EVs[i];
|
||||
SV_ARRAY(u16, EVs_tmp, 6, 0x9c);
|
||||
for (size_t i = 0; i < 6; ++i) IVs[i] = (IVs[i] > 31) ? 31 : IVs[i];
|
||||
SV_ARRAY(u8, IVs, 6, 0xa8);
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
|
||||
DataUI::DataUI(QWidget* parent, Qt::WindowFlags f) : QDialog(parent, f), IDataUI(), mainLayout(new QVBoxLayout),
|
||||
dialogButtonBox(new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel)) {
|
||||
this->setWindowTitle(appName);
|
||||
connect(dialogButtonBox, SIGNAL(accepted()), this, SLOT(accept()));
|
||||
connect(dialogButtonBox, SIGNAL(rejected()), this, SLOT(reject()));
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
#ifndef _PKMGCSAVEEDITOR_GLOBALS_H
|
||||
#define _PKMGCSAVEEDITOR_GLOBALS_H
|
||||
|
||||
#define PKMGCSAVEEDITOR_VERSION 1001000
|
||||
#define PKMGCSAVEEDITOR_VERSION 1001001
|
||||
#define PKMGCSAVEEDITOR_VERSION_MAJOR ((PKMGCSAVEEDITOR_VERSION / 1000000) % 1000)
|
||||
#define PKMGCSAVEEDITOR_VERSION_MINOR ((PKMGCSAVEEDITOR_VERSION / 1000) % 1000)
|
||||
#define PKMGCSAVEEDITOR_VERSION_BUILD (PKMGCSAVEEDITOR_VERSION % 1000)
|
||||
@@ -32,6 +32,8 @@
|
||||
#include <QLocale>
|
||||
#include <QMap>
|
||||
|
||||
const QString appName = QString("PkmGCSaveEditor v%1.%2.%3").arg(PKMGCSAVEEDITOR_VERSION_MAJOR).arg(PKMGCSAVEEDITOR_VERSION_MINOR).arg(PKMGCSAVEEDITOR_VERSION_BUILD);
|
||||
|
||||
extern const QMap<QString, size_t> languageCodeToIndexMap;
|
||||
|
||||
extern QString currentSaveFileName;
|
||||
|
||||
@@ -91,10 +91,11 @@ void ItemPocketEditor::setEditedItem(LibPkmGC::Item const & val){
|
||||
}
|
||||
|
||||
void ItemPocketEditor::updateMaxQuantity(void) {
|
||||
const int maxqty[] = { 0, 999, 999, 999, 999, 1, 999, 1 };
|
||||
const int maxqty[] = { 0, 99, 99, 99, 99, 1, 99, 1 };
|
||||
const int maxqtyPCOrXD[] = { 0, 999, 999, 999, 999, 1, 999, 1 };
|
||||
|
||||
ItemCategoryIndex ctgy = getItemCategory(itemNameFld->currentItemIndex(), isXD);
|
||||
quantityFld->setRange(0, maxqty[ctgy]);
|
||||
quantityFld->setRange(0, (isXD || flags == GIVABLE_ITEMS_ALLOWED) ? maxqtyPCOrXD[ctgy] : maxqty[ctgy]);
|
||||
quantityFld->setDisabled(maxqty[ctgy] == 0);
|
||||
}
|
||||
void ItemPocketEditor::displayItem(void) {
|
||||
|
||||
@@ -421,7 +421,8 @@ void PokemonUI::initWidget(void){
|
||||
connect(versionFld, SIGNAL(versionChanged()), this, SLOT(versionChangeHandler()));
|
||||
connect(copyInfoFromSaveButton, SIGNAL(clicked()), this, SLOT(copyInfoFromSave()));
|
||||
connect(generateShinyIDsButton, SIGNAL(clicked()), this, SLOT(generateShinyIDs()));
|
||||
connect(autoUpdateMainStatsCheckBox, SIGNAL(stateChanged(int)), this, SLOT(autoUpdateStatsStateChangeHanler()));
|
||||
connect(autoUpdateMainStatsCheckBox, SIGNAL(stateChanged(int)), this, SLOT(autoUpdateStatsStateChangeHandler()));
|
||||
connect(mainStatsFlds[0]->statFld, SIGNAL(valueChanged(int)), this, SLOT(updateMainStats()));
|
||||
connect(contestTypeSelector, SIGNAL(currentIndexChanged(int)), contestAchievementLevelFldsStack, SLOT(setCurrentIndex(int)));
|
||||
}
|
||||
|
||||
@@ -506,13 +507,14 @@ void PokemonUI::parseData(void){
|
||||
versionFld->setInfo(pkm->version);
|
||||
connect(versionFld, SIGNAL(versionChanged()), this, SLOT(versionChangeHandler()));
|
||||
|
||||
currentHPFld->setUnsignedValue(pkm->partyData.currentHP);
|
||||
for (size_t i = 0; i < 6; ++i) {
|
||||
PokemonStatLayout* l = mainStatsFlds[i];
|
||||
l->IVFld->setUnsignedValue(pkm->IVs[i]);
|
||||
l->EVFld->setUnsignedValue(pkm->EVs[i]);
|
||||
l->statFld->setUnsignedValue(pkm->partyData.stats[i]);
|
||||
}
|
||||
currentHPFld->setUnsignedValue(pkm->partyData.currentHP);
|
||||
|
||||
|
||||
for (size_t i = 0; i < 5; ++i)
|
||||
contestAchievementFlds[i]->setCurrentIndex((int)pkm->contestAchievements[i]);
|
||||
@@ -524,6 +526,7 @@ void PokemonUI::parseData(void){
|
||||
moveLayouts[i]->setMove(pkm->moves[i]);
|
||||
|
||||
autoUpdateMainStatsCheckBox->setChecked(true);
|
||||
autoUpdateStatsStateChangeHandler();
|
||||
versionChangeHandler();
|
||||
|
||||
abilityFld->setCurrentIndex((pkm->hasSecondAbility()) ? 1 : 0);
|
||||
@@ -694,9 +697,11 @@ void PokemonUI::updateMainStats(void) {
|
||||
(u8) levelFld->value(), (u8) l->IVFld->value(), (u8) l->EVFld->value());
|
||||
l->statFld->setUnsignedValue(stat);
|
||||
}
|
||||
//currentHPFld->setUnsignedMaximum(mainStatsFlds[0]->statFld->value());
|
||||
currentHPFld->setUnsignedValue(mainStatsFlds[0]->statFld->value());
|
||||
|
||||
}
|
||||
currentHPFld->setUnsignedMaximum(mainStatsFlds[0]->statFld->value());
|
||||
|
||||
}
|
||||
|
||||
void PokemonUI::updatePkmAttributes(void) {
|
||||
@@ -744,6 +749,7 @@ void PokemonUI::updateExperienceFromLevel(bool proportionally) {
|
||||
experienceFld->setValue((int)experience);
|
||||
connect(experienceFld, SIGNAL(valueChanged(int)), this, SLOT(updateLevelFromExperience()));
|
||||
}
|
||||
updateMainStats();
|
||||
}
|
||||
|
||||
void PokemonUI::updateLevelFromExperience(void) {
|
||||
@@ -751,14 +757,16 @@ void PokemonUI::updateLevelFromExperience(void) {
|
||||
u8 lvl = Pokemon::calculateLevelFromExp(nameIndexToPkmSpeciesIndex((size_t)speciesFld->currentIndex()), (u32)experienceFld->value());
|
||||
|
||||
levelFld->disconnect(SIGNAL(valueChanged(int)), this);
|
||||
levelFld->setValue((int)lvl);
|
||||
levelFld->setUnsignedValue(lvl);
|
||||
connect(levelFld, SIGNAL(valueChanged(int)), this, SLOT(updateExperienceFromLevel()));
|
||||
}
|
||||
updateMainStats();
|
||||
|
||||
}
|
||||
|
||||
void PokemonUI::speciesChangeHandler(void) {
|
||||
updatePkmAttributes();
|
||||
autoUpdateStatsStateChangeHanler(); // update stats etc...
|
||||
autoUpdateStatsStateChangeHandler(); // update stats etc...
|
||||
updateAbilityList();
|
||||
u32 maxExperience = Pokemon::calculateExpFromLevel(nameIndexToPkmSpeciesIndex((size_t)speciesFld->currentIndex()), 100);
|
||||
experienceFld->setUnsignedRange(0, maxExperience);
|
||||
@@ -817,7 +825,7 @@ void PokemonUI::flagsStateChangeHandler(void) {
|
||||
updatePkmAttributes();
|
||||
}
|
||||
|
||||
void PokemonUI::autoUpdateStatsStateChangeHanler(void) {
|
||||
void PokemonUI::autoUpdateStatsStateChangeHandler(void) {
|
||||
bool checked = autoUpdateMainStatsCheckBox->isChecked();
|
||||
if (checked) updateMainStats();
|
||||
currentHPFld->setDisabled(checked);
|
||||
|
||||
@@ -216,7 +216,7 @@ public slots:
|
||||
void updateFlags(void);
|
||||
void flagsStateChangeHandler(void);
|
||||
|
||||
void autoUpdateStatsStateChangeHanler(void);
|
||||
void autoUpdateStatsStateChangeHandler(void);
|
||||
|
||||
void versionChangeHandler(void);
|
||||
|
||||
|
||||
@@ -10,9 +10,6 @@
|
||||
#include <QApplication>
|
||||
#include <QDir>
|
||||
|
||||
|
||||
const QString appName = QString("PkmGCSaveEditor v%1.%2").arg(PKMGCSAVEEDITOR_VERSION_MAJOR).arg(PKMGCSAVEEDITOR_VERSION_MINOR);
|
||||
|
||||
using namespace GCUIs;
|
||||
using namespace XDUIs;
|
||||
using namespace LibPkmGC;
|
||||
@@ -105,7 +102,9 @@ MainWindow::MainWindow() : QMainWindow(), centralWidget(new MWCentralWidget) {
|
||||
ignoreDataCorruptionAction = new QAction(this);
|
||||
ignoreDataCorruptionAction->setCheckable(true);
|
||||
optionsMenu->addAction(ignoreDataCorruptionAction);
|
||||
|
||||
bugFixesSubMenu = optionsMenu->addMenu(tr("&Bug fixes"));
|
||||
colosseumBugsAffectingPokemonAction = new QAction(this);
|
||||
bugFixesSubMenu->addAction(colosseumBugsAffectingPokemonAction);
|
||||
setCentralWidget(centralWidget);
|
||||
|
||||
|
||||
@@ -121,11 +120,13 @@ MainWindow::MainWindow() : QMainWindow(), centralWidget(new MWCentralWidget) {
|
||||
|
||||
saveFileAction->setDisabled(true);
|
||||
saveFileAsAction->setDisabled(true);
|
||||
colosseumBugsAffectingPokemonAction->setDisabled(true);
|
||||
|
||||
connect(openFileAction, SIGNAL(triggered()), this, SLOT(openSaveFile()));
|
||||
connect(saveFileAction, SIGNAL(triggered()), this, SLOT(saveSaveFile()));
|
||||
connect(saveFileAsAction, SIGNAL(triggered()), this, SLOT(saveSaveFileAs()));
|
||||
connect(exitAction, SIGNAL(triggered()), this, SLOT(close()));
|
||||
connect(colosseumBugsAffectingPokemonAction, SIGNAL(triggered()), this, SLOT(fixColosseumBugsAffectingPokemon()));
|
||||
connect(ignoreDataCorruptionAction, SIGNAL(triggered()), this, SLOT(changeIgnoreDataCorruptionStatus()));
|
||||
}
|
||||
|
||||
@@ -216,7 +217,9 @@ void MainWindow::updateText(void) {
|
||||
for (QList<QAction*>::iterator it = actions2.begin() + 1; it != actions2.end(); ++it)
|
||||
(*it)->setText(VersionInfoLayout::languageNames()[(*it)->data().toInt()]);
|
||||
|
||||
ignoreDataCorruptionAction->setText(tr("Ignore data corruption"));
|
||||
bugFixesSubMenu->setTitle(tr("&Bug fixes"));
|
||||
colosseumBugsAffectingPokemonAction->setText(tr("Bugs affecting &Pok\xc3\xa9mon (Colosseum, PkmGCSaveEditor \xe2\x89\xa4 1.1.0)"));
|
||||
ignoreDataCorruptionAction->setText(tr("&Ignore data corruption"));
|
||||
}
|
||||
|
||||
|
||||
@@ -269,6 +272,11 @@ void MainWindow::changeIgnoreDataCorruptionStatus(void) {
|
||||
ignoreDataCorruption = ignoreDataCorruptionAction->isChecked();
|
||||
}
|
||||
|
||||
void MainWindow::fixColosseumBugsAffectingPokemon(void) {
|
||||
if (currentSave != NULL) static_cast<Colosseum::SaveEditing::Save*>(currentSave)->fixBugsAffectingPokemon();
|
||||
else if(currentSaveSlot != NULL) static_cast<Colosseum::SaveEditing::SaveSlot*>(currentSaveSlot)->fixBugsAffectingPokemon();
|
||||
}
|
||||
|
||||
void MainWindow::changeEvent(QEvent* ev) {
|
||||
if (ev == NULL) return;
|
||||
switch (ev->type()) {
|
||||
@@ -388,11 +396,13 @@ void MainWindow::openSaveFile(void) {
|
||||
this->setWindowTitle(appName);
|
||||
saveFileAction->setDisabled(true);
|
||||
saveFileAsAction->setDisabled(true);
|
||||
colosseumBugsAffectingPokemonAction->setDisabled(true);
|
||||
}
|
||||
else {
|
||||
this->setWindowTitle(appName + " - " + currentSaveFileName);
|
||||
saveFileAction->setDisabled(false);
|
||||
saveFileAsAction->setDisabled(false);
|
||||
colosseumBugsAffectingPokemonAction->setDisabled(!LIBPKMGC_IS_COLOSSEUM(SaveEditing::SaveSlot, currentSaveSlot));
|
||||
}
|
||||
|
||||
centralWidget->currentSaveSlotChangeHandler();
|
||||
@@ -467,6 +477,13 @@ void MainWindow::loadSettings(void) {
|
||||
if (interfaceLanguage.isEmpty()) interfaceLanguage = "auto";
|
||||
if (dumpedNamesLanguage > Spanish) dumpedNamesLanguage = NoLanguage;
|
||||
|
||||
if (settings->value("LibPkmGCVersion").toInt() < 1001001 || settings->value("Version").toInt() < 1001001) {
|
||||
QMessageBox::warning(this, tr("Warning"), tr("You have used a version of PkmGCSaveEditor older than 1.1.1.<br/>Please consider the following points:<ul>"
|
||||
"<li>If and <b>only</b> if you have modified a <b>Colosseum</b> save file with that previous version, please load this save file again, and click \"Bugs affecting Pok\xc3\xa9mon...\""
|
||||
"(in \"Options\", \"Bug fixes\"). <b>Do it only once and only once</b> (for each concerned save file).</li>"
|
||||
"<li>If you have imported or exported a Pok\xc3\xa9mon in the GBA format, please check its status alteration, its EVs, and its game of origin.</li></ul>"));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void MainWindow::saveSettings(void) {
|
||||
|
||||
@@ -75,6 +75,8 @@ public slots:
|
||||
|
||||
void changeIgnoreDataCorruptionStatus(void);
|
||||
|
||||
void fixColosseumBugsAffectingPokemon(void);
|
||||
|
||||
|
||||
protected:
|
||||
void closeEvent(QCloseEvent* ev);
|
||||
@@ -97,6 +99,8 @@ private:
|
||||
QActionGroup *interfaceLangGroup;
|
||||
QMenu* dumpedNamesLangSubMenu;
|
||||
QActionGroup *dumpedNamesLangGroup;
|
||||
QMenu* bugFixesSubMenu;
|
||||
QAction* colosseumBugsAffectingPokemonAction;
|
||||
QAction* ignoreDataCorruptionAction;
|
||||
QSettings *settings;
|
||||
|
||||
|
||||
@@ -757,49 +757,49 @@
|
||||
<translation>Ribbons</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GCUIs/PokemonUI.cpp" line="611"/>
|
||||
<location filename="../src/GCUIs/PokemonUI.cpp" line="614"/>
|
||||
<source>Genderless</source>
|
||||
<translation>Genderless</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GCUIs/PokemonUI.cpp" line="627"/>
|
||||
<location filename="../src/GCUIs/PokemonUI.cpp" line="630"/>
|
||||
<source>Unown form: </source>
|
||||
<translation>Unown form: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GCUIs/PokemonUI.cpp" line="632"/>
|
||||
<location filename="../src/GCUIs/PokemonUI.cpp" line="635"/>
|
||||
<source>will evolve into: </source>
|
||||
<translation>will evolve into: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GCUIs/PokemonUI.cpp" line="644"/>
|
||||
<location filename="../src/GCUIs/PokemonUI.cpp" line="668"/>
|
||||
<location filename="../src/GCUIs/PokemonUI.cpp" line="647"/>
|
||||
<location filename="../src/GCUIs/PokemonUI.cpp" line="671"/>
|
||||
<source>Invalid version info</source>
|
||||
<translation>Invalid version info</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GCUIs/PokemonUI.cpp" line="647"/>
|
||||
<location filename="../src/GCUIs/PokemonUI.cpp" line="671"/>
|
||||
<location filename="../src/GCUIs/PokemonUI.cpp" line="650"/>
|
||||
<location filename="../src/GCUIs/PokemonUI.cpp" line="674"/>
|
||||
<source>"Invalid Pokémon" flag set</source>
|
||||
<translation>"Invalid Pokémon" flag set</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GCUIs/PokemonUI.cpp" line="832"/>
|
||||
<location filename="../src/GCUIs/PokemonUI.cpp" line="840"/>
|
||||
<source>Location caught (see <a href='http://bulbapedia.bulbagarden.net/wiki/List_of_locations_by_index_number_(Generation_III)'>here</a>)</source>
|
||||
<translation>Location caught (see <a href='http://bulbapedia.bulbagarden.net/wiki/List_of_locations_by_index_number_(Generation_III)'>here</a>)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GCUIs/PokemonUI.cpp" line="834"/>
|
||||
<location filename="../src/GCUIs/PokemonUI.cpp" line="842"/>
|
||||
<source>Location caught (see <a href='http://bulbapedia.bulbagarden.net/wiki/List_of_locations_by_index_number_(GCN)'>here</a>)</source>
|
||||
<translation>Location caught (see <a href='http://bulbapedia.bulbagarden.net/wiki/List_of_locations_by_index_number_(GCN)'>here</a>)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GCUIs/PokemonUI.cpp" line="839"/>
|
||||
<location filename="../src/GCUIs/PokemonUI.cpp" line="847"/>
|
||||
<source>Warning</source>
|
||||
<translation>Warning</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GCUIs/PokemonUI.cpp" line="839"/>
|
||||
<location filename="../src/GCUIs/PokemonUI.cpp" line="847"/>
|
||||
<source>The version info you specified is invalid. The game will therefore consider this Pokémon invalid.</source>
|
||||
<translation>The version info you specified is invalid. The game will therefore consider this Pokémon invalid.</translation>
|
||||
</message>
|
||||
@@ -894,32 +894,32 @@
|
||||
<context>
|
||||
<name>MWCentralWidget</name>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="47"/>
|
||||
<location filename="../src/MainWindow.cpp" line="44"/>
|
||||
<source>Game configuration</source>
|
||||
<translation>Game configuration</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="48"/>
|
||||
<location filename="../src/MainWindow.cpp" line="45"/>
|
||||
<source>Trainer info, Party and Bag</source>
|
||||
<translation>Trainer info, Party and Bag</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="49"/>
|
||||
<location filename="../src/MainWindow.cpp" line="46"/>
|
||||
<source>PC</source>
|
||||
<translation>PC</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="50"/>
|
||||
<location filename="../src/MainWindow.cpp" line="47"/>
|
||||
<source>Daycare</source>
|
||||
<translation>Daycare</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="51"/>
|
||||
<location filename="../src/MainWindow.cpp" line="48"/>
|
||||
<source>Strategy memo</source>
|
||||
<translation>Strategy memo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="52"/>
|
||||
<location filename="../src/MainWindow.cpp" line="49"/>
|
||||
<source>Purifier</source>
|
||||
<translation>Purifier</translation>
|
||||
</message>
|
||||
@@ -927,147 +927,159 @@
|
||||
<context>
|
||||
<name>MainWindow</name>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="85"/>
|
||||
<location filename="../src/MainWindow.cpp" line="197"/>
|
||||
<location filename="../src/MainWindow.cpp" line="82"/>
|
||||
<location filename="../src/MainWindow.cpp" line="198"/>
|
||||
<source>&File</source>
|
||||
<translation>&File</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="102"/>
|
||||
<location filename="../src/MainWindow.cpp" line="204"/>
|
||||
<location filename="../src/MainWindow.cpp" line="99"/>
|
||||
<location filename="../src/MainWindow.cpp" line="205"/>
|
||||
<source>&Options</source>
|
||||
<translation>&Options</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="103"/>
|
||||
<location filename="../src/MainWindow.cpp" line="205"/>
|
||||
<location filename="../src/MainWindow.cpp" line="100"/>
|
||||
<location filename="../src/MainWindow.cpp" line="206"/>
|
||||
<source>&Interface language</source>
|
||||
<translation>&Interface language</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="104"/>
|
||||
<location filename="../src/MainWindow.cpp" line="206"/>
|
||||
<location filename="../src/MainWindow.cpp" line="101"/>
|
||||
<location filename="../src/MainWindow.cpp" line="207"/>
|
||||
<source>&Dumped names language</source>
|
||||
<translation>&Dumped names language</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="199"/>
|
||||
<location filename="../src/MainWindow.cpp" line="105"/>
|
||||
<location filename="../src/MainWindow.cpp" line="220"/>
|
||||
<source>&Bug fixes</source>
|
||||
<translation>&Bug fixes</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="200"/>
|
||||
<source>&Open...</source>
|
||||
<translation>&Open...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="200"/>
|
||||
<location filename="../src/MainWindow.cpp" line="201"/>
|
||||
<source>&Save</source>
|
||||
<translation>&Save</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="201"/>
|
||||
<location filename="../src/MainWindow.cpp" line="202"/>
|
||||
<source>Save &as...</source>
|
||||
<translation>Save &as...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="202"/>
|
||||
<location filename="../src/MainWindow.cpp" line="203"/>
|
||||
<source>&Exit</source>
|
||||
<translation>&Exit</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="210"/>
|
||||
<location filename="../src/MainWindow.cpp" line="211"/>
|
||||
<location filename="../src/MainWindow.cpp" line="212"/>
|
||||
<source>Select &automatically</source>
|
||||
<translation>Select &automatically</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="219"/>
|
||||
<source>Ignore data corruption</source>
|
||||
<translation>Ignore data corruption</translation>
|
||||
<location filename="../src/MainWindow.cpp" line="221"/>
|
||||
<source>Bugs affecting &Pokémon (Colosseum, PkmGCSaveEditor ≤ 1.1.0)</source>
|
||||
<translation>Bugs affecting &Pokémon (Colosseum, PkmGCSaveEditor ≤ 1.1.0)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="298"/>
|
||||
<location filename="../src/MainWindow.cpp" line="324"/>
|
||||
<location filename="../src/MainWindow.cpp" line="441"/>
|
||||
<location filename="../src/MainWindow.cpp" line="222"/>
|
||||
<source>&Ignore data corruption</source>
|
||||
<translation>&Ignore data corruption</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="306"/>
|
||||
<location filename="../src/MainWindow.cpp" line="332"/>
|
||||
<location filename="../src/MainWindow.cpp" line="451"/>
|
||||
<source>GCI save files (*.gci)</source>
|
||||
<translation>GCI save files (*.gci)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="299"/>
|
||||
<location filename="../src/MainWindow.cpp" line="325"/>
|
||||
<location filename="../src/MainWindow.cpp" line="442"/>
|
||||
<location filename="../src/MainWindow.cpp" line="307"/>
|
||||
<location filename="../src/MainWindow.cpp" line="333"/>
|
||||
<location filename="../src/MainWindow.cpp" line="452"/>
|
||||
<source>Raw save files (*.bin)</source>
|
||||
<translation>Raw save files (*.bin)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="301"/>
|
||||
<location filename="../src/MainWindow.cpp" line="309"/>
|
||||
<source>The save file has been modified.</source>
|
||||
<translation>The save file has been modified.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="302"/>
|
||||
<location filename="../src/MainWindow.cpp" line="310"/>
|
||||
<source>Do you want to save your changes?</source>
|
||||
<translation>Do you want to save your changes?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="327"/>
|
||||
<location filename="../src/MainWindow.cpp" line="335"/>
|
||||
<source>Could not open file.</source>
|
||||
<translation>Could not open file.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="328"/>
|
||||
<location filename="../src/MainWindow.cpp" line="336"/>
|
||||
<source>An error occured while reading the specified save file.</source>
|
||||
<translation>An error occured while reading the specified save file.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="331"/>
|
||||
<location filename="../src/MainWindow.cpp" line="339"/>
|
||||
<source>Open save file</source>
|
||||
<translation>Open save file</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="331"/>
|
||||
<location filename="../src/MainWindow.cpp" line="339"/>
|
||||
<source>All Files (*)</source>
|
||||
<translation>All Files (*)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="347"/>
|
||||
<location filename="../src/MainWindow.cpp" line="353"/>
|
||||
<location filename="../src/MainWindow.cpp" line="358"/>
|
||||
<location filename="../src/MainWindow.cpp" line="382"/>
|
||||
<location filename="../src/MainWindow.cpp" line="421"/>
|
||||
<location filename="../src/MainWindow.cpp" line="432"/>
|
||||
<location filename="../src/MainWindow.cpp" line="355"/>
|
||||
<location filename="../src/MainWindow.cpp" line="361"/>
|
||||
<location filename="../src/MainWindow.cpp" line="366"/>
|
||||
<location filename="../src/MainWindow.cpp" line="390"/>
|
||||
<location filename="../src/MainWindow.cpp" line="431"/>
|
||||
<location filename="../src/MainWindow.cpp" line="442"/>
|
||||
<source>Error</source>
|
||||
<translation>Error</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="347"/>
|
||||
<location filename="../src/MainWindow.cpp" line="355"/>
|
||||
<source>Invalid file size.</source>
|
||||
<translation>Invalid file size.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="377"/>
|
||||
<location filename="../src/MainWindow.cpp" line="379"/>
|
||||
<location filename="../src/MainWindow.cpp" line="385"/>
|
||||
<location filename="../src/MainWindow.cpp" line="387"/>
|
||||
<location filename="../src/MainWindow.cpp" line="481"/>
|
||||
<source>Warning</source>
|
||||
<translation>Warning</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="377"/>
|
||||
<location filename="../src/MainWindow.cpp" line="385"/>
|
||||
<source>The backup save slot was loaded because the most recent save slot is corrupt.</source>
|
||||
<translation>The backup save slot was loaded because the most recent save slot is corrupt.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="379"/>
|
||||
<location filename="../src/MainWindow.cpp" line="387"/>
|
||||
<source>The second backup save slot was loaded because the other ones are corrupt.</source>
|
||||
<translation>The second backup save slot was loaded because the other ones are corrupt.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="382"/>
|
||||
<location filename="../src/MainWindow.cpp" line="390"/>
|
||||
<source>All save slots are corrupt.</source>
|
||||
<translation>All save slots are corrupt.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="404"/>
|
||||
<location filename="../src/MainWindow.cpp" line="414"/>
|
||||
<source>No save file loaded</source>
|
||||
<translation>No save file loaded</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../src/MainWindow.cpp" line="407"/>
|
||||
<location filename="../src/MainWindow.cpp" line="417"/>
|
||||
<source>%1, %n save(s)</source>
|
||||
<translation>
|
||||
<numerusform>%1, %n save</numerusform>
|
||||
@@ -1075,35 +1087,40 @@
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="408"/>
|
||||
<location filename="../src/MainWindow.cpp" line="418"/>
|
||||
<source>Colosseum</source>
|
||||
<translation>Colosseum</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="408"/>
|
||||
<location filename="../src/MainWindow.cpp" line="418"/>
|
||||
<source>XD</source>
|
||||
<translation>XD</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="413"/>
|
||||
<location filename="../src/MainWindow.cpp" line="423"/>
|
||||
<source>Could not write to file.</source>
|
||||
<translation>Could not write to file.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="414"/>
|
||||
<location filename="../src/MainWindow.cpp" line="424"/>
|
||||
<source>An error occured while writing to the specified save file.</source>
|
||||
<translation>An error occured while writing to the specified save file.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="445"/>
|
||||
<location filename="../src/MainWindow.cpp" line="455"/>
|
||||
<source>All files (*)</source>
|
||||
<translation>All files (*)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="446"/>
|
||||
<location filename="../src/MainWindow.cpp" line="456"/>
|
||||
<source>Save save file</source>
|
||||
<translation>Save save file</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="481"/>
|
||||
<source>You have used a version of PkmGCSaveEditor older than 1.1.1.<br/>Please consider the following points:<ul><li>If and <b>only</b> if you have modified a <b>Colosseum</b> save file with that previous version, please load this save file again, and click "Bugs affecting Pokémon..."(in "Options", "Bug fixes"). <b>Do it only once and only once</b> (for each concerned save file).</li><li>If you have imported or exported a Pokémon in the GBA format, please check its status alteration, its EVs, and its game of origin.</li></ul></source>
|
||||
<translation>You have used a version of PkmGCSaveEditor older than 1.1.1.<br/>Please consider the following points:<ul><li>If and <b>only</b> if you have modified a <b>Colosseum</b> save file with that previous version, please load this save file again, and click "Bugs affecting Pokémon..."(in "Options", "Bug fixes"). <b>Do it only once and only once</b> (for each concerned save file).</li><li>If you have imported or exported a Pokémon in the GBA format, please check its status alteration, its EVs, and its game of origin.</li></ul></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TrainerInfoLayout</name>
|
||||
|
||||
@@ -757,49 +757,49 @@
|
||||
<translation>Rubans</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GCUIs/PokemonUI.cpp" line="611"/>
|
||||
<location filename="../src/GCUIs/PokemonUI.cpp" line="614"/>
|
||||
<source>Genderless</source>
|
||||
<translation>Asexué</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GCUIs/PokemonUI.cpp" line="627"/>
|
||||
<location filename="../src/GCUIs/PokemonUI.cpp" line="630"/>
|
||||
<source>Unown form: </source>
|
||||
<translation>Forme Zarbi : </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GCUIs/PokemonUI.cpp" line="632"/>
|
||||
<location filename="../src/GCUIs/PokemonUI.cpp" line="635"/>
|
||||
<source>will evolve into: </source>
|
||||
<translation>évoluera en : </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GCUIs/PokemonUI.cpp" line="644"/>
|
||||
<location filename="../src/GCUIs/PokemonUI.cpp" line="668"/>
|
||||
<location filename="../src/GCUIs/PokemonUI.cpp" line="647"/>
|
||||
<location filename="../src/GCUIs/PokemonUI.cpp" line="671"/>
|
||||
<source>Invalid version info</source>
|
||||
<translation>Infos de version invalides</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GCUIs/PokemonUI.cpp" line="647"/>
|
||||
<location filename="../src/GCUIs/PokemonUI.cpp" line="671"/>
|
||||
<location filename="../src/GCUIs/PokemonUI.cpp" line="650"/>
|
||||
<location filename="../src/GCUIs/PokemonUI.cpp" line="674"/>
|
||||
<source>"Invalid Pokémon" flag set</source>
|
||||
<translation>Drapeau "Pokémon invalide" activé</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GCUIs/PokemonUI.cpp" line="832"/>
|
||||
<location filename="../src/GCUIs/PokemonUI.cpp" line="840"/>
|
||||
<source>Location caught (see <a href='http://bulbapedia.bulbagarden.net/wiki/List_of_locations_by_index_number_(Generation_III)'>here</a>)</source>
|
||||
<translation>Lieu de capture (cf. <a href='http://bulbapedia.bulbagarden.net/wiki/List_of_locations_by_index_number_(Generation_III)'>Bulbapedia</a>)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GCUIs/PokemonUI.cpp" line="834"/>
|
||||
<location filename="../src/GCUIs/PokemonUI.cpp" line="842"/>
|
||||
<source>Location caught (see <a href='http://bulbapedia.bulbagarden.net/wiki/List_of_locations_by_index_number_(GCN)'>here</a>)</source>
|
||||
<translation>Lieu de capture (cf. <a href='http://bulbapedia.bulbagarden.net/wiki/List_of_locations_by_index_number_(GCN)'>Bulbapedia</a>)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GCUIs/PokemonUI.cpp" line="839"/>
|
||||
<location filename="../src/GCUIs/PokemonUI.cpp" line="847"/>
|
||||
<source>Warning</source>
|
||||
<translation>Avertissement</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/GCUIs/PokemonUI.cpp" line="839"/>
|
||||
<location filename="../src/GCUIs/PokemonUI.cpp" line="847"/>
|
||||
<source>The version info you specified is invalid. The game will therefore consider this Pokémon invalid.</source>
|
||||
<translation>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.</translation>
|
||||
</message>
|
||||
@@ -894,32 +894,32 @@
|
||||
<context>
|
||||
<name>MWCentralWidget</name>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="47"/>
|
||||
<location filename="../src/MainWindow.cpp" line="44"/>
|
||||
<source>Game configuration</source>
|
||||
<translation>Configuration du jeu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="48"/>
|
||||
<location filename="../src/MainWindow.cpp" line="45"/>
|
||||
<source>Trainer info, Party and Bag</source>
|
||||
<translation>Infos dresseur, Equipe et Sac</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="49"/>
|
||||
<location filename="../src/MainWindow.cpp" line="46"/>
|
||||
<source>PC</source>
|
||||
<translation>PC</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="50"/>
|
||||
<location filename="../src/MainWindow.cpp" line="47"/>
|
||||
<source>Daycare</source>
|
||||
<translation>Pension</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="51"/>
|
||||
<location filename="../src/MainWindow.cpp" line="48"/>
|
||||
<source>Strategy memo</source>
|
||||
<translation>Mémo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="52"/>
|
||||
<location filename="../src/MainWindow.cpp" line="49"/>
|
||||
<source>Purifier</source>
|
||||
<translation>Purificateur</translation>
|
||||
</message>
|
||||
@@ -927,147 +927,159 @@
|
||||
<context>
|
||||
<name>MainWindow</name>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="85"/>
|
||||
<location filename="../src/MainWindow.cpp" line="197"/>
|
||||
<location filename="../src/MainWindow.cpp" line="82"/>
|
||||
<location filename="../src/MainWindow.cpp" line="198"/>
|
||||
<source>&File</source>
|
||||
<translation>&Fichier</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="102"/>
|
||||
<location filename="../src/MainWindow.cpp" line="204"/>
|
||||
<location filename="../src/MainWindow.cpp" line="99"/>
|
||||
<location filename="../src/MainWindow.cpp" line="205"/>
|
||||
<source>&Options</source>
|
||||
<translation>&Options</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="103"/>
|
||||
<location filename="../src/MainWindow.cpp" line="205"/>
|
||||
<location filename="../src/MainWindow.cpp" line="100"/>
|
||||
<location filename="../src/MainWindow.cpp" line="206"/>
|
||||
<source>&Interface language</source>
|
||||
<translation>Langue de l'&interface</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="104"/>
|
||||
<location filename="../src/MainWindow.cpp" line="206"/>
|
||||
<location filename="../src/MainWindow.cpp" line="101"/>
|
||||
<location filename="../src/MainWindow.cpp" line="207"/>
|
||||
<source>&Dumped names language</source>
|
||||
<translation>Langue des noms &extraits</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="199"/>
|
||||
<location filename="../src/MainWindow.cpp" line="105"/>
|
||||
<location filename="../src/MainWindow.cpp" line="220"/>
|
||||
<source>&Bug fixes</source>
|
||||
<translation>&Correctifs de bugs</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="200"/>
|
||||
<source>&Open...</source>
|
||||
<translation>&Ouvrir...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="200"/>
|
||||
<location filename="../src/MainWindow.cpp" line="201"/>
|
||||
<source>&Save</source>
|
||||
<translation>&Enregistrer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="201"/>
|
||||
<location filename="../src/MainWindow.cpp" line="202"/>
|
||||
<source>Save &as...</source>
|
||||
<translation>Enregistrer &sous...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="202"/>
|
||||
<location filename="../src/MainWindow.cpp" line="203"/>
|
||||
<source>&Exit</source>
|
||||
<translation>&Quitter</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="210"/>
|
||||
<location filename="../src/MainWindow.cpp" line="211"/>
|
||||
<location filename="../src/MainWindow.cpp" line="212"/>
|
||||
<source>Select &automatically</source>
|
||||
<translation>Sélectionner &automatiquement</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="219"/>
|
||||
<source>Ignore data corruption</source>
|
||||
<translation>Ignorer la corruption des données</translation>
|
||||
<location filename="../src/MainWindow.cpp" line="221"/>
|
||||
<source>Bugs affecting &Pokémon (Colosseum, PkmGCSaveEditor ≤ 1.1.0)</source>
|
||||
<translation>Bugs affectant les &Pokémon (Colosseum, PkmGCSaveEditor ≤ 1.1.0)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="298"/>
|
||||
<location filename="../src/MainWindow.cpp" line="324"/>
|
||||
<location filename="../src/MainWindow.cpp" line="441"/>
|
||||
<location filename="../src/MainWindow.cpp" line="222"/>
|
||||
<source>&Ignore data corruption</source>
|
||||
<translation>&Ignorer la corruption des données</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="306"/>
|
||||
<location filename="../src/MainWindow.cpp" line="332"/>
|
||||
<location filename="../src/MainWindow.cpp" line="451"/>
|
||||
<source>GCI save files (*.gci)</source>
|
||||
<translation>Fichiers de sauvegarde GCI (*.gci)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="299"/>
|
||||
<location filename="../src/MainWindow.cpp" line="325"/>
|
||||
<location filename="../src/MainWindow.cpp" line="442"/>
|
||||
<location filename="../src/MainWindow.cpp" line="307"/>
|
||||
<location filename="../src/MainWindow.cpp" line="333"/>
|
||||
<location filename="../src/MainWindow.cpp" line="452"/>
|
||||
<source>Raw save files (*.bin)</source>
|
||||
<translation>Fichiers de sauvegarde bruts (*.bin)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="301"/>
|
||||
<location filename="../src/MainWindow.cpp" line="309"/>
|
||||
<source>The save file has been modified.</source>
|
||||
<translation>Le fichier de sauvegarde a été modifié.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="302"/>
|
||||
<location filename="../src/MainWindow.cpp" line="310"/>
|
||||
<source>Do you want to save your changes?</source>
|
||||
<translation>Voulez-vous enregistrer vos modifications ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="327"/>
|
||||
<location filename="../src/MainWindow.cpp" line="335"/>
|
||||
<source>Could not open file.</source>
|
||||
<translation>Impossible d'ouvrir le fichier.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="328"/>
|
||||
<location filename="../src/MainWindow.cpp" line="336"/>
|
||||
<source>An error occured while reading the specified save file.</source>
|
||||
<translation>Une erreur s'est produite durant la lecture du fichier de sauvegarde.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="331"/>
|
||||
<location filename="../src/MainWindow.cpp" line="339"/>
|
||||
<source>Open save file</source>
|
||||
<translation>Ouvrir fichier de sauvegarde</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="331"/>
|
||||
<location filename="../src/MainWindow.cpp" line="339"/>
|
||||
<source>All Files (*)</source>
|
||||
<translation>Tous les fichiers (*)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="347"/>
|
||||
<location filename="../src/MainWindow.cpp" line="353"/>
|
||||
<location filename="../src/MainWindow.cpp" line="358"/>
|
||||
<location filename="../src/MainWindow.cpp" line="382"/>
|
||||
<location filename="../src/MainWindow.cpp" line="421"/>
|
||||
<location filename="../src/MainWindow.cpp" line="432"/>
|
||||
<location filename="../src/MainWindow.cpp" line="355"/>
|
||||
<location filename="../src/MainWindow.cpp" line="361"/>
|
||||
<location filename="../src/MainWindow.cpp" line="366"/>
|
||||
<location filename="../src/MainWindow.cpp" line="390"/>
|
||||
<location filename="../src/MainWindow.cpp" line="431"/>
|
||||
<location filename="../src/MainWindow.cpp" line="442"/>
|
||||
<source>Error</source>
|
||||
<translation>Erreur</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="347"/>
|
||||
<location filename="../src/MainWindow.cpp" line="355"/>
|
||||
<source>Invalid file size.</source>
|
||||
<translation>Taille de fichier invalide</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="377"/>
|
||||
<location filename="../src/MainWindow.cpp" line="379"/>
|
||||
<location filename="../src/MainWindow.cpp" line="385"/>
|
||||
<location filename="../src/MainWindow.cpp" line="387"/>
|
||||
<location filename="../src/MainWindow.cpp" line="481"/>
|
||||
<source>Warning</source>
|
||||
<translation>Avertissement</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="377"/>
|
||||
<location filename="../src/MainWindow.cpp" line="385"/>
|
||||
<source>The backup save slot was loaded because the most recent save slot is corrupt.</source>
|
||||
<translation>L'emplacement de sauvegarde de secours a été chargé car l'emplacement le plus récent est corrompu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="379"/>
|
||||
<location filename="../src/MainWindow.cpp" line="387"/>
|
||||
<source>The second backup save slot was loaded because the other ones are corrupt.</source>
|
||||
<translation>Le deuxième emplacement de sauvegarde de secours a été chargé car l'emplacement le plus récent est corrompu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="382"/>
|
||||
<location filename="../src/MainWindow.cpp" line="390"/>
|
||||
<source>All save slots are corrupt.</source>
|
||||
<translation>Tous les emplacements de sauvegarde sont corrompus.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="404"/>
|
||||
<location filename="../src/MainWindow.cpp" line="414"/>
|
||||
<source>No save file loaded</source>
|
||||
<translation>Aucune sauvegarde chargée</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../src/MainWindow.cpp" line="407"/>
|
||||
<location filename="../src/MainWindow.cpp" line="417"/>
|
||||
<source>%1, %n save(s)</source>
|
||||
<translation>
|
||||
<numerusform>%1, %n sauvegarde</numerusform>
|
||||
@@ -1075,35 +1087,40 @@
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="408"/>
|
||||
<location filename="../src/MainWindow.cpp" line="418"/>
|
||||
<source>Colosseum</source>
|
||||
<translation>Colosseum</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="408"/>
|
||||
<location filename="../src/MainWindow.cpp" line="418"/>
|
||||
<source>XD</source>
|
||||
<translation>XD</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="413"/>
|
||||
<location filename="../src/MainWindow.cpp" line="423"/>
|
||||
<source>Could not write to file.</source>
|
||||
<translation>Impossible d'écrire dans le fichier.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="414"/>
|
||||
<location filename="../src/MainWindow.cpp" line="424"/>
|
||||
<source>An error occured while writing to the specified save file.</source>
|
||||
<translation>Une erreur s'est produite pendant l'écriture des données sur le fichier de sauvegarde.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="445"/>
|
||||
<location filename="../src/MainWindow.cpp" line="455"/>
|
||||
<source>All files (*)</source>
|
||||
<translation>Tous les fichiers (*)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="446"/>
|
||||
<location filename="../src/MainWindow.cpp" line="456"/>
|
||||
<source>Save save file</source>
|
||||
<translation>Sauvegarder fichier de sauvegarde</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/MainWindow.cpp" line="481"/>
|
||||
<source>You have used a version of PkmGCSaveEditor older than 1.1.1.<br/>Please consider the following points:<ul><li>If and <b>only</b> if you have modified a <b>Colosseum</b> save file with that previous version, please load this save file again, and click "Bugs affecting Pokémon..."(in "Options", "Bug fixes"). <b>Do it only once and only once</b> (for each concerned save file).</li><li>If you have imported or exported a Pokémon in the GBA format, please check its status alteration, its EVs, and its game of origin.</li></ul></source>
|
||||
<translation>Vous avez utilisé une version de PkmGCSaveEditor plus vielle que la version 1.1.1.<br/>Veuillez considérer les points suivants : <ul><li>Si et <b>seulement</b> si vous avez modifié une sauvegarde de <b>Colosseum</b> avec cette version-là, veuillez charger cette sauvegarde à nouveau, et cliquer sur "Bug affectant les Pokémon ..." (dans "Options", "Correctifs de bugs"). <b>Ne le faites qu'une et une seule fois</b> (pour chaque sauvegarde concernée).<</li><li>Si vous avez importé ou exporté un Pokémon au format GBA, veulliez vérifier son altération de statut, ses EVs et son jeu d'origine.</li></ul></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TrainerInfoLayout</name>
|
||||
|
||||
Reference in New Issue
Block a user