83 lines
2.9 KiB
Python
83 lines
2.9 KiB
Python
'''
|
|
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() |