overtools / OWLib

Toolchain that lets you interact with the Overwatch files and extract models and stuff.
MIT License
362 stars 42 forks source link

Add the Extraction of Overwatch League content #58

Closed justalemon closed 5 years ago

justalemon commented 5 years ago

Built from master, tried to extract all of D.Va's unlocks, and it was sad to see that the Overwatch League skins were not there.

Because they appear to work in a different way than normal skins, I guess that this should be a feature request instead of a bug report.

yretenai commented 5 years ago

Overwatch League skins will never be supported because Blizzard is very nasty whenever we even remotely touch it.

You can export the files by specifying the (leaugeTeam=*) option, but the main diffuse texture is still mangled.

justalemon commented 5 years ago

Had to use 0c08793b6b8d03a98e2ae0c74297b4114c5a1fc7 on the develop branch because master does not has the keys for the Baptiste update.

First attempt went bad:

C:\Users\lemon>"D:\Proyectos\OWLib\dist\Debug\DataTool.exe" "E:\Overwatch" extract-unlocks "E:\Overwatch Dump" "D.Va|skin=(leagueteam=*)"
[Core] DataTool v1.33.0.0-git-tanklib
[Core] CommandLine: ["E:\Overwatch", "extract-unlocks", "E:\Overwatch Dump", "D.Va|skin=(leagueteam=*)"]
[Core] CommandLineFile: D:\Proyectos\OWLib\dist\Debug\DataTool.exe.args
[CASC] Overwatch build 1.34.0.1.55918
[CASC] Initializing...
[CMF] Using CMF procedure 55918
[CMF] Using CMF procedure 55918
[CASC] Ready
[Core] Checking ResourceKeys
[Core] Tooling...
Processing unlocks for D.Va
        Extracting skin Philadelphia Fusion
                Finding
                Saving
                Done
        Extracting skin Boston Uprising
                Finding
                Saving
                Done
        Extracting skin Dallas Fuel
                Finding
                Saving
                Done
        Extracting skin London Spitfire
                Finding
                Saving
                Done
        Extracting skin Los Angeles Gladiators
                Finding
                Saving
                Done
        Extracting skin Los Angeles Valiant
                Finding
                Saving
                Done
        Extracting skin Florida Mayhem
                Finding
                Saving
                Done
        Extracting skin Houston Outlaws
                Finding
                Saving
                Done
        Extracting skin New York Excelsior
                Finding
                Saving
                Done
        Extracting skin San Francisco Shock
                Finding
                Saving
                Done
        Extracting skin Seoul Dynasty
                Finding
                Saving
                Done
        Extracting skin Shanghai Dragons
                Finding
                Saving
                Done
        Extracting skin Overwatch League White
                Finding
                Saving
                Done
        Extracting skin Overwatch League Gray
                Finding
                Saving
                Done
        Extracting skin Shanghai Dragons Away
                Finding
                Saving
                Done
        Extracting skin Seoul Dynasty Away
                Finding
                Saving
                Done
        Extracting skin San Francisco Shock Away
                Finding
                Saving
                Done
        Extracting skin Philadelphia Fusion Away
                Finding
                Saving
                Done
        Extracting skin New York Excelsior Away
                Finding
                Saving
                Done
        Extracting skin Los Angeles Valiant Away
                Finding
                Saving
                Done
        Extracting skin Los Angeles Gladiators Away
                Finding
                Saving
                Done
        Extracting skin London Spitfire Away
                Finding
                Saving
                Done
        Extracting skin Houston Outlaws Away
                Finding
                Saving
                Done
        Extracting skin Florida Mayhem Away
                Finding
                Saving
                Done
        Extracting skin Dallas Fuel Away
                Finding
                Saving
                Done
        Extracting skin Boston Uprising Away
                Finding
                Saving
                Done
        Extracting skin Washington Justice
                Finding
                Saving
                Done
        Extracting skin Washington Justice Away
                Finding
                Saving
                Done
        Extracting skin Vancouver Titans
                Finding
                Saving
                Done
        Extracting skin Vancouver Titans Away
                Finding
                Saving
                Done
        Extracting skin Toronto Defiant
                Finding
                Saving
                Done
        Extracting skin Toronto Defiant Away
                Finding
                Saving
System.ArgumentNullException: Value cannot be null.
Parameter name: input
   at System.IO.BinaryReader..ctor(Stream input, Encoding encoding, Boolean leaveOpen)
   at TankLib.teTexturePayload..ctor(teTexture parent, Stream payloadStream) in D:\Proyectos\OWLib\TankLib\teTexturePayload.cs:line 29
   at TankLib.teTexture.LoadPayload(Stream payloadStream) in D:\Proyectos\OWLib\TankLib\teTexture.cs:line 161
   at DataTool.SaveLogic.Combo.SaveTexture(ICLIFlags flags, String path, ComboInfo info, UInt64 textureGUID) in D:\Proyectos\OWLib\DataTool\SaveLogic\Combo.cs:line 533
   at DataTool.SaveLogic.Combo.SaveMaterial(ICLIFlags flags, String path, ComboInfo info, UInt64 material) in D:\Proyectos\OWLib\DataTool\SaveLogic\Combo.cs:line 397
   at DataTool.SaveLogic.Combo.SaveModelLook(ICLIFlags flags, String path, ComboInfo info, UInt64 modelLook) in D:\Proyectos\OWLib\DataTool\SaveLogic\Combo.cs:line 323
   at DataTool.SaveLogic.Combo.SaveModel(ICLIFlags flags, String path, ComboInfo info, UInt64 modelGUID) in D:\Proyectos\OWLib\DataTool\SaveLogic\Combo.cs:line 286
   at DataTool.SaveLogic.Combo.Save(ICLIFlags flags, String path, ComboInfo info) in D:\Proyectos\OWLib\DataTool\SaveLogic\Combo.cs:line 28
   at DataTool.SaveLogic.Unlock.SkinTheme.Save(ICLIFlags flags, String directory, STUSkinBase skin, STUHero hero) in D:\Proyectos\OWLib\DataTool\SaveLogic\Unlock\SkinTheme.cs:line 103
   at DataTool.SaveLogic.Unlock.SkinTheme.Save(ICLIFlags flags, String directory, Unlock unlock, STUHero hero) in D:\Proyectos\OWLib\DataTool\SaveLogic\Unlock\SkinTheme.cs:line 19
   at DataTool.ToolLogic.Extract.ExtractHeroUnlocks.SaveUnlock(ICLIFlags flags, Unlock unlock, String path, String eventKey, Dictionary`2 config, Dictionary`2 tags, VoiceSet voiceSet, STUHero hero) in D:\Proyectos\OWLib\DataTool\ToolLogic\Extract\ExtractHeroUnlocks.cs:line 320
   at DataTool.ToolLogic.Extract.ExtractHeroUnlocks.SaveUnlocks(ICLIFlags flags, Unlock[] unlocks, String path, String eventKey, Dictionary`2 config, Dictionary`2 tags, VoiceSet voiceSet, STUHero hero) in D:\Proyectos\OWLib\DataTool\ToolLogic\Extract\ExtractHeroUnlocks.cs:line 255
   at DataTool.ToolLogic.Extract.ExtractHeroUnlocks.SaveUnlocksForHeroes(ICLIFlags flags, IEnumerable`1 heroes, String basePath, Boolean npc) in D:\Proyectos\OWLib\DataTool\ToolLogic\Extract\ExtractHeroUnlocks.cs:line 216
   at DataTool.ToolLogic.Extract.ExtractHeroUnlocks.Parse(ICLIFlags toolFlags) in D:\Proyectos\OWLib\DataTool\ToolLogic\Extract\ExtractHeroUnlocks.cs:line 115

I was going to bed, and left it during the night extracting but it worked on the second attempt:

C:\Users\lemon>"D:\Proyectos\OWLib\dist\Debug\DataTool.exe" "E:\Overwatch" extract-unlocks "E:\Overwatch Dump" "D.Va|skin=(leagueteam=*)"
[Core] DataTool v1.33.0.0-git-tanklib
[Core] CommandLine: ["E:\Overwatch", "extract-unlocks", "E:\Overwatch Dump", "D.Va|skin=(leagueteam=*)"]
[Core] CommandLineFile: D:\Proyectos\OWLib\dist\Debug\DataTool.exe.args
[CASC] Overwatch build 1.34.0.1.55918
[CASC] Initializing...
[CMF] Using CMF procedure 55918
[CMF] Using CMF procedure 55918
[CASC] Ready
[Core] Checking ResourceKeys
[Core] Tooling...
Processing unlocks for D.Va
        Extracting skin Philadelphia Fusion
                Finding
                Saving
                Done
        Extracting skin Boston Uprising
                Finding
                Saving
                Done
        Extracting skin Dallas Fuel
                Finding
                Saving
                Done
        Extracting skin London Spitfire
                Finding
                Saving
                Done
        Extracting skin Los Angeles Gladiators
                Finding
                Saving
                Done
        Extracting skin Los Angeles Valiant
                Finding
                Saving
                Done
        Extracting skin Florida Mayhem
                Finding
                Saving
                Done
        Extracting skin Houston Outlaws
                Finding
                Saving
                Done
        Extracting skin New York Excelsior
                Finding
                Saving
                Done
        Extracting skin San Francisco Shock
                Finding
                Saving
                Done
        Extracting skin Seoul Dynasty
                Finding
                Saving
                Done
        Extracting skin Shanghai Dragons
                Finding
                Saving
                Done
        Extracting skin Overwatch League White
                Finding
                Saving
                Done
        Extracting skin Overwatch League Gray
                Finding
                Saving
                Done
        Extracting skin Shanghai Dragons Away
                Finding
                Saving
                Done
        Extracting skin Seoul Dynasty Away
                Finding
                Saving
                Done
        Extracting skin San Francisco Shock Away
                Finding
                Saving
                Done
        Extracting skin Philadelphia Fusion Away
                Finding
                Saving
                Done
        Extracting skin New York Excelsior Away
                Finding
                Saving
                Done
        Extracting skin Los Angeles Valiant Away
                Finding
                Saving
                Done
        Extracting skin Los Angeles Gladiators Away
                Finding
                Saving
                Done
        Extracting skin London Spitfire Away
                Finding
                Saving
                Done
        Extracting skin Houston Outlaws Away
                Finding
                Saving
                Done
        Extracting skin Florida Mayhem Away
                Finding
                Saving
                Done
        Extracting skin Dallas Fuel Away
                Finding
                Saving
                Done
        Extracting skin Boston Uprising Away
                Finding
                Saving
                Done
        Extracting skin Washington Justice
                Finding
                Saving
                Done
        Extracting skin Washington Justice Away
                Finding
                Saving
                Done
        Extracting skin Vancouver Titans
                Finding
                Saving
                Done
        Extracting skin Vancouver Titans Away
                Finding
                Saving
                Done
        Extracting skin Toronto Defiant
                Finding
                Saving
                Done
        Extracting skin Toronto Defiant Away
                Finding
                Saving
                Done
        Extracting skin Paris Eternal
                Finding
                Saving
                Done
        Extracting skin Paris Eternal Away
                Finding
                Saving
                Done
        Extracting skin Hangzhou Spark
                Finding
                Saving
                Done
        Extracting skin Hangzhou Spark Away
                Finding
                Saving
                Done
        Extracting skin Guangzhou Charge
                Finding
                Saving
                Done
        Extracting skin Guangzhou Charge Away
                Finding
                Saving
                Done
        Extracting skin Chengdu Hunters
                Finding
                Saving
                Done
        Extracting skin Chengdu Hunters Away
                Finding
                Saving
                Done
        Extracting skin Atlanta Reign
                Finding
                Saving
                Done
        Extracting skin Atlanta Reign Away
                Finding
                Saving
                Done
[Core] Execution finished in 00:43:32.6315982 seconds
yretenai commented 5 years ago

Yes, it's a known issue caused by the way bundles are handled. It's a random bug which makes it hard to track down.

yretenai commented 5 years ago

We've decided to not work on supporting OWL skins. The overhead is just too much.