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