mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-03-27 01:00:13 +00:00
feat: resolve spell \$s1/\$s2/\$s3 to real DBC damage/heal values
Spell descriptions now substitute \$s1/\$s2/\$s3 template variables with actual effect base points from Spell.dbc (field 80/81/82). For example: "causes \$s1 Fire Damage" → "causes 562 Fire Damage". Implementation: - Added EffectBasePoints0/1/2 to all 4 expansion DBC layouts - SpellNameEntry now stores effectBasePoints[3] - loadSpellNameCache reads base points during DBC iteration - cleanSpellDescription substitutes \$s1→abs(base)+1 when available - getSpellEffectBasePoints() accessor on GameHandler Values are DBC base points (before spell power scaling). Still uses "X" placeholder for unresolved variables (\$d, \$o1, etc.).
This commit is contained in:
parent
f9464dbacd
commit
a5aa1faf7a
7 changed files with 852 additions and 804 deletions
|
|
@ -1,92 +1,48 @@
|
|||
{
|
||||
"Spell": {
|
||||
"AreaTable": {
|
||||
"ExploreFlag": 3,
|
||||
"ID": 0,
|
||||
"Attributes": 5,
|
||||
"AttributesEx": 6,
|
||||
"IconID": 117,
|
||||
"Name": 120,
|
||||
"Tooltip": 147,
|
||||
"Rank": 129,
|
||||
"SchoolEnum": 1,
|
||||
"CastingTimeIndex": 15,
|
||||
"PowerType": 28,
|
||||
"ManaCost": 29,
|
||||
"RangeIndex": 33,
|
||||
"DispelType": 4
|
||||
"MapID": 1,
|
||||
"ParentAreaNum": 2
|
||||
},
|
||||
"SpellRange": {
|
||||
"MaxRange": 2
|
||||
},
|
||||
"ItemDisplayInfo": {
|
||||
"ID": 0,
|
||||
"LeftModel": 1,
|
||||
"LeftModelTexture": 3,
|
||||
"InventoryIcon": 5,
|
||||
"GeosetGroup1": 7,
|
||||
"GeosetGroup3": 9,
|
||||
"TextureArmUpper": 14,
|
||||
"TextureArmLower": 15,
|
||||
"TextureHand": 16,
|
||||
"TextureTorsoUpper": 17,
|
||||
"TextureTorsoLower": 18,
|
||||
"TextureLegUpper": 19,
|
||||
"TextureLegLower": 20,
|
||||
"TextureFoot": 21
|
||||
},
|
||||
"CharSections": {
|
||||
"CharHairGeosets": {
|
||||
"GeosetID": 4,
|
||||
"RaceID": 1,
|
||||
"SexID": 2,
|
||||
"Variation": 3
|
||||
},
|
||||
"CharSections": {
|
||||
"BaseSection": 3,
|
||||
"VariationIndex": 4,
|
||||
"ColorIndex": 5,
|
||||
"Flags": 9,
|
||||
"RaceID": 1,
|
||||
"SexID": 2,
|
||||
"Texture1": 6,
|
||||
"Texture2": 7,
|
||||
"Texture3": 8,
|
||||
"Flags": 9
|
||||
"VariationIndex": 4
|
||||
},
|
||||
"SpellIcon": {
|
||||
"ID": 0,
|
||||
"Path": 1
|
||||
"CharacterFacialHairStyles": {
|
||||
"Geoset100": 3,
|
||||
"Geoset200": 5,
|
||||
"Geoset300": 4,
|
||||
"RaceID": 0,
|
||||
"SexID": 1,
|
||||
"Variation": 2
|
||||
},
|
||||
"FactionTemplate": {
|
||||
"CreatureDisplayInfo": {
|
||||
"ExtraDisplayId": 3,
|
||||
"ID": 0,
|
||||
"Faction": 1,
|
||||
"FactionGroup": 3,
|
||||
"FriendGroup": 4,
|
||||
"EnemyGroup": 5,
|
||||
"Enemy0": 6,
|
||||
"Enemy1": 7,
|
||||
"Enemy2": 8,
|
||||
"Enemy3": 9
|
||||
},
|
||||
"Faction": {
|
||||
"ID": 0,
|
||||
"ReputationRaceMask0": 2,
|
||||
"ReputationRaceMask1": 3,
|
||||
"ReputationRaceMask2": 4,
|
||||
"ReputationRaceMask3": 5,
|
||||
"ReputationBase0": 10,
|
||||
"ReputationBase1": 11,
|
||||
"ReputationBase2": 12,
|
||||
"ReputationBase3": 13
|
||||
},
|
||||
"AreaTable": {
|
||||
"ID": 0,
|
||||
"MapID": 1,
|
||||
"ParentAreaNum": 2,
|
||||
"ExploreFlag": 3
|
||||
"ModelID": 1,
|
||||
"Skin1": 6,
|
||||
"Skin2": 7,
|
||||
"Skin3": 8
|
||||
},
|
||||
"CreatureDisplayInfoExtra": {
|
||||
"ID": 0,
|
||||
"RaceID": 1,
|
||||
"SexID": 2,
|
||||
"SkinID": 3,
|
||||
"FaceID": 4,
|
||||
"HairStyleID": 5,
|
||||
"HairColorID": 6,
|
||||
"FacialHairID": 7,
|
||||
"BakeName": 20,
|
||||
"EquipDisplay0": 8,
|
||||
"EquipDisplay1": 9,
|
||||
"EquipDisplay10": 18,
|
||||
"EquipDisplay2": 10,
|
||||
"EquipDisplay3": 11,
|
||||
"EquipDisplay4": 12,
|
||||
|
|
@ -95,128 +51,89 @@
|
|||
"EquipDisplay7": 15,
|
||||
"EquipDisplay8": 16,
|
||||
"EquipDisplay9": 17,
|
||||
"EquipDisplay10": 18,
|
||||
"BakeName": 20
|
||||
},
|
||||
"CreatureDisplayInfo": {
|
||||
"FaceID": 4,
|
||||
"FacialHairID": 7,
|
||||
"HairColorID": 6,
|
||||
"HairStyleID": 5,
|
||||
"ID": 0,
|
||||
"ModelID": 1,
|
||||
"ExtraDisplayId": 3,
|
||||
"Skin1": 6,
|
||||
"Skin2": 7,
|
||||
"Skin3": 8
|
||||
},
|
||||
"TaxiNodes": {
|
||||
"ID": 0,
|
||||
"MapID": 1,
|
||||
"X": 2,
|
||||
"Y": 3,
|
||||
"Z": 4,
|
||||
"Name": 5
|
||||
},
|
||||
"TaxiPath": {
|
||||
"ID": 0,
|
||||
"FromNode": 1,
|
||||
"ToNode": 2,
|
||||
"Cost": 3
|
||||
},
|
||||
"TaxiPathNode": {
|
||||
"ID": 0,
|
||||
"PathID": 1,
|
||||
"NodeIndex": 2,
|
||||
"MapID": 3,
|
||||
"X": 4,
|
||||
"Y": 5,
|
||||
"Z": 6
|
||||
},
|
||||
"TalentTab": {
|
||||
"ID": 0,
|
||||
"Name": 1,
|
||||
"ClassMask": 12,
|
||||
"OrderIndex": 14,
|
||||
"BackgroundFile": 15
|
||||
},
|
||||
"Talent": {
|
||||
"ID": 0,
|
||||
"TabID": 1,
|
||||
"Row": 2,
|
||||
"Column": 3,
|
||||
"RankSpell0": 4,
|
||||
"PrereqTalent0": 9,
|
||||
"PrereqRank0": 12
|
||||
},
|
||||
"SkillLineAbility": {
|
||||
"SkillLineID": 1,
|
||||
"SpellID": 2
|
||||
},
|
||||
"SkillLine": {
|
||||
"ID": 0,
|
||||
"Category": 1,
|
||||
"Name": 3
|
||||
},
|
||||
"Map": {
|
||||
"ID": 0,
|
||||
"InternalName": 1
|
||||
"RaceID": 1,
|
||||
"SexID": 2,
|
||||
"SkinID": 3
|
||||
},
|
||||
"CreatureModelData": {
|
||||
"ID": 0,
|
||||
"ModelPath": 2
|
||||
},
|
||||
"CharHairGeosets": {
|
||||
"RaceID": 1,
|
||||
"SexID": 2,
|
||||
"Variation": 3,
|
||||
"GeosetID": 4
|
||||
},
|
||||
"CharacterFacialHairStyles": {
|
||||
"RaceID": 0,
|
||||
"SexID": 1,
|
||||
"Variation": 2,
|
||||
"Geoset100": 3,
|
||||
"Geoset300": 4,
|
||||
"Geoset200": 5
|
||||
},
|
||||
"GameObjectDisplayInfo": {
|
||||
"ID": 0,
|
||||
"ModelName": 1
|
||||
},
|
||||
"Emotes": {
|
||||
"ID": 0,
|
||||
"AnimID": 2
|
||||
"AnimID": 2,
|
||||
"ID": 0
|
||||
},
|
||||
"EmotesText": {
|
||||
"ID": 0,
|
||||
"Command": 1,
|
||||
"EmoteRef": 2,
|
||||
"OthersTargetTextID": 3,
|
||||
"SenderTargetTextID": 5,
|
||||
"ID": 0,
|
||||
"OthersNoTargetTextID": 7,
|
||||
"SenderNoTargetTextID": 9
|
||||
"OthersTargetTextID": 3,
|
||||
"SenderNoTargetTextID": 9,
|
||||
"SenderTargetTextID": 5
|
||||
},
|
||||
"EmotesTextData": {
|
||||
"ID": 0,
|
||||
"Text": 1
|
||||
},
|
||||
"Faction": {
|
||||
"ID": 0,
|
||||
"ReputationBase0": 10,
|
||||
"ReputationBase1": 11,
|
||||
"ReputationBase2": 12,
|
||||
"ReputationBase3": 13,
|
||||
"ReputationRaceMask0": 2,
|
||||
"ReputationRaceMask1": 3,
|
||||
"ReputationRaceMask2": 4,
|
||||
"ReputationRaceMask3": 5
|
||||
},
|
||||
"FactionTemplate": {
|
||||
"Enemy0": 6,
|
||||
"Enemy1": 7,
|
||||
"Enemy2": 8,
|
||||
"Enemy3": 9,
|
||||
"EnemyGroup": 5,
|
||||
"Faction": 1,
|
||||
"FactionGroup": 3,
|
||||
"FriendGroup": 4,
|
||||
"ID": 0
|
||||
},
|
||||
"GameObjectDisplayInfo": {
|
||||
"ID": 0,
|
||||
"ModelName": 1
|
||||
},
|
||||
"ItemDisplayInfo": {
|
||||
"GeosetGroup1": 7,
|
||||
"GeosetGroup3": 9,
|
||||
"ID": 0,
|
||||
"InventoryIcon": 5,
|
||||
"LeftModel": 1,
|
||||
"LeftModelTexture": 3,
|
||||
"TextureArmLower": 15,
|
||||
"TextureArmUpper": 14,
|
||||
"TextureFoot": 21,
|
||||
"TextureHand": 16,
|
||||
"TextureLegLower": 20,
|
||||
"TextureLegUpper": 19,
|
||||
"TextureTorsoLower": 18,
|
||||
"TextureTorsoUpper": 17
|
||||
},
|
||||
"Light": {
|
||||
"ID": 0,
|
||||
"MapID": 1,
|
||||
"X": 2,
|
||||
"Z": 3,
|
||||
"Y": 4,
|
||||
"InnerRadius": 5,
|
||||
"OuterRadius": 6,
|
||||
"LightParamsID": 7,
|
||||
"LightParamsIDRain": 8,
|
||||
"LightParamsIDUnderwater": 9
|
||||
},
|
||||
"LightParams": {
|
||||
"LightParamsID": 0
|
||||
},
|
||||
"LightIntBand": {
|
||||
"BlockIndex": 1,
|
||||
"NumKeyframes": 2,
|
||||
"TimeKey0": 3,
|
||||
"Value0": 19
|
||||
"LightParamsIDUnderwater": 9,
|
||||
"MapID": 1,
|
||||
"OuterRadius": 6,
|
||||
"X": 2,
|
||||
"Y": 4,
|
||||
"Z": 3
|
||||
},
|
||||
"LightFloatBand": {
|
||||
"BlockIndex": 1,
|
||||
|
|
@ -224,33 +141,119 @@
|
|||
"TimeKey0": 3,
|
||||
"Value0": 19
|
||||
},
|
||||
"WorldMapArea": {
|
||||
"LightIntBand": {
|
||||
"BlockIndex": 1,
|
||||
"NumKeyframes": 2,
|
||||
"TimeKey0": 3,
|
||||
"Value0": 19
|
||||
},
|
||||
"LightParams": {
|
||||
"LightParamsID": 0
|
||||
},
|
||||
"Map": {
|
||||
"ID": 0,
|
||||
"MapID": 1,
|
||||
"AreaID": 2,
|
||||
"AreaName": 3,
|
||||
"LocLeft": 4,
|
||||
"LocRight": 5,
|
||||
"LocTop": 6,
|
||||
"LocBottom": 7,
|
||||
"DisplayMapID": 8,
|
||||
"ParentWorldMapID": 10
|
||||
"InternalName": 1
|
||||
},
|
||||
"SkillLine": {
|
||||
"Category": 1,
|
||||
"ID": 0,
|
||||
"Name": 3
|
||||
},
|
||||
"SkillLineAbility": {
|
||||
"SkillLineID": 1,
|
||||
"SpellID": 2
|
||||
},
|
||||
"Spell": {
|
||||
"Attributes": 5,
|
||||
"AttributesEx": 6,
|
||||
"CastingTimeIndex": 15,
|
||||
"DispelType": 4,
|
||||
"EffectBasePoints0": 80,
|
||||
"EffectBasePoints1": 81,
|
||||
"EffectBasePoints2": 82,
|
||||
"ID": 0,
|
||||
"IconID": 117,
|
||||
"ManaCost": 29,
|
||||
"Name": 120,
|
||||
"PowerType": 28,
|
||||
"RangeIndex": 33,
|
||||
"Rank": 129,
|
||||
"SchoolEnum": 1,
|
||||
"Tooltip": 147
|
||||
},
|
||||
"SpellIcon": {
|
||||
"ID": 0,
|
||||
"Path": 1
|
||||
},
|
||||
"SpellRange": {
|
||||
"MaxRange": 2
|
||||
},
|
||||
"SpellVisual": {
|
||||
"ID": 0,
|
||||
"CastKit": 2,
|
||||
"ID": 0,
|
||||
"ImpactKit": 3,
|
||||
"MissileModel": 8
|
||||
},
|
||||
"SpellVisualEffectName": {
|
||||
"FilePath": 2,
|
||||
"ID": 0
|
||||
},
|
||||
"SpellVisualKit": {
|
||||
"ID": 0,
|
||||
"BaseEffect": 5,
|
||||
"ID": 0,
|
||||
"SpecialEffect0": 11,
|
||||
"SpecialEffect1": 12,
|
||||
"SpecialEffect2": 13
|
||||
},
|
||||
"SpellVisualEffectName": {
|
||||
"Talent": {
|
||||
"Column": 3,
|
||||
"ID": 0,
|
||||
"FilePath": 2
|
||||
"PrereqRank0": 12,
|
||||
"PrereqTalent0": 9,
|
||||
"RankSpell0": 4,
|
||||
"Row": 2,
|
||||
"TabID": 1
|
||||
},
|
||||
"TalentTab": {
|
||||
"BackgroundFile": 15,
|
||||
"ClassMask": 12,
|
||||
"ID": 0,
|
||||
"Name": 1,
|
||||
"OrderIndex": 14
|
||||
},
|
||||
"TaxiNodes": {
|
||||
"ID": 0,
|
||||
"MapID": 1,
|
||||
"Name": 5,
|
||||
"X": 2,
|
||||
"Y": 3,
|
||||
"Z": 4
|
||||
},
|
||||
"TaxiPath": {
|
||||
"Cost": 3,
|
||||
"FromNode": 1,
|
||||
"ID": 0,
|
||||
"ToNode": 2
|
||||
},
|
||||
"TaxiPathNode": {
|
||||
"ID": 0,
|
||||
"MapID": 3,
|
||||
"NodeIndex": 2,
|
||||
"PathID": 1,
|
||||
"X": 4,
|
||||
"Y": 5,
|
||||
"Z": 6
|
||||
},
|
||||
"WorldMapArea": {
|
||||
"AreaID": 2,
|
||||
"AreaName": 3,
|
||||
"DisplayMapID": 8,
|
||||
"ID": 0,
|
||||
"LocBottom": 7,
|
||||
"LocLeft": 4,
|
||||
"LocRight": 5,
|
||||
"LocTop": 6,
|
||||
"MapID": 1,
|
||||
"ParentWorldMapID": 10
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,97 +1,53 @@
|
|||
{
|
||||
"Spell": {
|
||||
"AreaTable": {
|
||||
"ExploreFlag": 3,
|
||||
"ID": 0,
|
||||
"Attributes": 5,
|
||||
"AttributesEx": 6,
|
||||
"IconID": 124,
|
||||
"Name": 127,
|
||||
"Tooltip": 154,
|
||||
"Rank": 136,
|
||||
"SchoolMask": 215,
|
||||
"CastingTimeIndex": 22,
|
||||
"PowerType": 35,
|
||||
"ManaCost": 36,
|
||||
"RangeIndex": 40,
|
||||
"DispelType": 3
|
||||
"MapID": 1,
|
||||
"ParentAreaNum": 2
|
||||
},
|
||||
"SpellRange": {
|
||||
"MaxRange": 4
|
||||
},
|
||||
"ItemDisplayInfo": {
|
||||
"ID": 0,
|
||||
"LeftModel": 1,
|
||||
"LeftModelTexture": 3,
|
||||
"InventoryIcon": 5,
|
||||
"GeosetGroup1": 7,
|
||||
"GeosetGroup3": 9,
|
||||
"TextureArmUpper": 14,
|
||||
"TextureArmLower": 15,
|
||||
"TextureHand": 16,
|
||||
"TextureTorsoUpper": 17,
|
||||
"TextureTorsoLower": 18,
|
||||
"TextureLegUpper": 19,
|
||||
"TextureLegLower": 20,
|
||||
"TextureFoot": 21
|
||||
},
|
||||
"CharSections": {
|
||||
"CharHairGeosets": {
|
||||
"GeosetID": 4,
|
||||
"RaceID": 1,
|
||||
"SexID": 2,
|
||||
"Variation": 3
|
||||
},
|
||||
"CharSections": {
|
||||
"BaseSection": 3,
|
||||
"VariationIndex": 4,
|
||||
"ColorIndex": 5,
|
||||
"Flags": 9,
|
||||
"RaceID": 1,
|
||||
"SexID": 2,
|
||||
"Texture1": 6,
|
||||
"Texture2": 7,
|
||||
"Texture3": 8,
|
||||
"Flags": 9
|
||||
},
|
||||
"SpellIcon": {
|
||||
"ID": 0,
|
||||
"Path": 1
|
||||
},
|
||||
"FactionTemplate": {
|
||||
"ID": 0,
|
||||
"Faction": 1,
|
||||
"FactionGroup": 3,
|
||||
"FriendGroup": 4,
|
||||
"EnemyGroup": 5,
|
||||
"Enemy0": 6,
|
||||
"Enemy1": 7,
|
||||
"Enemy2": 8,
|
||||
"Enemy3": 9
|
||||
},
|
||||
"Faction": {
|
||||
"ID": 0,
|
||||
"ReputationRaceMask0": 2,
|
||||
"ReputationRaceMask1": 3,
|
||||
"ReputationRaceMask2": 4,
|
||||
"ReputationRaceMask3": 5,
|
||||
"ReputationBase0": 10,
|
||||
"ReputationBase1": 11,
|
||||
"ReputationBase2": 12,
|
||||
"ReputationBase3": 13
|
||||
"VariationIndex": 4
|
||||
},
|
||||
"CharTitles": {
|
||||
"ID": 0,
|
||||
"Title": 2,
|
||||
"TitleBit": 20
|
||||
},
|
||||
"AreaTable": {
|
||||
"CharacterFacialHairStyles": {
|
||||
"Geoset100": 3,
|
||||
"Geoset200": 5,
|
||||
"Geoset300": 4,
|
||||
"RaceID": 0,
|
||||
"SexID": 1,
|
||||
"Variation": 2
|
||||
},
|
||||
"CreatureDisplayInfo": {
|
||||
"ExtraDisplayId": 3,
|
||||
"ID": 0,
|
||||
"MapID": 1,
|
||||
"ParentAreaNum": 2,
|
||||
"ExploreFlag": 3
|
||||
"ModelID": 1,
|
||||
"Skin1": 6,
|
||||
"Skin2": 7,
|
||||
"Skin3": 8
|
||||
},
|
||||
"CreatureDisplayInfoExtra": {
|
||||
"ID": 0,
|
||||
"RaceID": 1,
|
||||
"SexID": 2,
|
||||
"SkinID": 3,
|
||||
"FaceID": 4,
|
||||
"HairStyleID": 5,
|
||||
"HairColorID": 6,
|
||||
"FacialHairID": 7,
|
||||
"BakeName": 20,
|
||||
"EquipDisplay0": 8,
|
||||
"EquipDisplay1": 9,
|
||||
"EquipDisplay10": 18,
|
||||
"EquipDisplay2": 10,
|
||||
"EquipDisplay3": 11,
|
||||
"EquipDisplay4": 12,
|
||||
|
|
@ -100,158 +56,80 @@
|
|||
"EquipDisplay7": 15,
|
||||
"EquipDisplay8": 16,
|
||||
"EquipDisplay9": 17,
|
||||
"EquipDisplay10": 18,
|
||||
"BakeName": 20
|
||||
},
|
||||
"CreatureDisplayInfo": {
|
||||
"FaceID": 4,
|
||||
"FacialHairID": 7,
|
||||
"HairColorID": 6,
|
||||
"HairStyleID": 5,
|
||||
"ID": 0,
|
||||
"ModelID": 1,
|
||||
"ExtraDisplayId": 3,
|
||||
"Skin1": 6,
|
||||
"Skin2": 7,
|
||||
"Skin3": 8
|
||||
},
|
||||
"TaxiNodes": {
|
||||
"ID": 0,
|
||||
"MapID": 1,
|
||||
"X": 2,
|
||||
"Y": 3,
|
||||
"Z": 4,
|
||||
"Name": 5,
|
||||
"MountDisplayIdAllianceFallback": 12,
|
||||
"MountDisplayIdHordeFallback": 13,
|
||||
"MountDisplayIdAlliance": 14,
|
||||
"MountDisplayIdHorde": 15
|
||||
},
|
||||
"TaxiPath": {
|
||||
"ID": 0,
|
||||
"FromNode": 1,
|
||||
"ToNode": 2,
|
||||
"Cost": 3
|
||||
},
|
||||
"TaxiPathNode": {
|
||||
"ID": 0,
|
||||
"PathID": 1,
|
||||
"NodeIndex": 2,
|
||||
"MapID": 3,
|
||||
"X": 4,
|
||||
"Y": 5,
|
||||
"Z": 6
|
||||
},
|
||||
"TalentTab": {
|
||||
"ID": 0,
|
||||
"Name": 1,
|
||||
"ClassMask": 12,
|
||||
"OrderIndex": 14,
|
||||
"BackgroundFile": 15
|
||||
},
|
||||
"Talent": {
|
||||
"ID": 0,
|
||||
"TabID": 1,
|
||||
"Row": 2,
|
||||
"Column": 3,
|
||||
"RankSpell0": 4,
|
||||
"PrereqTalent0": 9,
|
||||
"PrereqRank0": 12
|
||||
},
|
||||
"SkillLineAbility": {
|
||||
"SkillLineID": 1,
|
||||
"SpellID": 2
|
||||
},
|
||||
"SkillLine": {
|
||||
"ID": 0,
|
||||
"Category": 1,
|
||||
"Name": 3
|
||||
},
|
||||
"Map": {
|
||||
"ID": 0,
|
||||
"InternalName": 1
|
||||
"RaceID": 1,
|
||||
"SexID": 2,
|
||||
"SkinID": 3
|
||||
},
|
||||
"CreatureModelData": {
|
||||
"ID": 0,
|
||||
"ModelPath": 2
|
||||
},
|
||||
"CharHairGeosets": {
|
||||
"RaceID": 1,
|
||||
"SexID": 2,
|
||||
"Variation": 3,
|
||||
"GeosetID": 4
|
||||
},
|
||||
"CharacterFacialHairStyles": {
|
||||
"RaceID": 0,
|
||||
"SexID": 1,
|
||||
"Variation": 2,
|
||||
"Geoset100": 3,
|
||||
"Geoset300": 4,
|
||||
"Geoset200": 5
|
||||
},
|
||||
"GameObjectDisplayInfo": {
|
||||
"ID": 0,
|
||||
"ModelName": 1
|
||||
},
|
||||
"Emotes": {
|
||||
"ID": 0,
|
||||
"AnimID": 2
|
||||
"AnimID": 2,
|
||||
"ID": 0
|
||||
},
|
||||
"EmotesText": {
|
||||
"ID": 0,
|
||||
"Command": 1,
|
||||
"EmoteRef": 2,
|
||||
"OthersTargetTextID": 3,
|
||||
"SenderTargetTextID": 5,
|
||||
"ID": 0,
|
||||
"OthersNoTargetTextID": 7,
|
||||
"SenderNoTargetTextID": 9
|
||||
"OthersTargetTextID": 3,
|
||||
"SenderNoTargetTextID": 9,
|
||||
"SenderTargetTextID": 5
|
||||
},
|
||||
"EmotesTextData": {
|
||||
"ID": 0,
|
||||
"Text": 1
|
||||
},
|
||||
"Light": {
|
||||
"Faction": {
|
||||
"ID": 0,
|
||||
"MapID": 1,
|
||||
"X": 2,
|
||||
"Z": 3,
|
||||
"Y": 4,
|
||||
"InnerRadius": 5,
|
||||
"OuterRadius": 6,
|
||||
"LightParamsID": 7,
|
||||
"LightParamsIDRain": 8,
|
||||
"LightParamsIDUnderwater": 9
|
||||
"ReputationBase0": 10,
|
||||
"ReputationBase1": 11,
|
||||
"ReputationBase2": 12,
|
||||
"ReputationBase3": 13,
|
||||
"ReputationRaceMask0": 2,
|
||||
"ReputationRaceMask1": 3,
|
||||
"ReputationRaceMask2": 4,
|
||||
"ReputationRaceMask3": 5
|
||||
},
|
||||
"LightParams": {
|
||||
"LightParamsID": 0
|
||||
"FactionTemplate": {
|
||||
"Enemy0": 6,
|
||||
"Enemy1": 7,
|
||||
"Enemy2": 8,
|
||||
"Enemy3": 9,
|
||||
"EnemyGroup": 5,
|
||||
"Faction": 1,
|
||||
"FactionGroup": 3,
|
||||
"FriendGroup": 4,
|
||||
"ID": 0
|
||||
},
|
||||
"LightIntBand": {
|
||||
"BlockIndex": 1,
|
||||
"NumKeyframes": 2,
|
||||
"TimeKey0": 3,
|
||||
"Value0": 19
|
||||
},
|
||||
"LightFloatBand": {
|
||||
"BlockIndex": 1,
|
||||
"NumKeyframes": 2,
|
||||
"TimeKey0": 3,
|
||||
"Value0": 19
|
||||
},
|
||||
"WorldMapArea": {
|
||||
"GameObjectDisplayInfo": {
|
||||
"ID": 0,
|
||||
"MapID": 1,
|
||||
"AreaID": 2,
|
||||
"AreaName": 3,
|
||||
"LocLeft": 4,
|
||||
"LocRight": 5,
|
||||
"LocTop": 6,
|
||||
"LocBottom": 7,
|
||||
"DisplayMapID": 8,
|
||||
"ParentWorldMapID": 10
|
||||
"ModelName": 1
|
||||
},
|
||||
"SpellItemEnchantment": {
|
||||
"ItemDisplayInfo": {
|
||||
"GeosetGroup1": 7,
|
||||
"GeosetGroup3": 9,
|
||||
"ID": 0,
|
||||
"Name": 8
|
||||
"InventoryIcon": 5,
|
||||
"LeftModel": 1,
|
||||
"LeftModelTexture": 3,
|
||||
"TextureArmLower": 15,
|
||||
"TextureArmUpper": 14,
|
||||
"TextureFoot": 21,
|
||||
"TextureHand": 16,
|
||||
"TextureLegLower": 20,
|
||||
"TextureLegUpper": 19,
|
||||
"TextureTorsoLower": 18,
|
||||
"TextureTorsoUpper": 17
|
||||
},
|
||||
"ItemSet": {
|
||||
"ID": 0,
|
||||
"Name": 1,
|
||||
"Item0": 18,
|
||||
"Item1": 19,
|
||||
"Item2": 20,
|
||||
|
|
@ -262,6 +140,7 @@
|
|||
"Item7": 25,
|
||||
"Item8": 26,
|
||||
"Item9": 27,
|
||||
"Name": 1,
|
||||
"Spell0": 28,
|
||||
"Spell1": 29,
|
||||
"Spell2": 30,
|
||||
|
|
@ -283,21 +162,145 @@
|
|||
"Threshold8": 46,
|
||||
"Threshold9": 47
|
||||
},
|
||||
"SpellVisual": {
|
||||
"Light": {
|
||||
"ID": 0,
|
||||
"InnerRadius": 5,
|
||||
"LightParamsID": 7,
|
||||
"LightParamsIDRain": 8,
|
||||
"LightParamsIDUnderwater": 9,
|
||||
"MapID": 1,
|
||||
"OuterRadius": 6,
|
||||
"X": 2,
|
||||
"Y": 4,
|
||||
"Z": 3
|
||||
},
|
||||
"LightFloatBand": {
|
||||
"BlockIndex": 1,
|
||||
"NumKeyframes": 2,
|
||||
"TimeKey0": 3,
|
||||
"Value0": 19
|
||||
},
|
||||
"LightIntBand": {
|
||||
"BlockIndex": 1,
|
||||
"NumKeyframes": 2,
|
||||
"TimeKey0": 3,
|
||||
"Value0": 19
|
||||
},
|
||||
"LightParams": {
|
||||
"LightParamsID": 0
|
||||
},
|
||||
"Map": {
|
||||
"ID": 0,
|
||||
"InternalName": 1
|
||||
},
|
||||
"SkillLine": {
|
||||
"Category": 1,
|
||||
"ID": 0,
|
||||
"Name": 3
|
||||
},
|
||||
"SkillLineAbility": {
|
||||
"SkillLineID": 1,
|
||||
"SpellID": 2
|
||||
},
|
||||
"Spell": {
|
||||
"Attributes": 5,
|
||||
"AttributesEx": 6,
|
||||
"CastingTimeIndex": 22,
|
||||
"DispelType": 3,
|
||||
"EffectBasePoints0": 80,
|
||||
"EffectBasePoints1": 81,
|
||||
"EffectBasePoints2": 82,
|
||||
"ID": 0,
|
||||
"IconID": 124,
|
||||
"ManaCost": 36,
|
||||
"Name": 127,
|
||||
"PowerType": 35,
|
||||
"RangeIndex": 40,
|
||||
"Rank": 136,
|
||||
"SchoolMask": 215,
|
||||
"Tooltip": 154
|
||||
},
|
||||
"SpellIcon": {
|
||||
"ID": 0,
|
||||
"Path": 1
|
||||
},
|
||||
"SpellItemEnchantment": {
|
||||
"ID": 0,
|
||||
"Name": 8
|
||||
},
|
||||
"SpellRange": {
|
||||
"MaxRange": 4
|
||||
},
|
||||
"SpellVisual": {
|
||||
"CastKit": 2,
|
||||
"ID": 0,
|
||||
"ImpactKit": 3,
|
||||
"MissileModel": 8
|
||||
},
|
||||
"SpellVisualEffectName": {
|
||||
"FilePath": 2,
|
||||
"ID": 0
|
||||
},
|
||||
"SpellVisualKit": {
|
||||
"ID": 0,
|
||||
"BaseEffect": 5,
|
||||
"ID": 0,
|
||||
"SpecialEffect0": 11,
|
||||
"SpecialEffect1": 12,
|
||||
"SpecialEffect2": 13
|
||||
},
|
||||
"SpellVisualEffectName": {
|
||||
"Talent": {
|
||||
"Column": 3,
|
||||
"ID": 0,
|
||||
"FilePath": 2
|
||||
"PrereqRank0": 12,
|
||||
"PrereqTalent0": 9,
|
||||
"RankSpell0": 4,
|
||||
"Row": 2,
|
||||
"TabID": 1
|
||||
},
|
||||
"TalentTab": {
|
||||
"BackgroundFile": 15,
|
||||
"ClassMask": 12,
|
||||
"ID": 0,
|
||||
"Name": 1,
|
||||
"OrderIndex": 14
|
||||
},
|
||||
"TaxiNodes": {
|
||||
"ID": 0,
|
||||
"MapID": 1,
|
||||
"MountDisplayIdAlliance": 14,
|
||||
"MountDisplayIdAllianceFallback": 12,
|
||||
"MountDisplayIdHorde": 15,
|
||||
"MountDisplayIdHordeFallback": 13,
|
||||
"Name": 5,
|
||||
"X": 2,
|
||||
"Y": 3,
|
||||
"Z": 4
|
||||
},
|
||||
"TaxiPath": {
|
||||
"Cost": 3,
|
||||
"FromNode": 1,
|
||||
"ID": 0,
|
||||
"ToNode": 2
|
||||
},
|
||||
"TaxiPathNode": {
|
||||
"ID": 0,
|
||||
"MapID": 3,
|
||||
"NodeIndex": 2,
|
||||
"PathID": 1,
|
||||
"X": 4,
|
||||
"Y": 5,
|
||||
"Z": 6
|
||||
},
|
||||
"WorldMapArea": {
|
||||
"AreaID": 2,
|
||||
"AreaName": 3,
|
||||
"DisplayMapID": 8,
|
||||
"ID": 0,
|
||||
"LocBottom": 7,
|
||||
"LocLeft": 4,
|
||||
"LocRight": 5,
|
||||
"LocTop": 6,
|
||||
"MapID": 1,
|
||||
"ParentWorldMapID": 10
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,90 +1,45 @@
|
|||
{
|
||||
"Spell": {
|
||||
"AreaTable": {
|
||||
"ExploreFlag": 3,
|
||||
"ID": 0,
|
||||
"Attributes": 5,
|
||||
"AttributesEx": 6,
|
||||
"IconID": 117,
|
||||
"Name": 120,
|
||||
"Tooltip": 147,
|
||||
"Rank": 129,
|
||||
"SchoolEnum": 1,
|
||||
"CastingTimeIndex": 15,
|
||||
"PowerType": 28,
|
||||
"ManaCost": 29,
|
||||
"RangeIndex": 33,
|
||||
"DispelType": 4
|
||||
"MapID": 1,
|
||||
"ParentAreaNum": 2
|
||||
},
|
||||
"SpellRange": {
|
||||
"MaxRange": 2
|
||||
},
|
||||
"ItemDisplayInfo": {
|
||||
"ID": 0,
|
||||
"LeftModel": 1,
|
||||
"LeftModelTexture": 3,
|
||||
"InventoryIcon": 5,
|
||||
"GeosetGroup1": 7,
|
||||
"GeosetGroup3": 9,
|
||||
"TextureArmUpper": 14,
|
||||
"TextureArmLower": 15,
|
||||
"TextureHand": 16,
|
||||
"TextureTorsoUpper": 17,
|
||||
"TextureTorsoLower": 18,
|
||||
"TextureLegUpper": 19,
|
||||
"TextureLegLower": 20,
|
||||
"TextureFoot": 21
|
||||
},
|
||||
"CharSections": {
|
||||
"CharHairGeosets": {
|
||||
"GeosetID": 4,
|
||||
"RaceID": 1,
|
||||
"SexID": 2,
|
||||
"Variation": 3
|
||||
},
|
||||
"CharSections": {
|
||||
"BaseSection": 3,
|
||||
"VariationIndex": 4,
|
||||
"ColorIndex": 5,
|
||||
"Flags": 9,
|
||||
"RaceID": 1,
|
||||
"SexID": 2,
|
||||
"Texture1": 6,
|
||||
"Texture2": 7,
|
||||
"Texture3": 8,
|
||||
"Flags": 9
|
||||
"VariationIndex": 4
|
||||
},
|
||||
"SpellIcon": {
|
||||
"ID": 0,
|
||||
"Path": 1
|
||||
"CharacterFacialHairStyles": {
|
||||
"Geoset100": 3,
|
||||
"Geoset200": 5,
|
||||
"Geoset300": 4,
|
||||
"RaceID": 0,
|
||||
"SexID": 1,
|
||||
"Variation": 2
|
||||
},
|
||||
"FactionTemplate": {
|
||||
"CreatureDisplayInfo": {
|
||||
"ExtraDisplayId": 3,
|
||||
"ID": 0,
|
||||
"Faction": 1,
|
||||
"FactionGroup": 3,
|
||||
"FriendGroup": 4,
|
||||
"EnemyGroup": 5,
|
||||
"Enemy0": 6,
|
||||
"Enemy1": 7,
|
||||
"Enemy2": 8,
|
||||
"Enemy3": 9
|
||||
},
|
||||
"Faction": {
|
||||
"ID": 0,
|
||||
"ReputationRaceMask0": 2,
|
||||
"ReputationRaceMask1": 3,
|
||||
"ReputationRaceMask2": 4,
|
||||
"ReputationRaceMask3": 5,
|
||||
"ReputationBase0": 10,
|
||||
"ReputationBase1": 11,
|
||||
"ReputationBase2": 12,
|
||||
"ReputationBase3": 13
|
||||
},
|
||||
"AreaTable": {
|
||||
"ID": 0,
|
||||
"MapID": 1,
|
||||
"ParentAreaNum": 2,
|
||||
"ExploreFlag": 3
|
||||
"ModelID": 1,
|
||||
"Skin1": 6,
|
||||
"Skin2": 7,
|
||||
"Skin3": 8
|
||||
},
|
||||
"CreatureDisplayInfoExtra": {
|
||||
"ID": 0,
|
||||
"RaceID": 1,
|
||||
"SexID": 2,
|
||||
"SkinID": 3,
|
||||
"FaceID": 4,
|
||||
"HairStyleID": 5,
|
||||
"HairColorID": 6,
|
||||
"FacialHairID": 7,
|
||||
"BakeName": 18,
|
||||
"EquipDisplay0": 8,
|
||||
"EquipDisplay1": 9,
|
||||
"EquipDisplay2": 10,
|
||||
|
|
@ -95,153 +50,80 @@
|
|||
"EquipDisplay7": 15,
|
||||
"EquipDisplay8": 16,
|
||||
"EquipDisplay9": 17,
|
||||
"BakeName": 18
|
||||
},
|
||||
"CreatureDisplayInfo": {
|
||||
"FaceID": 4,
|
||||
"FacialHairID": 7,
|
||||
"HairColorID": 6,
|
||||
"HairStyleID": 5,
|
||||
"ID": 0,
|
||||
"ModelID": 1,
|
||||
"ExtraDisplayId": 3,
|
||||
"Skin1": 6,
|
||||
"Skin2": 7,
|
||||
"Skin3": 8
|
||||
},
|
||||
"TaxiNodes": {
|
||||
"ID": 0,
|
||||
"MapID": 1,
|
||||
"X": 2,
|
||||
"Y": 3,
|
||||
"Z": 4,
|
||||
"Name": 5
|
||||
},
|
||||
"TaxiPath": {
|
||||
"ID": 0,
|
||||
"FromNode": 1,
|
||||
"ToNode": 2,
|
||||
"Cost": 3
|
||||
},
|
||||
"TaxiPathNode": {
|
||||
"ID": 0,
|
||||
"PathID": 1,
|
||||
"NodeIndex": 2,
|
||||
"MapID": 3,
|
||||
"X": 4,
|
||||
"Y": 5,
|
||||
"Z": 6
|
||||
},
|
||||
"TalentTab": {
|
||||
"ID": 0,
|
||||
"Name": 1,
|
||||
"ClassMask": 12,
|
||||
"OrderIndex": 14,
|
||||
"BackgroundFile": 15
|
||||
},
|
||||
"Talent": {
|
||||
"ID": 0,
|
||||
"TabID": 1,
|
||||
"Row": 2,
|
||||
"Column": 3,
|
||||
"RankSpell0": 4,
|
||||
"PrereqTalent0": 9,
|
||||
"PrereqRank0": 12
|
||||
},
|
||||
"SkillLineAbility": {
|
||||
"SkillLineID": 1,
|
||||
"SpellID": 2
|
||||
},
|
||||
"SkillLine": {
|
||||
"ID": 0,
|
||||
"Category": 1,
|
||||
"Name": 3
|
||||
},
|
||||
"Map": {
|
||||
"ID": 0,
|
||||
"InternalName": 1
|
||||
"RaceID": 1,
|
||||
"SexID": 2,
|
||||
"SkinID": 3
|
||||
},
|
||||
"CreatureModelData": {
|
||||
"ID": 0,
|
||||
"ModelPath": 2
|
||||
},
|
||||
"CharHairGeosets": {
|
||||
"RaceID": 1,
|
||||
"SexID": 2,
|
||||
"Variation": 3,
|
||||
"GeosetID": 4
|
||||
},
|
||||
"CharacterFacialHairStyles": {
|
||||
"RaceID": 0,
|
||||
"SexID": 1,
|
||||
"Variation": 2,
|
||||
"Geoset100": 3,
|
||||
"Geoset300": 4,
|
||||
"Geoset200": 5
|
||||
},
|
||||
"GameObjectDisplayInfo": {
|
||||
"ID": 0,
|
||||
"ModelName": 1
|
||||
},
|
||||
"Emotes": {
|
||||
"ID": 0,
|
||||
"AnimID": 2
|
||||
"AnimID": 2,
|
||||
"ID": 0
|
||||
},
|
||||
"EmotesText": {
|
||||
"ID": 0,
|
||||
"Command": 1,
|
||||
"EmoteRef": 2,
|
||||
"OthersTargetTextID": 3,
|
||||
"SenderTargetTextID": 5,
|
||||
"ID": 0,
|
||||
"OthersNoTargetTextID": 7,
|
||||
"SenderNoTargetTextID": 9
|
||||
"OthersTargetTextID": 3,
|
||||
"SenderNoTargetTextID": 9,
|
||||
"SenderTargetTextID": 5
|
||||
},
|
||||
"EmotesTextData": {
|
||||
"ID": 0,
|
||||
"Text": 1
|
||||
},
|
||||
"Light": {
|
||||
"Faction": {
|
||||
"ID": 0,
|
||||
"MapID": 1,
|
||||
"X": 2,
|
||||
"Z": 3,
|
||||
"Y": 4,
|
||||
"InnerRadius": 5,
|
||||
"OuterRadius": 6,
|
||||
"LightParamsID": 7,
|
||||
"LightParamsIDRain": 8,
|
||||
"LightParamsIDUnderwater": 9
|
||||
"ReputationBase0": 10,
|
||||
"ReputationBase1": 11,
|
||||
"ReputationBase2": 12,
|
||||
"ReputationBase3": 13,
|
||||
"ReputationRaceMask0": 2,
|
||||
"ReputationRaceMask1": 3,
|
||||
"ReputationRaceMask2": 4,
|
||||
"ReputationRaceMask3": 5
|
||||
},
|
||||
"LightParams": {
|
||||
"LightParamsID": 0
|
||||
"FactionTemplate": {
|
||||
"Enemy0": 6,
|
||||
"Enemy1": 7,
|
||||
"Enemy2": 8,
|
||||
"Enemy3": 9,
|
||||
"EnemyGroup": 5,
|
||||
"Faction": 1,
|
||||
"FactionGroup": 3,
|
||||
"FriendGroup": 4,
|
||||
"ID": 0
|
||||
},
|
||||
"LightIntBand": {
|
||||
"BlockIndex": 1,
|
||||
"NumKeyframes": 2,
|
||||
"TimeKey0": 3,
|
||||
"Value0": 19
|
||||
},
|
||||
"LightFloatBand": {
|
||||
"BlockIndex": 1,
|
||||
"NumKeyframes": 2,
|
||||
"TimeKey0": 3,
|
||||
"Value0": 19
|
||||
},
|
||||
"WorldMapArea": {
|
||||
"GameObjectDisplayInfo": {
|
||||
"ID": 0,
|
||||
"MapID": 1,
|
||||
"AreaID": 2,
|
||||
"AreaName": 3,
|
||||
"LocLeft": 4,
|
||||
"LocRight": 5,
|
||||
"LocTop": 6,
|
||||
"LocBottom": 7,
|
||||
"DisplayMapID": 8,
|
||||
"ParentWorldMapID": 10
|
||||
"ModelName": 1
|
||||
},
|
||||
"SpellItemEnchantment": {
|
||||
"ItemDisplayInfo": {
|
||||
"GeosetGroup1": 7,
|
||||
"GeosetGroup3": 9,
|
||||
"ID": 0,
|
||||
"Name": 8
|
||||
"InventoryIcon": 5,
|
||||
"LeftModel": 1,
|
||||
"LeftModelTexture": 3,
|
||||
"TextureArmLower": 15,
|
||||
"TextureArmUpper": 14,
|
||||
"TextureFoot": 21,
|
||||
"TextureHand": 16,
|
||||
"TextureLegLower": 20,
|
||||
"TextureLegUpper": 19,
|
||||
"TextureTorsoLower": 18,
|
||||
"TextureTorsoUpper": 17
|
||||
},
|
||||
"ItemSet": {
|
||||
"ID": 0,
|
||||
"Name": 1,
|
||||
"Item0": 10,
|
||||
"Item1": 11,
|
||||
"Item2": 12,
|
||||
|
|
@ -252,6 +134,7 @@
|
|||
"Item7": 17,
|
||||
"Item8": 18,
|
||||
"Item9": 19,
|
||||
"Name": 1,
|
||||
"Spell0": 20,
|
||||
"Spell1": 21,
|
||||
"Spell2": 22,
|
||||
|
|
@ -273,21 +156,141 @@
|
|||
"Threshold8": 38,
|
||||
"Threshold9": 39
|
||||
},
|
||||
"SpellVisual": {
|
||||
"Light": {
|
||||
"ID": 0,
|
||||
"InnerRadius": 5,
|
||||
"LightParamsID": 7,
|
||||
"LightParamsIDRain": 8,
|
||||
"LightParamsIDUnderwater": 9,
|
||||
"MapID": 1,
|
||||
"OuterRadius": 6,
|
||||
"X": 2,
|
||||
"Y": 4,
|
||||
"Z": 3
|
||||
},
|
||||
"LightFloatBand": {
|
||||
"BlockIndex": 1,
|
||||
"NumKeyframes": 2,
|
||||
"TimeKey0": 3,
|
||||
"Value0": 19
|
||||
},
|
||||
"LightIntBand": {
|
||||
"BlockIndex": 1,
|
||||
"NumKeyframes": 2,
|
||||
"TimeKey0": 3,
|
||||
"Value0": 19
|
||||
},
|
||||
"LightParams": {
|
||||
"LightParamsID": 0
|
||||
},
|
||||
"Map": {
|
||||
"ID": 0,
|
||||
"InternalName": 1
|
||||
},
|
||||
"SkillLine": {
|
||||
"Category": 1,
|
||||
"ID": 0,
|
||||
"Name": 3
|
||||
},
|
||||
"SkillLineAbility": {
|
||||
"SkillLineID": 1,
|
||||
"SpellID": 2
|
||||
},
|
||||
"Spell": {
|
||||
"Attributes": 5,
|
||||
"AttributesEx": 6,
|
||||
"CastingTimeIndex": 15,
|
||||
"DispelType": 4,
|
||||
"EffectBasePoints0": 80,
|
||||
"EffectBasePoints1": 81,
|
||||
"EffectBasePoints2": 82,
|
||||
"ID": 0,
|
||||
"IconID": 117,
|
||||
"ManaCost": 29,
|
||||
"Name": 120,
|
||||
"PowerType": 28,
|
||||
"RangeIndex": 33,
|
||||
"Rank": 129,
|
||||
"SchoolEnum": 1,
|
||||
"Tooltip": 147
|
||||
},
|
||||
"SpellIcon": {
|
||||
"ID": 0,
|
||||
"Path": 1
|
||||
},
|
||||
"SpellItemEnchantment": {
|
||||
"ID": 0,
|
||||
"Name": 8
|
||||
},
|
||||
"SpellRange": {
|
||||
"MaxRange": 2
|
||||
},
|
||||
"SpellVisual": {
|
||||
"CastKit": 2,
|
||||
"ID": 0,
|
||||
"ImpactKit": 3,
|
||||
"MissileModel": 8
|
||||
},
|
||||
"SpellVisualEffectName": {
|
||||
"FilePath": 2,
|
||||
"ID": 0
|
||||
},
|
||||
"SpellVisualKit": {
|
||||
"ID": 0,
|
||||
"BaseEffect": 5,
|
||||
"ID": 0,
|
||||
"SpecialEffect0": 11,
|
||||
"SpecialEffect1": 12,
|
||||
"SpecialEffect2": 13
|
||||
},
|
||||
"SpellVisualEffectName": {
|
||||
"Talent": {
|
||||
"Column": 3,
|
||||
"ID": 0,
|
||||
"FilePath": 2
|
||||
"PrereqRank0": 12,
|
||||
"PrereqTalent0": 9,
|
||||
"RankSpell0": 4,
|
||||
"Row": 2,
|
||||
"TabID": 1
|
||||
},
|
||||
"TalentTab": {
|
||||
"BackgroundFile": 15,
|
||||
"ClassMask": 12,
|
||||
"ID": 0,
|
||||
"Name": 1,
|
||||
"OrderIndex": 14
|
||||
},
|
||||
"TaxiNodes": {
|
||||
"ID": 0,
|
||||
"MapID": 1,
|
||||
"Name": 5,
|
||||
"X": 2,
|
||||
"Y": 3,
|
||||
"Z": 4
|
||||
},
|
||||
"TaxiPath": {
|
||||
"Cost": 3,
|
||||
"FromNode": 1,
|
||||
"ID": 0,
|
||||
"ToNode": 2
|
||||
},
|
||||
"TaxiPathNode": {
|
||||
"ID": 0,
|
||||
"MapID": 3,
|
||||
"NodeIndex": 2,
|
||||
"PathID": 1,
|
||||
"X": 4,
|
||||
"Y": 5,
|
||||
"Z": 6
|
||||
},
|
||||
"WorldMapArea": {
|
||||
"AreaID": 2,
|
||||
"AreaName": 3,
|
||||
"DisplayMapID": 8,
|
||||
"ID": 0,
|
||||
"LocBottom": 7,
|
||||
"LocLeft": 4,
|
||||
"LocRight": 5,
|
||||
"LocTop": 6,
|
||||
"MapID": 1,
|
||||
"ParentWorldMapID": 10
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,109 +1,65 @@
|
|||
{
|
||||
"Spell": {
|
||||
"Achievement": {
|
||||
"Description": 21,
|
||||
"ID": 0,
|
||||
"Attributes": 4,
|
||||
"AttributesEx": 5,
|
||||
"IconID": 133,
|
||||
"Name": 136,
|
||||
"Tooltip": 139,
|
||||
"Rank": 153,
|
||||
"SchoolMask": 225,
|
||||
"PowerType": 14,
|
||||
"ManaCost": 39,
|
||||
"CastingTimeIndex": 47,
|
||||
"RangeIndex": 49,
|
||||
"DispelType": 2
|
||||
"Points": 39,
|
||||
"Title": 4
|
||||
},
|
||||
"SpellRange": {
|
||||
"MaxRange": 4
|
||||
},
|
||||
"ItemDisplayInfo": {
|
||||
"AchievementCriteria": {
|
||||
"AchievementID": 1,
|
||||
"Description": 9,
|
||||
"ID": 0,
|
||||
"LeftModel": 1,
|
||||
"LeftModelTexture": 3,
|
||||
"InventoryIcon": 5,
|
||||
"GeosetGroup1": 7,
|
||||
"GeosetGroup3": 9,
|
||||
"TextureArmUpper": 14,
|
||||
"TextureArmLower": 15,
|
||||
"TextureHand": 16,
|
||||
"TextureTorsoUpper": 17,
|
||||
"TextureTorsoLower": 18,
|
||||
"TextureLegUpper": 19,
|
||||
"TextureLegLower": 20,
|
||||
"TextureFoot": 21
|
||||
"Quantity": 4
|
||||
},
|
||||
"CharSections": {
|
||||
"AreaTable": {
|
||||
"ExploreFlag": 3,
|
||||
"ID": 0,
|
||||
"MapID": 1,
|
||||
"ParentAreaNum": 2
|
||||
},
|
||||
"CharHairGeosets": {
|
||||
"GeosetID": 4,
|
||||
"RaceID": 1,
|
||||
"SexID": 2,
|
||||
"Variation": 3
|
||||
},
|
||||
"CharSections": {
|
||||
"BaseSection": 3,
|
||||
"VariationIndex": 4,
|
||||
"ColorIndex": 5,
|
||||
"Flags": 9,
|
||||
"RaceID": 1,
|
||||
"SexID": 2,
|
||||
"Texture1": 6,
|
||||
"Texture2": 7,
|
||||
"Texture3": 8,
|
||||
"Flags": 9
|
||||
},
|
||||
"SpellIcon": {
|
||||
"ID": 0,
|
||||
"Path": 1
|
||||
},
|
||||
"FactionTemplate": {
|
||||
"ID": 0,
|
||||
"Faction": 1,
|
||||
"FactionGroup": 3,
|
||||
"FriendGroup": 4,
|
||||
"EnemyGroup": 5,
|
||||
"Enemy0": 6,
|
||||
"Enemy1": 7,
|
||||
"Enemy2": 8,
|
||||
"Enemy3": 9
|
||||
},
|
||||
"Faction": {
|
||||
"ID": 0,
|
||||
"ReputationRaceMask0": 2,
|
||||
"ReputationRaceMask1": 3,
|
||||
"ReputationRaceMask2": 4,
|
||||
"ReputationRaceMask3": 5,
|
||||
"ReputationBase0": 10,
|
||||
"ReputationBase1": 11,
|
||||
"ReputationBase2": 12,
|
||||
"ReputationBase3": 13
|
||||
"VariationIndex": 4
|
||||
},
|
||||
"CharTitles": {
|
||||
"ID": 0,
|
||||
"Title": 2,
|
||||
"TitleBit": 36
|
||||
},
|
||||
"Achievement": {
|
||||
"ID": 0,
|
||||
"Title": 4,
|
||||
"Description": 21,
|
||||
"Points": 39
|
||||
"CharacterFacialHairStyles": {
|
||||
"Geoset100": 3,
|
||||
"Geoset200": 5,
|
||||
"Geoset300": 4,
|
||||
"RaceID": 0,
|
||||
"SexID": 1,
|
||||
"Variation": 2
|
||||
},
|
||||
"AchievementCriteria": {
|
||||
"CreatureDisplayInfo": {
|
||||
"ExtraDisplayId": 3,
|
||||
"ID": 0,
|
||||
"AchievementID": 1,
|
||||
"Quantity": 4,
|
||||
"Description": 9
|
||||
},
|
||||
"AreaTable": {
|
||||
"ID": 0,
|
||||
"MapID": 1,
|
||||
"ParentAreaNum": 2,
|
||||
"ExploreFlag": 3
|
||||
"ModelID": 1,
|
||||
"Skin1": 6,
|
||||
"Skin2": 7,
|
||||
"Skin3": 8
|
||||
},
|
||||
"CreatureDisplayInfoExtra": {
|
||||
"ID": 0,
|
||||
"RaceID": 1,
|
||||
"SexID": 2,
|
||||
"SkinID": 3,
|
||||
"FaceID": 4,
|
||||
"HairStyleID": 5,
|
||||
"HairColorID": 6,
|
||||
"FacialHairID": 7,
|
||||
"BakeName": 20,
|
||||
"EquipDisplay0": 8,
|
||||
"EquipDisplay1": 9,
|
||||
"EquipDisplay10": 18,
|
||||
"EquipDisplay2": 10,
|
||||
"EquipDisplay3": 11,
|
||||
"EquipDisplay4": 12,
|
||||
|
|
@ -112,158 +68,80 @@
|
|||
"EquipDisplay7": 15,
|
||||
"EquipDisplay8": 16,
|
||||
"EquipDisplay9": 17,
|
||||
"EquipDisplay10": 18,
|
||||
"BakeName": 20
|
||||
},
|
||||
"CreatureDisplayInfo": {
|
||||
"FaceID": 4,
|
||||
"FacialHairID": 7,
|
||||
"HairColorID": 6,
|
||||
"HairStyleID": 5,
|
||||
"ID": 0,
|
||||
"ModelID": 1,
|
||||
"ExtraDisplayId": 3,
|
||||
"Skin1": 6,
|
||||
"Skin2": 7,
|
||||
"Skin3": 8
|
||||
},
|
||||
"TaxiNodes": {
|
||||
"ID": 0,
|
||||
"MapID": 1,
|
||||
"X": 2,
|
||||
"Y": 3,
|
||||
"Z": 4,
|
||||
"Name": 5,
|
||||
"MountDisplayIdAllianceFallback": 20,
|
||||
"MountDisplayIdHordeFallback": 21,
|
||||
"MountDisplayIdAlliance": 22,
|
||||
"MountDisplayIdHorde": 23
|
||||
},
|
||||
"TaxiPath": {
|
||||
"ID": 0,
|
||||
"FromNode": 1,
|
||||
"ToNode": 2,
|
||||
"Cost": 3
|
||||
},
|
||||
"TaxiPathNode": {
|
||||
"ID": 0,
|
||||
"PathID": 1,
|
||||
"NodeIndex": 2,
|
||||
"MapID": 3,
|
||||
"X": 4,
|
||||
"Y": 5,
|
||||
"Z": 6
|
||||
},
|
||||
"TalentTab": {
|
||||
"ID": 0,
|
||||
"Name": 1,
|
||||
"ClassMask": 20,
|
||||
"OrderIndex": 22,
|
||||
"BackgroundFile": 23
|
||||
},
|
||||
"Talent": {
|
||||
"ID": 0,
|
||||
"TabID": 1,
|
||||
"Row": 2,
|
||||
"Column": 3,
|
||||
"RankSpell0": 4,
|
||||
"PrereqTalent0": 9,
|
||||
"PrereqRank0": 12
|
||||
},
|
||||
"SkillLineAbility": {
|
||||
"SkillLineID": 1,
|
||||
"SpellID": 2
|
||||
},
|
||||
"SkillLine": {
|
||||
"ID": 0,
|
||||
"Category": 1,
|
||||
"Name": 3
|
||||
},
|
||||
"Map": {
|
||||
"ID": 0,
|
||||
"InternalName": 1
|
||||
"RaceID": 1,
|
||||
"SexID": 2,
|
||||
"SkinID": 3
|
||||
},
|
||||
"CreatureModelData": {
|
||||
"ID": 0,
|
||||
"ModelPath": 2
|
||||
},
|
||||
"CharHairGeosets": {
|
||||
"RaceID": 1,
|
||||
"SexID": 2,
|
||||
"Variation": 3,
|
||||
"GeosetID": 4
|
||||
},
|
||||
"CharacterFacialHairStyles": {
|
||||
"RaceID": 0,
|
||||
"SexID": 1,
|
||||
"Variation": 2,
|
||||
"Geoset100": 3,
|
||||
"Geoset300": 4,
|
||||
"Geoset200": 5
|
||||
},
|
||||
"GameObjectDisplayInfo": {
|
||||
"ID": 0,
|
||||
"ModelName": 1
|
||||
},
|
||||
"Emotes": {
|
||||
"ID": 0,
|
||||
"AnimID": 2
|
||||
"AnimID": 2,
|
||||
"ID": 0
|
||||
},
|
||||
"EmotesText": {
|
||||
"ID": 0,
|
||||
"Command": 1,
|
||||
"EmoteRef": 2,
|
||||
"OthersTargetTextID": 3,
|
||||
"SenderTargetTextID": 5,
|
||||
"ID": 0,
|
||||
"OthersNoTargetTextID": 7,
|
||||
"SenderNoTargetTextID": 9
|
||||
"OthersTargetTextID": 3,
|
||||
"SenderNoTargetTextID": 9,
|
||||
"SenderTargetTextID": 5
|
||||
},
|
||||
"EmotesTextData": {
|
||||
"ID": 0,
|
||||
"Text": 1
|
||||
},
|
||||
"Light": {
|
||||
"Faction": {
|
||||
"ID": 0,
|
||||
"MapID": 1,
|
||||
"X": 2,
|
||||
"Z": 3,
|
||||
"Y": 4,
|
||||
"InnerRadius": 5,
|
||||
"OuterRadius": 6,
|
||||
"LightParamsID": 7,
|
||||
"LightParamsIDRain": 8,
|
||||
"LightParamsIDUnderwater": 9
|
||||
"ReputationBase0": 10,
|
||||
"ReputationBase1": 11,
|
||||
"ReputationBase2": 12,
|
||||
"ReputationBase3": 13,
|
||||
"ReputationRaceMask0": 2,
|
||||
"ReputationRaceMask1": 3,
|
||||
"ReputationRaceMask2": 4,
|
||||
"ReputationRaceMask3": 5
|
||||
},
|
||||
"LightParams": {
|
||||
"LightParamsID": 0
|
||||
"FactionTemplate": {
|
||||
"Enemy0": 6,
|
||||
"Enemy1": 7,
|
||||
"Enemy2": 8,
|
||||
"Enemy3": 9,
|
||||
"EnemyGroup": 5,
|
||||
"Faction": 1,
|
||||
"FactionGroup": 3,
|
||||
"FriendGroup": 4,
|
||||
"ID": 0
|
||||
},
|
||||
"LightIntBand": {
|
||||
"BlockIndex": 1,
|
||||
"NumKeyframes": 2,
|
||||
"TimeKey0": 3,
|
||||
"Value0": 19
|
||||
},
|
||||
"LightFloatBand": {
|
||||
"BlockIndex": 1,
|
||||
"NumKeyframes": 2,
|
||||
"TimeKey0": 3,
|
||||
"Value0": 19
|
||||
},
|
||||
"WorldMapArea": {
|
||||
"GameObjectDisplayInfo": {
|
||||
"ID": 0,
|
||||
"MapID": 1,
|
||||
"AreaID": 2,
|
||||
"AreaName": 3,
|
||||
"LocLeft": 4,
|
||||
"LocRight": 5,
|
||||
"LocTop": 6,
|
||||
"LocBottom": 7,
|
||||
"DisplayMapID": 8,
|
||||
"ParentWorldMapID": 10
|
||||
"ModelName": 1
|
||||
},
|
||||
"SpellItemEnchantment": {
|
||||
"ItemDisplayInfo": {
|
||||
"GeosetGroup1": 7,
|
||||
"GeosetGroup3": 9,
|
||||
"ID": 0,
|
||||
"Name": 8
|
||||
"InventoryIcon": 5,
|
||||
"LeftModel": 1,
|
||||
"LeftModelTexture": 3,
|
||||
"TextureArmLower": 15,
|
||||
"TextureArmUpper": 14,
|
||||
"TextureFoot": 21,
|
||||
"TextureHand": 16,
|
||||
"TextureLegLower": 20,
|
||||
"TextureLegUpper": 19,
|
||||
"TextureTorsoLower": 18,
|
||||
"TextureTorsoUpper": 17
|
||||
},
|
||||
"ItemSet": {
|
||||
"ID": 0,
|
||||
"Name": 1,
|
||||
"Item0": 18,
|
||||
"Item1": 19,
|
||||
"Item2": 20,
|
||||
|
|
@ -274,6 +152,7 @@
|
|||
"Item7": 25,
|
||||
"Item8": 26,
|
||||
"Item9": 27,
|
||||
"Name": 1,
|
||||
"Spell0": 28,
|
||||
"Spell1": 29,
|
||||
"Spell2": 30,
|
||||
|
|
@ -299,21 +178,145 @@
|
|||
"ID": 0,
|
||||
"Name": 1
|
||||
},
|
||||
"SpellVisual": {
|
||||
"Light": {
|
||||
"ID": 0,
|
||||
"InnerRadius": 5,
|
||||
"LightParamsID": 7,
|
||||
"LightParamsIDRain": 8,
|
||||
"LightParamsIDUnderwater": 9,
|
||||
"MapID": 1,
|
||||
"OuterRadius": 6,
|
||||
"X": 2,
|
||||
"Y": 4,
|
||||
"Z": 3
|
||||
},
|
||||
"LightFloatBand": {
|
||||
"BlockIndex": 1,
|
||||
"NumKeyframes": 2,
|
||||
"TimeKey0": 3,
|
||||
"Value0": 19
|
||||
},
|
||||
"LightIntBand": {
|
||||
"BlockIndex": 1,
|
||||
"NumKeyframes": 2,
|
||||
"TimeKey0": 3,
|
||||
"Value0": 19
|
||||
},
|
||||
"LightParams": {
|
||||
"LightParamsID": 0
|
||||
},
|
||||
"Map": {
|
||||
"ID": 0,
|
||||
"InternalName": 1
|
||||
},
|
||||
"SkillLine": {
|
||||
"Category": 1,
|
||||
"ID": 0,
|
||||
"Name": 3
|
||||
},
|
||||
"SkillLineAbility": {
|
||||
"SkillLineID": 1,
|
||||
"SpellID": 2
|
||||
},
|
||||
"Spell": {
|
||||
"Attributes": 4,
|
||||
"AttributesEx": 5,
|
||||
"CastingTimeIndex": 47,
|
||||
"DispelType": 2,
|
||||
"EffectBasePoints0": 80,
|
||||
"EffectBasePoints1": 81,
|
||||
"EffectBasePoints2": 82,
|
||||
"ID": 0,
|
||||
"IconID": 133,
|
||||
"ManaCost": 39,
|
||||
"Name": 136,
|
||||
"PowerType": 14,
|
||||
"RangeIndex": 49,
|
||||
"Rank": 153,
|
||||
"SchoolMask": 225,
|
||||
"Tooltip": 139
|
||||
},
|
||||
"SpellIcon": {
|
||||
"ID": 0,
|
||||
"Path": 1
|
||||
},
|
||||
"SpellItemEnchantment": {
|
||||
"ID": 0,
|
||||
"Name": 8
|
||||
},
|
||||
"SpellRange": {
|
||||
"MaxRange": 4
|
||||
},
|
||||
"SpellVisual": {
|
||||
"CastKit": 2,
|
||||
"ID": 0,
|
||||
"ImpactKit": 3,
|
||||
"MissileModel": 8
|
||||
},
|
||||
"SpellVisualEffectName": {
|
||||
"FilePath": 2,
|
||||
"ID": 0
|
||||
},
|
||||
"SpellVisualKit": {
|
||||
"ID": 0,
|
||||
"BaseEffect": 5,
|
||||
"ID": 0,
|
||||
"SpecialEffect0": 11,
|
||||
"SpecialEffect1": 12,
|
||||
"SpecialEffect2": 13
|
||||
},
|
||||
"SpellVisualEffectName": {
|
||||
"Talent": {
|
||||
"Column": 3,
|
||||
"ID": 0,
|
||||
"FilePath": 2
|
||||
"PrereqRank0": 12,
|
||||
"PrereqTalent0": 9,
|
||||
"RankSpell0": 4,
|
||||
"Row": 2,
|
||||
"TabID": 1
|
||||
},
|
||||
"TalentTab": {
|
||||
"BackgroundFile": 23,
|
||||
"ClassMask": 20,
|
||||
"ID": 0,
|
||||
"Name": 1,
|
||||
"OrderIndex": 22
|
||||
},
|
||||
"TaxiNodes": {
|
||||
"ID": 0,
|
||||
"MapID": 1,
|
||||
"MountDisplayIdAlliance": 22,
|
||||
"MountDisplayIdAllianceFallback": 20,
|
||||
"MountDisplayIdHorde": 23,
|
||||
"MountDisplayIdHordeFallback": 21,
|
||||
"Name": 5,
|
||||
"X": 2,
|
||||
"Y": 3,
|
||||
"Z": 4
|
||||
},
|
||||
"TaxiPath": {
|
||||
"Cost": 3,
|
||||
"FromNode": 1,
|
||||
"ID": 0,
|
||||
"ToNode": 2
|
||||
},
|
||||
"TaxiPathNode": {
|
||||
"ID": 0,
|
||||
"MapID": 3,
|
||||
"NodeIndex": 2,
|
||||
"PathID": 1,
|
||||
"X": 4,
|
||||
"Y": 5,
|
||||
"Z": 6
|
||||
},
|
||||
"WorldMapArea": {
|
||||
"AreaID": 2,
|
||||
"AreaName": 3,
|
||||
"DisplayMapID": 8,
|
||||
"ID": 0,
|
||||
"LocBottom": 7,
|
||||
"LocLeft": 4,
|
||||
"LocRight": 5,
|
||||
"LocTop": 6,
|
||||
"MapID": 1,
|
||||
"ParentWorldMapID": 10
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2244,6 +2244,7 @@ public:
|
|||
const std::string& getSpellRank(uint32_t spellId) const;
|
||||
/// Returns the tooltip/description text from Spell.dbc (empty if unknown or has no text).
|
||||
const std::string& getSpellDescription(uint32_t spellId) const;
|
||||
const int32_t* getSpellEffectBasePoints(uint32_t spellId) const;
|
||||
std::string getEnchantName(uint32_t enchantId) const;
|
||||
const std::string& getSkillLineName(uint32_t spellId) const;
|
||||
/// Returns the DispelType for a spell (0=none,1=magic,2=curse,3=disease,4=poison,5+=other)
|
||||
|
|
@ -3322,7 +3323,11 @@ private:
|
|||
// Trainer
|
||||
bool trainerWindowOpen_ = false;
|
||||
TrainerListData currentTrainerList_;
|
||||
struct SpellNameEntry { std::string name; std::string rank; std::string description; uint32_t schoolMask = 0; uint8_t dispelType = 0; uint32_t attrEx = 0; };
|
||||
struct SpellNameEntry {
|
||||
std::string name; std::string rank; std::string description;
|
||||
uint32_t schoolMask = 0; uint8_t dispelType = 0; uint32_t attrEx = 0;
|
||||
int32_t effectBasePoints[3] = {0, 0, 0};
|
||||
};
|
||||
std::unordered_map<uint32_t, SpellNameEntry> spellNameCache_;
|
||||
bool spellNameCacheLoaded_ = false;
|
||||
|
||||
|
|
|
|||
|
|
@ -1627,19 +1627,34 @@ static int lua_GetSpellBookItemName(lua_State* L) {
|
|||
|
||||
// GetSpellDescription(spellId) → description string
|
||||
// Clean spell description template variables for display
|
||||
static std::string cleanSpellDescription(const std::string& raw) {
|
||||
static std::string cleanSpellDescription(const std::string& raw, const int32_t effectBase[3] = nullptr) {
|
||||
if (raw.empty() || raw.find('$') == std::string::npos) return raw;
|
||||
std::string result;
|
||||
result.reserve(raw.size());
|
||||
for (size_t i = 0; i < raw.size(); ++i) {
|
||||
if (raw[i] == '$' && i + 1 < raw.size()) {
|
||||
char next = raw[i + 1];
|
||||
if (next == 's' || next == 'S' || next == 'o' || next == 'O' ||
|
||||
if (next == 's' || next == 'S') {
|
||||
// $s1, $s2, $s3 — substitute with effect base points + 1
|
||||
i += 1; // skip 's'
|
||||
int idx = 0;
|
||||
if (i + 1 < raw.size() && raw[i + 1] >= '1' && raw[i + 1] <= '3') {
|
||||
idx = raw[i + 1] - '1';
|
||||
++i;
|
||||
}
|
||||
if (effectBase && effectBase[idx] != 0) {
|
||||
int32_t val = std::abs(effectBase[idx]) + 1;
|
||||
result += std::to_string(val);
|
||||
} else {
|
||||
result += 'X';
|
||||
}
|
||||
while (i + 1 < raw.size() && raw[i + 1] >= '0' && raw[i + 1] <= '9') ++i;
|
||||
} else if (next == 'o' || next == 'O' ||
|
||||
next == 'e' || next == 'E' || next == 't' || next == 'T' ||
|
||||
next == 'h' || next == 'H' || next == 'u' || next == 'U') {
|
||||
// $s1, $o1, $e1 etc. — skip the variable, insert "X"
|
||||
// Other variables — insert "X" placeholder
|
||||
result += 'X';
|
||||
i += 1; // skip letter
|
||||
i += 1;
|
||||
while (i + 1 < raw.size() && raw[i + 1] >= '0' && raw[i + 1] <= '9') ++i;
|
||||
} else if (next == 'd' || next == 'D') {
|
||||
// $d = duration — replace with "X sec"
|
||||
|
|
@ -1682,7 +1697,8 @@ static int lua_GetSpellDescription(lua_State* L) {
|
|||
if (!gh) { lua_pushstring(L, ""); return 1; }
|
||||
uint32_t spellId = static_cast<uint32_t>(luaL_checknumber(L, 1));
|
||||
const std::string& desc = gh->getSpellDescription(spellId);
|
||||
std::string cleaned = cleanSpellDescription(desc);
|
||||
const int32_t* ebp = gh->getSpellEffectBasePoints(spellId);
|
||||
std::string cleaned = cleanSpellDescription(desc, ebp);
|
||||
lua_pushstring(L, cleaned.c_str());
|
||||
return 1;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23191,6 +23191,15 @@ void GameHandler::loadSpellNameCache() {
|
|||
if (hasAttrExField) {
|
||||
entry.attrEx = dbc->getUInt32(i, attrExField);
|
||||
}
|
||||
// Load effect base points for $s1/$s2/$s3 tooltip substitution
|
||||
if (spellL) {
|
||||
uint32_t f0 = spellL->field("EffectBasePoints0");
|
||||
uint32_t f1 = spellL->field("EffectBasePoints1");
|
||||
uint32_t f2 = spellL->field("EffectBasePoints2");
|
||||
if (f0 != 0xFFFFFFFF) entry.effectBasePoints[0] = static_cast<int32_t>(dbc->getUInt32(i, f0));
|
||||
if (f1 != 0xFFFFFFFF) entry.effectBasePoints[1] = static_cast<int32_t>(dbc->getUInt32(i, f1));
|
||||
if (f2 != 0xFFFFFFFF) entry.effectBasePoints[2] = static_cast<int32_t>(dbc->getUInt32(i, f2));
|
||||
}
|
||||
spellNameCache_[id] = std::move(entry);
|
||||
}
|
||||
}
|
||||
|
|
@ -23430,6 +23439,12 @@ void GameHandler::loadTalentDbc() {
|
|||
|
||||
static const std::string EMPTY_STRING;
|
||||
|
||||
const int32_t* GameHandler::getSpellEffectBasePoints(uint32_t spellId) const {
|
||||
const_cast<GameHandler*>(this)->loadSpellNameCache();
|
||||
auto it = spellNameCache_.find(spellId);
|
||||
return (it != spellNameCache_.end()) ? it->second.effectBasePoints : nullptr;
|
||||
}
|
||||
|
||||
const std::string& GameHandler::getSpellName(uint32_t spellId) const {
|
||||
auto it = spellNameCache_.find(spellId);
|
||||
return (it != spellNameCache_.end()) ? it->second.name : EMPTY_STRING;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue