updated for 1.04
This commit is contained in:
parent
35ab32ead5
commit
5e603392a0
2 changed files with 43 additions and 82 deletions
49
README.md
49
README.md
|
@ -4,59 +4,16 @@
|
||||||
|
|
||||||
### Regulation Extraction
|
### Regulation Extraction
|
||||||
|
|
||||||
1. [UXM](https://cdn.discordapp.com/attachments/529900741998149643/949045219175825448/UXM_2.4.ER_EldenRingQuickhack.zip) to extract the game files.
|
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`.
|
2. [Yapped (Rune Bear)](https://github.com/vawser/Yapped-Rune-Bear) for converting regulation to `.csv`.
|
||||||
|
|
||||||
## Required Files
|
## Required Files
|
||||||
|
|
||||||
|
- `AttackElementCorrectParam.csv`
|
||||||
|
- `CalcCorrectGraph.csv`
|
||||||
- `CharaInitParam.csv`
|
- `CharaInitParam.csv`
|
||||||
- `EquipParamAccessory.csv`
|
- `EquipParamAccessory.csv`
|
||||||
- `EquipParamProtector.csv`
|
- `EquipParamProtector.csv`
|
||||||
- `EquipParamWeapon.csv`
|
- `EquipParamWeapon.csv`
|
||||||
- `ReinforceWeaponParam.csv`
|
- `ReinforceWeaponParam.csv`
|
||||||
- `SpEffectParam.csv`
|
- `SpEffectParam.csv`
|
||||||
|
|
||||||
## Param Categories
|
|
||||||
|
|
||||||
### Armor
|
|
||||||
|
|
||||||
- Weight: `EquipParamProtector.csv`
|
|
||||||
- Poise: `EquipParamProtector.csv` - in-game poise value is $(poise \cdot 1000)$
|
|
||||||
- Resistance: `EquipParamProtector.csv`
|
|
||||||
- Defenses: `EquipParamProtector.csv` - defense is $(1 - absorption) \cdot 100$
|
|
||||||
- Stats: ???
|
|
||||||
|
|
||||||
### Classes
|
|
||||||
|
|
||||||
- Starting: `CharaInitParam.csv`
|
|
||||||
- Softcaps: `CalcCorrectGraph.csv`
|
|
||||||
|
|
||||||
### Weapons
|
|
||||||
|
|
||||||
- Damage: `EquipParamWeapon.csv`
|
|
||||||
- Upgrading: `ReinforceParamWeapon.csv`
|
|
||||||
- Scaling: `EquipParamWeapon.csv`
|
|
||||||
- Scaling Corrections: `AttackElementCorrectParam.csv` // TODO
|
|
||||||
- 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`
|
|
||||||
|
|
||||||
## Correction Formula
|
|
||||||
|
|
||||||
**Base Damage**: $base = weaponDamage _ (infusionDamage + upgradeLevel _ infusionUpgrade)
|
|
||||||
|
|
||||||
if $stat > cap$:
|
|
||||||
|
|
||||||
$$
|
|
||||||
growth + (growth - gprev) \cdot \left(\frac{stat - cap}{cnext - cap}\right)^{adj}
|
|
||||||
$$
|
|
||||||
|
|
|
@ -380,7 +380,7 @@ def process_talisman(row, effects):
|
||||||
|
|
||||||
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"] = [
|
||||||
|
@ -443,11 +443,11 @@ def process_weapon(row, masks, caps):
|
||||||
]
|
]
|
||||||
|
|
||||||
scaling = [
|
scaling = [
|
||||||
float(row["Scaling: STR"]) / 100.0,
|
float(row["Correction: STR"]) / 100.0,
|
||||||
float(row["Scaling: DEX"]) / 100.0,
|
float(row["Correction: DEX"]) / 100.0,
|
||||||
float(row["Scaling: INT"]) / 100.0,
|
float(row["Correction: INT"]) / 100.0,
|
||||||
float(row["Scaling: FTH"]) / 100.0,
|
float(row["Correction: FTH"]) / 100.0,
|
||||||
float(row["Scaling: ARC"]) / 100.0,
|
float(row["Correction: ARC"]) / 100.0,
|
||||||
]
|
]
|
||||||
|
|
||||||
mask_id = row["Attack Element Correct ID"]
|
mask_id = row["Attack Element Correct ID"]
|
||||||
|
@ -455,39 +455,39 @@ def process_weapon(row, masks, caps):
|
||||||
|
|
||||||
weapon_masks = [
|
weapon_masks = [
|
||||||
[ # physical
|
[ # physical
|
||||||
to_mask(mask_row["Physical Scaling: STR"]),
|
to_mask(mask_row["Physical Correction: STR"]),
|
||||||
to_mask(mask_row["Physical Scaling: DEX"]),
|
to_mask(mask_row["Physical Correction: DEX"]),
|
||||||
to_mask(mask_row["Physical Scaling: INT"]),
|
to_mask(mask_row["Physical Correction: INT"]),
|
||||||
to_mask(mask_row["Physical Scaling: FTH"]),
|
to_mask(mask_row["Physical Correction: FTH"]),
|
||||||
to_mask(mask_row["Physical Scaling: ARC"]),
|
to_mask(mask_row["Physical Correction: ARC"]),
|
||||||
],
|
],
|
||||||
[ # magic
|
[ # magic
|
||||||
to_mask(mask_row["Magic Scaling: STR"]),
|
to_mask(mask_row["Magic Correction: STR"]),
|
||||||
to_mask(mask_row["Magic Scaling: DEX"]),
|
to_mask(mask_row["Magic Correction: DEX"]),
|
||||||
to_mask(mask_row["Magic Scaling: INT"]),
|
to_mask(mask_row["Magic Correction: INT"]),
|
||||||
to_mask(mask_row["Magic Scaling: FTH"]),
|
to_mask(mask_row["Magic Correction: FTH"]),
|
||||||
to_mask(mask_row["Magic Scaling: ARC"]),
|
to_mask(mask_row["Magic Correction: ARC"]),
|
||||||
],
|
],
|
||||||
[ # fire
|
[ # fire
|
||||||
to_mask(mask_row["Fire Scaling: STR"]),
|
to_mask(mask_row["Fire Correction: STR"]),
|
||||||
to_mask(mask_row["Fire Scaling: DEX"]),
|
to_mask(mask_row["Fire Correction: DEX"]),
|
||||||
to_mask(mask_row["Fire Scaling: INT"]),
|
to_mask(mask_row["Fire Correction: INT"]),
|
||||||
to_mask(mask_row["Fire Scaling: FTH"]),
|
to_mask(mask_row["Fire Correction: FTH"]),
|
||||||
to_mask(mask_row["Fire Scaling: ARC"]),
|
to_mask(mask_row["Fire Correction: ARC"]),
|
||||||
],
|
],
|
||||||
[ # lightning
|
[ # lightning
|
||||||
to_mask(mask_row["Lightning Scaling: STR"]),
|
to_mask(mask_row["Lightning Correction: STR"]),
|
||||||
to_mask(mask_row["Lightning Scaling: DEX"]),
|
to_mask(mask_row["Lightning Correction: DEX"]),
|
||||||
to_mask(mask_row["Lightning Scaling: INT"]),
|
to_mask(mask_row["Lightning Correction: INT"]),
|
||||||
to_mask(mask_row["Lightning Scaling: FTH"]),
|
to_mask(mask_row["Lightning Correction: FTH"]),
|
||||||
to_mask(mask_row["Lightning Scaling: ARC"]),
|
to_mask(mask_row["Lightning Correction: ARC"]),
|
||||||
],
|
],
|
||||||
[ # holy
|
[ # holy
|
||||||
to_mask(mask_row["Holy Scaling: STR"]),
|
to_mask(mask_row["Holy Correction: STR"]),
|
||||||
to_mask(mask_row["Holy Scaling: DEX"]),
|
to_mask(mask_row["Holy Correction: DEX"]),
|
||||||
to_mask(mask_row["Holy Scaling: INT"]),
|
to_mask(mask_row["Holy Correction: INT"]),
|
||||||
to_mask(mask_row["Holy Scaling: FTH"]),
|
to_mask(mask_row["Holy Correction: FTH"]),
|
||||||
to_mask(mask_row["Holy Scaling: ARC"]),
|
to_mask(mask_row["Holy Correction: ARC"]),
|
||||||
],
|
],
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -499,6 +499,8 @@ def process_weapon(row, masks, caps):
|
||||||
row["Correction Type: Holy"],
|
row["Correction Type: Holy"],
|
||||||
]
|
]
|
||||||
|
|
||||||
|
buffable = "True" in row["Is Buffable"]
|
||||||
|
|
||||||
if id in weapons:
|
if id in weapons:
|
||||||
if not id in IGNORED_WEAPON_INFUSIONS:
|
if not id in IGNORED_WEAPON_INFUSIONS:
|
||||||
weapon = weapons[id]
|
weapon = weapons[id]
|
||||||
|
@ -507,6 +509,7 @@ def process_weapon(row, masks, caps):
|
||||||
"scaling": scaling,
|
"scaling": scaling,
|
||||||
"masks": weapon_masks,
|
"masks": weapon_masks,
|
||||||
"corrections": corrections,
|
"corrections": corrections,
|
||||||
|
"buffable": buffable,
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
|
@ -536,6 +539,7 @@ def process_weapon(row, masks, caps):
|
||||||
"scaling": scaling,
|
"scaling": scaling,
|
||||||
"masks": weapon_masks,
|
"masks": weapon_masks,
|
||||||
"corrections": corrections,
|
"corrections": corrections,
|
||||||
|
"buffable": buffable,
|
||||||
}
|
}
|
||||||
|
|
||||||
weapons[id] = weapon
|
weapons[id] = weapon
|
||||||
|
@ -594,11 +598,11 @@ def extract_infusions(rows):
|
||||||
]
|
]
|
||||||
|
|
||||||
# scaling
|
# scaling
|
||||||
strength = [float(relevant[i]["Scaling %: STR"]) for i in range(0, 26)]
|
strength = [float(relevant[i]["Correction %: STR"]) for i in range(0, 26)]
|
||||||
dexterity = [float(relevant[i]["Scaling %: DEX"]) for i in range(0, 26)]
|
dexterity = [float(relevant[i]["Correction %: DEX"]) for i in range(0, 26)]
|
||||||
intelligence = [float(relevant[i]["Scaling %: INT"]) for i in range(0, 26)]
|
intelligence = [float(relevant[i]["Correction %: INT"]) for i in range(0, 26)]
|
||||||
faith = [float(relevant[i]["Scaling %: FTH"]) for i in range(0, 26)]
|
faith = [float(relevant[i]["Correction %: FTH"]) for i in range(0, 26)]
|
||||||
arcane = [float(relevant[i]["Scaling %: ARC"]) 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)
|
str_growth, str_scaling = regression(xs, strength)
|
||||||
dex_growth, dex_scaling = regression(xs, dexterity)
|
dex_growth, dex_scaling = regression(xs, dexterity)
|
||||||
|
|
Loading…
Reference in a new issue