|
|
@@ -110,6 +110,7 @@ def clearData(db, data):
|
|
|
cursor.execute('DELETE FROM unit_skill WHERE unit IN (SELECT id FROM unit WHERE uid = ?)', [uid])
|
|
|
cursor.execute('DELETE FROM unit WHERE uid = ?', [uid])
|
|
|
cursor.execute('DELETE FROM rune WHERE uid = ?', [uid])
|
|
|
+ cursor.execute('DELETE FROM artifact WHERE uid = ?', [uid])
|
|
|
cursor.execute('DELETE FROM building WHERE uid = ?', [uid])
|
|
|
cursor.execute('DELETE FROM decoration WHERE uid = ?', [uid])
|
|
|
cursor.execute('DELETE FROM inventory WHERE uid = ?', [uid])
|
|
|
@@ -714,7 +715,9 @@ def parseRunes(db, data):
|
|
|
efficiency = 100;
|
|
|
if max_efficiency > 100:
|
|
|
max_efficiency = 100;
|
|
|
- insert(db, "rune", (uid, id, assigned_to, runeset, slot, stars, ancient, level, quality, original_quality, value, efficiency, max_efficiency, main_stat, main_stat_value, innate_stat, innate_stat_value, substat_1, substat_1_value, substat_1_enchant, substat_1_grind, substat_2, substat_2_value, substat_2_enchant, substat_2_grind, substat_3, substat_3_value, substat_3_enchant, substat_3_grind, substat_4, substat_4_value, substat_4_enchant, substat_4_grind))
|
|
|
+ # TODO: Locked status not in JSO file.
|
|
|
+ locked = 0
|
|
|
+ insert(db, "rune", (uid, id, assigned_to, runeset, slot, stars, ancient, level, quality, original_quality, value, efficiency, max_efficiency, main_stat, main_stat_value, innate_stat, innate_stat_value, substat_1, substat_1_value, substat_1_enchant, substat_1_grind, substat_2, substat_2_value, substat_2_enchant, substat_2_grind, substat_3, substat_3_value, substat_3_enchant, substat_3_grind, substat_4, substat_4_value, substat_4_enchant, substat_4_grind, locked))
|
|
|
# Equipped runes
|
|
|
for mon in data["unit_list"]:
|
|
|
for rune in mon["runes"]:
|
|
|
@@ -820,9 +823,151 @@ def parseRunes(db, data):
|
|
|
efficiency = 100;
|
|
|
if max_efficiency > 100:
|
|
|
max_efficiency = 100;
|
|
|
- insert(db, "rune", (uid, id, assigned_to, runeset, slot, stars, ancient, level, quality, original_quality, value, efficiency, max_efficiency, main_stat, main_stat_value, innate_stat, innate_stat_value, substat_1, substat_1_value, substat_1_enchant, substat_1_grind, substat_2, substat_2_value, substat_2_enchant, substat_2_grind, substat_3, substat_3_value, substat_3_enchant, substat_3_grind, substat_4, substat_4_value, substat_4_enchant, substat_4_grind))
|
|
|
+ # TODO: Locked status not in JSO file.
|
|
|
+ locked = 0
|
|
|
+ insert(db, "rune", (uid, id, assigned_to, runeset, slot, stars, ancient, level, quality, original_quality, value, efficiency, max_efficiency, main_stat, main_stat_value, innate_stat, innate_stat_value, substat_1, substat_1_value, substat_1_enchant, substat_1_grind, substat_2, substat_2_value, substat_2_enchant, substat_2_grind, substat_3, substat_3_value, substat_3_enchant, substat_3_grind, substat_4, substat_4_value, substat_4_enchant, substat_4_grind, locked))
|
|
|
db.commit()
|
|
|
|
|
|
+"""
|
|
|
+Parses artifact data (table artifact).
|
|
|
+
|
|
|
+:param db: Sqlite database connection.
|
|
|
+:param data: Data in json format.
|
|
|
+"""
|
|
|
+def parseArtifacts(db, data):
|
|
|
+ print("Parsing artifacts...")
|
|
|
+ uid = data["wizard_info"]["wizard_id"]
|
|
|
+ # Unequipped artifacts
|
|
|
+ for artifact in data["artifacts"]:
|
|
|
+ id = artifact["rid"]
|
|
|
+ assigned_to = None
|
|
|
+ type = artifact["type"]
|
|
|
+ attribute = artifact["attribute"]
|
|
|
+ if attribute == 0:
|
|
|
+ attribute = None
|
|
|
+ archetype = artifact["unit_style"]
|
|
|
+ if archetype == 0:
|
|
|
+ archetype = None
|
|
|
+ level = artifact["level"]
|
|
|
+ quality = artifact["rank"]
|
|
|
+ original_quality = artifact["natural_rank"]
|
|
|
+ # TODO: Vaue not in JSON file. Can it be calculated?
|
|
|
+ value = 0;
|
|
|
+ main_stat = artifact["pri_effect"][0]
|
|
|
+ main_stat_value = artifact["pri_effect"][1]
|
|
|
+ locked = artifact["locked"]
|
|
|
+ if len(artifact["sec_effects"]) > 0:
|
|
|
+ effect_1 = artifact["sec_effects"][0][0]
|
|
|
+ effect_1_value = artifact["sec_effects"][0][1]
|
|
|
+ effect_1_enchant = artifact["sec_effects"][0][2]
|
|
|
+ effect_1_grind = artifact["sec_effects"][0][3]
|
|
|
+ else:
|
|
|
+ effect_1 = None
|
|
|
+ effect_1_value = 0
|
|
|
+ effect_1_enchant = 0
|
|
|
+ effect_1_grind = 0
|
|
|
+ if len(artifact["sec_effects"]) > 1:
|
|
|
+ effect_2 = artifact["sec_effects"][1][0]
|
|
|
+ effect_2_value = artifact["sec_effects"][1][1]
|
|
|
+ effect_2_enchant = artifact["sec_effects"][1][2]
|
|
|
+ effect_2_grind = artifact["sec_effects"][1][3]
|
|
|
+ else:
|
|
|
+ effect_2 = None
|
|
|
+ effect_2_value = 0
|
|
|
+ effect_2_enchant = 0
|
|
|
+ effect_2_grind = 0
|
|
|
+ if len(artifact["sec_effects"]) > 2:
|
|
|
+ effect_3 = artifact["sec_effects"][2][0]
|
|
|
+ effect_3_value = artifact["sec_effects"][2][1]
|
|
|
+ effect_3_enchant = artifact["sec_effects"][2][2]
|
|
|
+ effect_3_grind = artifact["sec_effects"][2][3]
|
|
|
+ else:
|
|
|
+ effect_3 = None
|
|
|
+ effect_3_value = 0
|
|
|
+ effect_3_enchant = 0
|
|
|
+ effect_3_grind = 0
|
|
|
+ if len(artifact["sec_effects"]) > 3:
|
|
|
+ effect_4 = artifact["sec_effects"][3][0]
|
|
|
+ effect_4_value = artifact["sec_effects"][3][1]
|
|
|
+ effect_4_enchant = artifact["sec_effects"][3][2]
|
|
|
+ effect_4_grind = artifact["sec_effects"][3][3]
|
|
|
+ else:
|
|
|
+ effect_4 = None
|
|
|
+ effect_4_value = 0
|
|
|
+ effect_4_enchant = 0
|
|
|
+ effect_4_grind = 0
|
|
|
+ # TODO: efficiences
|
|
|
+ efficiency = 0
|
|
|
+ max_efficiency = 0
|
|
|
+ insert(db, "artifact", (uid, id, assigned_to, type, attribute, archetype, level, quality, original_quality, value, efficiency, max_efficiency, main_stat, main_stat_value, effect_1, effect_1_value, effect_1_enchant, effect_1_grind, effect_2, effect_2_value, effect_2_enchant, effect_2_grind, effect_3, effect_3_value, effect_3_enchant, effect_3_grind, effect_4, effect_4_value, effect_4_enchant, effect_4_grind, locked))
|
|
|
+ # Equipped artifacts
|
|
|
+ for mon in data["unit_list"]:
|
|
|
+ for artifact in mon["artifacts"]:
|
|
|
+ id = artifact["rid"]
|
|
|
+ assigned_to = artifact["occupied_id"]
|
|
|
+ if assigned_to == 0:
|
|
|
+ assigned_to = None
|
|
|
+ type = artifact["type"]
|
|
|
+ attribute = artifact["attribute"]
|
|
|
+ if attribute == 0:
|
|
|
+ attribute = None
|
|
|
+ archetype = artifact["unit_style"]
|
|
|
+ if archetype == 0:
|
|
|
+ archetype = None
|
|
|
+ level = artifact["level"]
|
|
|
+ quality = artifact["rank"]
|
|
|
+ original_quality = artifact["natural_rank"]
|
|
|
+ # TODO: Vaue not in JSON file. Can it be calculated?
|
|
|
+ value = 0;
|
|
|
+ main_stat = artifact["pri_effect"][0]
|
|
|
+ main_stat_value = artifact["pri_effect"][1]
|
|
|
+ locked = artifact["locked"]
|
|
|
+ if len(artifact["sec_effects"]) > 0:
|
|
|
+ effect_1 = artifact["sec_effects"][0][0]
|
|
|
+ effect_1_value = artifact["sec_effects"][0][1]
|
|
|
+ effect_1_enchant = artifact["sec_effects"][0][2]
|
|
|
+ effect_1_grind = artifact["sec_effects"][0][3]
|
|
|
+ else:
|
|
|
+ effect_1 = None
|
|
|
+ effect_1_value = 0
|
|
|
+ effect_1_enchant = 0
|
|
|
+ effect_1_grind = 0
|
|
|
+ if len(artifact["sec_effects"]) > 1:
|
|
|
+ effect_2 = artifact["sec_effects"][1][0]
|
|
|
+ effect_2_value = artifact["sec_effects"][1][1]
|
|
|
+ effect_2_enchant = artifact["sec_effects"][1][2]
|
|
|
+ effect_2_grind = artifact["sec_effects"][1][3]
|
|
|
+ else:
|
|
|
+ effect_2 = None
|
|
|
+ effect_2_value = 0
|
|
|
+ effect_2_enchant = 0
|
|
|
+ effect_2_grind = 0
|
|
|
+ if len(artifact["sec_effects"]) > 2:
|
|
|
+ effect_3 = artifact["sec_effects"][2][0]
|
|
|
+ effect_3_value = artifact["sec_effects"][2][1]
|
|
|
+ effect_3_enchant = artifact["sec_effects"][2][2]
|
|
|
+ effect_3_grind = artifact["sec_effects"][2][3]
|
|
|
+ else:
|
|
|
+ effect_3 = None
|
|
|
+ effect_3_value = 0
|
|
|
+ effect_3_enchant = 0
|
|
|
+ effect_3_grind = 0
|
|
|
+ if len(artifact["sec_effects"]) > 3:
|
|
|
+ effect_4 = artifact["sec_effects"][3][0]
|
|
|
+ effect_4_value = artifact["sec_effects"][3][1]
|
|
|
+ effect_4_enchant = artifact["sec_effects"][3][2]
|
|
|
+ effect_4_grind = artifact["sec_effects"][3][3]
|
|
|
+ else:
|
|
|
+ effect_4 = None
|
|
|
+ effect_4_value = 0
|
|
|
+ effect_4_enchant = 0
|
|
|
+ effect_4_grind = 0
|
|
|
+ # TODO: efficiences
|
|
|
+ efficiency = 0
|
|
|
+ max_efficiency = 0
|
|
|
+ insert(db, "artifact", (uid, id, assigned_to, type, attribute, archetype, level, quality, original_quality, value, efficiency, max_efficiency, main_stat, main_stat_value, effect_1, effect_1_value, effect_1_enchant, effect_1_grind, effect_2, effect_2_value, effect_2_enchant, effect_2_grind, effect_3, effect_3_value, effect_3_enchant, effect_3_grind, effect_4, effect_4_value, effect_4_enchant, effect_4_grind, locked))
|
|
|
+
|
|
|
+
|
|
|
"""
|
|
|
calculates the max efficiency of a rune.
|
|
|
|
|
|
@@ -1132,7 +1277,12 @@ else:
|
|
|
try:
|
|
|
parseRunes(db, data)
|
|
|
except Exception as e:
|
|
|
- print("Error parsing runes data: " + str(e))
|
|
|
+ print("Error parsing rune data: " + str(e))
|
|
|
+ sys.exit(400)
|
|
|
+ try:
|
|
|
+ parseArtifacts(db, data)
|
|
|
+ except Exception as e:
|
|
|
+ print("Error parsing artifact data: " + str(e))
|
|
|
sys.exit(400)
|
|
|
try:
|
|
|
parseRuneCraft(db, data)
|