|
@@ -0,0 +1,137 @@
|
|
|
|
+import sys
|
|
|
|
+import os
|
|
|
|
+import argparse
|
|
|
|
+import math
|
|
|
|
+
|
|
|
|
+parser = argparse.ArgumentParser()
|
|
|
|
+parser.add_argument('-dir', '--directory', '--game-directory', dest='game_dir',
|
|
|
|
+ help='set path of GAME_DIR', required=True)
|
|
|
|
+
|
|
|
|
+print("Type arguments and tap enter. If there are not any arguments tap enter with empty string")
|
|
|
|
+print("Use -h or --help to get list of arguments")
|
|
|
|
+args = parser.parse_args(input().split())
|
|
|
|
+path_to_game = args.game_dir
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+def get_lvl(path):
|
|
|
|
+ lvl = 0
|
|
|
|
+ for file in os.listdir(path=path):
|
|
|
|
+ if file == 'unitname.txt':
|
|
|
|
+ cur_file = open(path + '\\' + file, 'r')
|
|
|
|
+ # print(cur_file)
|
|
|
|
+ name = cur_file.read()
|
|
|
|
+ if 'IV' in name:
|
|
|
|
+ lvl = 4
|
|
|
|
+ elif 'III' in name:
|
|
|
|
+ lvl = 3
|
|
|
|
+ elif 'II' in name:
|
|
|
|
+ lvl = 2
|
|
|
|
+ elif 'I' in name:
|
|
|
|
+ lvl = 1
|
|
|
|
+ cur_file.close()
|
|
|
|
+ return lvl
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+def get_baseclass(path):
|
|
|
|
+ for file in os.listdir(path=path):
|
|
|
|
+ if file == 'baseclass.txt':
|
|
|
|
+ cur_file = open(path + '\\' + file, 'r')
|
|
|
|
+ name = cur_file.read()
|
|
|
|
+ cur_file.close()
|
|
|
|
+ return name
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+def print_traits(file, lvl, baseclass):
|
|
|
|
+ file.write('lvl=')
|
|
|
|
+ file.write(str(lvl) + '\n')
|
|
|
|
+ file.write('cost=')
|
|
|
|
+ file.write(str(125 + 150 * (lvl - 1)) + '\n')
|
|
|
|
+ file.write('starting_ap=')
|
|
|
|
+ file.write(str(max(2, lvl ** 2 - 2 * lvl - 2 * lvl // 4)) + '\n')
|
|
|
|
+ if baseclass == 'Warrior\n' or baseclass == 'Rider\n':
|
|
|
|
+ file.write('strength=')
|
|
|
|
+ file.write(str(lvl + 1) + '\n')
|
|
|
|
+ file.write('agility=')
|
|
|
|
+ stat = max(lvl - 1, 0)
|
|
|
|
+ file.write(str(stat) + '\n')
|
|
|
|
+ file.write('intelligence=')
|
|
|
|
+ stat = max(lvl - 2, 0)
|
|
|
|
+ file.write(str(stat) + '\n')
|
|
|
|
+ elif baseclass == 'Archer\n' or baseclass == 'Rogue\n':
|
|
|
|
+ stat = max(lvl - 2, 0)
|
|
|
|
+ file.write('strength=')
|
|
|
|
+ file.write(str(stat) + '\n')
|
|
|
|
+ file.write('agility=')
|
|
|
|
+ stat = max(lvl, 0)
|
|
|
|
+ file.write(str(lvl + 1) + '\n')
|
|
|
|
+ file.write('intelligence=')
|
|
|
|
+ stat = max(lvl - 2, 0)
|
|
|
|
+ file.write(str(stat) + '\n')
|
|
|
|
+ else:
|
|
|
|
+ stat = max(lvl - 2, 0)
|
|
|
|
+ file.write('strength=')
|
|
|
|
+ file.write(str(stat) + '\n')
|
|
|
|
+ file.write('agility=')
|
|
|
|
+ stat = max(lvl - 2, 0)
|
|
|
|
+ file.write(str(stat) + '\n')
|
|
|
|
+ file.write('intelligence=')
|
|
|
|
+ file.write(str(lvl + 1) + '\n')
|
|
|
|
+
|
|
|
|
+ file.write('initiative=')
|
|
|
|
+ if baseclass == 'Rider\n' or 'Rogue\n':
|
|
|
|
+ file.write(str(math.ceil(lvl * 2.5)) + '\n')
|
|
|
|
+ elif baseclass == 'Archer\n' or 'Warrior\n':
|
|
|
|
+ file.write(str(math.ceil(lvl * 2)) + '\n')
|
|
|
|
+ elif baseclass == 'Mage\n':
|
|
|
|
+ file.write(str(math.ceil(lvl * 1.5)) + '\n')
|
|
|
|
+
|
|
|
|
+ if baseclass == 'Rogue\n':
|
|
|
|
+ file.write('magic_def=' + str(math.ceil(lvl * 1.5)) + '\n')
|
|
|
|
+ file.write('physic_def=' + str(math.ceil(lvl)) + '\n')
|
|
|
|
+ elif baseclass == 'Rider\n':
|
|
|
|
+ file.write('magic_def=' + str(max(1, int(math.ceil(lvl * 0.75)))) + '\n')
|
|
|
|
+ file.write('physic_def=' + str(math.ceil(lvl * 1.5)) + '\n')
|
|
|
|
+ elif baseclass == 'Warrior\n':
|
|
|
|
+ file.write('magic_def=' + str(max(1, int(math.ceil(lvl * 0.75)))) + '\n')
|
|
|
|
+ file.write('physic_def=' + str(math.ceil(lvl * 2)) + '\n')
|
|
|
|
+ elif baseclass == 'Mage\n':
|
|
|
|
+ file.write('magic_def=' + str(math.ceil(lvl * 2)) + '\n')
|
|
|
|
+ file.write('physic_def=' + str(max(1, int(math.ceil(lvl * 0.75)))) + '\n')
|
|
|
|
+ elif baseclass == 'Archer\n':
|
|
|
|
+ file.write('magic_def=' + str(math.ceil(lvl)) + '\n')
|
|
|
|
+ file.write('physic_def=' + str(max(1, int(math.ceil(lvl * 0.75)))) + '\n')
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+# -d D:\Honourihed\repo
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+def race_traits_fill(racename):
|
|
|
|
+ path_to_race = path_to_game + '\\assets\\units\\' + racename
|
|
|
|
+ for class_dir in os.listdir(path=path_to_race):
|
|
|
|
+ if '.' not in class_dir:
|
|
|
|
+ for file in os.listdir(path=path_to_race + '\\' + class_dir):
|
|
|
|
+ if file.startswith('traits'):
|
|
|
|
+ path = path_to_race + '\\' + class_dir + '\\' + file
|
|
|
|
+ try:
|
|
|
|
+ lvl = get_lvl(path_to_race + '\\' + class_dir)
|
|
|
|
+ baseclass = get_baseclass(path_to_race + '\\' + class_dir)
|
|
|
|
+
|
|
|
|
+ os.rename(path, path_to_race + '\\' + class_dir + '\\' + 'traits.ini')
|
|
|
|
+ path = path_to_race + '\\' + class_dir + '\\' + 'traits.ini';
|
|
|
|
+
|
|
|
|
+ cur_file = open(path, 'w')
|
|
|
|
+ print_traits(cur_file, lvl, baseclass)
|
|
|
|
+ cur_file.close()
|
|
|
|
+ print(path + ' - OK!')
|
|
|
|
+
|
|
|
|
+ except OSError:
|
|
|
|
+ print(path + ' - FAILED!')
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+def main():
|
|
|
|
+ race_traits_fill('undead')
|
|
|
|
+ race_traits_fill('human')
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+if __name__ == '__main__':
|
|
|
|
+ main()
|