Giter VIP home page Giter VIP logo

wowdbdefs's Introduction

WoWDBDefs

This repository has up to date column/field definitions for database files used in World of Warcraft.

Features:

  • Updated definitions for all World of Warcraft builds between 7.3.5.26654 and current
  • New builds added soon after release (as long as there are no major DBC format changes)
  • Human readable
  • Machine readable (C# and Python code available as well as a tool to convert DBD to JSON/XML)

Project goals:

  • Updated database definitions for all versions of World of Warcraft (work ongoing, some already available)

Cool stuff we might end up doing if this gets enough traction:

  • Repository will feed automated updates on WoWDev.wiki
  • More? Open an issue if you have any ideas

Manifest

A manifest.json file exists in the root directory as a list of known DBC/DB2s.

Note: This file currently only lists DB2s available in modern builds, it will be backfilled with older data in the future.

Possible keys per entry:

  • tableHash (required) Table hash of the table name
  • tableName (optional) Table name, this can be placeholder if name is unknown and as such can change. Should always match .dbd filename.
  • db2FileDataID (optional) FileDataID of the .db2 file
  • dbcFileDataID (optional) FileDataID of the .dbc file

DBD Format

If you have any suggestions for changes or additions to the format, feel free to open an issue. The DBD format is currently specified as follows:

Column definitions

List of column definitions at the start of the file. This is defined once per column at the start to help keep column names the same across the file.

Starts with COLUMNS, followed by the following:

Regular: type ColName

Foreign keys: type<ForeignDB::ForeignCol> ColName

Localized strings: locstring ColName (see this and this page on Wiki, same as "string" type as of 4.0+ but still localized in locale specific files)

You can also add a comment to a column definition by adding // Comment goes here at the end of the line.

Valid types that parsers should support: int/string/float/locstring

Unverified columns (guessed, etc) have a ? at the end of ColName.

Version definitions

BUILD is required. LAYOUT is required for versions that have it. Can be both.

LAYOUT

Line starts with LAYOUT followed by a list of layouthashes separated by a comma and a space. Can appear only once.

BUILD

Line starts with BUILD followed by a range, multiple exact builds separated by a comma and a space or a single exact build. Can appear multiple times.

COMMENT

Line starts with COMMENT, only for humans. Can appear only once.

Ranges

BUILD 7.2.0.23436-7.2.0.23514.

Ranges for current expansions should be specified per minor version to not conflict with other branches. Example:

BUILD 7.2.0.23436-7.2.0.23514
BUILD 7.1.5.23038-7.1.5.23420
BUILD 7.1.0.22578-7.1.0.22996
BUILD 7.0.3.21846-7.0.3.22747

As no more builds/branch conflicts are expected for anything older than the current expansion, ranges are allowed to span a full expansion. Example:

BUILD 4.0.0.11792-4.3.4.15595
BUILD 3.0.1.8622-3.3.5.12340

When using ranges, please confirm that the range is correct by verifying the version definition for all public builds included in it.

Multiple exact builds

BUILD 0.7.0.3694, 0.7.1.3702, 0.7.6.3712

Single exact build

BUILD 0.9.1.3810

Columns

ColName refers to exactly the same name as specified in the column definitions.

No size (floats, (loc)strings, non-inline IDs): ColName

Size (8, 16, 32 or 64, prefixed by u if unsigned int): ColName<Size>

Array: ColName[Length]

Both: ColName<Size>[Length]

With comment (for humans): ColName // This is a comment, yo!

Column annotations

ColName can be prefixed with annotations to indicate that this is a special kind of column in this version.

Annotations start with a $ and end with a $ and are comma separated when there's more than one. Current annotations:

id this column is a primary key. Example: (inline) $id$ColName (non-inline) $noninline,id$

relation this column is a relationship. Has noninline when stored in relationship table. Examples: (inline) $relation$ColName (non-inline) $noninline,relation$

noninline this column is non-inline (currently only used for $id$ and $relation$). See non-inline examples above.

File handling

Files will be saved with DBName.dbd filenames where DBName is the exact name of the DBC/DB2. Every file has multiple definitions for each different structure that has been encountered for that file. Version structures are separated by an empty new line. All line endings should be in Unix format (\n).

Example definition file

You can view a sample definition here.

All feedback is welcome!

Updating DBDs with newer builds

See update guide here.

wowdbdefs's People

Contributors

alinsavix avatar barncastle avatar bloerwald avatar clanat01 avatar deamon87 avatar dorovon avatar ferronn-dev avatar funjoker avatar gamemechanicwow avatar ghaster avatar hellokitty avatar justmaku avatar kaev avatar liqourice avatar marlamin avatar maxtorcoder avatar mcd8604 avatar mdx7 avatar meorawr avatar mmosimca avatar qartemist avatar seriallos avatar shauren avatar skarndev avatar smerdokryl avatar tomrus88 avatar truthlight avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

wowdbdefs's Issues

dump grammar as ebnf

py3 code has dbd_grammar.py which already dumps something EBNF-y based on the parser used, but that needs manual cleanup since it is kind of ugly, uses bad names and stuff.

dbd_file            = 'COLUMNS', EOL, ( column_definition, EOL ), {column_definition, EOL}, EOL, ( definition, ( EOF | EOL ) ), {definition, ( EOF | EOL )};
column_definition   = column_type, [foreign_identifier], ? SPACE ?, column_name, ['?'], [eol_c_comment];
definition          = definition_header, {definition_header}, ( definition_entry, EOL ), {definition_entry, EOL};
column_type         = ( 'uint' | 'int' | 'string' | 'locstring' | 'float' );
foreign_identifier  = '<', identifier, '::', identifier, '>';
column_name         = identifier;
eol_c_comment       = [? SPACE ?], '//', ? rest of the line ?;
definition_header   = ( definition_BUILD | definition_LAYOUT | definition_COMMENT ), EOL;
definition_entry    = ['$', annotation, '$'], column_name, ['<', int_width, '>'], ['[', array_size, ']'], [eol_c_comment];
identifier          = ? WORD('A-Za-z_', 'A-Za-z0-9_') ?;
definition_BUILD    = 'BUILD', ? SPACE ?, build_version_range, {build_version_range};
definition_LAYOUT   = 'LAYOUT', ? SPACE ?, layout_hash, {layout_hash};
definition_COMMENT  = 'COMMENT', ? SPACE ?, ? rest of the line ?;
annotation          = identifier;
int_width           = integer;
array_size          = integer;
build_version_range = build_version, ['-', build_version];
layout_hash         = ? WORD('a-fA-F0-9') ?;
integer             = ? WORD('0-9') ?;
build_version       = integer, '.', integer, '.', integer, '.', integer;

List of DB definitions and status

Check when file is created:

  • Achievement
  • Achievement_Category
  • Achievement_Criteria
  • AdventureJournal
  • AdventureMapPOI
  • AlliedRace
  • AlliedRaceRacialAbility
  • AnimationData
  • AnimKit
  • AnimKitBoneSet
  • AnimKitBoneSetAlias
  • AnimKitConfig
  • AnimKitConfigBoneSet
  • AnimKitPriority
  • AnimKitReplacement
  • AnimKitSegment
  • AnimReplacement
  • AnimReplacementSet
  • AreaAssignment
  • AreaFarClipOverride
  • AreaGroup
  • AreaGroupMember
  • AreaPOI
  • AreaPOIState
  • AreaTable
  • AreaTrigger
  • AreaTriggerActionSet
  • AreaTriggerBox
  • AreaTriggerCylinder
  • AreaTriggerSphere
  • ArmorLocation
  • Artifact
  • ArtifactAppearance
  • ArtifactAppearanceSet
  • ArtifactCategory
  • ArtifactPower
  • ArtifactPowerLink
  • ArtifactPowerPicker
  • ArtifactPowerRank
  • ArtifactQuestXP
  • ArtifactTier
  • ArtifactUnlock
  • AttackAnimKits
  • AttackAnimTypes
  • AuctionHouse
  • BankBagSlotPrices
  • BannedAddOns
  • BarberShopStyle
  • BattlemasterList
  • BattlePetAbility
  • BattlePetAbilityEffect
  • BattlePetAbilityState
  • BattlePetAbilityTurn
  • BattlePetBreedQuality
  • BattlePetBreedState
  • BattlePetDisplayOverride
  • BattlePetEffectProperties
  • BattlePetNPCTeamMember
  • BattlePetSpecies
  • BattlePetSpeciesState
  • BattlePetSpeciesXAbility
  • BattlePetState
  • BattlePetVisual
  • BeamEffect
  • BoneWindModifierModel
  • BoneWindModifiers
  • Bounty
  • BountySet
  • BroadcastText
  • CameraEffect
  • CameraEffectEntry
  • CameraMode
  • CameraShakes
  • CastableRaidBuffs
  • CelestialBody
  • Cfg_Categories
  • Cfg_Configs
  • Cfg_Regions
  • CharacterFaceBoneSet
  • CharacterFacialHairStyles
  • CharacterLoadout
  • CharacterLoadoutItem
  • CharacterServiceInfo
  • CharBaseInfo
  • CharBaseSection
  • CharComponentTextureLayouts
  • CharComponentTextureSections
  • CharHairGeosets
  • CharSections
  • CharShipment
  • CharShipmentContainer
  • CharStartOutfit
  • CharTitles
  • ChatChannels
  • ChatProfanity
  • ChrClasses
  • ChrClassesXPowerTypes
  • ChrClassRaceSex
  • ChrClassTitle
  • ChrClassUIDisplay
  • ChrClassVillain
  • ChrCustomization
  • ChrRaces
  • ChrSpecialization
  • ChrUpgradeBucket
  • ChrUpgradeBucketSpell
  • ChrUpgradeTier
  • CinematicCamera
  • CinematicSequences
  • CloakDampening
  • CombatCondition
  • CommentatorStartLocation
  • CommentatorTrackedCooldown
  • ComponentModelFileData
  • ComponentTextureFileData
  • ConfigurationWarning
  • ConsoleScripts
  • Contribution
  • ConversationLine
  • Creature
  • CreatureDifficulty
  • CreatureDisplayInfo
  • CreatureDisplayInfoCond
  • CreatureDisplayInfoEvt
  • CreatureDisplayInfoExtra
  • CreatureDisplayInfoTrn
  • CreatureDispXUiCamera
  • CreatureFamily
  • CreatureImmunities
  • CreatureModelData
  • CreatureMovementInfo
  • CreatureSoundData
  • CreatureSpellData
  • CreatureType
  • CreatureXContribution
  • Criteria
  • CriteriaTree
  • CriteriaTreeXEffect
  • CurrencyCategory
  • CurrencyTypes
  • Curve
  • CurvePoint
  • DeathThudLookups
  • DecalProperties
  • DeclinedWord
  • DeclinedWordCases
  • DestructibleModelData
  • DeviceBlacklist
  • DeviceDefaultSettings
  • Difficulty
  • DissolveEffect
  • DriverBlacklist
  • DungeonEncounter
  • DungeonMap
  • DungeonMapChunk
  • DurabilityCosts
  • DurabilityQuality
  • EdgeGlowEffect
  • Emotes
  • EmotesText
  • EmotesTextData
  • EmotesTextSound
  • EnvironmentalDamage
  • Exhaustion
  • Faction
  • FactionGroup
  • FactionTemplate
  • FeedbackPath
  • FileData
  • FileDataComplete
  • FilePaths
  • FootprintTextures
  • FootstepTerrainLookup
  • FriendshipRepReaction
  • FriendshipReputation
  • FullScreenEffect
  • GameObjectArtKit
  • GameObjectDiffAnimMap
  • GameObjectDisplayInfo
  • GameObjectDisplayInfoXSoundKit
  • GameObjects
  • GameTables
  • GameTips
  • GarrAbility
  • GarrAbilityCategory
  • GarrAbilityEffect
  • GarrBuilding
  • GarrBuildingDoodadSet
  • GarrBuildingPlotInst
  • GarrClassSpec
  • GarrClassSpecPlayerCond
  • GarrEncounter
  • GarrEncounterSetXEncounter
  • GarrEncounterXMechanic
  • GarrFamilyName
  • GarrFollItemSet
  • GarrFollItemSetMember
  • GarrFollower
  • GarrFollowerLevelXP
  • GarrFollowerQuality
  • GarrFollowerSetXFollower
  • GarrFollowerType
  • GarrFollowerUICreature
  • GarrFollowerXAbility
  • GarrFollSupportSpell
  • GarrGivenName
  • GarrItemLevelUpgradeData
  • GarrMechanic
  • GarrMechanicSetXMechanic
  • GarrMechanicType
  • GarrMission
  • GarrMissionReward
  • GarrMissionTexture
  • GarrMissionType
  • GarrMissionXEncounter
  • GarrMissionXFollower
  • GarrMssnBonusAbility
  • GarrPlot
  • GarrPlotBuilding
  • GarrPlotInstance
  • GarrPlotUICategory
  • GarrSiteLevel
  • GarrSiteLevelPlotInst
  • GarrSpecialization
  • GarrString
  • GarrTalent
  • GarrTalentTree
  • GarrType
  • GarrUiAnimClassInfo
  • GarrUiAnimRaceInfo
  • GemProperties
  • GlobalStrings
  • GlueScreenEmote
  • GlyphBindableSpell
  • GlyphExclusiveCategory
  • GlyphProperties
  • GlyphRequiredSpec
  • GlyphSlot
  • GMSurveyAnswers
  • GMSurveyCurrentSurvey
  • GMSurveyQuestions
  • GMSurveySurveys
  • GMTicketCategory
  • GroundEffectDoodad
  • GroundEffectTexture
  • GroupFinderActivity
  • GroupFinderActivityGrp
  • GroupFinderCategory
  • gtArmorMitigationByLvl
  • gtArtifactLevelXP
  • gtBarberShopCostBase
  • gtBattlePetTypeDamageMod
  • gtBattlePetXP
  • gtChallengeModeDamage
  • gtChallengeModeHealth
  • gtChanceToMeleeCrit
  • gtChanceToMeleeCritBase
  • gtChanceToSpellCrit
  • gtChanceToSpellCritBase
  • gtCombatRatings
  • gtCombatRatingsMultByILvl
  • gtHonorLevel
  • gtItemSocketCostPerLevel
  • gtNpcDamageByClass
  • gtNpcDamageByClassExp1
  • gtNpcDamageByClassExp2
  • gtNpcDamageByClassExp3
  • gtNpcDamageByClassExp4
  • gtNpcDamageByClassExp5
  • gtNpcDamageByClassExp6
  • gtNPCManaCostScaler
  • gtNPCTotalHP
  • gtNPCTotalHPExp1
  • gtNPCTotalHPExp2
  • gtNPCTotalHPExp3
  • gtNPCTotalHPExp4
  • gtNPCTotalHPExp5
  • gtNPCTotalHpExp6
  • gtOCTBaseHPByClass
  • gtOCTBaseMPByClass
  • gtOCTClassCombatRatingScalar
  • gtOCTHpPerStamina
  • gtOCTLevelExperience
  • gtRegenMPPerSpt
  • gtResilienceDR
  • gtSandboxScaling
  • gtSpellScaling
  • GuildColorBackground
  • GuildColorBorder
  • GuildColorEmblem
  • GuildPerkSpells
  • Heirloom
  • HelmetAnimScaling
  • HelmetGeosetVisData
  • HighlightColor
  • HolidayDescriptions
  • HolidayNames
  • Holidays
  • Hotfix
  • ImportPriceArmor
  • ImportPriceQuality
  • ImportPriceShield
  • ImportPriceWeapon
  • InvasionClientData
  • Item
  • Item-sparse
  • ItemAppearance
  • ItemAppearanceXUiCamera
  • ItemArmorQuality
  • ItemArmorShield
  • ItemArmorTotal
  • ItemBagFamily
  • ItemBonus
  • ItemBonusListLevelDelta
  • ItemBonusTreeNode
  • ItemChildEquipment
  • ItemClass
  • ItemContextDisplay
  • ItemContextPickerEntry
  • ItemCurrencyCost
  • ItemDamageAmmo
  • ItemDamageOneHand
  • ItemDamageOneHandCaster
  • ItemDamageRanged
  • ItemDamageThrown
  • ItemDamageTwoHand
  • ItemDamageTwoHandCaster
  • ItemDamageWand
  • ItemDisenchantLoot
  • ItemDisplayInfo
  • ItemDisplayInfoMaterialRes
  • ItemDisplayXUiCamera
  • ItemEffect
  • ItemExtendedCost
  • ItemGroupSounds
  • ItemLevelSelector
  • ItemLevelSelectorQuality
  • ItemLevelSelectorQualitySet
  • ItemLimitCategory
  • ItemLimitCategoryCondition
  • ItemModifiedAppearance
  • ItemModifiedAppearanceExtra
  • ItemNameDescription
  • ItemPetFood
  • ItemPriceBase
  • ItemPurchaseGroup
  • ItemRandomProperties
  • ItemRandomSuffix
  • ItemRangedDisplayInfo
  • ItemReforge
  • ItemSearchName
  • ItemSet
  • ItemSetSpell
  • ItemSparse
  • ItemSpec
  • ItemSpecOverride
  • ItemSubClass
  • ItemSubClassMask
  • ItemToBattlePet
  • ItemToBattlePetSpecies
  • ItemToMountSpell
  • ItemUpgrade
  • ItemUpgradePath
  • ItemVisualEffects
  • ItemVisuals
  • ItemXBonusTree
  • JournalEncounter
  • JournalEncounterCreature
  • JournalEncounterItem
  • JournalEncounterSection
  • JournalEncounterXDifficulty
  • JournalEncounterXMapLoc
  • JournalInstance
  • JournalItemXDifficulty
  • JournalSectionXDifficulty
  • JournalTier
  • JournalTierXInstance
  • KeyChain
  • KeystoneAffix
  • Languages
  • LanguageWords
  • LFGDungeonExpansion
  • LFGDungeonGroup
  • LFGDungeons
  • LFGDungeonsGroupingMap
  • LFGRoleRequirement
  • Light
  • LightData
  • LightParams
  • LightSkybox
  • LiquidMaterial
  • LiquidObject
  • LiquidType
  • LoadingScreens
  • LoadingScreenTaxiSplines
  • Locale
  • Location
  • Lock
  • LockType
  • LookAtController
  • MailTemplate
  • ManagedWorldState
  • ManagedWorldStateBuff
  • ManagedWorldStateInput
  • ManifestInterfaceActionIcon
  • ManifestInterfaceData
  • ManifestInterfaceItemIcon
  • ManifestInterfaceTOCData
  • ManifestMP3
  • Map
  • MapCelestialBody
  • MapChallengeMode
  • MapDifficulty
  • MapDifficultyXCondition
  • MapLoadingScreen
  • MarketingPromotionsXLocale
  • Material
  • MinorTalent
  • MissileTargeting
  • ModelAnimCloakDampening
  • ModelFileData
  • ModelManifest
  • ModelNameToManifest
  • ModelRibbonQuality
  • ModifierTree
  • Mount
  • MountCapability
  • MountType
  • MountTypeXCapability
  • MountXDisplay
  • Movie
  • MovieFileData
  • MovieOverlays
  • MovieVariation
  • NameGen
  • NamesProfanity
  • NamesReserved
  • NamesReservedLocale
  • NpcModelItemSlotDisplayInfo
  • NPCSounds
  • ObjectEffect
  • ObjectEffectGroup
  • ObjectEffectModifier
  • ObjectEffectPackage
  • ObjectEffectPackageElem
  • OutlineEffect
  • OverrideSpellData
  • Package
  • PageTextMaterial
  • PaperDollItemFrame
  • ParagonReputation
  • ParticleColor
  • Path
  • PathNode
  • PathNodeProperty
  • PathProperty
  • Phase
  • PhaseShiftZoneSounds
  • PhaseXPhaseGroup
  • PlayerCondition
  • Positioner
  • PositionerState
  • PositionerStateEntry
  • PowerDisplay
  • PowerType
  • PrestigeLevelInfo
  • PvpBracketTypes
  • PvpDifficulty
  • PvpItem
  • PvpReward
  • PvpScalingEffect
  • PvpScalingEffectType
  • PvpTalent
  • PvpTalentUnlock
  • QuestFactionReward
  • QuestFeedbackEffect
  • QuestInfo
  • QuestLine
  • QuestLineXQuest
  • QuestMoneyReward
  • QuestObjective
  • QuestObjectiveCliTask
  • QuestPackageItem
  • QuestPOIBlob
  • QuestPOIPoint
  • QuestPOIPointCliTask
  • QuestSort
  • QuestV2
  • QuestV2CliTask
  • QuestXGroupActivity
  • QuestXP
  • RacialMounts
  • RandPropPoints
  • RelicSlotTierRequirement
  • RelicTalent
  • ResearchBranch
  • ResearchField
  • ResearchProject
  • ResearchSite
  • Resistances
  • RewardPack
  • RewardPackXCurrencyType
  • RewardPackXItem
  • RibbonQuality
  • RulesetItemUpgrade
  • RulesetRaidLootUpgrade
  • RulesetRaidOverride
  • SandboxScaling
  • ScalingStatDistribution
  • ScalingStatValues
  • Scenario
  • ScenarioEventEntry
  • ScenarioStep
  • SceneScript
  • SceneScriptGlobalText
  • SceneScriptPackage
  • SceneScriptPackageMember
  • SceneScriptText
  • ScheduledInterval
  • ScheduledUniqueCategory
  • ScheduledWorldState
  • ScheduledWorldStateGroup
  • ScheduledWorldStateXUniqCat
  • ScheduledWorldStateXUniqueCat
  • ScreenEffect
  • ScreenLocation
  • SDReplacementModel
  • SeamlessSite
  • ServerMessages
  • ShadowyEffect
  • SkillLine
  • SkillLineAbility
  • SkillLineAbilitySortedSpell
  • SkillRaceClassInfo
  • SkillTiers
  • SoundAmbience
  • SoundAmbienceFlavor
  • SoundBus
  • SoundBusName
  • SoundBusOverride
  • SoundEmitterPillPoints
  • SoundEmitters
  • SoundEntries
  • SoundEntriesAdvanced
  • SoundEntriesFallbacks
  • SoundEnvelope
  • SoundFilter
  • SoundFilterElem
  • SoundKit
  • SoundKitAdvanced
  • SoundKitChild
  • SoundKitEntry
  • SoundKitFallback
  • SoundKitName
  • SoundOverride
  • SoundProviderPreferences
  • SourceInfo
  • SpamMessages
  • SpecializationSpells
  • Spell
  • SpellActionBarPref
  • SpellActivationOverlay
  • SpellAuraOptions
  • SpellAuraRestrictions
  • SpellAuraRestrictionsDifficulty
  • SpellAuraVisibility
  • SpellAuraVisXChrSpec
  • SpellCastingRequirements
  • SpellCastTimes
  • SpellCategories
  • SpellCategory
  • SpellChainEffects
  • SpellClassOptions
  • SpellCooldowns
  • SpellDescriptionVariables
  • SpellDispelType
  • SpellDuration
  • SpellEffect
  • SpellEffectCameraShakes
  • SpellEffectEmission
  • SpellEffectExtra
  • SpellEffectGroupSize
  • SpellEffectScaling
  • SpellEquippedItems
  • SpellFlyout
  • SpellFlyoutItem
  • SpellFocusObject
  • SpellIcon
  • SpellInterrupts
  • SpellItemEnchantment
  • SpellItemEnchantmentCondition
  • SpellKeyboundOverride
  • SpellLabel
  • SpellLearnSpell
  • SpellLevels
  • SpellMechanic
  • SpellMisc
  • SpellMiscDifficulty
  • SpellMissile
  • SpellMissileMotion
  • SpellPower
  • SpellPowerDifficulty
  • SpellProceduralEffect
  • SpellProcsPerMinute
  • SpellProcsPerMinuteMod
  • SpellRadius
  • SpellRange
  • SpellReagents
  • SpellReagentsCurrency
  • SpellRuneCost
  • SpellScaling
  • SpellShapeshift
  • SpellShapeshiftForm
  • SpellSpecialUnitEffect
  • SpellTargetRestrictions
  • SpellTotems
  • SpellVisual
  • SpellVisualAnim
  • SpellVisualColorEffect
  • SpellVisualEffectName
  • SpellVisualEvent
  • SpellVisualKit
  • SpellVisualKitAreaModel
  • SpellVisualKitEffect
  • SpellVisualKitModelAttach
  • SpellVisualMissile
  • SpellXDescriptionVariables
  • SpellXSpellVisual
  • Startup_Strings
  • StartupFiles
  • Stationery
  • StringLookups
  • SummonProperties
  • TactKey
  • TactKeyLookup
  • Talent
  • TaxiNodes
  • TaxiPath
  • TaxiPathNode
  • TerrainMaterial
  • TerrainType
  • TerrainTypeSounds
  • TextureBlendSet
  • TextureFileData
  • TotemCategory
  • Toy
  • TradeSkillCategory
  • TradeSkillItem
  • TransformMatrix
  • TransmogHoliday
  • TransmogSet
  • TransmogSetGroup
  • TransmogSetItem
  • TransportAnimation
  • TransportPhysics
  • TransportRotation
  • Trophy
  • TrophyInstance
  • TrophyType
  • UICamera
  • UICameraType
  • UICamFbackTransmogChrRace
  • UICamFbackTransmogWeapon
  • UIExpansionDisplayInfo
  • UIExpansionDisplayInfoIcon
  • UIMapPOI
  • UIModelScene
  • UIModelSceneActor
  • UIModelSceneActorDisplay
  • UIModelSceneCamera
  • UITextureAtlas
  • UITextureAtlasMember
  • UITextureKit
  • UnitBlood
  • UnitBloodLevels
  • UnitCondition
  • UnitPowerBar
  • UnitTestSparse
  • Vehicle
  • VehicleSeat
  • VehicleUIIndicator
  • VehicleUIIndSeat
  • VideoHardware
  • Vignette
  • VirtualAttachment
  • VirtualAttachmentCustomization
  • VocalUISounds
  • WbAccessControlList
  • WbCertBlacklist
  • WbCertWhitelist
  • WbPermissions
  • WeaponImpactSounds
  • WeaponSwingSounds2
  • WeaponTrail
  • WeaponTrailModelDef
  • WeaponTrailParam
  • Weather
  • WindSettings
  • WMOAreaTable
  • WMOMinimapTexture
  • World_PvP_Area
  • WorldBossLockout
  • WorldChunkSounds
  • WorldEffect
  • WorldElapsedTimer
  • WorldMapArea
  • WorldMapContinent
  • WorldMapOverlay
  • WorldMapTransforms
  • WorldSafeLocs
  • WorldState
  • WorldStateExpression
  • WorldStateUI
  • WorldStateZoneSounds
  • WowError_Strings
  • ZoneIntroMusicTable
  • ZoneLight
  • ZoneLightPoint
  • ZoneMusic
  • ZoneStory

SoundEntries data?

I saw the data is on wowtools and it says it is no longer available at client side. But is it possible to get an old version of it (like WoD version)? I am trying to make an addon that would play retail music on classic

ItemEffect changes [Question]

With ItemEffect changed - added field ParentItemID and ID no longer equals ItemId
(https://github.com/wowdev/WoWDBDefs/blob/master/definitions/ItemEffect.dbd)
how to determine which exact spell particular item have?

For example this trinket have 3 fields for 1 item (Ashvane's Razor Coral):
https://wow.tools/dbc/?dbc=itemeffect&build=9.0.1.34137#page=1&search=169311
https://www.wowhead.com/item=169311

and wowhead in particular uses first one from this list, but i guess can be variants on this?

DBD v2.0 format discussion

Last month, DBD turned 2 years old. ๐ŸŽ‰ It's been quite the ride so far! We're still in the middle of things and will hopefully soon (update: now merged) merge in the pre-wod branch @barncastle has been hard at work on as well as to continue working through the backlog of 6.x/7.x versions we're missing.

Adoption

Adoption still isn't at the point we initially wanted it to be. Why is this? Is it the lack of interest in WoW tool development or is the format too annoying to deal with? Not enough libraries out there to deal with DBD? What can we do to improve this?

Version 2 changes

Throughout this time I'm sure some of you have grown to miss/dislike some things in the current format and with Shadowlands Beta slowly coming to an end changes-wise, I thought this would be a good time to start discussing a possible v2 of the format. Hopefully we can get to a good proposal that we can spend some time on implementing when things calm down in a few months.

A good starting point might be some of the things that were left in the initial format discussion, such as adding enums and flags to the format. I currently deal with these by manually keeping them up to date in the WoW.tools repo, would be cool if we can somehow integrate these into the format if enough people agree. The same goes for flags. No idea how we should handle conditional enums/flags, though.

One thing I'd like us see add (and have discussed previously) is adding a file that combines the tablehash, filedataid and name of DB2s as a way to deal with unnamed DB2s. This idea is based on @MMOSimca's TableHash.cfg, but with the FileDataID added too for if the file is unnamed and to possibly help readers with loading them from CASC.

Also, there are still some open issues such as #40 and #51 that we should tackle here if they need format changes.

Implementation/migration

I'd suggest starting off with a new directory, maybe named "v2" instead of definitions. How to handle DBDv1 going forward is up for debate, but the easiest route when we do switch to primarily v2 will probably be to have some GitHub action run DBDefsConverter which will output v2 -> v1 or something.

Disagree with something? Did I miss something? Post below. Issue will remain open for quite some time until we come to a general consensus like last time.

Feedback wanted: Unknown field names

So I've implemented this into dumper, but want a bit of feedback for it before shipping.

COLUMNS
int ID
locstring Field_48D27B75_000_lang
locstring Field_48D27B75_001_lang
int Field_48D27B75_002
int Field_48D27B75_003
int Field_48D27B75_004

LAYOUT 48D27B75
BUILD 8.0.1.26287
$noninline,id$ID<32>
Field_48D27B75_000_lang
Field_48D27B75_001_lang
Field_48D27B75_002<u8>
Field_48D27B75_003<32>
$noninline,relation$Field_48D27B75_004<32>

Reasoning for it is that I want to get this repo going in an automated fashion but also want to do regular complete regens (maybe daily) of all builds that I have on server so we can keep an eye on how dumper changes affect stuff (and if/when stuff gets fixed). Regenerating DBDs with the current unknown field naming would make each commit be huge which is why I want a standard way of generating these that is reliable between builds.

Only thing is that I'm not entirely sure how I'll do this for pre-layouthash stuff, but maybe using concatenated build e.g. Field_33512340_001.

Older stuff currently in DBD with the current Field_3240242934 stuff will be untouched. This is for new stuff and raw repo only.

clientmeta: dump 40x

wiki has those dumps, done by tom back then. we should automagically add them to dbd as well.

ItemSparse.dbd definition error for 2.5.x

The Field_2_5_1_38043_059<u8> should be Field_2_5_1_38043_059<u8>[5] to indecte DamageType

The below is the rough Field map.

{
  "ID": "ID",
  "Field_2_5_1_38043_000": "AllowableRace",
  "Field_2_5_1_38043_001_lang": "Description_lang",
  "Field_2_5_1_38043_002_lang": "Display3_lang",
  "Field_2_5_1_38043_003_lang": "Display2_lang",
  "Field_2_5_1_38043_004_lang": "Display1_lang",
  "Field_2_5_1_38043_005_lang": "Display_lang",
  "Field_2_5_1_38043_006": "DmgVariance",
  "Field_2_5_1_38043_007": "DurationInInventory",
  "Field_2_5_1_38043_008": "QualityModifier",
  "Field_2_5_1_38043_009": "BagFamily",
  "Field_2_5_1_38043_010": "ItemRange",
  "Field_2_5_1_38043_011[0]": "StatPercentageOfSocket[0]",
  "Field_2_5_1_38043_011[1]": "StatPercentageOfSocket[1]",
  "Field_2_5_1_38043_011[2]": "StatPercentageOfSocket[2]",
  "Field_2_5_1_38043_011[3]": "StatPercentageOfSocket[3]",
  "Field_2_5_1_38043_011[4]": "StatPercentageOfSocket[4]",
  "Field_2_5_1_38043_011[5]": "StatPercentageOfSocket[5]",
  "Field_2_5_1_38043_011[6]": "StatPercentageOfSocket[6]",
  "Field_2_5_1_38043_011[7]": "StatPercentageOfSocket[7]",
  "Field_2_5_1_38043_011[8]": "StatPercentageOfSocket[8]",
  "Field_2_5_1_38043_011[9]": "StatPercentageOfSocket[9]",
  "Field_2_5_1_38043_012[0]": "StatPercentEditor[0]",
  "Field_2_5_1_38043_012[1]": "StatPercentEditor[1]",
  "Field_2_5_1_38043_012[2]": "StatPercentEditor[2]",
  "Field_2_5_1_38043_012[3]": "StatPercentEditor[3]",
  "Field_2_5_1_38043_012[4]": "StatPercentEditor[4]",
  "Field_2_5_1_38043_012[5]": "StatPercentEditor[5]",
  "Field_2_5_1_38043_012[6]": "StatPercentEditor[6]",
  "Field_2_5_1_38043_012[7]": "StatPercentEditor[7]",
  "Field_2_5_1_38043_012[8]": "StatPercentEditor[8]",
  "Field_2_5_1_38043_012[9]": "StatPercentEditor[9]",
  "Field_2_5_1_38043_013": "Stackable",
  "Field_2_5_1_38043_014": "MaxCount",
  "Field_2_5_1_38043_015": "RequiredAbility",
  "Field_2_5_1_38043_016": "SellPrice",
  "Field_2_5_1_38043_017": "BuyPrice",
  "Field_2_5_1_38043_018": "VendorStackCount",
  "Field_2_5_1_38043_019": "PriceVariance",
  "Field_2_5_1_38043_020": "PriceRandomValue",
  "Field_2_5_1_38043_021[0]": "Flags[0]",
  "Field_2_5_1_38043_021[1]": "Flags[1]",
  "Field_2_5_1_38043_021[2]": "Flags[2]",
  "Field_2_5_1_38043_021[3]": "Flags[3]",
  "Field_2_5_1_38043_022": "OppositeFactionItemID",
  "Field_2_5_1_38043_023": "MaxDurability",
  "Field_2_5_1_38043_024": "ItemNameDescriptionID",
  "Field_2_5_1_38043_025": "RequiredTransmogHoliday",
  "Field_2_5_1_38043_026": "RequiredHoliday",
  "Field_2_5_1_38043_027": "LimitCategory",
  "Field_2_5_1_38043_028": "Gem_properties",
  "Field_2_5_1_38043_029": "Socket_match_enchantment_ID",
  "Field_2_5_1_38043_030": "TotemCategoryID",
  "Field_2_5_1_38043_031": "InstanceBound",
  "Field_2_5_1_38043_032[0]": "ZoneBound",
  "Field_2_5_1_38043_032[1]": "Field_2_5_1_38043_032[1]",
  "Field_2_5_1_38043_033": "ItemSet",
  "Field_2_5_1_38043_034": "LockID",
  "Field_2_5_1_38043_035": "StartQuestID",
  "Field_2_5_1_38043_036": "PageID",
  "Field_2_5_1_38043_037": "ItemDelay",
  "Field_2_5_1_38043_038": "RequiredFactionID",
  "Field_2_5_1_38043_039": "RequiredSkillRank",
  "Field_2_5_1_38043_040": "RequiredSkill",
  "Field_2_5_1_38043_041": "ItemLevel",
  "Field_2_5_1_38043_042": "AllowableClass",
  "Field_2_5_1_38043_043": "ItemRandomSuffixGroupID",
  "Field_2_5_1_38043_044": "RandomSelect",
  "Field_2_5_1_38043_045[0]": "DamageMin[0]",
  "Field_2_5_1_38043_045[1]": "DamageMin[1]",
  "Field_2_5_1_38043_045[2]": "DamageMin[2]",
  "Field_2_5_1_38043_045[3]": "DamageMin[3]",
  "Field_2_5_1_38043_045[4]": "DamageMin[4]",
  "Field_2_5_1_38043_046[0]": "DamageMax[0]",
  "Field_2_5_1_38043_046[1]": "DamageMax[1]",
  "Field_2_5_1_38043_046[2]": "DamageMax[2]",
  "Field_2_5_1_38043_046[3]": "DamageMax[3]",
  "Field_2_5_1_38043_046[4]": "DamageMax[4]",
  "Field_2_5_1_38043_047[0]": "DefensiveStats[0]",
  "Field_2_5_1_38043_047[1]": "DefensiveStats[1]",
  "Field_2_5_1_38043_047[2]": "DefensiveStats[2]",
  "Field_2_5_1_38043_047[3]": "DefensiveStats[3]",
  "Field_2_5_1_38043_047[4]": "DefensiveStats[4]",
  "Field_2_5_1_38043_047[5]": "DefensiveStats[5]",
  "Field_2_5_1_38043_047[6]": "DefensiveStats[6]",
  "Field_2_5_1_38043_048": "Field_2_5_1_38043_048",
  "Field_2_5_1_38043_049": "ExpansionID",
  "Field_2_5_1_38043_050": "Field_2_5_1_38043_050",
  "Field_2_5_1_38043_051": "Field_2_5_1_38043_051",
  "Field_2_5_1_38043_052": "Field_2_5_1_38043_052",
  "Field_2_5_1_38043_053[0]": "SocketType[0]",
  "Field_2_5_1_38043_053[1]": "SocketType[1]",
  "Field_2_5_1_38043_053[2]": "SocketType[2]",
  "Field_2_5_1_38043_054": "SheatheType",
  "Field_2_5_1_38043_055": "Material",
  "Field_2_5_1_38043_056": "PageMaterialID",
  "Field_2_5_1_38043_057": "LanguageID",
  "Field_2_5_1_38043_058": "Bonding",
  "Field_2_5_1_38043_059": "DamageType",
  "Field_2_5_1_38043_060[0]": "StatModifier_bonusStat[0]",
  "Field_2_5_1_38043_060[1]": "StatModifier_bonusStat[1]",
  "Field_2_5_1_38043_060[2]": "StatModifier_bonusStat[2]",
  "Field_2_5_1_38043_060[3]": "StatModifier_bonusStat[3]",
  "Field_2_5_1_38043_060[4]": "StatModifier_bonusStat[4]",
  "Field_2_5_1_38043_060[5]": "StatModifier_bonusStat[5]",
  "Field_2_5_1_38043_060[6]": "StatModifier_bonusStat[6]",
  "Field_2_5_1_38043_060[7]": "StatModifier_bonusStat[7]",
  "Field_2_5_1_38043_060[8]": "StatModifier_bonusStat[8]",
  "Field_2_5_1_38043_060[9]": "StatModifier_bonusStat[9]",
  "Field_2_5_1_38043_061": "ContainerSlots",
  "Field_2_5_1_38043_062": "MinReputation",
  "Field_2_5_1_38043_063": "RequiredPVPMedal",
  "Field_2_5_1_38043_064": "Field_2_5_1_38043_064",
  "Field_2_5_1_38043_065": "InventoryType",
  "Field_2_5_1_38043_066": "OverallQualityID",
  "Field_2_5_1_38043_067": "AmmoType",
  "Field_2_5_1_38043_068[0]": "StatValue[0]",
  "Field_2_5_1_38043_068[1]": "StatValue[1]",
  "Field_2_5_1_38043_068[2]": "StatValue[2]",
  "Field_2_5_1_38043_068[3]": "StatValue[3]",
  "Field_2_5_1_38043_068[4]": "StatValue[4]",
  "Field_2_5_1_38043_068[5]": "StatValue[5]",
  "Field_2_5_1_38043_068[6]": "StatValue[6]",
  "Field_2_5_1_38043_068[7]": "StatValue[7]",
  "Field_2_5_1_38043_068[8]": "StatValue[8]",
  "Field_2_5_1_38043_068[9]": "StatValue[9]",
  "Field_2_5_1_38043_069": "RequiredLevel"
}

8.2.0.30669 Definitions

Two issues:

  • AzeriteTierUnlock.dbd's relation field appears to be 16 bit but the dumper has put 8
  • SummonProperties.dbd Flags is technically a Pallet Array with a cardinality of 1, not sure if this should be reflected in the def or not?

ChrRaces

locstring Name_RS_lang? // quest text $RS
locstring Name_RS_female_lang? // quest text $RS
locstring Name_RS_lowercase_lang? // quest text $rs
locstring Name_RS_female_lowercase_lang? // quest text $rs
locstring Name_RL_lang? // quest text $RL
locstring Name_RL_female_lang? // quest text $RL
locstring Name_RL_lowercase_lang? // quest text $rl
locstring Name_RL_female_lowercase_lang? // quest text $rl

i don't know any $rs or $rl usage in quests...
can someone tell me what this is about?

otherwise i don't think this naming is correct

WorldMapOverlay doesn't have a modern definition or no longer exists?

I was trying to find a way to get area offsets relative to the world coordinates, or the coordinates of their start and end.
For the sake of this, I tried using WorldMapArea.
As I understand it, the current versions of the definitions don't have a description for version newer than 8.0.1.26321.
https://github.com/wowdev/wow-listfile still has this file, based on this I have a question. In modern versions of the client this file is not present, or there is no definition for exporting it?

Help Wanted

Hi
I have compiled Your Source
And all I got is dll
is there is any Gui that I may use with these dll
Thanks in advance
Best Regards

ItemDisplayInfo.db2 wrong cardinality

It appears that layout 089404D9's GeosetGroup and AttachmentGeosetGroup cardinality should be 6 not 4 but I'm not sure if its me or the tools that are incorrect - can someone confirm?

todo - map.dbd $noninline,id

8.0.1.26231 has an IndexTable but is marked $id$ID<32> - this should be $noninline,id$ID<32>.
Need to verify the associated builds also apply to this change.

SoundBus.dbd

LAYOUT 7CC84C2D contains twice DefaultPlaybackLimit

LAYOUT 7CC84C2D
BUILD 8.0.1.26788, 8.0.1.26806, 8.0.1.26812, 8.0.1.26838, 8.0.1.26871, 8.0.1.26877, 8.0.1.26892, 8.0.1.26903, 8.0.1.26918, 8.0.1.26926, 8.0.1.26936, 8.0.1.26949, 8.0.1.26970, 8.0.1.26999, 8.0.1.27004, 8.0.1.27009, 8.0.1.27026, 8.0.1.27075, 8.0.1.27101, 8.0.1.27144, 8.0.1.27165, 8.0.1.27178, 8.0.1.27219, 8.0.1.27291, 8.0.1.27326, 8.0.1.27353, 8.0.1.27355, 8.0.1.27356, 8.0.1.27366, 8.0.1.27377, 8.0.1.27404, 8.0.1.27481, 8.0.1.27547, 8.0.1.27602, 8.0.1.27791, 8.0.1.27843, 8.1.0.27826, 8.1.0.27934
$id$ID<32>
DefaultPriority<u8>
DefaultPriorityPenalty<u8>
DefaultPlaybackLimit<u8>
DefaultVolume
DefaultPlaybackLimit<u8>
BusEnumID<8>
$noninline,relation$Parent<u16>

Fixed:

LAYOUT 7CC84C2D
BUILD 8.0.1.26788, 8.0.1.26806, 8.0.1.26812, 8.0.1.26838, 8.0.1.26871, 8.0.1.26877, 8.0.1.26892, 8.0.1.26903, 8.0.1.26918, 8.0.1.26926, 8.0.1.26936, 8.0.1.26949, 8.0.1.26970, 8.0.1.26999, 8.0.1.27004, 8.0.1.27009, 8.0.1.27026, 8.0.1.27075, 8.0.1.27101, 8.0.1.27144, 8.0.1.27165, 8.0.1.27178, 8.0.1.27219, 8.0.1.27291, 8.0.1.27326, 8.0.1.27353, 8.0.1.27355, 8.0.1.27356, 8.0.1.27366, 8.0.1.27377, 8.0.1.27404, 8.0.1.27481, 8.0.1.27547, 8.0.1.27602, 8.0.1.27791, 8.0.1.27843, 8.1.0.27826, 8.1.0.27934
$id$ID<32>
Flags<8>
DefaultPriority<u8>
DefaultPriorityPenalty<u8>
DefaultVolume
DefaultPlaybackLimit<u8>
BusEnumID<8>
$noninline,relation$Parent<u16>

Unsure if Flags is signed or unsigned

Clarification on column annotations

Hello,

I have written a Rust library for this format, but I'm unclear on what exactly the noninline and relation annotations actually mean.

I'm also wondering if there's a way to map the enums/flags from here to individual tables without too much hassle?

Thanks :)

Spell dbc Field_4_0_0_11927_104 --> BonusCoefficient

So this field was pretty easy to identify. Spells that use that field have a tooltip which shows a internally calculated damage value based on attack power like Heroic Throw. Usually spells that use attack power based values have their formula inside of their tooltips but spells that have that field being set are always attack power based and perfectly align with the tooltip values when doing the calculations manually.

The old pre 4.x field was EffectBonusCoefficient which was an array with 3 values for each spell effect but apparently Blizzard has refactored that handling when splitting the Spell.dbc into multiple files so that's most likely just a leftover.

ItemSparse.dbd incorrect in 9.1.0.38312

After some investigating I found out that ItemSparse.dbd is incorrect in 9.1.0.38312, fields are incorrect.

Left is latest 9.0.5, right is latest 9.1.0.
9.0.5 is completely correct and shouldn't be changed in 9.1.0
image

Add license

Turns out after all the time we haven't done this. Not sure how relevant it is for files like this (especially as we base stuff on Blizz names) but probably good to have still.

Wrong Layout for db2 9.0.1 - 9.0.2 ?

CharShipment.db2
ContentTuning.db2
CreatureDisplayInfoExtra.db2
Curve.db2
CurvePoint.db2
GarrMission.db2
QuestPOIBlob.db2
QuestV2CliTask.db2
UiMap.db2

Guessed `ItemSparse.dbd` definition of `2.5.3.4182`

The DB definition of itemspares in version 2.5.3.4182 seems like below.

ID
AllowableRace
Description_lang
Display3_lang
Display2_lang
Display1_lang
Display_lang
DmgVariance
DurationInInventory
QualityModifier
BagFamily
ItemRange
StatPercentageOfSocket[0]
StatPercentageOfSocket[1]
StatPercentageOfSocket[2]
StatPercentageOfSocket[3]
StatPercentageOfSocket[4]
StatPercentageOfSocket[5]
StatPercentageOfSocket[6]
StatPercentageOfSocket[7]
StatPercentageOfSocket[8]
StatPercentageOfSocket[9]
StatPercentEditor[0]
StatPercentEditor[1]
StatPercentEditor[2]
StatPercentEditor[3]
StatPercentEditor[4]
StatPercentEditor[5]
StatPercentEditor[6]
StatPercentEditor[7]
StatPercentEditor[8]
StatPercentEditor[9]
Stackable
MaxCount
RequiredAbility
SellPrice
BuyPrice
VendorStackCount
PriceVariance
PriceRandomValue
Flags[0]
Flags[1]
Flags[2]
Flags[3]
Field_2_5_4_42581_022
Field_2_5_4_42581_023
Field_2_5_4_42581_024
OppositeFactionItemID
MaxDurability
ItemNameDescriptionID
RequiredTransmogHoliday
RequiredHoliday
LimitCategory
Gem_properties
Socket_match_enchantment_ID
TotemCategoryID
InstanceBound
ZoneBound[0]
ZoneBound[1]
ItemSet
LockID
StartQuestID
PageID
ItemDelay
MinFactionID
RequiredSkillRank
RequiredSkill
ItemLevel
AllowableClass
ItemRandomSuffixGroupID
RandomSelect
DamageMin[0]
DamageMin[1]
DamageMin[2]
DamageMin[3]
DamageMin[4]
DamageMax[0]
DamageMax[1]
DamageMax[2]
DamageMax[3]
DamageMax[4]
DefensiveStats[0]
DefensiveStats[1]
DefensiveStats[2]
DefensiveStats[3]
DefensiveStats[4]
DefensiveStats[5]
DefensiveStats[6]
ScalingStatDistributionID
ExpansionID
ArtifactID
SpellWeight
SpellWeightCategory
SocketType[0]
SocketType[1]
SocketType[2]
SheatheType
Material
PageMaterialID
LanguageID
Bonding
DamageType
StatModifier_bonusStat[0]
StatModifier_bonusStat[1]
StatModifier_bonusStat[2]
StatModifier_bonusStat[3]
StatModifier_bonusStat[4]
StatModifier_bonusStat[5]
StatModifier_bonusStat[6]
StatModifier_bonusStat[7]
StatModifier_bonusStat[8]
StatModifier_bonusStat[9]
ContainerSlots
MinReputation
RequiredPVPMedal
RequiredPVPRank
InventoryType
OverallQualityID
AmmoType
StatValue[0]
StatValue[1]
StatValue[2]
StatValue[3]
StatValue[4]
StatValue[5]
StatValue[6]
StatValue[7]
StatValue[8]
StatValue[9]
RequiredLevel

Export to database.xml for WMV

Hello

Great work here. You guys are amazing.

Has anyone written an exporter from the DB Defs to the database.xml format that the WoW model viewer uses?

I've also looked at wow.export but the WMV still seems to be better at character support? Open to suggestions.

Holy cow - it appears the database has changed dramatically, at least the CreatureDisplayInfoExtra.

Pre-WoD 4.3.4.15595 SpellPower and TalentTab field mistakes

So I've been doing a full portover of the 4.3.4 dbc field names on a previous struct and during renaming everything by hand I stumbled accross some errors that might be worth looking into:

TalentTab.dbc
This one is pretty simple. In the 434 def the 4th field is currently named as RaceMask while it's actually ClassMask. Simply checked the field values and tried to make any sense from it when it comes to talent restriction checks. In fact a simple check would be a shaman talent tab with value 64 which simply translates into 1<<(CLASS_SHAMAN-1). The class value for that comes from ChrClasses.dbc

SpellPower.dbc
This is where the fun begins. Field 8 is named as PowerCostPct but after looking into the dbc files and checking several entries of multiple spells with percentage mana costs, the tests have shown that field 4 (PowerType) is actually PowerCostPct. As for the current field I have no idea what it actually stands for. In many cases the value in field 8 is identical with field 4 but there are also many cases where field 8 is set to 0 while field 4 has value.

A example for that problem would be any demon summoning spell which is suposed to use up 100% of the base mana of a warlock. If you would trust the field 8 you would end up with 0% while the field 4 is having the correct field value. See image below

unknown

These test is also confirmed by the ingame mana cost displays so yeah.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.