#!/usr/bin/env python
import luadata
import os
import csv
def read_csv(file_path: str) -> dict:
units = {}
with open(file_path, 'r', encoding='utf-8', newline='') as file:
reader = csv.reader(file, delimiter='\t')
for row in reader:
unit_name = row[0]
weapon = row[1][len(unit_name)+1:]
if unit_name in units:
units[unit_name].append(weapon)
continue
units[unit_name] = [weapon]
return units
if __name__ == '__main__':
units = read_csv(os.path.expanduser("~/units.txt"))
for unit_name, weapons in units.items():
print(f"Working on '{unit_name}'")
# Get unit file path
unit_file = os.path.expanduser("~/.spring/games/TA.sdd/units/%s.lua" % unit_name)
# Read unit file
try:
unit = luadata.read(unit_file, encoding="utf-8")
except Exception as e:
print(f"Failed to read '{unit_file}', error was: {e}")
continue
if unit_name not in unit or "weapondefs" not in unit[unit_name]:
print("-- Bad unit")
continue
wd = unit[unit_name]["weapondefs"]
# Add tracks = false to weapondefs
for w in weapons:
if w in wd:
wd[w]["tracks"] = False
else:
print(f"-- unknown weapondef '{w}'")
# Write unit file
with open(unit_file, 'w', encoding='utf-8', newline='') as fp:
fp.write("return " + luadata.serialize(unit, encoding="utf-8", indent="\t", indent_level=0))
Long list of units and theier weapondefs that need tracks = false,
If made this based on map changes from @silvapp
The following hand-crafted script made it:
Long list of units and theier weapondefs that need
tracks = false
,