initial commit

This commit is contained in:
Dawson Matthews
2026-01-14 18:21:38 -07:00
commit f766f22749
3 changed files with 131 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
*.jar

47
ZAOUMegaList.txt Normal file
View File

@@ -0,0 +1,47 @@
Clefable-Mega: Serene Grace
Victreebel-Mega: Triage
Raichu-Mega-X: Levitate
Raichu-Mega-Y: Transistor
Starmie-Mega: Pure Power, -40 Atk
Dragonite-Mega: Soul-Heart
Meganium-Mega: Flower Veil
Feraligatr-Mega: Dragon's Maw
Ampharos-Mega: Fluffy
Absol-Mega-Z: Technician
Chimecho-Mega: Levitate
Skarmory-Mega: Tough Claws
Staraptor-Mega: Tough Claws
Gallade-Mega: Sharpness
Froslass-Mega: Snow Warning
Garchomp-Mega-Z: Rough Skin
Lucario-Mega-Z: Mind's Eye
Heatran-Mega: Earth Eater
Darkrai-Mega: Dark Aura
Emboar-Mega: Supreme Overlord
Excadrill-Mega: Mold Breaker
Golurk-Mega: Adaptability
Audino-Mega: Regenerator
Scolipede-Mega: Tinted Lens
Scrafty-Mega: Shed Skin
Eelektross-Mega: Hadron Engine
Chandelure-Mega: Magic Guard
Chesnaught-Mega: Bulletproof
Delphox-Mega: Levitate
Greninja-Mega: Protean
Meowstic-Mega: Psychic Surge
Pyroar-Mega: Drought
Dragalge-Mega: Regenerator
Floette-Mega: Regenerator
Malamar-Mega: Contrary
Barbaracle-Mega: Tough Claws
Hawlucha-Mega: Stamina
Zygarde-Mega: Aura Break
Crabominable-Mega: Ice Scales
Golisopod-Mega: Regenerator
Drampa-Mega: Drizzle
Magearna-Mega: Soul-Heart
Zeraora-Mega: Volt Absorb
Falinks-Mega: Dauntless Shield
Scovillain-Mega: Contrary
Glimmora-Mega: Rocky Payload
Baxcalibur-Mega: Thermal Exchange

83
change_abilities.py Normal file
View File

@@ -0,0 +1,83 @@
'''
Author: Dawson Matthews
Date: 01/14/26
Takes as input:
1. The directory in which all of the json files are listed in their respective
directories seperated by generation from generation1 to generation9
2. The file containing all desired mega pokemon and their target abilities in
the format as shown by: Darkrai-Mega: Dark Aura
3. The name of the new directory to put the changed files in
Produces as output a new directory with the fixed files in it.
'''
import sys
import os
import json
def get_target_abilities(ability_data_path):
'''
Reads in the data from the path and converts date from the showdown format to the
cobblemon format as a pythyon dictionary i.e. "Darkrai-Mega: Dark Aura" -> {"darkrai": "darkaura"}
'''
ability_data = {}
with open(ability_data_path, "r", encoding="utf-8") as f:
lines = f.readlines()
for line in lines:
line = (line.strip()).split() # Removing new line characters, as well as leading and trailing spaces. Then split it by the middle space
species_name = line[0][:-6].lower() # Removes the "-Mega" suffix and sends the name to lower case
ability = (line[1].replace(" ", "")).lower() # Removes the spaces
ability_data[species_name] = ability
return ability_data
def write_augmented_species_data(src_dir, dst_dir, species_data):
'''
Takes the new species data in dictionary form and creates the new data
'''
gen_dirs = os.listdir(species_additions_dir) # Get a list of all directories in the data path, each corresponding to one generation
for gen_dir in gen_dirs:
dir_path = os.path.join(data_path, gen_dir)
if os.path.isdir(dir_path) == False: # Make sure it's actually a real file path
return 1
species_files = os.listdir(dir_path)
for species_file_name in species_files:
species_file_path = os.path.join(dir_path, species_file_name)
with open(species_file_path, "r", encoding="utf-8") as f:
species_data = json.load(f)
# Edit the ability data (abities is a list of strings, sometimes having an "h:" in front of the name if it's the hidden ability)
forms = species_data["forms"]
for form in forms:
abilities = form["abilities"]
for ability in abilities:
def main():
program_name = sys.argv[0]
usage_string = f"Usage: {program_name} <source directory> <target directory> <target data>"
num_args = len(sys.argv)
if num_args != 4:
print(usage_string)
_, src_dir, dst_dir, data_path = sys.argv # Gets the required information from the program arguments
ability_data = get_target_abilities(data_path)
write_augmented_species_data(src_dir, dst_dir, ability_data)
if __name__ == "__main__":
main()