wowdev / WoWDBDefs

Client database definitions for World of Warcraft
Other
254 stars 95 forks source link

definitions: pre-wod #27

Closed barncastle closed 4 years ago

barncastle commented 6 years ago

My recent labors, can't remember where I got up to as I've been waning in motivation (and sobriety) recently but everything is mapped. Definitely, definitely, 110% needs checking!

Problems/Notes:

It's probably a load of crap but you might be able to salvage something from it

Marlamin commented 6 years ago

How much of these came from meta?

barncastle commented 6 years ago

Structures (types and sizes only) : ≥ 4.2.0.14333, this was the first build I found that had meta for all DBs Field names : none

If you want the exes/a list of all the builds used, let me know.

Marlamin commented 6 years ago

Having looked through a bunch of these, it looks mostly okay. Only things I have issues with are the super loose ranges like you already mentioned and the fact it doesn't used the new way of designating fields as unsigned yet. The latter can easily be fixed by running it through my validator, I think. If not I can quickly make a version of it that does fix it properly. As for the ranges I'm not entirely sure how to deal with those (same goes for current definitions in master, though). Will need to think some more about that.

I'll see if I can do a test merge sometime soon to see what issues pop up during merging.

Marlamin commented 6 years ago

First test merge after that commit went mostly okay, there's some _lang fields that should be locstrings but aren't so it is breaking on those. Also a lot of case differences but nothing it shouldn't be able to handle.

barncastle commented 6 years ago

e3b941d should resolved the old vs new uint standard.

Ranges are an ass, without them it's nigh impossible to read but with them you're encapsulating unverified/unreleased builds. I opted for the former to make defining defs easier. I can switch ranges to builds pretty easily, let me know.


Marlamin commented 6 years ago

It came up in the format discussion and we had a vote about it. Looks like SoundEntryID won so we might have to change stuff to that at one point, but again not that big of a deal as merger ignores case differences (for now). I'll get you a list of _lang fields that currently have type conflicts, this won't catch any new ones though.

Marlamin commented 6 years ago

Here's a list of current merging issues: locstrings, still some uint's for some reason and 2 special cases.

BattlePetAbility::description_lang should be a locstring BattlePetSpecies::description_lang should be a locstring Cfg_Configs::maxDamageReductionPctPhysical should be a float, was discussed previously CCharVariations::RaceID is still a uint CinematicSubtitle::flags is still a uint FriendshipReputation::description_lang should be a locstring GameTables::ID is still a uint ItemToBattlePet::itemID is still a uint NumTalentsAtLevel::numTalents is a float but int in master (doesn't sound like something that would be a float, bug/mistake similar to cfg_configs?) SpellAuraRestrictions::spellID is still a uint SpellAuraRestrictions::difficultyID is still a uint SpellFlyout::name_Lang should be a locstring SpellFlyout::description_Lang should be a locstring TabardBackgroundTextures::ID is still a uint WorldSafeLocs::ID is still a uint

Marlamin commented 6 years ago

Some added field names look like they can be mapped to others based on name (e.g. genderid -> sexid, visualID -> battlePetVisualID, scenePackageID -> sceneScriptPackageID), definitely willing to help fixing these after we do the first master merge into this branch. Will obviously need to verify this with data. Also, can we roll arrays back up to how they are in later definitions? Does that influence parsing?

barncastle commented 6 years ago

I'll write a script to UCFirst the columns names - this should resolve 99% of the problems.

Thanks for the list, I've fixed those (albeit with the wrong account...). NumTalentsAtLevel is quite interesting, it was in Cata, removed between MoP and Legion and re-added recently in BfA. Incidentally, the Cata generation was indeed a float. Since column names are unverified we could avoid re-implementing the override by just... naming it something else 😜

I agree with the mix-matching of known names vs unverified ones later on.

Do you mean to do this even to the verified structures i.e. 0.5.3 (I have no problem with doing this)? Arrays vs unrolled fields should be completely agnostic.

Should be about at the weekend to go through this properly.

Marlamin commented 6 years ago

Yeah, I just want to collapse stuff like

 BUILD 0.5.3.3368-6.2.4.21742
 $id$ID<32>
 soundID<u32>
 camera1<32>
 camera2<32>
 camera3<32>
 camera4<32>
 camera5<32>
 camera6<32>
 camera7<32>
 camera8<32>

back into

 BUILD 0.5.3.3368-6.2.4.21742
 $id$ID<32>
 soundID<u32>
 camera[8]<32>
Marlamin commented 6 years ago

Outstanding issues after quickly scrolling through all changes after test-merging with master:

BUILD 0.5.3.3368
ID<32>
soundID<32>
camera<32>[8]

BUILD 0.5.3.3368-6.2.4.21742
$id$ID<32>
soundID<u32>
camera<32>[8]

Good stuff, I'd say we're getting pretty close to merging this into master!

Additional issues validator found:

bloerwald commented 6 years ago

I'm sorry, I never had the time to actually look at this. I trust you two and just hope that there aren't too many conflicts with wiki stuff so that when I at some point find the time to, can merge those in as well. Seeing the transformations done here to merge the definitions will probably help there.

barncastle commented 4 years ago

66 has made this obsolete