1
+ import argparse
2
+ import csv
3
+ import glob
4
+ import os
5
+ import xml .etree .ElementTree
6
+
7
+
8
+ def generate_abilities (balance_data_path ):
9
+ abilities = []
10
+
11
+ for xml_file_path in glob .glob (os .path .join (balance_data_path , "*.xml" )):
12
+ tree = xml .etree .ElementTree .parse (xml_file_path )
13
+ root = tree .getroot ()
14
+
15
+ ability_elements = root .findall (".//abilities/ability" )
16
+ abilities .extend (
17
+ [
18
+ (element .get ("index" ), element .get ("id" ))
19
+ for element in ability_elements
20
+ if element .get ("index" ) and element .get ("id" )
21
+ ])
22
+
23
+ unit_name = root .get ("id" )
24
+
25
+
26
+
27
+ return abilities
28
+
29
+
30
+ def main ():
31
+ parser = argparse .ArgumentParser (description = 'Generate a [BUILD]_abilities.csv file from exported balance data.' )
32
+ parser .add_argument ('build_version' , metavar = 'BUILD_VERSION' , type = int ,
33
+ help = 'the build version of the balance data export' )
34
+ parser .add_argument ('balance_data_path' , metavar = 'BALANCE_DATA_PATH' , type = str ,
35
+ help = 'the path to the balance data export' )
36
+
37
+ args = parser .parse_args ()
38
+
39
+ abilities = generate_abilities (args .balance_data_path )
40
+
41
+ if not abilities :
42
+ raise ValueError ("No balance data found at provided balance data path." )
43
+
44
+ with open ('{}_abilities.txt' .format (args .build_version ), 'w' , newline = '' ) as csvfile :
45
+ csv_writer = csv .writer (csvfile , delimiter = ',' )
46
+ for ability_index , ability_name in abilities :
47
+ csv_writer .writerow ([ability_index , ability_name ])
48
+
49
+
50
+ if __name__ == "__main__" :
51
+ main ()
0 commit comments