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
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`.
## Required Files
- `AttackElementCorrectParam.csv`
- `CalcCorrectGraph.csv`
- `CharaInitParam.csv`
- `EquipParamAccessory.csv`
- `EquipParamProtector.csv`
- `EquipParamWeapon.csv`
- `ReinforceWeaponParam.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"]
effect_id = row["SpEffect ID 1"]
effect_id = row["SpEffect ID [0]"]
for effect in effects:
if effect["Row ID"] == effect_id:
item["stats"] = [
@ -443,11 +443,11 @@ def process_weapon(row, masks, caps):
]
scaling = [
float(row["Scaling: STR"]) / 100.0,
float(row["Scaling: DEX"]) / 100.0,
float(row["Scaling: INT"]) / 100.0,
float(row["Scaling: FTH"]) / 100.0,
float(row["Scaling: ARC"]) / 100.0,
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"]
@ -455,39 +455,39 @@ def process_weapon(row, masks, caps):
weapon_masks = [
[ # physical
to_mask(mask_row["Physical Scaling: STR"]),
to_mask(mask_row["Physical Scaling: DEX"]),
to_mask(mask_row["Physical Scaling: INT"]),
to_mask(mask_row["Physical Scaling: FTH"]),
to_mask(mask_row["Physical Scaling: ARC"]),
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 Scaling: STR"]),
to_mask(mask_row["Magic Scaling: DEX"]),
to_mask(mask_row["Magic Scaling: INT"]),
to_mask(mask_row["Magic Scaling: FTH"]),
to_mask(mask_row["Magic Scaling: ARC"]),
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 Scaling: STR"]),
to_mask(mask_row["Fire Scaling: DEX"]),
to_mask(mask_row["Fire Scaling: INT"]),
to_mask(mask_row["Fire Scaling: FTH"]),
to_mask(mask_row["Fire Scaling: ARC"]),
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 Scaling: STR"]),
to_mask(mask_row["Lightning Scaling: DEX"]),
to_mask(mask_row["Lightning Scaling: INT"]),
to_mask(mask_row["Lightning Scaling: FTH"]),
to_mask(mask_row["Lightning Scaling: ARC"]),
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 Scaling: STR"]),
to_mask(mask_row["Holy Scaling: DEX"]),
to_mask(mask_row["Holy Scaling: INT"]),
to_mask(mask_row["Holy Scaling: FTH"]),
to_mask(mask_row["Holy Scaling: ARC"]),
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"]),
],
]
@ -499,6 +499,8 @@ def process_weapon(row, masks, caps):
row["Correction Type: Holy"],
]
buffable = "True" in row["Is Buffable"]
if id in weapons:
if not id in IGNORED_WEAPON_INFUSIONS:
weapon = weapons[id]
@ -507,6 +509,7 @@ def process_weapon(row, masks, caps):
"scaling": scaling,
"masks": weapon_masks,
"corrections": corrections,
"buffable": buffable,
}
return
else:
@ -536,6 +539,7 @@ def process_weapon(row, masks, caps):
"scaling": scaling,
"masks": weapon_masks,
"corrections": corrections,
"buffable": buffable,
}
weapons[id] = weapon
@ -594,11 +598,11 @@ def extract_infusions(rows):
]
# scaling
strength = [float(relevant[i]["Scaling %: STR"]) for i in range(0, 26)]
dexterity = [float(relevant[i]["Scaling %: DEX"]) for i in range(0, 26)]
intelligence = [float(relevant[i]["Scaling %: INT"]) for i in range(0, 26)]
faith = [float(relevant[i]["Scaling %: FTH"]) for i in range(0, 26)]
arcane = [float(relevant[i]["Scaling %: ARC"]) for i in range(0, 26)]
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)