Compare commits

..

10 commits

Author SHA1 Message Date
f628ee0d62 removed accidental file inclusion 2022-04-20 20:44:16 +02:00
3e2e22a1f0 added aux effects 2022-04-20 20:43:56 +02:00
5e603392a0 updated for 1.04 2022-04-19 13:53:23 +02:00
35ab32ead5 fixed additional -s's 2022-04-07 10:15:07 +02:00
bddcba1f82 fixed small issue 2022-04-05 21:56:03 +02:00
3900057c68 lots of updates 2022-04-05 21:55:34 +02:00
5c105f1791 added example sandbox.js, fixed weapons 2022-03-28 13:54:02 +02:00
0c57b8ccef weapons, classes, infusions done 2022-03-26 00:49:37 +01:00
3aebfb43a1 added readme 2022-03-25 22:26:31 +01:00
c0d0556d3d fixed armor 2022-03-25 22:24:43 +01:00
11 changed files with 963 additions and 5136 deletions

9
.gitignore vendored
View file

@ -1,7 +1,4 @@
# /in /input/*
# /out /output/*
**/EquipParamProtector.csv /__pycache__
**/EquipParamWeapon.csv
**/EquipParamAccessory.csv
**/SpEffectParam.csv

View file

@ -1,33 +0,0 @@
# Notes
## Armor
- Weight: `EquipParamProtector.csv`
- Poise: `EquipParamProtector.csv` - in-game poise value is (poise \* 1000)
- Resistance: `EquipParamProtector.csv`
- Defenses: `EquipParamProtector.csv` - defense is (1 - absorption) \* 100
- Stats: ???
## Classes
- Starting: `CharaInitParam.csv`
- Softcaps: `CalcCorrectGraph.csv`
## Weapons
- Damage: `EquipParamWeapon.csv`
- Scaling: `EquipParamWeapon.csv`
- Upgrading: `ReinforceParamWeapon.csv`
- Ash of War: `EquipParamGem.csv`
## Talismans
- Weight: `EquipParamAccessory.csv`
- Stats: `SpEffectParam.csv`
- Effects: `SpEffectParam.csv`
## Magic
- FP cost: `Magic.csv`
- Stam. cost: `Magic.csv`
- Reqs.: `Magic.csv`

19
README.md Normal file
View file

@ -0,0 +1,19 @@
# Notes
## Running
### Regulation Extraction
1. [UXM](https://cdn.discordapp.com/attachments/529900741998149643/955650210711892029/UXM_2.4.ER-1.03.1-fix01.zip) to extract the game files.
2. [Yapped (Rune Bear)](https://github.com/vawser/Yapped-Rune-Bear) for converting regulation to `.csv`.
## Required Files
- `AttackElementCorrectParam.csv`
- `CalcCorrectGraph.csv`
- `CharaInitParam.csv`
- `EquipParamAccessory.csv`
- `EquipParamProtector.csv`
- `EquipParamWeapon.csv`
- `ReinforceWeaponParam.csv`
- `SpEffectParam.csv`

View file

@ -1,78 +1,321 @@
import csv import csv
import json import json
import os
IGNORED = [ from corrections import IGNORED, IGNORED_WEAPON_INFUSIONS, MISSING, HELMET_STATS
"",
"head", INFUSIONS = [
"body", "Standard ",
"arms", "Heavy ",
"legs", "Keen ",
"travel-hairstyle", "Quality ",
"millicents-robe", "Fire ",
"millicents-gloves", "Flame Art ",
"millicents-boots", "Lightning ",
"millicents-tunic", "Sacred ",
"millicents-robe", "Magic ",
"braves-corc-circlet", "Cold ",
"braves-battlewear", "Poison ",
"braves-battlewear-altered", "Blood ",
"braves-bracer", "Occult ",
"braves-legwraps",
"braves-leather-helm",
"ragged-hat",
"ragged-hat-altered",
"ragged-armor",
"ragged-armor-altered",
"ragged-gloves",
"ragged-loincloth",
] ]
helmets = [] WEAPON_CATEGORIES = {
chestpieces = [] 1: "dagger",
gauntlets = [] 2: "straight-sword",
leggings = [] 3: "greatsword",
talismans = [] 4: "colossal-sword",
5: "thrusting-sword",
6: "heavy-thrusting-sword",
7: "curved-sword",
8: "curved-greatsword",
9: "katana",
10: "twinblade",
11: "hammer",
12: "great-hammer",
13: "flail",
14: "axe",
15: "greataxe",
16: "spear",
17: "great-spear",
18: "halberd",
19: "scythe",
20: "whip",
21: "fist",
22: "claw",
23: "colossal-weapon",
24: "torch",
30: "small-shield",
31: "medium-shield",
32: "greatshield",
33: "glintstone-staff",
34: "sacred-seal",
40: "light-bow",
41: "bow",
42: "greatbow",
43: "crossbow",
44: "ballista",
}
def main(): def main():
global helmets
helmets = {}
global chestpieces
chestpieces = {}
global gauntlets
gauntlets = {}
global leggings
leggings = {}
global talismans
talismans = {}
global classes
classes = {}
global weapons
weapons = {}
global infusions
infusions = {}
global calculations
calculations = {}
# armors # armors
with open("input/EquipParamProtector.csv") as af: with open("input/EquipParamProtector.csv") as af:
reader = csv.DictReader(af, delimiter=";") rows = list(csv.DictReader(af, delimiter=";"))
for a in reader: for armor in rows:
if not ignored(a): if not ignored(armor):
armor_piece(a) process_armor_piece(armor)
# talismans # talismans
with ( with (
open("input/EquipParamAccessory.csv") as tf, open("input/EquipParamAccessory.csv") as tf,
open("input/SpEffectParam.csv") as ef, open("input/SpEffectParam.csv") as ef,
): ):
effects = list(csv.DictReader(ef, delimiter=";"))
reader = list(csv.DictReader(tf, delimiter=";"))
for t in reader: effects = list(csv.DictReader(ef, delimiter=";"))
if not ignored(t): rows = list(csv.DictReader(tf, delimiter=";"))
talisman(t, effects)
for talisman in rows:
if not ignored(talisman):
process_talisman(talisman, effects)
# classes
classes = [
{
"id": "vagabond",
"name": "Vagabond",
"level": 9,
"stats": [15, 10, 11, 14, 13, 9, 9, 7],
},
{
"id": "warrior",
"name": "Warrior",
"level": 8,
"stats": [11, 12, 11, 10, 16, 10, 8, 9],
},
{
"id": "hero",
"name": "Hero",
"level": 7,
"stats": [14, 9, 12, 16, 9, 7, 8, 11],
},
{
"id": "bandit",
"name": "Bandit",
"level": 5,
"stats": [10, 11, 10, 9, 13, 9, 8, 14],
},
{
"id": "astrologer",
"name": "Astrologer",
"level": 6,
"stats": [9, 15, 9, 8, 12, 16, 7, 9],
},
{
"id": "prophet",
"name": "Prophet",
"level": 7,
"stats": [10, 14, 8, 11, 10, 7, 16, 10],
},
{
"id": "samurai",
"name": "Samurai",
"level": 9,
"stats": [12, 11, 13, 12, 15, 9, 8, 8],
},
{
"id": "prisoner",
"name": "Prisoner",
"level": 9,
"stats": [11, 12, 11, 11, 14, 14, 6, 9],
},
{
"id": "confessor",
"name": "Confessor",
"level": 10,
"stats": [10, 13, 10, 12, 12, 9, 14, 9],
},
{
"id": "wretch",
"name": "Wretch",
"level": 1,
"stats": [10, 10, 10, 10, 10, 10, 10, 10],
},
]
# weapons
with (
open("input/AttackElementCorrectParam.csv") as af,
open("input/EquipParamWeapon.csv") as wf,
open("input/CalcCorrectGraph.csv") as cf,
open("input/SpEffectParam.csv") as sf,
):
rows = list(csv.DictReader(wf, delimiter=";"))
rows = [row for row in rows if 1000000 <= int(row["Row ID"]) <= 44010000]
masks = list(csv.DictReader(af, delimiter=";"))
masks = {row["Row ID"]: row for row in masks}
softcaps = list(csv.DictReader(cf, delimiter=";"))
softcaps = {
row["Row ID"]: row for row in softcaps if 0 <= int(row["Row ID"]) <= 16
}
effects = list(csv.DictReader(sf, delimiter=";"))
effects = {row["Row ID"]: row for row in effects}
for row in rows:
if not ignored(row):
process_weapon(row, masks, effects)
process_damage(softcaps)
# infusions
with open("input/ReinforceParamWeapon.csv") as inf:
rows = list(csv.DictReader(inf, delimiter=";"))
extract_infusions(rows)
# add missing items # add missing items
# add_missing_items() helmets.update(MISSING["helmets"])
chestpieces.update(MISSING["chestpieces"])
gauntlets.update(MISSING["gauntlets"])
leggings.update(MISSING["leggings"])
# sort all files # sort all files
helmets = dict(sorted(helmets.items(), key=lambda item: item[0]))
chestpieces = dict(sorted(chestpieces.items(), key=lambda item: item[0]))
gauntlets = dict(sorted(gauntlets.items(), key=lambda item: item[0]))
leggings = dict(sorted(leggings.items(), key=lambda item: item[0]))
classes = sorted(classes, key=lambda item: item["level"])
weapons = dict(sorted(weapons.items(), key=lambda item: item[0]))
# add none cases (no helmet etc.) # add none cases (no helmet etc.)
helmets = {
"no-helmet": {
"id": "no-helmet",
"name": "No helmet",
"defenses": [0, 0, 0, 0, 0, 0, 0, 0],
"resistances": [0, 0, 0, 0],
"poise": 0,
"weight": 0,
},
**helmets,
}
chestpieces = {
"no-chestpiece": {
"id": "no-chestpiece",
"name": "No chestpiece",
"defenses": [0, 0, 0, 0, 0, 0, 0, 0],
"resistances": [0, 0, 0, 0],
"poise": 0,
"weight": 0,
},
**chestpieces,
}
gauntlets = {
"no-gauntlets": {
"id": "no-gauntlets",
"name": "No gauntlets",
"defenses": [0, 0, 0, 0, 0, 0, 0, 0],
"resistances": [0, 0, 0, 0],
"poise": 0,
"weight": 0,
},
**gauntlets,
}
leggings = {
"no-leggings": {
"id": "no-leggings",
"name": "No leggings",
"defenses": [0, 0, 0, 0, 0, 0, 0, 0],
"resistances": [0, 0, 0, 0],
"poise": 0,
"weight": 0,
},
**leggings,
}
talismans = {
"no-talisman": {
"id": "no-talisman",
"name": "No talisman",
},
**talismans,
}
weapons = {
"unarmed": {
"id": "unarmed",
"name": "Unarmed",
"requirements": [0, 0, 0, 0, 0],
"category": "fist",
"unique": False,
"infusions": {
"standard": {
"damage": [20, 0, 0, 0, 0],
"scaling": [0.5, 0.5, 0.0, 0.0, 0.0],
"masks": [
[1, 1, 0, 0, 0],
[0, 0, 1, 0, 0],
[0, 0, 0, 1, 0],
[0, 1, 0, 0, 0],
[0, 0, 0, 1, 0],
],
"corrections": ["0", "0", "0", "0", "0"],
}
},
},
**weapons,
}
# save to files # save to files
with open("output/helmets.json", "w") as hf: with (
open("output/helmets.json", "w") as hf,
open("output/chestpieces.json", "w") as cf,
open("output/gauntlets.json", "w") as gf,
open("output/leggings.json", "w") as lf,
open("output/talismans.json", "w") as tf,
open("output/classes.json", "w") as scf,
open("output/weapons.json", "w") as wf,
open("output/infusions.json", "w") as inf,
open("output/damage.json", "w") as df,
):
json.dump(helmets, hf) json.dump(helmets, hf)
with open("output/chestpieces.json", "w") as cf:
json.dump(chestpieces, cf) json.dump(chestpieces, cf)
with open("output/gauntlets.json", "w") as gf:
json.dump(gauntlets, gf) json.dump(gauntlets, gf)
with open("output/leggings.json", "w") as lf:
json.dump(leggings, lf) json.dump(leggings, lf)
with open("output/talismans.json", "w") as tf:
json.dump(talismans, tf) json.dump(talismans, tf)
json.dump(classes, scf)
json.dump(weapons, wf)
json.dump(infusions, inf)
json.dump(calculations, df)
# format output files with prettier
if os.system("prettier output --write --tab-width 4") != 0:
print(
"please install prettier (the code formatting tool) to auto-format the output files after generating"
)
def ignored(row): def ignored(row):
@ -91,11 +334,15 @@ def to_kebab(name):
) )
def armor_piece(row): def process_armor_piece(row):
item = {} item = {}
id = to_kebab(row["Row Name"])
item["id"] = id
item["name"] = row["Row Name"] item["name"] = row["Row Name"]
item["id"] = to_kebab(item["name"])
if id in HELMET_STATS:
item["stats"] = HELMET_STATS[id]
item["defenses"] = [ item["defenses"] = [
round((1.0 - float(row["Absorption - Physical"])) * 100.0, 2), round((1.0 - float(row["Absorption - Physical"])) * 100.0, 2),
@ -115,29 +362,29 @@ def armor_piece(row):
int(row["Resist - Blight"]), int(row["Resist - Blight"]),
] ]
item["poise"] = round(float(row["Poise"]) * 1000.0, 2) item["poise"] = int(round(float(row["Poise"]) * 1000.0, 2))
item["weight"] = round(float(row["Weight"]), 2) item["weight"] = round(float(row["Weight"]), 2)
row_id = int(row["Row ID"]) if row["Is Head Equipment"] == "True":
if row_id % 1000 == 0: helmets[id] = item
helmets.append(item) elif row["Is Body Equipment"] == "True":
elif row_id % 1000 == 100: chestpieces[id] = item
chestpieces.append(item) elif row["Is Arm Equipment"] == "True":
elif row_id % 1000 == 200: gauntlets[id] = item
gauntlets.append(item) elif row["Is Leg Equipment"] == "True":
elif row_id % 1000 == 300: leggings[id] = item
leggings.append(item)
def talisman(row, effects): def process_talisman(row, effects):
item = {} item = {}
id = to_kebab(row["Row Name"])
item["id"] = id
item["name"] = row["Row Name"] item["name"] = row["Row Name"]
item["id"] = to_kebab(item["name"])
item["weight"] = row["Weight"] item["weight"] = row["Weight"]
effect_id = row["SpEffect ID 1"] effect_id = row["SpEffect ID [0]"]
for effect in effects: for effect in effects:
if effect["Row ID"] == effect_id: if effect["Row ID"] == effect_id:
item["stats"] = [ item["stats"] = [
@ -156,16 +403,414 @@ def talisman(row, effects):
float(effect["Max Stamina"]), float(effect["Max Stamina"]),
float(effect["Equip Load %"]), float(effect["Equip Load %"]),
] ]
if all(stat == 0.0 for stat in item["stats"]):
item.pop("stats")
if all(mult == 1.0 for mult in item["multipliers"]):
item.pop("multipliers")
talismans.append(item) if all(stat == 0.0 for stat in item["stats"]):
item.pop("stats")
if all(mult == 1.0 for mult in item["multipliers"]):
item.pop("multipliers")
talismans[id] = item
def add_missing_items(): def split_weapon_name(name):
raise NotImplementedError infusion = "standard"
for other in INFUSIONS:
if "Bloody" in name and not to_kebab(name) in IGNORED_WEAPON_INFUSIONS:
name = name.replace("Bloody ", "")
infusion = "blood"
elif "celebrants-cleaver-blades" in to_kebab(name):
name = "Celebrant's Cleaver"
elif other in name and not to_kebab(name) in IGNORED_WEAPON_INFUSIONS:
infusion = other
name = name.replace(infusion, "")
return name.strip().replace(" ", " "), to_kebab(infusion)
def to_mask(str):
if str == "True":
return 1
else:
return 0
def process_weapon(row, masks, effects):
name, infusion = split_weapon_name(row["Row Name"])
id = to_kebab(name)
damage = [
int(row["Damage: Physical"]),
int(row["Damage: Magic"]),
int(row["Damage: Fire"]),
int(row["Damage: Lightning"]),
int(row["Damage: Holy"]),
]
scaling = [
float(row["Correction: STR"]) / 100.0,
float(row["Correction: DEX"]) / 100.0,
float(row["Correction: INT"]) / 100.0,
float(row["Correction: FTH"]) / 100.0,
float(row["Correction: ARC"]) / 100.0,
]
mask_id = row["Attack Element Correct ID"]
mask_row = masks[mask_id]
weapon_masks = [
[ # physical
to_mask(mask_row["Physical Correction: STR"]),
to_mask(mask_row["Physical Correction: DEX"]),
to_mask(mask_row["Physical Correction: INT"]),
to_mask(mask_row["Physical Correction: FTH"]),
to_mask(mask_row["Physical Correction: ARC"]),
],
[ # magic
to_mask(mask_row["Magic Correction: STR"]),
to_mask(mask_row["Magic Correction: DEX"]),
to_mask(mask_row["Magic Correction: INT"]),
to_mask(mask_row["Magic Correction: FTH"]),
to_mask(mask_row["Magic Correction: ARC"]),
],
[ # fire
to_mask(mask_row["Fire Correction: STR"]),
to_mask(mask_row["Fire Correction: DEX"]),
to_mask(mask_row["Fire Correction: INT"]),
to_mask(mask_row["Fire Correction: FTH"]),
to_mask(mask_row["Fire Correction: ARC"]),
],
[ # lightning
to_mask(mask_row["Lightning Correction: STR"]),
to_mask(mask_row["Lightning Correction: DEX"]),
to_mask(mask_row["Lightning Correction: INT"]),
to_mask(mask_row["Lightning Correction: FTH"]),
to_mask(mask_row["Lightning Correction: ARC"]),
],
[ # holy
to_mask(mask_row["Holy Correction: STR"]),
to_mask(mask_row["Holy Correction: DEX"]),
to_mask(mask_row["Holy Correction: INT"]),
to_mask(mask_row["Holy Correction: FTH"]),
to_mask(mask_row["Holy Correction: ARC"]),
],
]
corrections = [
row["Correction Type: Physical"],
row["Correction Type: Magic"],
row["Correction Type: Fire"],
row["Correction Type: Lightning"],
row["Correction Type: Holy"],
]
buffable = "True" in row["Is Buffable"]
# Auxiliary Effects (blood, poison)
aux = {}
for aux_id in [row["Behavior SpEffect 1"], row["Behavior SpEffect 2"]]:
if int(aux_id) != -1 and int(aux_id) > 100000:
aux_name = effects[aux_id]["Row Name"]
xs = [x for x in range(0, 26)]
ys = [effects[str(int(aux_id) + x)] for x in xs]
if "Hemorrhage" in aux_name:
ty = "bleed"
ys = [int(y["Inflict Hemorrhage +"]) for y in ys]
elif "Frostbite" in aux_name:
ty = "frost"
ys = [int(y["Inflict Frostbite +"]) for y in ys]
elif "Poison" in aux_name:
ty = "poison"
ys = [int(y["Inflict Poison +"]) for y in ys]
elif "Scarlet Rot" in aux_name:
ty = "scarlet_rot"
ys = [int(y["Inflict Scarlet Rot +"]) for y in ys]
elif "Madness" in aux_name:
ty = "madness"
ys = [int(y["Inflict Madness +"]) for y in ys]
elif "Sleep" in aux_name:
ty = "sleep"
ys = [int(y["Inflict Sleep +"]) for y in ys]
elif "Blight" in aux_name:
ty = "blight"
ys = [int(y["Inflict Blight +"]) for y in ys]
aux[ty] = regression(xs, ys)
elif int(aux_id) != -1 and int(aux_id) <= 100000:
aux_name = effects[aux_id]["Row Name"]
if "Hemorrhage" in aux_name:
ty = "bleed"
base = effects[aux_id]["Inflict Hemorrhage +"]
elif "Frostbite" in aux_name:
ty = "frost"
base = effects[aux_id]["Inflict Frostbite +"]
elif "Poison" in aux_name:
ty = "poison"
base = effects[aux_id]["Inflict Poison +"]
elif "Scarlet Rot" in aux_name:
ty = "scarlet_rot"
base = effects[aux_id]["Inflict Scarlet Rot +"]
elif "Madness" in aux_name:
ty = "madness"
base = effects[aux_id]["Inflict Madness +"]
elif "Sleep" in aux_name:
ty = "sleep"
base = effects[aux_id]["Inflict Sleep +"]
elif "Blight" in aux_name:
ty = "blight"
base = effects[aux_id]["Inflict Blight +"]
aux[ty] = [0.0, aux_name]
if id in weapons:
if not id in IGNORED_WEAPON_INFUSIONS:
weapon = weapons[id]
weapon["infusions"][infusion] = {
"damage": damage,
"scaling": scaling,
"aux": aux,
"masks": weapon_masks,
"corrections": corrections,
"buffable": buffable,
}
return
else:
weapon = {}
weapon["id"] = id
weapon["name"] = name
weapon["requirements"] = [
int(row["Requirement: STR"]),
int(row["Requirement: DEX"]),
int(row["Requirement: INT"]),
int(row["Requirement: FTH"]),
int(row["Requirement: ARC"]),
]
weapon["category"] = WEAPON_CATEGORIES[int(row["Row ID"]) // 1000000]
if int(row["Reinforcement Material Set ID"]) == 2200:
weapon["unique"] = True
else:
weapon["unique"] = False
weapon["infusions"] = {}
weapon["infusions"][infusion] = {
"damage": damage,
"scaling": scaling,
"aux": aux,
"masks": weapon_masks,
"corrections": corrections,
"buffable": buffable,
}
weapons[id] = weapon
def regression(xs, ys):
# least-squares sum regression
n = len(xs)
xy = sum([x * y for x, y in zip(xs, ys)]) # sum of all x * y
xsq = sum([x * x for x in xs]) # sum of all squared xs
a = (n * xy - sum(xs) * sum(ys)) / (n * xsq - sum(xs) ** 2)
b = ys[0]
return round(a, 5), b
def extract_infusions(rows):
for i, ty in enumerate(INFUSIONS):
infusion = {}
id = to_kebab(ty)
infusion["id"] = id
infusion["name"] = ty.strip()
relevant = [row for row in rows[0 + i + i * 25 : 26 + i + i * 25]]
xs = [x for x in range(0, 26)]
# damage & upgrade
physical = [float(relevant[i]["Damage %: Physical"]) for i in range(0, 26)]
magic = [float(relevant[i]["Damage %: Magic"]) for i in range(0, 26)]
fire = [float(relevant[i]["Damage %: Fire"]) for i in range(0, 26)]
lightning = [float(relevant[i]["Damage %: Lightning"]) for i in range(0, 26)]
holy = [float(relevant[i]["Damage %: Holy"]) for i in range(0, 26)]
physical_upg, physical_dmg = regression(xs, physical)
magic_upg, magic_dmg = regression(xs, magic)
fire_upg, fire_dmg = regression(xs, fire)
lightning_upg, lightning_dmg = regression(xs, lightning)
holy_upg, holy_dmg = regression(xs, holy)
infusion["damage"] = [
physical_dmg,
magic_dmg,
fire_dmg,
lightning_dmg,
holy_dmg,
]
infusion["upgrade"] = [
physical_upg,
magic_upg,
fire_upg,
lightning_upg,
holy_upg,
]
# scaling
strength = [float(relevant[i]["Correction %: STR"]) for i in range(0, 26)]
dexterity = [float(relevant[i]["Correction %: DEX"]) for i in range(0, 26)]
intelligence = [float(relevant[i]["Correction %: INT"]) for i in range(0, 26)]
faith = [float(relevant[i]["Correction %: FTH"]) for i in range(0, 26)]
arcane = [float(relevant[i]["Correction %: ARC"]) for i in range(0, 26)]
str_growth, str_scaling = regression(xs, strength)
dex_growth, dex_scaling = regression(xs, dexterity)
int_growth, int_scaling = regression(xs, intelligence)
fth_growth, fth_scaling = regression(xs, faith)
arc_growth, arc_scaling = regression(xs, arcane)
infusion["scaling"] = [
str_scaling,
dex_scaling,
int_scaling,
fth_scaling,
arc_scaling,
]
infusion["growth"] = [
str_growth,
dex_growth,
int_growth,
fth_growth,
arc_growth,
]
infusions[id] = infusion
def process_damage(caps):
for row in caps.values():
calculation = {}
id = row["Row ID"]
calculation["id"] = id
calculation["softcaps"] = [
[ # physical
int(row["Stat Max 0"]),
int(row["Stat Max 1"]),
int(row["Stat Max 2"]),
int(row["Stat Max 3"]),
int(row["Stat Max 4"]),
],
[ # magic
int(row["Stat Max 0"]),
int(row["Stat Max 1"]),
int(row["Stat Max 2"]),
int(row["Stat Max 3"]),
int(row["Stat Max 4"]),
],
[ # fire
int(row["Stat Max 0"]),
int(row["Stat Max 1"]),
int(row["Stat Max 2"]),
int(row["Stat Max 3"]),
int(row["Stat Max 4"]),
],
[ # lightning
int(row["Stat Max 0"]),
int(row["Stat Max 1"]),
int(row["Stat Max 2"]),
int(row["Stat Max 3"]),
int(row["Stat Max 4"]),
],
[ # holy
int(row["Stat Max 0"]),
int(row["Stat Max 1"]),
int(row["Stat Max 2"]),
int(row["Stat Max 3"]),
int(row["Stat Max 4"]),
],
]
calculation["growth"] = [
[
int(row["Grow 0"]),
int(row["Grow 1"]),
int(row["Grow 2"]),
int(row["Grow 3"]),
int(row["Grow 4"]),
],
[
int(row["Grow 0"]),
int(row["Grow 1"]),
int(row["Grow 2"]),
int(row["Grow 3"]),
int(row["Grow 4"]),
],
[
int(row["Grow 0"]),
int(row["Grow 1"]),
int(row["Grow 2"]),
int(row["Grow 3"]),
int(row["Grow 4"]),
],
[
int(row["Grow 0"]),
int(row["Grow 1"]),
int(row["Grow 2"]),
int(row["Grow 3"]),
int(row["Grow 4"]),
],
[
int(row["Grow 0"]),
int(row["Grow 1"]),
int(row["Grow 2"]),
int(row["Grow 3"]),
int(row["Grow 4"]),
],
]
calculation["adjustments"] = [
[
float(row["Adjustment Point - Grow 0"]),
float(row["Adjustment Point - Grow 1"]),
float(row["Adjustment Point - Grow 2"]),
float(row["Adjustment Point - Grow 3"]),
float(row["Adjustment Point - Grow 4"]),
],
[
float(row["Adjustment Point - Grow 0"]),
float(row["Adjustment Point - Grow 1"]),
float(row["Adjustment Point - Grow 2"]),
float(row["Adjustment Point - Grow 3"]),
float(row["Adjustment Point - Grow 4"]),
],
[
float(row["Adjustment Point - Grow 0"]),
float(row["Adjustment Point - Grow 1"]),
float(row["Adjustment Point - Grow 2"]),
float(row["Adjustment Point - Grow 3"]),
float(row["Adjustment Point - Grow 4"]),
],
[
float(row["Adjustment Point - Grow 0"]),
float(row["Adjustment Point - Grow 1"]),
float(row["Adjustment Point - Grow 2"]),
float(row["Adjustment Point - Grow 3"]),
float(row["Adjustment Point - Grow 4"]),
],
[
float(row["Adjustment Point - Grow 0"]),
float(row["Adjustment Point - Grow 1"]),
float(row["Adjustment Point - Grow 2"]),
float(row["Adjustment Point - Grow 3"]),
float(row["Adjustment Point - Grow 4"]),
],
]
calculations[id] = calculation
main() main()

170
corrections.py Normal file
View file

@ -0,0 +1,170 @@
# dont add these items to the output
IGNORED = [
"",
"head",
"body",
"arms",
"legs",
"travel-hairstyle",
"millicents-robe",
"millicents-gloves",
"millicents-boots",
"millicents-tunic",
"millicents-robe",
"braves-cord-circlet",
"braves-battlewear",
"braves-battlewear-altered",
"braves-bracer",
"braves-legwraps",
"braves-leather-helm",
"ragged-hat",
"ragged-hat-altered",
"ragged-armor",
"ragged-armor-altered",
"ragged-gloves",
"ragged-loincloth",
"deathbed-smalls",
# these items are wrong in the param files
"ash-of-war-scarab",
"sanguine-noble-hood",
"sanguine-noble-robe",
"sanguine-noble-bracelets",
"sanguine-noble-trousers",
"fias-robe",
"fias-robe-altered",
"deathbed-dress",
"rotten-duelist-greaves",
]
# these items are either missing or wrong in the param files
MISSING = {
"helmets": {
"ash-of-war-scarab": {
"name": "Ash-of-War Scarab",
"defenses": [-5.8, -5.6, -5.8, -5.8, -4.9, -4.9, -4.9, -5.1],
"resistances": [42, 22, 27, 26],
"poise": 2,
"weight": 5.1,
},
"godskin-noble-hood": {
"name": "Godskin Noble Hood",
"defenses": [1.4, 2.8, 1.8, 1.4, 4.5, 4, 4.2, 4.8],
"resistances": [16, 10, 27, 29],
"poise": 1,
"weight": 1.7,
},
"sanguine-noble-hood": {
"name": "Sanguine Noble Hood",
"defenses": [1.4, 0.9, 0.9, 0.9, 4.6, 3.8, 4.5, 4.6],
"resistances": [18, 5, 29, 27],
"poise": 0,
"weight": 1.4,
},
},
"chestpieces": {
"godskin-noble-robe": {
"name": "Godskin Noble Robe",
"defenses": [6.1, 9.5, 6.7, 6.1, 13, 12.4, 12.6, 14.1],
"resistances": [46, 25, 76, 83],
"poise": 5,
"weight": 6.3,
},
"sanguine-noble-robe": {
"name": "Sanguine Noble Robe",
"defenses": [6.1, 5.3, 5.3, 5.3, 13.3, 11.9, 13.0, 13.5],
"resistances": [50, 21, 83, 76],
"poise": 2,
"weight": 5.1,
},
"fias-robe": {
"name": "Fia's Robe",
"defenses": [5.3, 6.1, 5.3, 5.3, 12.6, 12.4, 12.6, 13],
"resistances": [46, 21, 76, 108],
"poise": 2,
"weight": 5.1,
},
"fias-robe": {
"name": "Fia's Robe",
"defenses": [5.3, 6.1, 5.3, 5.3, 12.6, 12.4, 12.6, 13.0],
"resistances": [46, 21, 76, 108],
"poise": 2,
"weight": 5.1,
},
"fias-robe-altered": {
"name": "Fia's Robe (Altered)",
"defenses": [2.7, 4.2, 2.7, 2.7, 11.9, 11.4, 11.9, 12.6],
"resistances": [34, 10, 57, 93],
"poise": 0,
"weight": 3.2,
},
"deathbed-dress": {
"id": "deathbed-dress",
"name": "Deathbed Dress",
"defenses": [0.6, 2.7, 0.6, 0.6, 11.9, 11.4, 11.9, 12.4],
"resistances": [38, 11, 63, 107],
"poise": 1,
"weight": 3.2,
},
},
"gauntlets": {
"godskin-noble-bracelets": {
"name": "Godskin Noble Bracelets",
"defenses": [1.3, 2.1, 1.5, 1.3, 3.2, 2.9, 3.1, 3.4],
"resistances": [14, 8, 24, 25],
"poise": 1,
"weight": 1.7,
},
},
"leggings": {
"godskin-noble-trousers": {
"name": "Godskin Noble Trousers",
"defenses": [2.3, 4.5, 3, 2.3, 7.2, 6.5, 6.8, 7.7],
"resistances": [24, 14, 39, 41],
"poise": 1,
"weight": 2.5,
},
"rotten-duelist-greaves": {
"id": "rotten-duelist-greaves",
"name": "Rotten Duelist Greaves",
"defenses": [7.4, 6.2, 7.7, 7.1, 6.2, 6.5, 5.8, 6.2],
"resistances": [35, 35, 15, 15],
"poise": 10,
"weight": 7.3,
},
},
}
# until i find where this is located in the param files, this is the workaround
HELMET_STATS = {
"alberichs-pointed-hat": [0, 0, 0, 0, 0, 0, 0, 4],
"crimson-hood": [1, 0, 0, 0, 0, 0, 0, 0],
"haima-glintstone-crown": [0, 0, 0, 2, 0, 2, 0, 0],
"haligtree-helm": [0, 0, 0, 0, 0, 0, 1, 0],
"haligtree-knight-helm": [0, 0, 0, 0, 0, 0, 2, 0],
"hierodas-glintstone-crown": [0, 0, 2, 0, 0, 2, 0, 0],
"imp-head-cat": [0, 0, 0, 0, 0, 2, 0, 0],
"imp-head-corpse": [0, 0, 0, 0, 0, 0, 2, 0],
"imp-head-elder": [0, 0, 0, 0, 0, 0, 0, 2],
"imp-head-long-tongued": [0, 0, 0, 0, 2, 0, 0, 0],
"imp-head-wolf": [0, 0, 2, 0, 0, 0, 0, 0],
"imp-head-fanged": [0, 0, 0, 2, 0, 0, 0, 0],
"karolos-glinstone-crown": [0, 0, 0, 0, 0, 3, 0, 0],
"mask-of-confidence": [0, 0, 0, 0, 0, 0, 0, 3],
"navy-hood": [0, 1, 0, 0, 0, 0, 0, 0],
"okina-mask": [0, 0, 0, 0, 3, 0, 0, 0],
"olivinus-glintstone-crown": [0, 0, 0, 0, 0, 3, 0, 0],
"omensmirk-mask": [0, 0, 0, 2, 0, 0, 0, 0],
"queens-crescent-crown": [0, 0, 0, 0, 0, 3, 0, 0],
"silver-tear-mask": [0, 0, 0, 0, 0, 0, 0, 8],
"twinsage-glintstone-crown": [0, 0, 0, 0, 0, 6, 0, 0],
"witchs-glintstone-crown": [0, 0, 0, 0, 0, 3, 0, 3],
}
IGNORED_WEAPON_INFUSIONS = [
"heavy-crossbow",
"bloody-helice",
"mohgwyns-sacred-spear",
"sacred-relic-sword",
"treespear",
"serpentbone-blade",
]

File diff suppressed because it is too large Load diff

View file

@ -1,730 +0,0 @@
[
{
"name": "Iron Gauntlets",
"id": "iron-gauntlets",
"defenses": [2.8, 2.3, 2.9, 2.9, 2.1, 2.3, 1.5, 1.9],
"resistances": [8, 15, 6, 4],
"poise": 3.0,
"weight": 2.9
},
{
"name": "Kaiden Gauntlets",
"id": "kaiden-gauntlets",
"defenses": [2.9, 2.1, 2.9, 2.9, 1.9, 2.1, 1.7, 1.9],
"resistances": [8, 15, 6, 6],
"poise": 3.0,
"weight": 2.9
},
{
"name": "Drake Knight Gauntlets",
"id": "drake-knight-gauntlets",
"defenses": [2.8, 2.3, 2.9, 2.8, 2.5, 2.8, 2.1, 2.5],
"resistances": [8, 15, 7, 7],
"poise": 3.0,
"weight": 3.1
},
{
"name": "Scaled Gauntlets",
"id": "scaled-gauntlets",
"defenses": [4.0, 3.4, 4.2, 4.0, 3.3, 3.5, 3.2, 3.3],
"resistances": [19, 28, 13, 13],
"poise": 6.0,
"weight": 5.3
},
{
"name": "Perfumer Gloves",
"id": "perfumer-gloves",
"defenses": [1.0, 1.5, 1.3, 1.0, 3.2, 2.9, 3.1, 3.2],
"resistances": [20, 6, 21, 22],
"poise": 0.0,
"weight": 1.4
},
{
"name": "Traveler's Gloves",
"id": "travelers-gloves",
"defenses": [1.3, 1.3, 1.0, 0.6, 3.2, 3.2, 3.1, 3.2],
"resistances": [18, 7, 22, 21],
"poise": 0.0,
"weight": 1.4
},
{
"name": "Alberich's Bracers",
"id": "alberichs-bracers",
"defenses": [1.3, 1.0, 1.3, 1.3, 3.2, 2.9, 3.1, 3.2],
"resistances": [13, 8, 22, 24],
"poise": 0.0,
"weight": 1.4
},
{
"name": "Spellblade's Gloves",
"id": "spellblades-gloves",
"defenses": [0.9, 0.5, 0.9, 0.9, 3.1, 2.7, 2.8, 3.1],
"resistances": [11, 6, 19, 20],
"poise": 0.0,
"weight": 1.2
},
{
"name": "Bull-Goat Gauntlets",
"id": "bull-goat-gauntlets",
"defenses": [5.2, 5.2, 4.6, 4.6, 3.3, 3.3, 3.7, 3.2],
"resistances": [24, 28, 15, 18],
"poise": 10.0,
"weight": 8.8
},
{
"name": "Ronin's Gauntlets",
"id": "ronins-gauntlets",
"defenses": [2.7, 2.7, 2.8, 2.7, 2.9, 3.1, 3.2, 2.9],
"resistances": [25, 19, 20, 21],
"poise": 2.0,
"weight": 3.1
},
{
"name": "Blaidd's Gauntlets",
"id": "blaidds-gauntlets",
"defenses": [3.6, 3.2, 3.6, 3.8, 2.8, 3.2, 2.7, 2.9],
"resistances": [13, 21, 8, 8],
"poise": 5.0,
"weight": 4.6
},
{
"name": "Black Knife Gauntlets",
"id": "black-knife-gauntlets",
"defenses": [2.8, 2.7, 3.1, 3.1, 2.1, 2.3, 1.6, 2.8],
"resistances": [9, 15, 8, 8],
"poise": 3.0,
"weight": 3.1
},
{
"name": "Exile Gauntlets",
"id": "exile-gauntlets",
"defenses": [2.9, 2.1, 3.1, 2.9, 1.7, 2.5, 1.5, 2.1],
"resistances": [8, 17, 6, 4],
"poise": 3.0,
"weight": 2.9
},
{
"name": "Banished Knight Gauntlets",
"id": "banished-knight-gauntlets",
"defenses": [4.7, 3.7, 4.9, 4.4, 3.3, 3.3, 3.2, 3.3],
"resistances": [20, 28, 13, 14],
"poise": 6.0,
"weight": 5.8
},
{
"name": "Briar Gauntlets",
"id": "briar-gauntlets",
"defenses": [3.2, 2.8, 3.3, 3.1, 2.7, 3.1, 2.1, 2.7],
"resistances": [12, 24, 8, 8],
"poise": 3.0,
"weight": 3.9
},
{
"name": "Night's Cavalry Gauntlets",
"id": "nights-cavalry-gauntlets",
"defenses": [3.5, 3.2, 3.5, 3.3, 2.7, 3.1, 2.7, 3.1],
"resistances": [13, 19, 8, 8],
"poise": 4.0,
"weight": 4.3
},
{
"name": "Blue Silver Bracelets",
"id": "blue-silver-bracelets",
"defenses": [2.3, 1.5, 2.5, 1.9, 1.9, 1.6, 1.0, 1.0],
"resistances": [4, 14, 4, 4],
"poise": 1.0,
"weight": 2.1
},
{
"name": "Malformed Dragon Gauntlets",
"id": "malformed-dragon-gauntlets",
"defenses": [4.2, 3.7, 4.4, 4.2, 3.2, 3.2, 3.4, 3.2],
"resistances": [19, 25, 13, 13],
"poise": 6.0,
"weight": 5.3
},
{
"name": "Tree Sentinel Gauntlets",
"id": "tree-sentinel-gauntlets",
"defenses": [4.7, 3.7, 4.7, 4.4, 3.2, 4.3, 3.1, 3.5],
"resistances": [22, 30, 14, 15],
"poise": 6.0,
"weight": 6.3
},
{
"name": "Royal Knight Gauntlets",
"id": "royal-knight-gauntlets",
"defenses": [4.0, 3.6, 4.4, 4.2, 3.5, 3.3, 3.1, 3.2],
"resistances": [17, 22, 12, 12],
"poise": 5.0,
"weight": 5.2
},
{
"name": "Nox Monk Bracelets",
"id": "nox-monk-bracelets",
"defenses": [2.1, 2.3, 2.1, 1.9, 2.9, 2.8, 2.8, 2.3],
"resistances": [20, 13, 15, 15],
"poise": 1.0,
"weight": 2.6
},
{
"name": "Guardian Bracers",
"id": "guardian-bracers",
"defenses": [2.7, 2.5, 2.5, 2.3, 2.9, 2.8, 2.9, 2.9],
"resistances": [25, 17, 20, 19],
"poise": 1.0,
"weight": 2.9
},
{
"name": "Cleanrot Gauntlets",
"id": "cleanrot-gauntlets",
"defenses": [3.6, 3.3, 4.0, 4.4, 3.1, 3.2, 2.8, 3.3],
"resistances": [21, 22, 9, 11],
"poise": 5.0,
"weight": 5.0
},
{
"name": "Fire Monk Gauntlets",
"id": "fire-monk-gauntlets",
"defenses": [3.5, 3.1, 3.3, 3.1, 2.7, 3.3, 2.3, 2.3],
"resistances": [11, 18, 8, 8],
"poise": 4.0,
"weight": 3.9
},
{
"name": "Blackflame Monk Gauntlets",
"id": "blackflame-monk-gauntlets",
"defenses": [3.3, 2.8, 3.6, 3.2, 2.5, 3.2, 1.9, 2.5],
"resistances": [11, 18, 7, 11],
"poise": 4.0,
"weight": 3.9
},
{
"name": "Fire Prelate Gauntlets",
"id": "fire-prelate-gauntlets",
"defenses": [4.9, 4.3, 4.6, 4.6, 3.3, 5.0, 3.2, 3.3],
"resistances": [22, 21, 30, 17],
"poise": 9.0,
"weight": 8.2
},
{
"name": "Vulgar Militia Gauntlets",
"id": "vulgar-militia-gauntlets",
"defenses": [1.7, 2.1, 1.9, 1.6, 2.1, 2.1, 2.3, 2.1],
"resistances": [20, 9, 14, 14],
"poise": 1.0,
"weight": 2.1
},
{
"name": "Elden Lord Bracers",
"id": "elden-lord-bracers",
"defenses": [2.9, 2.7, 2.8, 3.1, 2.1, 2.8, 1.7, 1.9],
"resistances": [11, 18, 6, 7],
"poise": 3.0,
"weight": 3.1
},
{
"name": "Radahn's Gauntlets",
"id": "radahns-gauntlets",
"defenses": [4.7, 3.7, 4.6, 4.4, 3.3, 3.5, 3.1, 3.3],
"resistances": [20, 33, 14, 13],
"poise": 6.0,
"weight": 5.8
},
{
"name": "Queen's Bracelets",
"id": "queens-bracelets",
"defenses": [1.5, 1.3, 1.3, 1.0, 3.4, 3.1, 3.2, 3.3],
"resistances": [14, 8, 24, 28],
"poise": 0.0,
"weight": 1.7
},
{
"name": "Sanguine Noble Bracelets",
"id": "sanguine-noble-bracelets",
"defenses": [1.7, 1.6, 1.6, 1.3, 3.2, 3.1, 3.2, 3.6],
"resistances": [17, 8, 28, 25],
"poise": 1.0,
"weight": 2.1
},
{
"name": "Godskin Apostle Bracelets",
"id": "godskin-apostle-bracelets",
"defenses": [1.3, 2.1, 1.5, 1.3, 3.2, 2.9, 3.1, 3.4],
"resistances": [14, 8, 24, 25],
"poise": 1.0,
"weight": 1.7
},
{
"name": "Depraved Perfumer Gloves",
"id": "depraved-perfumer-gloves",
"defenses": [1.5, 1.5, 1.4, 1.2, 3.2, 3.1, 3.1, 3.1],
"resistances": [23, 8, 20, 28],
"poise": 1.0,
"weight": 2.0
},
{
"name": "Crucible Gauntlets",
"id": "crucible-gauntlets",
"defenses": [4.4, 3.4, 4.2, 4.2, 3.2, 3.2, 2.8, 3.3],
"resistances": [17, 24, 12, 12],
"poise": 6.0,
"weight": 5.2
},
{
"name": "Lusat's Manchettes",
"id": "lusats-manchettes",
"defenses": [1.3, 0.1, 1.3, 0.1, 3.4, 2.8, 3.1, 3.1],
"resistances": [12, 6, 20, 22],
"poise": 0.0,
"weight": 1.1
},
{
"name": "Azur's Manchettes",
"id": "azurs-manchettes",
"defenses": [1.0, 0.1, 0.6, 0.6, 3.4, 2.8, 2.9, 3.2],
"resistances": [12, 8, 22, 20],
"poise": 0.0,
"weight": 1.1
},
{
"name": "All-Knowing Gauntlets",
"id": "all-knowing-gauntlets",
"defenses": [3.2, 2.9, 3.3, 2.9, 3.1, 2.3, 2.5, 2.1],
"resistances": [9, 15, 7, 7],
"poise": 4.0,
"weight": 3.5
},
{
"name": "Twinned Gauntlets",
"id": "twinned-gauntlets",
"defenses": [3.3, 3.1, 3.6, 2.9, 2.8, 2.8, 2.1, 2.5],
"resistances": [11, 18, 7, 18],
"poise": 4.0,
"weight": 3.9
},
{
"name": "Astrologer Gloves",
"id": "astrologer-gloves",
"defenses": [1.3, 1.0, 1.0, 1.0, 3.2, 3.1, 3.2, 3.1],
"resistances": [14, 7, 24, 21],
"poise": 1.0,
"weight": 1.4
},
{
"name": "Lionel's Gauntlets",
"id": "lionels-gauntlets",
"defenses": [4.4, 4.1, 4.9, 5.0, 3.3, 3.7, 3.2, 3.3],
"resistances": [21, 33, 14, 17],
"poise": 8.0,
"weight": 7.1
},
{
"name": "Hoslow's Gauntlets",
"id": "hoslows-gauntlets",
"defenses": [3.5, 2.9, 3.3, 3.1, 2.7, 2.9, 2.5, 2.5],
"resistances": [13, 20, 8, 8],
"poise": 4.0,
"weight": 3.9
},
{
"name": "Vagabond Knight Gauntlets",
"id": "vagabond-knight-gauntlets",
"defenses": [3.3, 2.8, 3.1, 2.9, 2.5, 2.7, 2.1, 2.1],
"resistances": [12, 19, 8, 8],
"poise": 3.0,
"weight": 3.5
},
{
"name": "Warrior Gauntlets",
"id": "warrior-gauntlets",
"defenses": [2.3, 2.3, 1.9, 1.9, 2.5, 2.7, 2.9, 2.3],
"resistances": [21, 14, 17, 17],
"poise": 1.0,
"weight": 2.6
},
{
"name": "War Surgeon Gloves",
"id": "war-surgeon-gloves",
"defenses": [1.6, 1.8, 2.0, 1.6, 2.2, 2.4, 2.6, 2.4],
"resistances": [18, 13, 15, 17],
"poise": 1.0,
"weight": 2.3
},
{
"name": "Royal Remains Gauntlets",
"id": "royal-remains-gauntlets",
"defenses": [2.9, 2.8, 3.2, 2.9, 2.3, 2.5, 1.9, 2.1],
"resistances": [12, 19, 8, 4],
"poise": 3.0,
"weight": 3.5
},
{
"name": "Beast Champion Gauntlets",
"id": "beast-champion-gauntlets",
"defenses": [4.4, 4.1, 4.7, 4.6, 3.2, 3.4, 3.2, 3.3],
"resistances": [19, 30, 14, 13],
"poise": 6.0,
"weight": 5.8
},
{
"name": "Champion Bracers",
"id": "champion-bracers",
"defenses": [1.6, 2.1, 1.7, 1.9, 1.9, 2.3, 2.5, 2.3],
"resistances": [17, 11, 14, 13],
"poise": 1.0,
"weight": 2.1
},
{
"name": "Noble's Gloves",
"id": "nobles-gloves",
"defenses": [1.5, 1.6, 1.5, 1.6, 3.3, 3.3, 3.2, 3.3],
"resistances": [15, 8, 25, 28],
"poise": 1.0,
"weight": 2.1
},
{
"name": "Maliketh's Gauntlets",
"id": "malikeths-gauntlets",
"defenses": [3.3, 2.9, 3.5, 3.3, 2.7, 2.8, 2.3, 3.2],
"resistances": [12, 19, 8, 17],
"poise": 4.0,
"weight": 4.3
},
{
"name": "Malenia's Gauntlet",
"id": "malenias-gauntlet",
"defenses": [3.1, 2.3, 3.2, 2.8, 1.9, 2.3, 1.6, 2.7],
"resistances": [17, 14, 6, 6],
"poise": 3.0,
"weight": 3.1
},
{
"name": "Veteran's Gauntlets",
"id": "veterans-gauntlets",
"defenses": [4.7, 4.3, 4.7, 4.4, 3.3, 3.5, 3.2, 3.3],
"resistances": [21, 30, 15, 15],
"poise": 8.0,
"weight": 6.3
},
{
"name": "Bloodhound Knight Gauntlets",
"id": "bloodhound-knight-gauntlets",
"defenses": [3.1, 2.8, 3.5, 3.3, 2.3, 2.5, 1.7, 2.5],
"resistances": [11, 17, 8, 8],
"poise": 3.0,
"weight": 3.5
},
{
"name": "Sorcerer Manchettes",
"id": "sorcerer-manchettes",
"defenses": [1.0, 1.3, 1.3, 0.1, 3.2, 3.1, 2.9, 3.1],
"resistances": [13, 4, 21, 20],
"poise": 0.0,
"weight": 1.1
},
{
"name": "Raging Wolf Gauntlets",
"id": "raging-wolf-gauntlets",
"defenses": [3.2, 2.8, 3.2, 3.1, 2.4, 2.7, 1.6, 2.2],
"resistances": [11, 19, 6, 6],
"poise": 3.0,
"weight": 3.4
},
{
"name": "Land of Reeds Gauntlets",
"id": "land-of-reeds-gauntlets",
"defenses": [2.1, 2.3, 2.9, 2.3, 2.5, 2.8, 2.9, 2.7],
"resistances": [20, 17, 17, 18],
"poise": 1.0,
"weight": 2.8
},
{
"name": "White Reed Gauntlets",
"id": "white-reed-gauntlets",
"defenses": [2.3, 2.5, 2.8, 2.1, 2.7, 2.7, 2.9, 2.5],
"resistances": [22, 14, 18, 17],
"poise": 2.0,
"weight": 2.8
},
{
"name": "Confessor Gloves",
"id": "confessor-gloves",
"defenses": [2.1, 2.7, 2.1, 2.3, 2.8, 2.8, 3.1, 2.5],
"resistances": [21, 17, 17, 18],
"poise": 1.0,
"weight": 2.8
},
{
"name": "Traveling Maiden Gloves",
"id": "traveling-maiden-gloves",
"defenses": [1.3, 1.5, 1.5, 1.0, 3.3, 3.2, 3.2, 3.3],
"resistances": [15, 8, 25, 28],
"poise": 1.0,
"weight": 1.6
},
{
"name": "Preceptor's Gloves",
"id": "preceptors-gloves",
"defenses": [1.5, 1.6, 1.5, 1.5, 3.6, 3.3, 3.2, 3.2],
"resistances": [17, 8, 28, 25],
"poise": 1.0,
"weight": 2.1
},
{
"name": "Bandit Manchettes",
"id": "bandit-manchettes",
"defenses": [1.5, 1.6, 1.7, 1.7, 1.9, 1.9, 2.1, 1.7],
"resistances": [15, 8, 17, 17],
"poise": 0.0,
"weight": 1.7
},
{
"name": "Eccentric's Manchettes",
"id": "eccentrics-manchettes",
"defenses": [2.9, 2.1, 2.8, 2.9, 2.1, 2.3, 1.5, 1.9],
"resistances": [8, 18, 6, 4],
"poise": 3.0,
"weight": 2.9
},
{
"name": "Fingerprint Gauntlets",
"id": "fingerprint-gauntlets",
"defenses": [3.3, 2.9, 2.9, 2.9, 2.3, 3.1, 1.6, 2.3],
"resistances": [11, 20, 4, 8],
"poise": 4.0,
"weight": 3.5
},
{
"name": "Bloodsoaked Manchettes",
"id": "bloodsoaked-manchettes",
"defenses": [1.3, 1.5, 1.0, 0.6, 3.1, 3.1, 3.1, 3.1],
"resistances": [14, 9, 24, 22],
"poise": 0.0,
"weight": 1.4
},
{
"name": "Omen Gauntlets",
"id": "omen-gauntlets",
"defenses": [4.6, 3.7, 4.7, 4.7, 3.2, 3.6, 3.7, 3.4],
"resistances": [22, 21, 19, 25],
"poise": 9.0,
"weight": 7.7
},
{
"name": "Carian Knight Gauntlets",
"id": "carian-knight-gauntlets",
"defenses": [2.9, 2.7, 3.1, 2.9, 3.1, 2.9, 2.3, 2.9],
"resistances": [9, 15, 7, 8],
"poise": 3.0,
"weight": 3.5
},
{
"name": "Errant Sorcerer Manchettes",
"id": "errant-sorcerer-manchettes",
"defenses": [0.6, 0.6, 1.3, 0.6, 3.2, 3.1, 2.9, 3.2],
"resistances": [11, 7, 21, 22],
"poise": 0.0,
"weight": 1.1
},
{
"name": "Battlemage Manchettes",
"id": "battlemage-manchettes",
"defenses": [1.0, 1.3, 0.6, 1.0, 3.2, 2.8, 2.9, 3.1],
"resistances": [13, 7, 20, 22],
"poise": 0.0,
"weight": 1.1
},
{
"name": "Traveler's Manchettes",
"id": "travelers-manchettes",
"defenses": [1.6, 1.5, 1.3, 1.0, 3.3, 3.2, 3.2, 3.1],
"resistances": [13, 8, 25, 25],
"poise": 1.0,
"weight": 1.7
},
{
"name": "Gold Bracelets",
"id": "gold-bracelets",
"defenses": [1.0, 0.6, 0.6, 0.1, 2.9, 2.8, 2.9, 3.2],
"resistances": [13, 4, 20, 20],
"poise": 0.0,
"weight": 0.8
},
{
"name": "Zamor Bracelets",
"id": "zamor-bracelets",
"defenses": [2.8, 2.1, 2.9, 2.5, 1.9, 1.9, 1.3, 1.7],
"resistances": [6, 20, 0, 4],
"poise": 3.0,
"weight": 2.8
},
{
"name": "Chain Gauntlets",
"id": "chain-gauntlets",
"defenses": [2.9, 2.1, 3.2, 2.9, 1.7, 2.7, 1.5, 1.9],
"resistances": [8, 14, 4, 6],
"poise": 3.0,
"weight": 2.9
},
{
"name": "Mushroom Arms",
"id": "mushroom-arms",
"defenses": [1.5, 1.7, 0.6, 1.3, 3.3, 1.3, 3.2, 3.2],
"resistances": [34, 8, 30, 25],
"poise": 0.0,
"weight": 1.7
},
{
"name": "Leather Gloves",
"id": "leather-gloves",
"defenses": [1.9, 2.3, 1.9, 2.1, 2.3, 2.3, 2.5, 2.5],
"resistances": [20, 12, 14, 17],
"poise": 1.0,
"weight": 2.4
},
{
"name": "Knight Gauntlets",
"id": "knight-gauntlets",
"defenses": [3.1, 2.9, 3.3, 3.3, 2.7, 2.7, 2.3, 2.1],
"resistances": [9, 17, 6, 6],
"poise": 4.0,
"weight": 3.5
},
{
"name": "Godrick Soldier Gauntlets",
"id": "godrick-soldier-gauntlets",
"defenses": [3.2, 2.8, 3.2, 3.1, 2.5, 2.7, 1.9, 2.3],
"resistances": [11, 18, 8, 8],
"poise": 4.0,
"weight": 3.5
},
{
"name": "Raya Lucarian Gauntlets",
"id": "raya-lucarian-gauntlets",
"defenses": [3.2, 2.7, 3.3, 3.2, 2.7, 2.7, 1.7, 2.1],
"resistances": [11, 18, 8, 8],
"poise": 4.0,
"weight": 3.5
},
{
"name": "Leyndell Soldier Gauntlets",
"id": "leyndell-soldier-gauntlets",
"defenses": [3.2, 2.9, 3.1, 3.2, 2.3, 2.5, 2.1, 2.3],
"resistances": [11, 18, 8, 8],
"poise": 4.0,
"weight": 3.5
},
{
"name": "Radahn Soldier Gauntlets",
"id": "radahn-soldier-gauntlets",
"defenses": [3.3, 2.7, 3.1, 2.9, 2.5, 2.8, 1.9, 2.3],
"resistances": [11, 17, 8, 8],
"poise": 4.0,
"weight": 3.5
},
{
"name": "Mausoleum Gauntlets",
"id": "mausoleum-gauntlets",
"defenses": [3.2, 2.7, 3.3, 3.1, 2.5, 2.5, 2.1, 2.5],
"resistances": [11, 17, 8, 7],
"poise": 4.0,
"weight": 3.5
},
{
"name": "Haligtree Gauntlets",
"id": "haligtree-gauntlets",
"defenses": [3.2, 2.9, 3.1, 3.2, 2.3, 2.5, 1.9, 2.5],
"resistances": [11, 18, 8, 8],
"poise": 3.0,
"weight": 3.5
},
{
"name": "Gelmir Knight Gauntlets",
"id": "gelmir-knight-gauntlets",
"defenses": [3.3, 2.8, 3.5, 3.3, 2.7, 3.1, 2.5, 2.7],
"resistances": [12, 18, 8, 8],
"poise": 4.0,
"weight": 3.9
},
{
"name": "Godrick Knight Gauntlets",
"id": "godrick-knight-gauntlets",
"defenses": [3.3, 2.9, 3.5, 3.2, 2.7, 2.9, 2.3, 2.7],
"resistances": [12, 19, 8, 8],
"poise": 4.0,
"weight": 3.9
},
{
"name": "Cuckoo Knight Gauntlets",
"id": "cuckoo-knight-gauntlets",
"defenses": [3.3, 2.8, 3.6, 3.3, 3.1, 2.9, 2.1, 2.5],
"resistances": [11, 19, 8, 8],
"poise": 4.0,
"weight": 3.9
},
{
"name": "Leyndell Knight Gauntlets",
"id": "leyndell-knight-gauntlets",
"defenses": [3.3, 3.1, 3.3, 3.3, 2.5, 2.8, 2.5, 2.7],
"resistances": [12, 19, 8, 8],
"poise": 4.0,
"weight": 3.9
},
{
"name": "Redmane Knight Gauntlets",
"id": "redmane-knight-gauntlets",
"defenses": [3.5, 2.8, 3.3, 3.1, 2.7, 3.1, 2.3, 2.7],
"resistances": [12, 18, 8, 8],
"poise": 4.0,
"weight": 3.9
},
{
"name": "Mausoleum Knight Gauntlets",
"id": "mausoleum-knight-gauntlets",
"defenses": [3.3, 2.8, 3.6, 3.2, 2.7, 2.8, 2.5, 2.8],
"resistances": [12, 18, 8, 8],
"poise": 4.0,
"weight": 3.9
},
{
"name": "Haligtree Knight Gauntlets",
"id": "haligtree-knight-gauntlets",
"defenses": [3.3, 3.1, 3.3, 3.3, 2.5, 2.8, 2.3, 2.8],
"resistances": [12, 19, 8, 8],
"poise": 4.0,
"weight": 3.9
},
{
"name": "Foot Soldier Gauntlets",
"id": "foot-soldier-gauntlets",
"defenses": [2.1, 2.3, 2.1, 2.1, 2.5, 2.7, 2.8, 2.5],
"resistances": [20, 13, 17, 17],
"poise": 1.0,
"weight": 2.6
},
{
"name": "Omenkiller Long Gloves",
"id": "omenkiller-long-gloves",
"defenses": [2.1, 1.9, 1.7, 1.7, 2.1, 2.3, 2.8, 2.5],
"resistances": [22, 9, 15, 15],
"poise": 1.0,
"weight": 2.4
},
{
"name": "Golden Prosthetic",
"id": "golden-prosthetic",
"defenses": [1.5, 1.5, 1.5, 1.3, 3.2, 3.1, 3.2, 3.2],
"resistances": [15, 8, 25, 25],
"poise": 1.0,
"weight": 2.8
},
{
"name": "Highwayman Gauntlets",
"id": "highwayman-gauntlets",
"defenses": [1.9, 2.5, 1.9, 2.1, 2.7, 2.7, 2.8, 2.5],
"resistances": [19, 12, 17, 17],
"poise": 1.0,
"weight": 2.6
}
]

File diff suppressed because it is too large Load diff

View file

@ -1,842 +0,0 @@
[
{
"name": "Leather Trousers",
"id": "leather-trousers",
"defenses": [6.5, 5.4, 6.8, 6.8, 5.0, 5.4, 3.4, 4.5],
"resistances": [16, 29, 11, 7],
"poise": 8.0,
"weight": 5.5
},
{
"name": "Kaiden Trousers",
"id": "kaiden-trousers",
"defenses": [6.5, 4.5, 6.5, 6.5, 4.0, 4.5, 3.8, 4.0],
"resistances": [15, 26, 7, 7],
"poise": 7.0,
"weight": 5.1
},
{
"name": "Drake Knight Greaves",
"id": "drake-knight-greaves",
"defenses": [6.5, 5.4, 6.8, 6.5, 5.8, 6.5, 5.0, 5.8],
"resistances": [16, 29, 13, 13],
"poise": 8.0,
"weight": 5.7
},
{
"name": "Scaled Greaves",
"id": "scaled-greaves",
"defenses": [9.2, 8.0, 9.6, 9.2, 7.7, 8.1, 7.4, 7.7],
"resistances": [35, 51, 24, 24],
"poise": 16.0,
"weight": 9.9
},
{
"name": "Perfumer Sarong",
"id": "perfumer-sarong",
"defenses": [2.3, 3.4, 3.0, 2.3, 7.3, 6.8, 7.1, 7.3],
"resistances": [37, 11, 39, 41],
"poise": 1.0,
"weight": 2.5
},
{
"name": "Traveler's Slops",
"id": "travelers-slops",
"defenses": [3.0, 3.0, 2.3, 1.5, 7.3, 7.3, 7.1, 7.3],
"resistances": [34, 13, 41, 39],
"poise": 1.0,
"weight": 2.5
},
{
"name": "Alberich's Trousers",
"id": "alberichs-trousers",
"defenses": [3.0, 2.3, 3.0, 3.0, 7.3, 6.8, 7.2, 7.3],
"resistances": [26, 14, 41, 44],
"poise": 1.0,
"weight": 2.5
},
{
"name": "Spellblade's Trousers",
"id": "spellblades-trousers",
"defenses": [2.9, 2.2, 2.9, 2.9, 7.3, 6.7, 7.0, 7.3],
"resistances": [25, 13, 38, 41],
"poise": 1.0,
"weight": 2.6
},
{
"name": "Bull-Goat Greaves",
"id": "bull-goat-greaves",
"defenses": [11.9, 11.8, 10.6, 10.6, 7.6, 7.7, 8.5, 7.3],
"resistances": [44, 51, 29, 34],
"poise": 28.0,
"weight": 16.4
},
{
"name": "Ronin's Greaves",
"id": "ronins-greaves",
"defenses": [6.2, 6.2, 6.5, 6.2, 6.8, 7.1, 7.3, 6.8],
"resistances": [46, 35, 36, 38],
"poise": 5.0,
"weight": 5.7
},
{
"name": "Cloth Trousers",
"id": "cloth-trousers",
"defenses": [3.0, 2.3, 1.5, 2.3, 7.3, 7.1, 6.8, 7.1],
"resistances": [26, 14, 37, 37],
"poise": 1.0,
"weight": 2.0
},
{
"name": "Blaidd's Greaves",
"id": "blaidds-greaves",
"defenses": [8.4, 7.3, 8.4, 8.8, 6.5, 7.3, 6.2, 6.8],
"resistances": [24, 39, 16, 16],
"poise": 14.0,
"weight": 8.5
},
{
"name": "Black Knife Greaves",
"id": "black-knife-greaves",
"defenses": [6.5, 6.2, 7.1, 7.1, 5.0, 5.4, 3.8, 6.5],
"resistances": [17, 29, 14, 14],
"poise": 8.0,
"weight": 5.7
},
{
"name": "Exile Greaves",
"id": "exile-greaves",
"defenses": [7.1, 5.4, 7.4, 7.1, 4.5, 6.2, 3.8, 5.4],
"resistances": [17, 34, 13, 11],
"poise": 8.0,
"weight": 5.7
},
{
"name": "Banished Knight Greaves",
"id": "banished-knight-greaves",
"defenses": [10.8, 8.6, 11.1, 10.1, 7.7, 7.7, 7.4, 7.6],
"resistances": [37, 51, 24, 26],
"poise": 17.0,
"weight": 10.8
},
{
"name": "Briar Greaves",
"id": "briar-greaves",
"defenses": [7.4, 6.5, 7.7, 7.1, 6.2, 7.1, 5.0, 6.2],
"resistances": [22, 44, 15, 15],
"poise": 9.0,
"weight": 7.3
},
{
"name": "Page Trousers",
"id": "page-trousers",
"defenses": [3.4, 3.0, 2.3, 2.3, 7.2, 7.1, 7.3, 7.3],
"resistances": [24, 13, 44, 44],
"poise": 1.0,
"weight": 2.5
},
{
"name": "Night's Cavalry Greaves",
"id": "nights-cavalry-greaves",
"defenses": [8.0, 7.3, 8.0, 7.7, 6.2, 7.2, 6.2, 7.2],
"resistances": [24, 35, 15, 15],
"poise": 12.0,
"weight": 7.9
},
{
"name": "Blue Silver Mail Skirt",
"id": "blue-silver-mail-skirt",
"defenses": [6.8, 5.0, 7.1, 6.2, 5.8, 5.4, 4.0, 4.0],
"resistances": [15, 35, 7, 7],
"poise": 7.0,
"weight": 5.5
},
{
"name": "Nomadic Merchant's Trousers",
"id": "nomadic-merchants-trousers",
"defenses": [4.5, 5.0, 4.0, 3.8, 5.4, 5.4, 5.4, 5.0],
"resistances": [35, 20, 44, 29],
"poise": 2.0,
"weight": 4.4
},
{
"name": "Malformed Dragon Greaves",
"id": "malformed-dragon-greaves",
"defenses": [9.6, 8.6, 10.1, 9.6, 7.4, 7.4, 7.9, 7.4],
"resistances": [35, 47, 24, 24],
"poise": 16.0,
"weight": 9.9
},
{
"name": "Tree Sentinel Greaves",
"id": "tree-sentinel-greaves",
"defenses": [10.8, 8.6, 10.8, 10.1, 7.4, 9.9, 7.2, 8.1],
"resistances": [41, 56, 26, 29],
"poise": 17.0,
"weight": 11.7
},
{
"name": "Royal Knight Greaves",
"id": "royal-knight-greaves",
"defenses": [9.2, 8.3, 10.1, 9.6, 8.1, 7.6, 7.1, 7.4],
"resistances": [31, 41, 22, 22],
"poise": 14.0,
"weight": 9.6
},
{
"name": "Nox Monk Greaves",
"id": "nox-monk-greaves",
"defenses": [5.4, 5.8, 5.4, 5.0, 7.1, 6.8, 6.8, 5.8],
"resistances": [39, 26, 31, 31],
"poise": 4.0,
"weight": 5.1
},
{
"name": "Fur Leggings",
"id": "fur-leggings",
"defenses": [3.4, 3.8, 3.4, 3.4, 3.8, 4.0, 5.0, 4.0],
"resistances": [39, 26, 34, 24],
"poise": 1.0,
"weight": 3.1
},
{
"name": "Shaman Leggings",
"id": "shaman-leggings",
"defenses": [3.0, 3.4, 3.0, 4.5, 4.5, 4.0, 4.5, 3.8],
"resistances": [39, 26, 34, 22],
"poise": 1.0,
"weight": 3.1
},
{
"name": "Duelist Greaves",
"id": "duelist-greaves",
"defenses": [8.0, 7.1, 8.0, 7.4, 5.8, 6.8, 5.4, 6.2],
"resistances": [29, 31, 15, 15],
"poise": 11.0,
"weight": 7.3
},
{
"name": "Sanguine Noble Waistcloth",
"id": "sanguine-noble-waistcloth",
"defenses": [3.0, 2.3, 2.3, 2.3, 7.4, 6.5, 7.3, 7.6],
"resistances": [29, 11, 44, 41],
"poise": 1.0,
"weight": 2.5
},
{
"name": "Guardian Greaves",
"id": "guardian-greaves",
"defenses": [6.2, 5.8, 5.8, 5.4, 6.8, 6.5, 6.8, 6.8],
"resistances": [47, 31, 37, 35],
"poise": 3.0,
"weight": 5.5
},
{
"name": "Cleanrot Greaves",
"id": "cleanrot-greaves",
"defenses": [8.4, 7.6, 9.2, 10.1, 7.2, 7.3, 6.5, 7.7],
"resistances": [39, 41, 17, 20],
"poise": 13.0,
"weight": 9.3
},
{
"name": "Fire Monk Greaves",
"id": "fire-monk-greaves",
"defenses": [8.0, 7.1, 7.7, 7.1, 6.2, 7.6, 5.4, 5.4],
"resistances": [20, 34, 15, 15],
"poise": 10.0,
"weight": 7.3
},
{
"name": "Blackflame Monk Greaves",
"id": "blackflame-monk-greaves",
"defenses": [7.7, 6.5, 8.4, 7.4, 5.8, 7.4, 4.5, 5.8],
"resistances": [20, 34, 13, 20],
"poise": 11.0,
"weight": 7.3
},
{
"name": "Fire Prelate Greaves",
"id": "fire-prelate-greaves",
"defenses": [11.1, 9.8, 10.6, 10.6, 7.7, 11.5, 7.4, 7.6],
"resistances": [41, 39, 56, 31],
"poise": 24.0,
"weight": 15.3
},
{
"name": "Aristocrat Boots",
"id": "aristocrat-boots",
"defenses": [4.3, 4.8, 4.3, 4.3, 3.6, 3.8, 4.3, 3.6],
"resistances": [29, 21, 23, 19],
"poise": 1.0,
"weight": 2.9
},
{
"name": "Old Aristocrat Shoes",
"id": "old-aristocrat-shoes",
"defenses": [3.4, 3.4, 3.0, 3.4, 4.5, 5.0, 4.5, 3.4],
"resistances": [22, 15, 17, 20],
"poise": 1.0,
"weight": 2.0
},
{
"name": "Vulgar Militia Greaves",
"id": "vulgar-militia-greaves",
"defenses": [5.4, 6.2, 5.8, 5.0, 6.2, 6.2, 6.5, 6.2],
"resistances": [44, 24, 34, 34],
"poise": 4.0,
"weight": 5.1
},
{
"name": "Sage Trousers",
"id": "sage-trousers",
"defenses": [3.4, 3.0, 3.0, 1.5, 7.6, 7.1, 7.3, 7.6],
"resistances": [22, 13, 39, 41],
"poise": 1.0,
"weight": 2.5
},
{
"name": "Elden Lord Greaves",
"id": "elden-lord-greaves",
"defenses": [6.5, 5.8, 6.2, 6.8, 4.5, 6.2, 3.8, 4.0],
"resistances": [16, 31, 7, 11],
"poise": 7.0,
"weight": 5.5
},
{
"name": "Radahn's Greaves",
"id": "radahns-greaves",
"defenses": [10.8, 8.6, 10.6, 10.1, 7.7, 8.1, 7.2, 7.7],
"resistances": [37, 61, 26, 24],
"poise": 17.0,
"weight": 10.8
},
{
"name": "Queen's Leggings",
"id": "queens-leggings",
"defenses": [2.3, 1.5, 1.5, 0.3, 7.6, 6.8, 7.1, 7.3],
"resistances": [22, 14, 37, 41],
"poise": 1.0,
"weight": 2.0
},
{
"name": "Sanguine Noble Trousers",
"id": "sanguine-noble-trousers",
"defenses": [3.4, 3.0, 3.0, 1.5, 7.2, 6.8, 7.1, 7.9],
"resistances": [26, 13, 41, 39],
"poise": 1.0,
"weight": 2.5
},
{
"name": "Godskin Apostle Trousers",
"id": "godskin-apostle-trousers",
"defenses": [2.3, 4.5, 3.0, 2.3, 7.2, 6.5, 6.8, 7.7],
"resistances": [24, 14, 39, 41],
"poise": 1.0,
"weight": 2.5
},
{
"name": "Depraved Perfumer Trousers",
"id": "depraved-perfumer-trousers",
"defenses": [3.9, 3.9, 3.7, 3.3, 7.8, 7.5, 7.3, 7.5],
"resistances": [46, 15, 40, 58],
"poise": 2.0,
"weight": 4.3
},
{
"name": "Crucible Greaves",
"id": "crucible-greaves",
"defenses": [10.1, 8.0, 9.6, 9.6, 7.4, 7.3, 6.5, 7.7],
"resistances": [31, 44, 22, 22],
"poise": 16.0,
"weight": 9.6
},
{
"name": "Old Sorcerer's Legwraps",
"id": "old-sorcerers-legwraps",
"defenses": [3.4, 1.5, 3.4, 1.5, 8.1, 6.8, 7.2, 7.3],
"resistances": [24, 13, 39, 44],
"poise": 1.0,
"weight": 2.5
},
{
"name": "All-Knowing Greaves",
"id": "all-knowing-greaves",
"defenses": [7.4, 6.8, 7.7, 6.8, 7.1, 5.4, 5.8, 5.0],
"resistances": [17, 29, 13, 13],
"poise": 10.0,
"weight": 6.6
},
{
"name": "Twinned Greaves",
"id": "twinned-greaves",
"defenses": [7.7, 7.1, 8.4, 6.8, 6.5, 6.5, 5.0, 5.8],
"resistances": [20, 34, 13, 34],
"poise": 10.0,
"weight": 7.3
},
{
"name": "Prophet Trousers",
"id": "prophet-trousers",
"defenses": [3.0, 3.4, 3.4, 3.0, 7.6, 7.3, 7.2, 7.6],
"resistances": [26, 14, 47, 51],
"poise": 1.0,
"weight": 3.1
},
{
"name": "Astrologer Trousers",
"id": "astrologer-trousers",
"defenses": [3.8, 3.4, 3.4, 3.4, 7.7, 7.4, 7.6, 7.4],
"resistances": [31, 15, 56, 47],
"poise": 3.0,
"weight": 3.9
},
{
"name": "Lionel's Greaves",
"id": "lionels-greaves",
"defenses": [10.1, 9.4, 11.1, 11.4, 7.7, 8.5, 7.4, 7.7],
"resistances": [39, 61, 26, 31],
"poise": 22.0,
"weight": 13.1
},
{
"name": "Hoslow's Greaves",
"id": "hoslows-greaves",
"defenses": [8.0, 6.8, 7.7, 7.1, 6.2, 6.8, 5.8, 5.8],
"resistances": [24, 37, 15, 15],
"poise": 10.0,
"weight": 7.3
},
{
"name": "Vagabond Knight Greaves",
"id": "vagabond-knight-greaves",
"defenses": [7.4, 5.8, 6.8, 6.5, 5.0, 5.8, 4.5, 4.5],
"resistances": [20, 34, 13, 13],
"poise": 8.0,
"weight": 5.7
},
{
"name": "Warrior Greaves",
"id": "warrior-greaves",
"defenses": [5.4, 5.4, 4.5, 4.5, 5.8, 6.2, 6.8, 5.4],
"resistances": [39, 26, 31, 31],
"poise": 4.0,
"weight": 4.8
},
{
"name": "War Surgeon Trousers",
"id": "war-surgeon-trousers",
"defenses": [3.9, 4.4, 4.9, 3.9, 5.3, 5.7, 6.1, 5.7],
"resistances": [33, 23, 28, 31],
"poise": 3.0,
"weight": 4.2
},
{
"name": "Royal Remains Greaves",
"id": "royal-remains-greaves",
"defenses": [6.8, 6.5, 7.4, 6.8, 5.4, 5.8, 4.5, 5.0],
"resistances": [22, 35, 15, 7],
"poise": 9.0,
"weight": 6.6
},
{
"name": "Beast Champion Greaves",
"id": "beast-champion-greaves",
"defenses": [10.1, 9.4, 10.8, 10.6, 7.4, 7.9, 7.3, 7.7],
"resistances": [35, 56, 26, 24],
"poise": 17.0,
"weight": 10.8
},
{
"name": "Champion Gaiters",
"id": "champion-gaiters",
"defenses": [3.8, 5.0, 4.0, 4.5, 4.5, 5.4, 5.8, 5.4],
"resistances": [31, 20, 26, 24],
"poise": 3.0,
"weight": 3.9
},
{
"name": "Noble's Trousers",
"id": "nobles-trousers",
"defenses": [3.4, 3.8, 3.4, 3.8, 7.6, 7.7, 7.4, 7.6],
"resistances": [29, 15, 47, 51],
"poise": 1.0,
"weight": 3.9
},
{
"name": "Maliketh's Greaves",
"id": "malikeths-greaves",
"defenses": [7.7, 6.8, 8.0, 7.7, 6.2, 6.5, 5.4, 7.3],
"resistances": [22, 35, 15, 31],
"poise": 11.0,
"weight": 7.9
},
{
"name": "Malenia's Greaves",
"id": "malenias-greaves",
"defenses": [7.1, 5.4, 7.4, 6.5, 4.5, 5.4, 3.8, 6.2],
"resistances": [31, 26, 11, 11],
"poise": 8.0,
"weight": 5.7
},
{
"name": "Veteran's Greaves",
"id": "veterans-greaves",
"defenses": [10.8, 9.8, 10.8, 10.1, 7.7, 8.1, 7.3, 7.6],
"resistances": [39, 56, 29, 29],
"poise": 22.0,
"weight": 11.7
},
{
"name": "Bloodhound Knight Greaves",
"id": "bloodhound-knight-greaves",
"defenses": [7.1, 6.5, 8.0, 7.7, 5.4, 5.8, 4.0, 5.8],
"resistances": [20, 31, 14, 14],
"poise": 8.0,
"weight": 6.6
},
{
"name": "Commoner's Shoes",
"id": "commoners-shoes",
"defenses": [1.5, 3.0, 3.0, 2.3, 7.1, 6.5, 6.8, 7.1],
"resistances": [22, 14, 39, 41],
"poise": 1.0,
"weight": 2.0
},
{
"name": "Sorcerer Leggings",
"id": "sorcerer-leggings",
"defenses": [2.3, 3.0, 3.0, 0.3, 7.3, 7.1, 6.8, 7.2],
"resistances": [24, 7, 39, 37],
"poise": 1.0,
"weight": 2.0
},
{
"name": "Raging Wolf Greaves",
"id": "raging-wolf-greaves",
"defenses": [7.5, 6.6, 7.5, 7.2, 5.6, 6.3, 3.8, 5.2],
"resistances": [19, 34, 11, 11],
"poise": 9.0,
"weight": 6.3
},
{
"name": "Land of Reeds Greaves",
"id": "land-of-reeds-greaves",
"defenses": [5.0, 5.4, 6.8, 5.4, 5.8, 6.5, 6.8, 6.2],
"resistances": [37, 31, 31, 34],
"poise": 4.0,
"weight": 5.1
},
{
"name": "White Reed Greaves",
"id": "white-reed-greaves",
"defenses": [5.4, 5.8, 6.5, 5.0, 6.2, 6.2, 6.8, 5.8],
"resistances": [41, 26, 34, 31],
"poise": 4.0,
"weight": 5.1
},
{
"name": "Confessor Boots",
"id": "confessor-boots",
"defenses": [4.5, 5.8, 4.5, 5.0, 6.2, 6.2, 6.8, 5.4],
"resistances": [37, 29, 29, 31],
"poise": 3.0,
"weight": 4.8
},
{
"name": "Prisoner Trousers",
"id": "prisoner-trousers",
"defenses": [2.3, 3.0, 3.0, 2.3, 6.8, 6.5, 6.5, 7.2],
"resistances": [26, 14, 39, 39],
"poise": 1.0,
"weight": 2.0
},
{
"name": "Traveling Maiden Boots",
"id": "traveling-maiden-boots",
"defenses": [3.1, 3.5, 3.5, 2.4, 7.7, 7.4, 7.5, 7.7],
"resistances": [29, 15, 47, 51],
"poise": 1.0,
"weight": 2.9
},
{
"name": "Finger Maiden Shoes",
"id": "finger-maiden-shoes",
"defenses": [3.0, 2.3, 2.3, 1.5, 7.6, 7.2, 7.3, 7.6],
"resistances": [24, 13, 39, 39],
"poise": 1.0,
"weight": 2.5
},
{
"name": "Preceptor's Trousers",
"id": "preceptors-trousers",
"defenses": [3.4, 3.8, 3.4, 3.4, 8.3, 7.6, 7.3, 7.3],
"resistances": [31, 15, 51, 47],
"poise": 2.0,
"weight": 3.9
},
{
"name": "Bandit Boots",
"id": "bandit-boots",
"defenses": [4.0, 4.5, 5.0, 5.0, 5.4, 5.4, 5.8, 5.0],
"resistances": [34, 20, 35, 35],
"poise": 2.0,
"weight": 4.4
},
{
"name": "Eccentric's Breeches",
"id": "eccentrics-breeches",
"defenses": [6.5, 4.5, 6.2, 6.5, 4.5, 5.0, 3.0, 4.0],
"resistances": [15, 31, 7, 7],
"poise": 6.0,
"weight": 5.1
},
{
"name": "Fingerprint Greaves",
"id": "fingerprint-greaves",
"defenses": [7.7, 6.8, 6.8, 6.8, 5.4, 7.2, 3.8, 5.4],
"resistances": [20, 37, 7, 14],
"poise": 11.0,
"weight": 6.6
},
{
"name": "Consort's Trousers",
"id": "consorts-trousers",
"defenses": [3.0, 2.3, 2.3, 3.0, 7.4, 7.1, 7.1, 7.3],
"resistances": [29, 15, 41, 39],
"poise": 1.0,
"weight": 2.5
},
{
"name": "Omen Greaves",
"id": "omen-greaves",
"defenses": [10.6, 8.6, 10.8, 10.8, 7.4, 8.3, 8.5, 7.9],
"resistances": [41, 39, 35, 47],
"poise": 24.0,
"weight": 14.3
},
{
"name": "Carian Knight Greaves",
"id": "carian-knight-greaves",
"defenses": [6.8, 6.2, 7.1, 6.8, 7.1, 6.8, 5.4, 6.8],
"resistances": [17, 29, 13, 14],
"poise": 7.0,
"weight": 6.6
},
{
"name": "Errant Sorcerer Boots",
"id": "errant-sorcerer-boots",
"defenses": [3.0, 3.0, 3.8, 3.0, 7.6, 7.3, 7.2, 7.6],
"resistances": [24, 15, 47, 51],
"poise": 1.0,
"weight": 3.1
},
{
"name": "Battlemage Legwraps",
"id": "battlemage-legwraps",
"defenses": [3.0, 3.4, 2.3, 3.0, 7.4, 6.8, 7.1, 7.2],
"resistances": [26, 14, 39, 44],
"poise": 1.0,
"weight": 2.5
},
{
"name": "Snow Witch Skirt",
"id": "snow-witch-skirt",
"defenses": [3.0, 3.4, 3.4, 2.3, 7.4, 7.4, 7.3, 7.4],
"resistances": [24, 20, 44, 44],
"poise": 1.0,
"weight": 3.1
},
{
"name": "Traveler's Boots",
"id": "travelers-boots",
"defenses": [3.8, 3.4, 3.0, 2.3, 7.7, 7.3, 7.4, 7.2],
"resistances": [24, 15, 47, 47],
"poise": 1.0,
"weight": 3.1
},
{
"name": "Gold Waistwrap",
"id": "gold-waistwrap",
"defenses": [4.0, 3.8, 3.8, 3.0, 7.6, 7.4, 7.6, 8.1],
"resistances": [35, 15, 56, 56],
"poise": 3.0,
"weight": 4.4
},
{
"name": "Zamor Legwraps",
"id": "zamor-legwraps",
"defenses": [6.5, 5.0, 6.8, 5.8, 4.5, 4.5, 3.0, 4.0],
"resistances": [11, 37, 0, 7],
"poise": 7.0,
"weight": 5.1
},
{
"name": "Chain Leggings",
"id": "chain-leggings",
"defenses": [6.8, 5.0, 7.4, 6.8, 4.0, 6.2, 3.4, 4.5],
"resistances": [16, 26, 7, 11],
"poise": 7.0,
"weight": 5.5
},
{
"name": "Mushroom Legs",
"id": "mushroom-legs",
"defenses": [3.4, 4.0, 1.5, 3.0, 7.6, 3.0, 7.3, 7.4],
"resistances": [63, 15, 56, 47],
"poise": 1.0,
"weight": 3.1
},
{
"name": "Leather Boots",
"id": "leather-boots",
"defenses": [4.5, 5.4, 4.5, 5.0, 5.4, 5.4, 5.8, 5.8],
"resistances": [37, 22, 26, 31],
"poise": 1.0,
"weight": 4.4
},
{
"name": "Knight Greaves",
"id": "knight-greaves",
"defenses": [7.1, 6.8, 7.7, 7.7, 6.2, 6.2, 5.4, 5.0],
"resistances": [17, 31, 11, 11],
"poise": 11.0,
"weight": 6.6
},
{
"name": "Godrick Soldier Greaves",
"id": "godrick-soldier-greaves",
"defenses": [7.4, 6.5, 7.4, 7.1, 5.8, 6.2, 4.5, 5.4],
"resistances": [20, 34, 14, 14],
"poise": 10.0,
"weight": 6.6
},
{
"name": "Raya Lucarian Greaves",
"id": "raya-lucarian-greaves",
"defenses": [7.4, 6.2, 7.7, 7.4, 6.2, 6.2, 4.0, 5.0],
"resistances": [20, 34, 14, 14],
"poise": 10.0,
"weight": 6.6
},
{
"name": "Leyndell Soldier Greaves",
"id": "leyndell-soldier-greaves",
"defenses": [7.4, 6.8, 7.1, 7.4, 5.4, 5.8, 5.0, 5.4],
"resistances": [20, 34, 14, 14],
"poise": 10.0,
"weight": 6.6
},
{
"name": "Radahn Soldier Greaves",
"id": "radahn-soldier-greaves",
"defenses": [7.7, 6.2, 7.1, 6.8, 5.8, 6.5, 4.5, 5.4],
"resistances": [20, 31, 14, 15],
"poise": 10.0,
"weight": 6.6
},
{
"name": "Mausoleum Greaves",
"id": "mausoleum-greaves",
"defenses": [7.4, 6.2, 7.7, 7.1, 5.8, 5.8, 5.0, 5.8],
"resistances": [20, 31, 14, 13],
"poise": 11.0,
"weight": 6.6
},
{
"name": "Haligtree Greaves",
"id": "haligtree-greaves",
"defenses": [7.4, 6.8, 7.1, 7.4, 5.4, 5.8, 4.5, 5.8],
"resistances": [20, 34, 14, 15],
"poise": 9.0,
"weight": 6.6
},
{
"name": "Gelmir Knight Greaves",
"id": "gelmir-knight-greaves",
"defenses": [7.7, 6.5, 8.0, 7.7, 6.2, 7.1, 5.8, 6.2],
"resistances": [22, 34, 15, 14],
"poise": 11.0,
"weight": 7.3
},
{
"name": "Godrick Knight Greaves",
"id": "godrick-knight-greaves",
"defenses": [7.7, 6.8, 8.0, 7.4, 6.2, 6.8, 5.4, 6.2],
"resistances": [22, 35, 15, 15],
"poise": 11.0,
"weight": 7.3
},
{
"name": "Cuckoo Knight Greaves",
"id": "cuckoo-knight-greaves",
"defenses": [7.7, 6.5, 8.4, 7.7, 7.1, 6.8, 5.0, 5.8],
"resistances": [20, 35, 15, 15],
"poise": 11.0,
"weight": 7.3
},
{
"name": "Leyndell Knight Greaves",
"id": "leyndell-knight-greaves",
"defenses": [7.7, 7.1, 7.7, 7.7, 5.8, 6.5, 5.8, 6.2],
"resistances": [22, 35, 15, 15],
"poise": 11.0,
"weight": 7.3
},
{
"name": "Redmane Knight Greaves",
"id": "redmane-knight-greaves",
"defenses": [7.7, 6.5, 7.7, 7.1, 6.2, 7.3, 5.4, 6.2],
"resistances": [22, 34, 15, 15],
"poise": 11.0,
"weight": 7.3
},
{
"name": "Mausoleum Knight Greaves",
"id": "mausoleum-knight-greaves",
"defenses": [7.7, 6.5, 8.4, 7.4, 6.2, 6.5, 5.8, 6.5],
"resistances": [22, 34, 15, 14],
"poise": 12.0,
"weight": 7.3
},
{
"name": "Haligtree Knight Greaves",
"id": "haligtree-knight-greaves",
"defenses": [7.7, 7.1, 7.7, 7.7, 5.8, 6.5, 5.4, 6.5],
"resistances": [22, 35, 15, 15],
"poise": 10.0,
"weight": 7.3
},
{
"name": "Foot Soldier Greaves",
"id": "foot-soldier-greaves",
"defenses": [5.4, 5.8, 5.4, 5.4, 6.2, 6.5, 6.8, 6.2],
"resistances": [39, 26, 34, 34],
"poise": 4.0,
"weight": 5.1
},
{
"name": "Omenkiller Boots",
"id": "omenkiller-boots",
"defenses": [5.0, 4.5, 4.0, 4.0, 5.0, 5.4, 6.5, 5.8],
"resistances": [41, 17, 29, 29],
"poise": 4.0,
"weight": 4.4
},
{
"name": "Deathbed Smalls",
"id": "deathbed-smalls",
"defenses": [1.5, 2.3, 1.5, 1.5, 6.8, 6.5, 6.8, 7.2],
"resistances": [24, 7, 39, 66],
"poise": 1.0,
"weight": 2.0
},
{
"name": "Rotten Duelist Greaves",
"id": "rotten-duelist-greaves",
"defenses": [7.4, 6.2, 7.7, 7.1, 6.2, 6.5, 5.8, 6.2],
"resistances": [35, 35, 15, 15],
"poise": 10.0,
"weight": 7.3
}
]

View file

@ -1,519 +0,0 @@
[
{
"name": "Crimson Amber Medallion",
"id": "crimson-amber-medallion",
"weight": "0.3",
"multipliers": [1.06, 1.0, 1.0, 1.0]
},
{
"name": "Crimson Amber Medallion +1",
"id": "crimson-amber-medallion-+1",
"weight": "0.3",
"multipliers": [1.07, 1.0, 1.0, 1.0]
},
{
"name": "Crimson Amber Medallion +2",
"id": "crimson-amber-medallion-+2",
"weight": "0.3",
"multipliers": [1.08, 1.0, 1.0, 1.0]
},
{
"name": "Cerulean Amber Medallion",
"id": "cerulean-amber-medallion",
"weight": "0.3",
"multipliers": [1.0, 1.07, 1.0, 1.0]
},
{
"name": "Cerulean Amber Medallion +1",
"id": "cerulean-amber-medallion-+1",
"weight": "0.3",
"multipliers": [1.0, 1.09, 1.0, 1.0]
},
{
"name": "Cerulean Amber Medallion +2",
"id": "cerulean-amber-medallion-+2",
"weight": "0.3",
"multipliers": [1.0, 1.11, 1.0, 1.0]
},
{
"name": "Viridian Amber Medallion",
"id": "viridian-amber-medallion",
"weight": "0.3",
"multipliers": [1.0, 1.0, 1.11, 1.0]
},
{
"name": "Viridian Amber Medallion +1",
"id": "viridian-amber-medallion-+1",
"weight": "0.3",
"multipliers": [1.0, 1.0, 1.13, 1.0]
},
{
"name": "Viridian Amber Medallion +2",
"id": "viridian-amber-medallion-+2",
"weight": "0.3",
"multipliers": [1.0, 1.0, 1.15, 1.0]
},
{
"name": "Arsenal Charm",
"id": "arsenal-charm",
"weight": "1.5",
"multipliers": [1.0, 1.0, 1.0, 1.15]
},
{
"name": "Arsenal Charm +1",
"id": "arsenal-charm-+1",
"weight": "1.5",
"multipliers": [1.0, 1.0, 1.0, 1.17]
},
{
"name": "Great-Jar's Arsenal",
"id": "great-jars-arsenal",
"weight": "1.5",
"multipliers": [1.0, 1.0, 1.0, 1.19]
},
{
"name": "Erdtree's Favor",
"id": "erdtrees-favor",
"weight": "1.5",
"multipliers": [1.03, 1.0, 1.07, 1.05]
},
{
"name": "Erdtree's Favor +1",
"id": "erdtrees-favor-+1",
"weight": "1.5",
"multipliers": [1.035, 1.0, 1.085, 1.065]
},
{
"name": "Erdtree's Favor +2",
"id": "erdtrees-favor-+2",
"weight": "1.5",
"multipliers": [1.04, 1.0, 1.1, 1.08]
},
{
"name": "Radagon's Scarseal",
"id": "radagons-scarseal",
"weight": "0.8",
"stats": [3, 0, 3, 3, 3, 0, 0, 0]
},
{
"name": "Radagon's Soreseal",
"id": "radagons-soreseal",
"weight": "0.8",
"stats": [5, 0, 5, 5, 5, 0, 0, 0]
},
{
"name": "Starscourge Heirloom",
"id": "starscourge-heirloom",
"weight": "0.8",
"stats": [0, 0, 0, 5, 0, 0, 0, 0]
},
{
"name": "Prosthesis-Wearer Heirloom",
"id": "prosthesis-wearer-heirloom",
"weight": "0.8",
"stats": [0, 0, 0, 0, 5, 0, 0, 0]
},
{
"name": "Stargazer Heirloom",
"id": "stargazer-heirloom",
"weight": "0.6",
"stats": [0, 0, 0, 0, 0, 5, 0, 0]
},
{
"name": "Two Fingers Heirloom",
"id": "two-fingers-heirloom",
"weight": "0.6",
"stats": [0, 0, 0, 0, 0, 0, 5, 0]
},
{ "name": "Silver Scarab", "id": "silver-scarab", "weight": "1.2" },
{ "name": "Gold Scarab", "id": "gold-scarab", "weight": "1.2" },
{ "name": "Moon of Nokstella", "id": "moon-of-nokstella", "weight": "0.8" },
{
"name": "Green Turtle Talisman",
"id": "green-turtle-talisman",
"weight": "0.7"
},
{
"name": "Stalwart Horn Charm",
"id": "stalwart-horn-charm",
"weight": "0.6"
},
{
"name": "Stalwart Horn Charm +1",
"id": "stalwart-horn-charm-+1",
"weight": "0.6"
},
{
"name": "Immunizing Horn Charm",
"id": "immunizing-horn-charm",
"weight": "0.6"
},
{
"name": "Immunizing Horn Charm +1",
"id": "immunizing-horn-charm-+1",
"weight": "0.6"
},
{
"name": "Clarifying Horn Charm",
"id": "clarifying-horn-charm",
"weight": "0.6"
},
{
"name": "Clarifying Horn Charm +1",
"id": "clarifying-horn-charm-+1",
"weight": "0.6"
},
{
"name": "Prince of Death's Pustule",
"id": "prince-of-deaths-pustule",
"weight": "0.6"
},
{
"name": "Prince of Death's Cyst",
"id": "prince-of-deaths-cyst",
"weight": "0.6"
},
{ "name": "Mottled Necklace", "id": "mottled-necklace", "weight": "0.9" },
{
"name": "Mottled Necklace +1",
"id": "mottled-necklace-+1",
"weight": "0.9"
},
{
"name": "Bull-Goat's Talisman",
"id": "bull-goats-talisman",
"weight": "0.5"
},
{
"name": "Marika's Scarseal",
"id": "marikas-scarseal",
"weight": "0.8",
"stats": [0, 3, 0, 0, 0, 3, 3, 3]
},
{
"name": "Marika's Soreseal",
"id": "marikas-soreseal",
"weight": "0.8",
"stats": [0, 5, 0, 0, 0, 5, 5, 5]
},
{ "name": "Warrior Jar Shard", "id": "warrior-jar-shard", "weight": "0.9" },
{
"name": "Shard of Alexander",
"id": "shard-of-alexander",
"weight": "0.9"
},
{
"name": "Millicent's Prosthesis",
"id": "millicents-prosthesis",
"weight": "1.6",
"stats": [0, 0, 0, 0, 5, 0, 0, 0]
},
{
"name": "Magic Scorpion Charm",
"id": "magic-scorpion-charm",
"weight": "0.8"
},
{
"name": "Lightning Scorpion Charm",
"id": "lightning-scorpion-charm",
"weight": "0.8"
},
{
"name": "Fire Scorpion Charm",
"id": "fire-scorpion-charm",
"weight": "0.8"
},
{
"name": "Sacred Scorpion Charm",
"id": "sacred-scorpion-charm",
"weight": "0.8"
},
{
"name": "Red-Feathered Branchsword",
"id": "red-feathered-branchsword",
"weight": "1.4"
},
{
"name": "Ritual Sword Talisman",
"id": "ritual-sword-talisman",
"weight": "0.9"
},
{ "name": "Spear Talisman", "id": "spear-talisman", "weight": "0.5" },
{ "name": "Hammer Talisman", "id": "hammer-talisman", "weight": "0.9" },
{
"name": "Winged Sword Insignia",
"id": "winged-sword-insignia",
"weight": "1.4"
},
{
"name": "Rotten Winged Sword Insignia",
"id": "rotten-winged-sword-insignia",
"weight": "1.4"
},
{ "name": "Dagger Talisman", "id": "dagger-talisman", "weight": "1.1" },
{
"name": "Arrow's Reach Talisman",
"id": "arrows-reach-talisman",
"weight": "0.7"
},
{ "name": "Blue Dancer Charm", "id": "blue-dancer-charm", "weight": "0.9" },
{
"name": "Twinblade Talisman",
"id": "twinblade-talisman",
"weight": "0.7"
},
{ "name": "Axe Talisman", "id": "axe-talisman", "weight": "0.8" },
{ "name": "Lance Talisman", "id": "lance-talisman", "weight": "0.7" },
{
"name": "Arrow's Sting Talisman",
"id": "arrows-sting-talisman",
"weight": "0.7"
},
{
"name": "Lord of Blood's Exultation",
"id": "lord-of-bloods-exultation",
"weight": "0.9"
},
{
"name": "Kindred of Rot's Exultation",
"id": "kindred-of-rots-exultation",
"weight": "0.9"
},
{ "name": "Claw Talisman", "id": "claw-talisman", "weight": "0.7" },
{ "name": "Roar Medallion", "id": "roar-medallion", "weight": "0.7" },
{
"name": "Curved Sword Talisman",
"id": "curved-sword-talisman",
"weight": "0.7"
},
{ "name": "Companion Jar", "id": "companion-jar", "weight": "0.6" },
{
"name": "Perfumer's Talisman",
"id": "perfumers-talisman",
"weight": "0.6"
},
{
"name": "Graven-School Talisman",
"id": "graven-school-talisman",
"weight": "0.7"
},
{
"name": "Graven-Mass Talisman",
"id": "graven-mass-talisman",
"weight": "1"
},
{
"name": "Faithful's Canvas Talisman",
"id": "faithfuls-canvas-talisman",
"weight": "0.7"
},
{
"name": "Flock's Canvas Talisman",
"id": "flocks-canvas-talisman",
"weight": "1"
},
{
"name": "Old Lord's Talisman",
"id": "old-lords-talisman",
"weight": "0.5"
},
{ "name": "Radagon Icon", "id": "radagon-icon", "weight": "0.7" },
{
"name": "Primal Glintstone Blade",
"id": "primal-glintstone-blade",
"weight": "0.6",
"multipliers": [0.85, 1.0, 1.0, 1.0]
},
{ "name": "Godfrey Icon", "id": "godfrey-icon", "weight": "0.8" },
{
"name": "Dragoncrest Shield Talisman",
"id": "dragoncrest-shield-talisman",
"weight": "0.8"
},
{
"name": "Dragoncrest Shield Talisman +1",
"id": "dragoncrest-shield-talisman-+1",
"weight": "0.8"
},
{
"name": "Dragoncrest Shield Talisman +2",
"id": "dragoncrest-shield-talisman-+2",
"weight": "0.8"
},
{
"name": "Dragoncrest Greatshield Talisman",
"id": "dragoncrest-greatshield-talisman",
"weight": "0.8"
},
{
"name": "Spelldrake Talisman",
"id": "spelldrake-talisman",
"weight": "0.6"
},
{
"name": "Spelldrake Talisman +1",
"id": "spelldrake-talisman-+1",
"weight": "0.6"
},
{
"name": "Spelldrake Talisman +2",
"id": "spelldrake-talisman-+2",
"weight": "0.6"
},
{
"name": "Flamedrake Talisman",
"id": "flamedrake-talisman",
"weight": "0.6"
},
{
"name": "Flamedrake Talisman +1",
"id": "flamedrake-talisman-+1",
"weight": "0.6"
},
{
"name": "Flamedrake Talisman +2",
"id": "flamedrake-talisman-+2",
"weight": "0.6"
},
{
"name": "Boltdrake Talisman",
"id": "boltdrake-talisman",
"weight": "0.6"
},
{
"name": "Boltdrake Talisman +1",
"id": "boltdrake-talisman-+1",
"weight": "0.6"
},
{
"name": "Boltdrake Talisman +2",
"id": "boltdrake-talisman-+2",
"weight": "0.6"
},
{
"name": "Haligdrake Talisman",
"id": "haligdrake-talisman",
"weight": "0.6"
},
{
"name": "Haligdrake Talisman +1",
"id": "haligdrake-talisman-+1",
"weight": "0.6"
},
{
"name": "Haligdrake Talisman +2",
"id": "haligdrake-talisman-+2",
"weight": "0.6"
},
{
"name": "Pearldrake Talisman",
"id": "pearldrake-talisman",
"weight": "0.9"
},
{
"name": "Pearldrake Talisman +1",
"id": "pearldrake-talisman-+1",
"weight": "0.9"
},
{
"name": "Pearldrake Talisman +2",
"id": "pearldrake-talisman-+2",
"weight": "0.9"
},
{
"name": "Crucible Scale Talisman",
"id": "crucible-scale-talisman",
"weight": "1.1"
},
{
"name": "Crucible Feather Talisman",
"id": "crucible-feather-talisman",
"weight": "0.8"
},
{
"name": "Blue-Feathered Branchsword",
"id": "blue-feathered-branchsword",
"weight": "1.1"
},
{
"name": "Ritual Shield Talisman",
"id": "ritual-shield-talisman",
"weight": "0.9"
},
{
"name": "Greatshield Talisman",
"id": "greatshield-talisman",
"weight": "0.9"
},
{
"name": "Crucible Knot Talisman",
"id": "crucible-knot-talisman",
"weight": "0.5"
},
{
"name": "Crimson Seed Talisman",
"id": "crimson-seed-talisman",
"weight": "0.8"
},
{
"name": "Cerulean Seed Talisman",
"id": "cerulean-seed-talisman",
"weight": "0.8"
},
{
"name": "Blessed Dew Talisman",
"id": "blessed-dew-talisman",
"weight": "0.6"
},
{ "name": "Taker's Cameo", "id": "takers-cameo", "weight": "1" },
{
"name": "Godskin Swaddling Cloth",
"id": "godskin-swaddling-cloth",
"weight": "0.9"
},
{
"name": "Assassin's Crimson Dagger",
"id": "assassins-crimson-dagger",
"weight": "0.8"
},
{
"name": "Assassin's Cerulean Dagger",
"id": "assassins-cerulean-dagger",
"weight": "0.8"
},
{ "name": "Crepus's Vial", "id": "crepuss-vial", "weight": "0.7" },
{ "name": "Concealing Veil", "id": "concealing-veil", "weight": "0.9" },
{
"name": "Carian Filigreed Crest",
"id": "carian-filigreed-crest",
"weight": "0.8"
},
{
"name": "Longtail Cat Talisman",
"id": "longtail-cat-talisman",
"weight": "0.6"
},
{ "name": "Shabriri's Woe", "id": "shabriris-woe", "weight": "0.6" },
{ "name": "Daedicar's Woe", "id": "daedicars-woe", "weight": "0.8" },
{ "name": "Sacrificial Twig", "id": "sacrificial-twig", "weight": "1" },
{
"name": "Furled Finger's Trick-Mirror",
"id": "furled-fingers-trick-mirror",
"weight": "0.7"
},
{
"name": "Host's Trick-Mirror",
"id": "hosts-trick-mirror",
"weight": "0.7"
},
{
"name": "Entwining Umbilical Cord",
"id": "entwining-umbilical-cord",
"weight": "0.5"
},
{
"name": "Ancestral Spirit's Horn",
"id": "ancestral-spirits-horn",
"weight": "1.2"
}
]

60
sandbox.js Normal file
View file

@ -0,0 +1,60 @@
const fs = require("fs");
const sum = (a, b) => a + b;
let weapons = JSON.parse(fs.readFileSync("./output/weapons.json"));
let corrections = JSON.parse(fs.readFileSync("./output/damage.json"));
let infusions = JSON.parse(fs.readFileSync("./output/infusions.json"));
let weapon = weapons.find(item => item.id == "longsword");
let infusion = infusions.find(inf => inf.id == "standard");
let stats = [20, 10, 10, 10, 10]
function damage(item, infusion, stats, upgrade) {
let itemInfusion = item.infusions[infusion.id];
let bases = infusion.damage.map((amount, ty) => itemInfusion.damage[ty] * (amount + infusion.upgrade[ty] * upgrade));
let extras = bases.map((amount, ty) => {
let calc = corrections.find(c => c.id == itemInfusion.corrections[ty]);
let correction = modifiers(calc, stats, itemInfusion.masks[ty]);
console.log(correction);
let scalings = itemInfusion.scaling.map(itemScaling => {
return (itemScaling * infusion.scaling[ty] + itemScaling * infusion.scaling[ty] * infusion.growth[ty] * upgrade);
})
let extras = scalings.map((statScaling, j) => amount * statScaling * correction[j] / 100.0)
return extras.reduce(sum);
});
console.log("base dmg: " + bases);
console.log("extra dmg: " + extras)
return Math.floor(bases.reduce(sum) + extras.reduce(sum));
}
function modifiers(calc, stats, masks) {
return stats.map((stat, ty) => {
let mask = masks[ty];
if (mask == 0) {
return 0.0;
}
let capIndex = calc.softcaps[ty].findIndex(cap => cap >= stat) - 1;
let cap = calc.softcaps[ty][capIndex];
let capDelta = (calc.softcaps[ty][capIndex + 1] || cap) - cap;
let growth = calc.growth[ty][capIndex];
let growthDelta = (calc.growth[ty][capIndex + 1] || growth) - growth;
let adjust = calc.adjustments[ty][capIndex];
if (Math.sign(adjust) != -1) {
return growth + growthDelta * ((stat - cap) / capDelta) ** adjust;
} else {
return growth + growthDelta * (1 - (1 - ((stat - cap) / capDelta)) ** Math.abs(adjust));
}
})
}
for (u = 0; u < 26; u++) {
console.log("+" + 25 + ": " + damage(weapon, infusion, stats, 25))
}