updated for 1.04

This commit is contained in:
Frederik Palmø 2022-04-19 13:53:23 +02:00
parent 35ab32ead5
commit 5e603392a0
2 changed files with 43 additions and 82 deletions

View file

@ -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}
$$

View file

@ -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)