diff --git a/pokeemerald-tools/.xdp-.~lock.pkmndata2.xlsx#-Yo7m4p b/pokeemerald-tools/.xdp-.~lock.pkmndata2.xlsx#-Yo7m4p deleted file mode 100644 index c4fb1ea59c..0000000000 --- a/pokeemerald-tools/.xdp-.~lock.pkmndata2.xlsx#-Yo7m4p +++ /dev/null @@ -1 +0,0 @@ -,nicksnax,bazzite,08.03.2026 14:22,file:///var/home/nicksnax/.var/app/org.libreoffice.LibreOffice/config/libreoffice/4; \ No newline at end of file diff --git a/pokeemerald-tools/.~lock.pkmndata.xlsx# b/pokeemerald-tools/.~lock.pkmndata.xlsx# deleted file mode 100644 index 9a5fce04d9..0000000000 --- a/pokeemerald-tools/.~lock.pkmndata.xlsx# +++ /dev/null @@ -1 +0,0 @@ -,nicksnax,bazzite,08.03.2026 15:22,file:///var/home/nicksnax/.var/app/org.libreoffice.LibreOffice/config/libreoffice/4; \ No newline at end of file diff --git a/pokeemerald-tools/create-new-gen-files.py b/pokeemerald-tools/create-new-gen-files.py index 16946c0c37..cb5c1e36b2 100644 --- a/pokeemerald-tools/create-new-gen-files.py +++ b/pokeemerald-tools/create-new-gen-files.py @@ -8,7 +8,7 @@ from openpyxl import load_workbook #Globals for making header, opening data, debug prints, etc Debug = 1 WriteOrAdd = 'w' -GenName = "pkmnevolved" +GenName = "PkmnEvolved" PkmnData = load_workbook('pkmndata.xlsx') PkmnDataFile = PkmnData.active @@ -39,16 +39,28 @@ with open('test.h', WriteOrAdd) as file: #Begin writing species information to .h file if Debug == 1: - for species in PkmnDataFile.iter_rows(min_row=2, max_row=5, min_col=1, max_col=PkmnDataFile.max_column): - #for species in PkmnDataFile.iter_rows(min_row=1, max_row=PkmnDataFile.max_row, min_col=1, max_col=PkmnDataFile.max_column): + #Start from second row so you do not grab data headers + for species in PkmnDataFile.iter_rows(min_row=2, max_row=10, min_col=1, max_col=PkmnDataFile.max_column): + #Check if new species if species[PkmnDataFile.max_column-1].value == 1: print("New Species Found") file.write("#if P_FAMILY_" + species[PkmnDataFile.min_column-1].value + "\n") file.write("\t[SPECIES_" + species[PkmnDataFile.min_column - 1].value + "] =\n") file.write("\t{\n") + #step through each element of the species for data in species: - file.write("\t\t" + SpeciesStructAttributes[data.column-1] + " = " + str(data.value) + ",\n") - + #types are stupid and need to be handled like this to deal with indexing issues + if PkmnDataFile.cell(row = PkmnDataFile.min_row, column = data.column).value == ".types": + types = data.value.split(',') + type1 = types[0] + type2 = types[1] + if type1 == type2: + file.write("\t\t.types = MON_TYPES(TYPE_" + type1 + "),\n") + else: + file.write("\t\t.types = MON_TYPES(TYPE_" + type1 + ", TYPE_"+ type2 + "),\n") + else: + file.write("\t\t" + SpeciesStructAttributes[data.column-1] + " = " + str(data.value) + ",\n") + #for data in species: #print(data.value) diff --git a/pokeemerald-tools/data-fixer.py b/pokeemerald-tools/data-fixer.py new file mode 100644 index 0000000000..1b764ba805 --- /dev/null +++ b/pokeemerald-tools/data-fixer.py @@ -0,0 +1,57 @@ +#Tool for creating new gen.h files for emerald expansion +#Takes information from excel sheet and prepares .h file for custom pokemon +import openpyxl as pyxl + +from openpyxl.workbook import Workbook +from openpyxl import load_workbook + +#Globals for making header, opening data, debug prints, etc +Debug = 1 +WriteOrAdd = 'w' +GenName = "PkmnEvolved" +PkmnData = load_workbook('pkmndata.xlsx') +PkmnDataFile = PkmnData.active + +for row in PkmnDataFile.iter_rows(min_row=1, max_row=PkmnDataFile.max_row, min_col=1, max_col=PkmnDataFile.max_column): + for data in row: + if data.column == 8 or data.column == 9: + match data.value: + case 0: + data.value = "NORMAL" + case 1: + data.value = "FIGHTING" + case 2: + data.value = "FLYING" + case 3: + data.value = "POISON" + case 4: + data.value = "GROUND" + case 5: + data.value = "ROCK" + case 6: + data.value = "BUG" + case 7: + data.value = "GHOST" + case 8: + data.value = "STEEL" + case 9: + data.value = "?????" + case 10: + data.value = "FIRE" + case 11: + data.value = "WATER" + case 12: + data.value = "GRASS" + case 13: + data.value = "ELECTRIC" + case 14: + data.value = "PSYCHIC" + case 15: + data.value = "ICE" + case 16: + data.value = "DRAGON" + case 17: + data.value = "DARK" + +PkmnData.save("pkmndata-fix.xlsx") +PkmnData.close() \ No newline at end of file diff --git a/pokeemerald-tools/pkmndata-fix.xlsx b/pokeemerald-tools/pkmndata-fix.xlsx new file mode 100644 index 0000000000..6c656ca572 Binary files /dev/null and b/pokeemerald-tools/pkmndata-fix.xlsx differ diff --git a/pokeemerald-tools/pkmndata.xlsx b/pokeemerald-tools/pkmndata.xlsx index ce07ba2816..ff3cb8fd67 100644 Binary files a/pokeemerald-tools/pkmndata.xlsx and b/pokeemerald-tools/pkmndata.xlsx differ diff --git a/pokeemerald-tools/test.h b/pokeemerald-tools/test.h index 21ab7a48ac..764223a28e 100644 --- a/pokeemerald-tools/test.h +++ b/pokeemerald-tools/test.h @@ -1,19 +1,19 @@ -//gen file for pkmnevolved +//gen file for PkmnEvolved #ifdef __INTELLISENSE__ -const struct SpeciesInfo gSpeciesInfopkmnevolved[] = +const struct SpeciesInfo gSpeciesInfoPkmnEvolved[] = { #endif #if P_FAMILY_BULBASAUR [SPECIES_BULBASAUR] = { + .speciesName = BULBASAUR, .baseHP = 45, .baseAttack = 49, .baseDefense = 49, .baseSpeed = 45, .baseSpAttack = 65, .baseSpDefense = 65, - .types1 = 12, - .types2 = 3, + .types = MON_TYPES(TYPE_GRASS, TYPE_POISON), .catchRate = 45, .expYield = 60, .evYield_HP = 0, @@ -38,14 +38,14 @@ const struct SpeciesInfo gSpeciesInfopkmnevolved[] = newspecies = 1, [SPECIES_IVYSAUR] = { + .speciesName = IVYSAUR, .baseHP = 60, .baseAttack = 62, .baseDefense = 63, .baseSpeed = 60, .baseSpAttack = 80, .baseSpDefense = 80, - .types1 = 12, - .types2 = 3, + .types = MON_TYPES(TYPE_GRASS, TYPE_POISON), .catchRate = 45, .expYield = 121, .evYield_HP = 0, @@ -70,14 +70,14 @@ const struct SpeciesInfo gSpeciesInfopkmnevolved[] = newspecies = None, [SPECIES_VENUSAUR] = { + .speciesName = VENUSAUR, .baseHP = 80, .baseAttack = 82, .baseDefense = 83, .baseSpeed = 80, .baseSpAttack = 100, .baseSpDefense = 100, - .types1 = 12, - .types2 = 3, + .types = MON_TYPES(TYPE_GRASS, TYPE_POISON), .catchRate = 45, .expYield = 185, .evYield_HP = 0, @@ -102,14 +102,14 @@ const struct SpeciesInfo gSpeciesInfopkmnevolved[] = newspecies = None, [SPECIES_ECOSAUR] = { + .speciesName = ECOSAUR, .baseHP = 84, .baseAttack = 90, .baseDefense = 85, .baseSpeed = 80, .baseSpAttack = 118, .baseSpDefense = 118, - .types1 = 12, - .types2 = 3, + .types = MON_TYPES(TYPE_GRASS, TYPE_POISON), .catchRate = 45, .expYield = 204, .evYield_HP = 0, @@ -132,4 +132,165 @@ const struct SpeciesInfo gSpeciesInfopkmnevolved[] = dex = (Green false), padding = 0, newspecies = None, + [SPECIES_TERARISAUR] = + { + .speciesName = TERARISAUR, + .baseHP = 90, + .baseAttack = 106, + .baseDefense = 91, + .baseSpeed = 80, + .baseSpAttack = 129, + .baseSpDefense = 129, + .types = MON_TYPES(TYPE_GRASS, TYPE_POISON), + .catchRate = 45, + .expYield = 215, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 1, + item1 = ????????, + item2 = ????????, + genderratio = "87% Male", + steps2hatch = 20, + basehappiness = 70, + growthrate = "Medium Fast", + egg1 = Monster, + egg2 = Grass, + ability1 = CHLOROPHYLL, + ability2 = -------, + runrate = 0, + dex = (Green false), + padding = 0, + newspecies = None, + [SPECIES_SYMBISAUR] = + { + .speciesName = SYMBISAUR, + .baseHP = 98, + .baseAttack = 119, + .baseDefense = 93, + .baseSpeed = 74, + .baseSpAttack = 138, + .baseSpDefense = 138, + .types = MON_TYPES(TYPE_GRASS, TYPE_POISON), + .catchRate = 45, + .expYield = 230, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 1, + item1 = ????????, + item2 = ????????, + genderratio = "87% Male", + steps2hatch = 20, + basehappiness = 70, + growthrate = "Medium Fast", + egg1 = Monster, + egg2 = Grass, + ability1 = CHLOROPHYLL, + ability2 = -------, + runrate = 0, + dex = (Green false), + padding = 0, + newspecies = None, +#if P_FAMILY_CHARMANDER + [SPECIES_CHARMANDER] = + { + .speciesName = CHARMANDER, + .baseHP = 39, + .baseAttack = 52, + .baseDefense = 43, + .baseSpeed = 65, + .baseSpAttack = 60, + .baseSpDefense = 50, + .types = MON_TYPES(TYPE_FIRE), + .catchRate = 45, + .expYield = 58, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + item1 = ????????, + item2 = ????????, + genderratio = "87% Male", + steps2hatch = 20, + basehappiness = 70, + growthrate = "Medium Fast", + egg1 = Monster, + egg2 = Dragon, + ability1 = BLAZE, + ability2 = -------, + runrate = 0, + dex = (Red false), + padding = 0, + newspecies = 1, + [SPECIES_CHARMELEON] = + { + .speciesName = CHARMELEON, + .baseHP = 58, + .baseAttack = 64, + .baseDefense = 58, + .baseSpeed = 80, + .baseSpAttack = 80, + .baseSpDefense = 65, + .types = MON_TYPES(TYPE_FIRE), + .catchRate = 45, + .expYield = 115, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + item1 = ????????, + item2 = ????????, + genderratio = "87% Male", + steps2hatch = 20, + basehappiness = 70, + growthrate = "Medium Fast", + egg1 = Monster, + egg2 = Dragon, + ability1 = BLAZE, + ability2 = -------, + runrate = 0, + dex = (Red false), + padding = 0, + newspecies = None, + [SPECIES_CHARIZARD] = + { + .speciesName = CHARIZARD, + .baseHP = 78, + .baseAttack = 84, + .baseDefense = 78, + .baseSpeed = 100, + .baseSpAttack = 109, + .baseSpDefense = 85, + .types = MON_TYPES(TYPE_FIRE, TYPE_FLYING), + .catchRate = 45, + .expYield = 179, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 3, + .evYield_SpDefense = 0, + item1 = ????????, + item2 = ????????, + genderratio = "87% Male", + steps2hatch = 20, + basehappiness = 70, + growthrate = "Medium Fast", + egg1 = Monster, + egg2 = Dragon, + ability1 = BLAZE, + ability2 = -------, + runrate = 0, + dex = (Red false), + padding = 0, + newspecies = None, //end of program \ No newline at end of file