Update to 1.20 properly

This commit is contained in:
b 2021-01-29 17:10:29 -06:00
parent f91439e9dd
commit 2ac4ac2fef
9 changed files with 65472 additions and 219823 deletions

284442
clean.json

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -3543,5 +3543,62 @@
"Zjarr": 3541,
"Zombified Branch": 3542,
"default": 3543,
"Zipper": 3544
"Zipper": 3544,
"Anxiolytic": 3545,
"Panic Zealot": 3546,
"Dissociation": 3547,
"Adrenaline": 3548,
"Agave": 3549,
"Amanuensis": 3550,
"Ataraxy": 3551,
"Blossom Haze": 3552,
"Chain Rule": 3553,
"Clerical": 3554,
"Cursed Jackboots": 3555,
"Derecho": 3556,
"Double Vision": 3557,
"Entanglement": 3558,
"Example": 3559,
"Fluorescence": 3560,
"Gert Relik": 3561,
"Guillotine": 3562,
"Infernal Impulse": 3563,
"Inmate Outfit": 3564,
"Luminiferous Aether": 3565,
"Magnet Repulsor": 3566,
"Matchbook": 3567,
"Multitool": 3568,
"First Steps": 3569,
"Spiketop": 3570,
"Waist Apron": 3571,
"Ophiolite": 3572,
"Ornithopter": 3573,
"Outrage": 3574,
"Panic Attack": 3575,
"Pedometer": 3576,
"Phantasmagoria": 3577,
"Photon": 3578,
"Pro Tempore": 3579,
"Prosencephalon": 3580,
"Homeorhesis": 3581,
"Abrasion": 3582,
"Eyes on All": 3583,
"Metamorphosis": 3584,
"Cacophony": 3585,
"Recalcitrance": 3586,
"Rhythm of the Seasons": 3587,
"Dodge Core": 3588,
"Harden Core": 3589,
"Hustle Core": 3590,
"Overload Core": 3591,
"Synchro Core": 3592,
"Cinfras Souvenir T-Shirt": 3593,
"Speedyboy": 3594,
"Saltest Spear": 3595,
"Schist": 3596,
"Scarlet Veil": 3597,
"Spiritdancer": 3598,
"Stratosphere": 3599,
"The Jingling Jester": 3600,
"Vacarme": 3601
}

View file

@ -1,4 +1,4 @@
const DB_VERSION = 30;
const DB_VERSION = 31;
// @See https://github.com/mdn/learning-area/blob/master/javascript/apis/client-side-storage/indexeddb/video-store/index.js
let db;

View file

@ -1,3 +1,5 @@
Version 0: http://localhost:8000/#0_0K30oY09X2SJ2SK2SL2SM2SN0QQ
Version 1: http://localhost:8000/#1_0690px0CE0QR0050050K40BR0Qk00001004fI
Version 2: http://localhost:8000/#2_2SG2SH2SI2SJ2SK0K22SM2SN05n000t210t0000000
Version 3: https://localhost:8000/#3_0250px0uX0K50K20OK0OJ00A0Qe1z+m21001M1g0000100nZ6
Version 3: https://localhost:8000/#3_0K60iv0CE0Qt0BK0BK0K40Jc0uG160V050o1L1g00001003C6

199
transform_preserve.py Normal file
View file

@ -0,0 +1,199 @@
"""
NOTE!!!!!!!
DEMON TIDE 1.20 IS HARD CODED!
AMBIVALENCE IS REMOVED!
"""
import json
with open("dump.json", "r") as infile:
data = json.load(infile)
with open("updated.json", "r") as oldfile:
old_data = json.load(oldfile)
items = data["items"]
old_items = old_data["items"]
del data["request"]
# import os
# sets = dict()
# for filename in os.listdir('sets'):
# if "json" not in filename:
# continue
# set_name = filename[1:].split(".")[0].replace("+", " ").replace("%27", "'")
# with open("sets/"+filename) as set_info:
# set_obj = json.load(set_info)
# for item in set_obj["items"]:
# item_set_map[item] = set_name
# sets[set_name] = set_obj
#
# data["sets"] = sets
data["sets"] = old_data["sets"]
item_set_map = dict()
for set_name, set_data in data["sets"].items():
for item_name in set_data["items"]:
item_set_map[item_name] = set_name
must_mappings = [
"strength",
"dexterity",
"intelligence",
"agility",
"defense",
"strengthPoints",
"dexterityPoints",
"intelligencePoints",
"agilityPoints",
"defensePoints",
]
translate_mappings = {
#"name": "name",
#"displayName": "displayName",
#"tier": "tier",
#"set": "set",
"sockets": "slots",
#"type": "type",
#"armorType": "armorType", (deleted)
#"armorColor": "color", (deleted)
#"addedLore": "lore", (deleted)
#"material": "material", (deleted)
"dropType": "drop",
#"quest": "quest",
"restrictions": "restrict",
"damage": "nDam",
"fireDamage": "fDam",
"waterDamage": "wDam",
"airDamage": "aDam",
"thunderDamage": "tDam",
"earthDamage": "eDam",
"attackSpeed": "atkSpd",
"health": "hp",
"fireDefense": "fDef",
"waterDefense": "wDef",
"airDefense": "aDef",
"thunderDefense": "tDef",
"earthDefense": "eDef",
"level": "lvl",
"classRequirement": "classReq",
"strength": "strReq",
"dexterity": "dexReq",
"intelligence": "intReq",
"agility": "agiReq",
"defense": "defReq",
"healthRegen": "hprPct",
"manaRegen": "mr",
"spellDamage": "sdPct",
"damageBonus": "mdPct",
"lifeSteal": "ls",
"manaSteal": "ms",
"xpBonus": "xpb",
"lootBonus": "lb",
"reflection": "ref",
"strengthPoints": "str",
"dexterityPoints": "dex",
"intelligencePoints": "int",
"agilityPoints": "agi",
"defensePoints": "def",
#"thorns": "thorns",
"exploding": "expd",
"speed": "spd",
"attackSpeedBonus": "atkTier",
#"poison": "poison",
"healthBonus": "hpBonus",
"soulPoints": "spRegen",
"emeraldStealing": "eSteal",
"healthRegenRaw": "hprRaw",
"spellDamageRaw": "sdRaw",
"damageBonusRaw": "mdRaw",
"bonusFireDamage": "fDamPct",
"bonusWaterDamage": "wDamPct",
"bonusAirDamage": "aDamPct",
"bonusThunderDamage": "tDamPct",
"bonusEarthDamage": "eDamPct",
"bonusFireDefense": "fDefPct",
"bonusWaterDefense": "wDefPct",
"bonusAirDefense": "aDefPct",
"bonusThunderDefense": "tDefPct",
"bonusEarthDefense": "eDefPct",
"accessoryType": "type",
"identified": "fixID",
#"skin": "skin",
#"category": "category",
"spellCostPct1": "spPct1",
"spellCostRaw1": "spRaw1",
"spellCostPct2": "spPct2",
"spellCostRaw2": "spRaw2",
"spellCostPct3": "spPct3",
"spellCostRaw3": "spRaw3",
"spellCostPct4": "spPct4",
"spellCostRaw4": "spRaw4",
"rainbowSpellDamageRaw": "rainbowRaw",
#"sprint": "sprint",
"sprintRegen": "sprintReg",
"jumpHeight": "jh",
"lootQuality": "lq",
"gatherXpBonus": "gXp",
"gatherSpeed": "gSpd",
}
delete_keys = [
"addedLore",
"skin",
#"armorType",
#"armorColor",
#"material"
]
id_map = {item["name"]: item["id"] for item in old_items}
used_ids = set([v for k, v in id_map.items()])
max_id = 0
known_item_names = set()
for item in items:
for key in delete_keys:
if key in item:
del item[key]
for k in list(item.keys()):
if item[k] == 0 and not k in must_mappings:
del item[k]
for k, v in translate_mappings.items():
if k in item:
item[v] = item[k]
del item[k]
if not (item["name"] in id_map):
while max_id in used_ids:
max_id += 1
used_ids.add(max_id)
id_map[item["name"]] = max_id
print(f'New item: {item["name"]} (id: {max_id})')
item["id"] = id_map[item["name"]]
known_item_names.add(item["name"])
item["type"] = item["type"].lower()
if item["name"] in item_set_map:
item["set"] = item_set_map[item["name"]]
for item in old_items:
if "remapID" in item:
items.append(item)
elif item["name"] not in known_item_names:
print(f'Unknown old item: {item["name"]}!!!')
with open("clean.json", "w") as outfile:
json.dump(data, outfile, indent=2)
with open("compress.json", "w") as outfile:
json.dump(data, outfile)

View file

@ -134668,73 +134668,33 @@
"type": "chestplate",
"set": null,
"quest": "General's Orders",
"poison": 0,
"thorns": 0,
"sprint": 0,
"category": "armor",
"slots": 3,
"drop": "never",
"restrict": "Untradable",
"hp": 1900,
"fDef": 55,
"wDef": 55,
"aDef": 55,
"tDef": 55,
"eDef": 55,
"lvl": 80,
"classReq": null,
"fixID": false,
"strReq": 0,
"dexReq": 0,
"intReq": 0,
"agiReq": 0,
"defReq": 0,
"hprPct": 0,
"mr": 0,
"sdPct": 0,
"mdPct": 0,
"ls": 0,
"ms": 0,
"xpb": 15,
"lb": 0,
"ref": 0,
"agiReq": 0,
"category": "armor",
"lvl": 80,
"hp": 2150,
"eDef": 55,
"tDef": 55,
"wDef": 55,
"fDef": 55,
"aDef": 55,
"slots": 3,
"str": -1,
"dex": -1,
"int": -1,
"agi": -1,
"def": -1,
"expd": 0,
"spd": 0,
"atkTier": 0,
"hpBonus": 0,
"spRegen": 0,
"eSteal": 0,
"hprRaw": 0,
"sdRaw": 0,
"mdRaw": 0,
"fDamPct": 5,
"wDamPct": 5,
"aDamPct": 5,
"tDamPct": 5,
"eDamPct": 5,
"fDefPct": 0,
"wDefPct": 0,
"aDefPct": 0,
"tDefPct": 0,
"eDefPct": 0,
"spPct1": 0,
"spRaw1": 0,
"spPct2": 0,
"spRaw2": 0,
"spPct3": 0,
"spRaw3": 0,
"spPct4": 0,
"spRaw4": 0,
"rainbowRaw": 0,
"sprintReg": 0,
"jh": 0,
"lq": 0,
"gXp": 0,
"gSpd": 0,
"agi": -1,
"hprRaw": 100,
"xpb": 15,
"lb": 15,
"spd": 15,
"sdRaw": 150,
"mdRaw": 200,
"jh": 1,
"id": 1869
},
{
@ -240172,77 +240132,31 @@
"id": 3328
},
{
"name": "Tisaun's Honour",
"tier": "Rare",
"type": "ring",
"name": "Tisaun's Honour",
"displayName": "Tisaun's Honour",
"set": null,
"quest": null,
"poison": 0,
"thorns": 8,
"sprint": 0,
"category": "accessory",
"slots": 0,
"drop": "lootchest",
"hp": 0,
"fDef": 20,
"wDef": 0,
"aDef": 0,
"tDef": 0,
"eDef": 15,
"lvl": 88,
"classReq": null,
"fixID": false,
"strReq": 35,
"dexReq": 0,
"intReq": 0,
"agiReq": 0,
"defReq": 35,
"hprPct": 0,
"mr": 0,
"sdPct": 0,
"mdPct": 8,
"ls": 0,
"ms": 0,
"xpb": 0,
"lb": 0,
"ref": 8,
"agiReq": 0,
"category": "accessory",
"lvl": 88,
"eDef": 15,
"fDef": 20,
"str": 0,
"dex": 0,
"int": 0,
"agi": 0,
"def": 7,
"expd": 0,
"spd": -5,
"atkTier": 0,
"hpBonus": 0,
"spRegen": 0,
"eSteal": 0,
"hprRaw": 0,
"sdRaw": 0,
"mdRaw": 0,
"fDamPct": 0,
"wDamPct": 0,
"aDamPct": 0,
"tDamPct": 0,
"eDamPct": 0,
"fDefPct": 0,
"wDefPct": 0,
"aDefPct": 0,
"tDefPct": 0,
"eDefPct": 0,
"type": "ring",
"spPct1": 0,
"spRaw1": 0,
"spPct2": 0,
"spRaw2": 0,
"spPct3": 0,
"spRaw3": 0,
"spPct4": 0,
"spRaw4": 0,
"rainbowRaw": 0,
"sprintReg": 0,
"jh": 0,
"lq": 0,
"gXp": 0,
"gSpd": 0,
"agi": 0,
"thorns": 8,
"ref": 8,
"mdPct": 6,
"id": 3329
},
{
@ -255961,32 +255875,9 @@
"remapID": 3020
},
{
"tier": "Rare",
"type": "ring",
"name": "Tisaun's Honor",
"displayName": "Tisaun's Honor",
"set": null,
"quest": null,
"classReq": null,
"fixID": false,
"strReq": 35,
"dexReq": 0,
"intReq": 0,
"defReq": 35,
"agiReq": 0,
"category": "accessory",
"lvl": 88,
"eDef": 15,
"fDef": 20,
"str": 0,
"dex": 0,
"int": 0,
"def": 7,
"agi": 0,
"thorns": 8,
"ref": 8,
"mdPct": 6,
"id": 3579
"id": 3579,
"name": "3597",
"remapID": 3329
},
{
"id": 10122,
@ -256804,7 +256695,7 @@
{
"tier": "Unique",
"type": "helmet",
"name": "Nychthemeron",
"name": "Breakdown",
"displayName": "Nychthemeron",
"set": null,
"quest": null,
@ -256972,7 +256863,7 @@
{
"tier": "Fabled",
"type": "spear",
"name": "Rhythm of Seasons",
"name": "Rhythm of the Seasons",
"displayName": "Rhythm of the Seasons",
"set": null,
"quest": null,
@ -257683,41 +257574,9 @@
"remapID": 2065
},
{
"tier": "Rare",
"type": "chestplate",
"name": "Changelings Chestplate",
"displayName": "Changelings Chestplate",
"set": null,
"quest": null,
"classReq": null,
"fixID": false,
"strReq": 0,
"dexReq": 0,
"intReq": 0,
"defReq": 0,
"agiReq": 0,
"category": "armor",
"lvl": 80,
"hp": 2150,
"eDef": 55,
"tDef": 55,
"wDef": 55,
"fDef": 55,
"aDef": 55,
"slots": 3,
"str": -1,
"dex": -1,
"int": -1,
"def": -1,
"agi": -1,
"hprRaw": 100,
"xpb": 15,
"lb": 15,
"spd": 15,
"sdRaw": 150,
"mdRaw": 200,
"jh": 1,
"id": 3611
"id": 3611,
"name": "3611",
"remapID": 1869
},
{
"id": 10294,
@ -258668,7 +258527,7 @@
{
"tier": "Legendary",
"type": "leggings",
"name": "Anixolytic",
"name": "Anxiolytic",
"displayName": "Anxiolytic",
"set": null,
"quest": null,
@ -259124,6 +258983,57 @@
}
],
"sets": {
"Synch Core": {
"items": [
"Overload Core",
"Synchro Core",
"Dodge Core",
"Harden Core",
"Hustle Core"
],
"bonuses": [
{},
{
"hprRaw": -20,
"fDefPct": -8,
"wDefPct": -8,
"aDefPct": -8,
"tDefPct": -8,
"eDefPct": -8,
"sprint": -8
},
{
"hprRaw": 150,
"fDefPct": -40,
"wDefPct": -40,
"aDefPct": -40,
"tDefPct": -40,
"eDefPct": -40,
"sprint": -35,
"ws": 16,
"hpBonus": 1150,
"sdPct": 14,
"mdPct": 14,
"jh": 1,
"mr": -1,
"ms": -1
},
{
"hprRaw": 50,
"fDefPct": 8,
"wDefPct": 8,
"aDefPct": 8,
"tDefPct": 8,
"eDefPct": 8,
"sprint": 8,
"ws": 8,
"hpBonus": 666,
"sdPct": 7,
"mdPct": 7,
"jh": 1
}
]
},
"Black": {
"items": [
"Black Cap",
@ -259292,24 +259202,24 @@
"bonuses": [
{},
{
"str": 1,
"dex": -1,
"int": -1,
"agi": 1,
"def": 1,
"spd": 2,
"hprRaw": 60,
"mdRaw": 60
"str": 2,
"dex": -2,
"int": -2,
"agi": 2,
"def": 2,
"spd": 5,
"hprRaw": 55,
"mdRaw": 135
},
{
"str": 4,
"dex": -4,
"int": -4,
"agi": 4,
"def": 4,
"spd": 8,
"hprRaw": 180,
"mdRaw": 180
"str": 5,
"dex": -5,
"int": -5,
"agi": 5,
"def": 5,
"spd": 10,
"hprRaw": 210,
"mdRaw": 270
},
{
"str": 15,
@ -259317,10 +259227,10 @@
"int": -15,
"agi": 15,
"def": 15,
"spd": 20,
"spd": 25,
"atkTier": 1,
"hprRaw": 480,
"mdRaw": 480
"hprRaw": 525,
"mdRaw": 540
}
]
},
@ -259336,7 +259246,7 @@
{
"mr": -1,
"ms": 2,
"sdRaw": 35,
"sdRaw": 40,
"wDamPct": 5,
"tDamPct": 5,
"eDamPct": -34
@ -259344,7 +259254,7 @@
{
"mr": -2,
"ms": 4,
"sdRaw": 100,
"sdRaw": 115,
"wDamPct": 10,
"tDamPct": 10,
"eDamPct": -67
@ -259352,10 +259262,11 @@
{
"mr": -3,
"ms": 6,
"sdRaw": 195,
"wDamPct": 25,
"tDamPct": 25,
"eDamPct": -100
"sdRaw": 230,
"wDamPct": 32,
"tDamPct": 32,
"eDamPct": -100,
"atkTier": -2
}
]
},
@ -259474,11 +259385,10 @@
{},
{
"mr": 2,
"xpb": 12,
"str": 4,
"hpBonus": 400,
"sdRaw": 100,
"mdRaw": 50
"xpb": 40,
"def": 25,
"fDamPct": 20,
"hprRaw": 180
}
]
},
@ -259516,32 +259426,33 @@
],
"bonuses": [
{
"xpb": -25,
"lb": -25
"xpb": 20,
"lb": 20
},
{
"xpb": -50,
"lb": -50,
"spd": -10,
"hpBonus": 300,
"sdRaw": -110,
"mdRaw": 60
},
{
"xpb": -75,
"lb": -75,
"xpb": 45,
"lb": 45,
"spd": 5,
"hpBonus": -150,
"sdRaw": 100,
"mdRaw": -75
"hpBonus": 240,
"eSteal": 5
},
{
"xpb": -100,
"lb": -100,
"spd": 5,
"hpBonus": -150,
"sdRaw": 100,
"mdRaw": -75
"xpb": 75,
"lb": 75,
"spd": 10,
"hpBonus": 480,
"eSteal": 15,
"thorns": 12,
"ref": 12
},
{
"xpb": 120,
"lb": 120,
"spd": 25,
"hpBonus": 720,
"eSteal": 20,
"thorns": 30,
"ref": 30
}
]
},
@ -259591,18 +259502,18 @@
"bonuses": [
{},
{
"sdPct": -10,
"sdPct": -12,
"mdPct": 12,
"sdRaw": -40,
"mdRaw": 30
"sdRaw": -50,
"mdRaw": 60
},
{
"sdPct": -35,
"mdPct": 30,
"dex": 15,
"spd": 8,
"sdRaw": -90,
"mdRaw": 125
"mdPct": 35,
"dex": 30,
"spd": 11,
"sdRaw": -150,
"mdRaw": 180
}
]
},
@ -259618,23 +259529,23 @@
{
"hprPct": -10,
"mr": 1,
"sdPct": 4,
"sdPct": 6,
"ref": 10,
"thorns": 8
},
{
"hprPct": -20,
"mr": 2,
"sdPct": 12,
"ref": 30,
"sdPct": 14,
"ref": 35,
"thorns": 24
},
{
"hprPct": -35,
"hprPct": -30,
"mr": 4,
"sdPct": 28,
"ref": 70,
"thorns": 55
"sdPct": 30,
"ref": 75,
"thorns": 70
}
]
},
@ -259831,10 +259742,12 @@
{},
{
"mdPct": 11,
"xpb": 10,
"spd": 20,
"xpb": 25,
"spd": 17,
"aDamPct": 15,
"eDamPct": 15
"eDamPct": 15,
"sprint": 25,
"sprintReg": 50
}
]
},
@ -260087,37 +260000,35 @@
"bonuses": [
{},
{
"xpb": 15,
"lb": 15,
"ref": 5,
"spRegen": 15,
"fDefPct": 10,
"wDefPct": 10,
"aDefPct": 10,
"tDefPct": 10,
"eDefPct": 10
},
{
"xpb": 35,
"lb": 35,
"ref": 15,
"spRegen": 35,
"xpb": 25,
"lb": 25,
"fDefPct": 20,
"wDefPct": 20,
"aDefPct": 20,
"tDefPct": 20,
"eDefPct": 20
"eDefPct": 20,
"ms": 1
},
{
"xpb": 50,
"lb": 50,
"ref": 30,
"spRegen": 50,
"fDefPct": 30,
"wDefPct": 30,
"aDefPct": 30,
"tDefPct": 30,
"eDefPct": 30
"fDefPct": 50,
"wDefPct": 50,
"aDefPct": 50,
"tDefPct": 50,
"eDefPct": 50,
"ms": 2
},
{
"xpb": 75,
"lb": 75,
"fDefPct": 100,
"wDefPct": 100,
"aDefPct": 100,
"tDefPct": 100,
"eDefPct": 100,
"sdPct": 40,
"ms": 6
}
]
},
@ -260132,30 +260043,30 @@
{},
{
"mr": 1,
"sdPct": -5,
"mdPct": -10,
"def": 5,
"spRegen": 5,
"wDamPct": 10,
"aDamPct": 10
"sdPct": -10,
"mdPct": -15,
"def": 7,
"spRegen": 10,
"wDamPct": 15,
"aDamPct": 15
},
{
"mr": 3,
"sdPct": -10,
"mdPct": -20,
"def": 10,
"spRegen": 10,
"wDamPct": 20,
"aDamPct": 20
"sdPct": -20,
"mdPct": -40,
"def": 15,
"spRegen": 25,
"wDamPct": 40,
"aDamPct": 40
},
{
"mr": 5,
"sdPct": -15,
"mdPct": -35,
"def": 30,
"mr": 6,
"sdPct": -40,
"mdPct": -85,
"def": 40,
"spRegen": 100,
"wDamPct": 35,
"aDamPct": 35
"wDamPct": 85,
"aDamPct": 85
}
]
},
@ -260195,25 +260106,26 @@
],
"bonuses": [
{
"sdPct": -6,
"mdPct": -6,
"sdRaw": 15,
"mdRaw": 10
"sdPct": -5,
"mdPct": -5,
"sdRaw": 27,
"mdRaw": 25
},
{
"sdPct": -12,
"mdPct": -12,
"ls": 22,
"sdPct": -13,
"mdPct": -13,
"ls": 30,
"sdRaw": 55,
"mdRaw": 45
"mdRaw": 70
},
{
"sdPct": -23,
"mdPct": -23,
"ls": 51,
"sdPct": -33,
"mdPct": -33,
"ls": 90,
"ms": 2,
"sdRaw": 130,
"mdRaw": 105
"sdRaw": 160,
"mdRaw": 105,
"atkTier": 1
}
]
},
@ -260228,16 +260140,16 @@
{
"int": 3,
"def": 3,
"hprRaw": 60
"hprRaw": 90
},
{
"mr": 4,
"int": 15,
"def": 15,
"mr": 5,
"int": 20,
"def": 20,
"hpBonus": 1500,
"hprRaw": 270,
"fDefPct": 60,
"wDefPct": 60
"hprRaw": 330,
"fDefPct": 75,
"wDefPct": 75
}
]
},
@ -260283,24 +260195,24 @@
{
"hprPct": 10,
"lb": 8,
"agi": 5,
"def": 5,
"spd": 6
"agi": 3,
"def": 3,
"spd": 8
},
{
"hprPct": 20,
"lb": 16,
"lb": 20,
"agi": 7,
"def": 7,
"spd": 14
"spd": 16
},
{
"hprPct": 45,
"lb": 32,
"agi": 10,
"def": 10,
"spd": 20,
"hprRaw": 45
"lb": 35,
"agi": 15,
"def": 15,
"spd": 25,
"hprRaw": 50
}
]
},
@ -260359,18 +260271,18 @@
"bonuses": [
{},
{
"ls": 125,
"ls": 180,
"agi": 3,
"def": 3
},
{
"ls": 375,
"ref": 70,
"agi": 15,
"def": 15,
"thorns": 70,
"fDefPct": 75,
"aDefPct": 75
"ls": 700,
"ref": 80,
"agi": 25,
"def": 25,
"thorns": 80,
"fDefPct": 125,
"aDefPct": 125
}
]
},
@ -260466,8 +260378,8 @@
{},
{
"mdPct": 14,
"hpBonus": 30,
"mdRaw": 20
"hpBonus": 75,
"mdRaw": 25
}
]
},

11
validate.py Normal file
View file

@ -0,0 +1,11 @@
import json
with open("updated.json") as infile:
data = json.load(infile)
duplicate_map = dict()
for item in data["items"]:
if item["name"] in duplicate_map:
print("DUPLICATE: " + str(item["id"]) + " <-> " + str(duplicate_map[item["name"]]["id"]))
else:
duplicate_map[item["name"]] = item