Core/DataStores: Updated to 11.0.0
Port From (https://github.com/TrinityCore/TrinityCore/commit/df511503815b7798c83acbffbb1ce5208f189ce7)
This commit is contained in:
@@ -450,8 +450,21 @@ namespace Framework.Constants
|
|||||||
PlayerWeaponHighWatermarkAboveOrEqual = 375, /*NYI*/
|
PlayerWeaponHighWatermarkAboveOrEqual = 375, /*NYI*/
|
||||||
PlayerHeadHighWatermarkAboveOrEqual = 376, /*NYI*/
|
PlayerHeadHighWatermarkAboveOrEqual = 376, /*NYI*/
|
||||||
PlayerHasDisplayedCurrencyLessThan = 377, /*NYI*/ // Player has {CurrencyTypes} less than {#Amount} (value visible in ui is taken into account, not raw value)
|
PlayerHasDisplayedCurrencyLessThan = 377, /*NYI*/ // Player has {CurrencyTypes} less than {#Amount} (value visible in ui is taken into account, not raw value)
|
||||||
|
PlayerDataFlagAccountIsSet = 387, /*NYI*/ // Player {PlayerDataFlagAccount} is set
|
||||||
|
PlayerDataFlagCharacterIsSet = 389, /*NYI*/ // Player {PlayerDataFlagCharacter} is set
|
||||||
PlayerIsOnMapWithExpansion = 380, // Player is on map that has {ExpansionID}
|
PlayerIsOnMapWithExpansion = 380, // Player is on map that has {ExpansionID}
|
||||||
|
|
||||||
|
PlayerHasCompletedQuestOnAccount = 382, /*NYI*/ // Player has previously completed quest "{QuestV2}" on account
|
||||||
|
PlayerHasCompletedQuestlineOnAccount = 383, /*NYI*/ // Player has completed questline "{Questline}" on account
|
||||||
|
PlayerHasCompletedQuestlineQuestCountOnAccount = 384, /*NYI*/ // Player has completed "{#Quests}" quests in questline "{Questline}" on account
|
||||||
|
PlayerHasActiveTraitSubTree = 385, // Player has active trait config with {TraitSubTree}
|
||||||
|
|
||||||
|
PlayerIsInSoloRBG = 387, /*NYI*/ // Player is in solo RBG (BG Blitz)
|
||||||
|
PlayerHasCompletedCampaign = 388, /*NYI*/ // Player has completed campaign "{Campaign}"
|
||||||
|
TargetCreatureClassificationEqual = 389, // Creature classification is {CreatureClassification}
|
||||||
|
PlayerDataElementCharacterEqual = 390, /*NYI*/ // Player {PlayerDataElementCharacter} is greater than {#Amount}
|
||||||
|
PlayerDataElementAccountEqual = 391, /*NYI*/ // Player {PlayerDataElementAccount} is greater than {#Amount}
|
||||||
|
PlayerHasCompletedQuestOrIsReadyToTurnIn = 392, // Player has previously completed quest "{QuestV2}" or is ready to turn it in
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum CriteriaFailEvent : byte
|
public enum CriteriaFailEvent : byte
|
||||||
@@ -755,9 +768,9 @@ namespace Framework.Constants
|
|||||||
CompleteQuestsCountOnAccount = 257, /*NYI*/
|
CompleteQuestsCountOnAccount = 257, /*NYI*/
|
||||||
|
|
||||||
WarbandBankTabPurchased = 260, /*NYI*/
|
WarbandBankTabPurchased = 260, /*NYI*/
|
||||||
|
ReachRenownLevel = 261,
|
||||||
LearnTaxiNode = 262,
|
LearnTaxiNode = 262,
|
||||||
Count = 263
|
Count = 264
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum CriteriaDataType
|
public enum CriteriaDataType
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ namespace Framework.Constants
|
|||||||
RacialForThePurposeOfTemporaryRaceChange = 0x8000,
|
RacialForThePurposeOfTemporaryRaceChange = 0x8000,
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum AbilityLearnType : byte
|
public enum AbilityLearnType : int
|
||||||
{
|
{
|
||||||
OnSkillValue = 1, // Spell state will update depending on skill value
|
OnSkillValue = 1, // Spell state will update depending on skill value
|
||||||
OnSkillLearn = 2, // Spell will be learned/removed together with entire skill
|
OnSkillLearn = 2, // Spell will be learned/removed together with entire skill
|
||||||
@@ -1096,7 +1096,11 @@ namespace Framework.Constants
|
|||||||
UseTotalEarnedForEarned = 0x01,
|
UseTotalEarnedForEarned = 0x01,
|
||||||
ShowQuestXPGainInTooltip = 0x02, // NYI
|
ShowQuestXPGainInTooltip = 0x02, // NYI
|
||||||
NoNotificationMailOnOfflineProgress = 0x04, // NYI
|
NoNotificationMailOnOfflineProgress = 0x04, // NYI
|
||||||
BattlenetVirtualCurrency = 0x08 // NYI
|
BattlenetVirtualCurrency = 0x08, // NYI
|
||||||
|
FutureCurrencyFlag = 0x10, // NYI
|
||||||
|
DontDisplayIfZero = 0x20, // NYI
|
||||||
|
ScaleMaxQuantityBySeasonWeeks = 0x40, // NYI
|
||||||
|
ScaleMaxQuantityByWeeksSinceStart = 0x80, // NYI
|
||||||
}
|
}
|
||||||
|
|
||||||
[Flags]
|
[Flags]
|
||||||
@@ -2498,7 +2502,8 @@ namespace Framework.Constants
|
|||||||
Available = 0,
|
Available = 0,
|
||||||
Visible = 1,
|
Visible = 1,
|
||||||
Granted = 2,
|
Granted = 2,
|
||||||
Increased = 3
|
Increased = 3,
|
||||||
|
DisplayError = 4
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum TraitConfigType
|
public enum TraitConfigType
|
||||||
@@ -2551,7 +2556,8 @@ namespace Framework.Constants
|
|||||||
{
|
{
|
||||||
Single = 0,
|
Single = 0,
|
||||||
Tiered = 1,
|
Tiered = 1,
|
||||||
Selection = 2
|
Selection = 2,
|
||||||
|
SubTreeSelection = 3
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum TraitPointsOperationType
|
public enum TraitPointsOperationType
|
||||||
|
|||||||
@@ -329,6 +329,9 @@ namespace Framework.Constants
|
|||||||
OnPickup = 5,
|
OnPickup = 5,
|
||||||
OnLearn = 6, // used in itemtemplate.spell2 with spellid with SPELLGENERICLEARN in spell1
|
OnLearn = 6, // used in itemtemplate.spell2 with spellid with SPELLGENERICLEARN in spell1
|
||||||
OnLooted = 7,
|
OnLooted = 7,
|
||||||
|
TeachMount = 8,
|
||||||
|
OnPickupForced = 9,
|
||||||
|
OnLootedForced = 10,
|
||||||
Max
|
Max
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -561,8 +564,11 @@ namespace Framework.Constants
|
|||||||
DungeonNormalJackpot = 101,
|
DungeonNormalJackpot = 101,
|
||||||
DungeonHeroicJackpot = 102,
|
DungeonHeroicJackpot = 102,
|
||||||
DungeonMythicJackpot = 103,
|
DungeonMythicJackpot = 103,
|
||||||
Delves = 104,
|
Delves1 = 104,
|
||||||
Timerunning = 105,
|
Timerunning = 105,
|
||||||
|
Delves2 = 106,
|
||||||
|
Delves3 = 107,
|
||||||
|
DelvesJackpot = 108,
|
||||||
|
|
||||||
Max
|
Max
|
||||||
}
|
}
|
||||||
@@ -669,6 +675,11 @@ namespace Framework.Constants
|
|||||||
OnEquip = 2,
|
OnEquip = 2,
|
||||||
OnUse = 3,
|
OnUse = 3,
|
||||||
Quest = 4,
|
Quest = 4,
|
||||||
|
Unused1 = 5,
|
||||||
|
Unused2 = 6,
|
||||||
|
WowAccount = 7,
|
||||||
|
BnetAccount = 8,
|
||||||
|
BnetAccountUntilEquipped = 9,
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum ItemClass : sbyte
|
public enum ItemClass : sbyte
|
||||||
|
|||||||
@@ -514,7 +514,7 @@ namespace Framework.Constants
|
|||||||
ModHealingTakenFromCaster = 504,
|
ModHealingTakenFromCaster = 504,
|
||||||
ModPlayerChoiceRerolls = 505, // NYI
|
ModPlayerChoiceRerolls = 505, // NYI
|
||||||
DisableInertia = 506, // NYI
|
DisableInertia = 506, // NYI
|
||||||
ModDamageTakenFromCasterByLabel = 507,
|
ModDamageTakenByLabel = 507,
|
||||||
Unk508 = 508,
|
Unk508 = 508,
|
||||||
Unk509 = 509,
|
Unk509 = 509,
|
||||||
ModifiedRaidInstance = 510, // NYI; Related to "Fated" raid affixes
|
ModifiedRaidInstance = 510, // NYI; Related to "Fated" raid affixes
|
||||||
@@ -544,14 +544,109 @@ namespace Framework.Constants
|
|||||||
Unk534 = 534,
|
Unk534 = 534,
|
||||||
Unk535 = 535,
|
Unk535 = 535,
|
||||||
IgnoreSpellCreatureTypeRequirements = 536,
|
IgnoreSpellCreatureTypeRequirements = 536,
|
||||||
Unk537 = 537,
|
ModSpellDamageFromCasterByLabel = 537,
|
||||||
ModFakeInebriationMovementOnly = 538,
|
ModFakeInebriationMovementOnly = 538,
|
||||||
AllowMountInCombat = 539,
|
AllowMountInCombat = 539,
|
||||||
ModSupportStat = 540, // NYI
|
ModSupportStat = 540, // NYI
|
||||||
ModRequiredMountCapabilityFlags = 541,
|
ModRequiredMountCapabilityFlags = 541,
|
||||||
Unk542 = 542,
|
TriggerSpellOnStackAmount = 542, // NYI
|
||||||
Unk543 = 543,
|
Unk543 = 543,
|
||||||
Unk544 = 544,
|
Unk544 = 544,
|
||||||
|
Unk545 = 545, // prevent swim
|
||||||
|
Unk546 = 546,
|
||||||
|
Unk547 = 547,
|
||||||
|
Unk548 = 548,
|
||||||
|
Unk549 = 549,
|
||||||
|
Unk550 = 550,
|
||||||
|
Unk551 = 551,
|
||||||
|
Unk552 = 552,
|
||||||
|
Unk553 = 553,
|
||||||
|
Unk554 = 554,
|
||||||
|
Unk555 = 555,
|
||||||
|
Unk556 = 556,
|
||||||
|
Unk557 = 557,
|
||||||
|
Unk558 = 558,
|
||||||
|
Unk559 = 559,
|
||||||
|
Unk560 = 560,
|
||||||
|
Unk561 = 561,
|
||||||
|
Unk562 = 562,
|
||||||
|
Unk563 = 563,
|
||||||
|
Unk564 = 564,
|
||||||
|
Unk565 = 565,
|
||||||
|
Unk566 = 566,
|
||||||
|
Unk567 = 567,
|
||||||
|
Unk568 = 568,
|
||||||
|
Unk569 = 569,
|
||||||
|
Unk570 = 570,
|
||||||
|
Unk571 = 571,
|
||||||
|
Unk572 = 572,
|
||||||
|
Unk573 = 573,
|
||||||
|
Unk574 = 574,
|
||||||
|
Unk575 = 575,
|
||||||
|
Unk576 = 576,
|
||||||
|
Unk577 = 577,
|
||||||
|
Unk578 = 578,
|
||||||
|
Unk579 = 579,
|
||||||
|
Unk580 = 580,
|
||||||
|
Unk581 = 581,
|
||||||
|
Unk582 = 582,
|
||||||
|
Unk583 = 583,
|
||||||
|
Unk584 = 584,
|
||||||
|
Unk585 = 585,
|
||||||
|
Unk586 = 586,
|
||||||
|
Unk587 = 587,
|
||||||
|
Unk588 = 588,
|
||||||
|
Unk589 = 589,
|
||||||
|
Unk590 = 590,
|
||||||
|
Unk591 = 591,
|
||||||
|
Unk592 = 592,
|
||||||
|
Unk593 = 593,
|
||||||
|
Unk594 = 594,
|
||||||
|
Unk595 = 595,
|
||||||
|
Unk596 = 596,
|
||||||
|
Unk597 = 597,
|
||||||
|
Unk598 = 598,
|
||||||
|
Unk599 = 599,
|
||||||
|
Unk600 = 600,
|
||||||
|
Unk601 = 601,
|
||||||
|
Unk602 = 602,
|
||||||
|
Unk603 = 603,
|
||||||
|
Unk604 = 604,
|
||||||
|
Unk605 = 605,
|
||||||
|
Unk606 = 606,
|
||||||
|
Unk607 = 607,
|
||||||
|
Unk608 = 608,
|
||||||
|
Unk609 = 609,
|
||||||
|
Unk610 = 610,
|
||||||
|
Unk611 = 611,
|
||||||
|
Unk612 = 612,
|
||||||
|
Unk613 = 613,
|
||||||
|
Unk614 = 614,
|
||||||
|
Unk615 = 615,
|
||||||
|
Unk616 = 616,
|
||||||
|
Unk617 = 617,
|
||||||
|
Unk618 = 618,
|
||||||
|
Unk619 = 619,
|
||||||
|
Unk620 = 620,
|
||||||
|
Unk621 = 621,
|
||||||
|
Unk622 = 622,
|
||||||
|
Unk623 = 623,
|
||||||
|
Unk624 = 624,
|
||||||
|
Unk625 = 625,
|
||||||
|
Unk626 = 626,
|
||||||
|
Unk627 = 627,
|
||||||
|
Unk628 = 628,
|
||||||
|
Unk629 = 629,
|
||||||
|
Unk630 = 630,
|
||||||
|
Unk631 = 631,
|
||||||
|
Unk632 = 632,
|
||||||
|
Unk633 = 633,
|
||||||
|
Unk634 = 634,
|
||||||
|
Unk635 = 635,
|
||||||
|
Unk636 = 636,
|
||||||
|
ModExplorationExperience = 637,
|
||||||
|
ModCriticalBlockAmount = 638,
|
||||||
|
Unk639 = 639,
|
||||||
Total
|
Total
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2565,6 +2565,24 @@ namespace Framework.Constants
|
|||||||
ChangeItemBonuses2 = 313, // MiscValue[0] = ItemBonusTreeID to preserve
|
ChangeItemBonuses2 = 313, // MiscValue[0] = ItemBonusTreeID to preserve
|
||||||
AddSocketBonus = 314, // MiscValue[0] = required ItemBonusTreeID
|
AddSocketBonus = 314, // MiscValue[0] = required ItemBonusTreeID
|
||||||
LearnTransmogAppearanceFromItemModAppearanceGroup = 315, // MiscValue[0] = ItemModAppearanceGroupID (not in db2)
|
LearnTransmogAppearanceFromItemModAppearanceGroup = 315, // MiscValue[0] = ItemModAppearanceGroupID (not in db2)
|
||||||
|
KillCreditLbael1 = 316,
|
||||||
|
KillCreditLabel2 = 317,
|
||||||
|
Unk318 = 318,
|
||||||
|
Unk319 = 319,
|
||||||
|
Unk320 = 320,
|
||||||
|
Unk321 = 321,
|
||||||
|
Unk322 = 322,
|
||||||
|
Unk323 = 323,
|
||||||
|
Unk324 = 324,
|
||||||
|
Unk325 = 325,
|
||||||
|
Unk326 = 326,
|
||||||
|
Unk327 = 327,
|
||||||
|
Unk328 = 328,
|
||||||
|
Unk329 = 329,
|
||||||
|
Unk330 = 330,
|
||||||
|
Unk331 = 331,
|
||||||
|
Unk332 = 332,
|
||||||
|
Unk333 = 333,
|
||||||
|
|
||||||
TotalSpellEffects
|
TotalSpellEffects
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -195,12 +195,15 @@ namespace Framework.Database
|
|||||||
|
|
||||||
// BattlemasterList.db2
|
// BattlemasterList.db2
|
||||||
PrepareStatement(HotfixStatements.SEL_BATTLEMASTER_LIST, "SELECT ID, Name, GameType, ShortDescription, LongDescription, InstanceType, MinLevel, MaxLevel, " +
|
PrepareStatement(HotfixStatements.SEL_BATTLEMASTER_LIST, "SELECT ID, Name, GameType, ShortDescription, LongDescription, InstanceType, MinLevel, MaxLevel, " +
|
||||||
"RatedPlayers, MinPlayers, MaxPlayers, GroupsAllowed, MaxGroupSize, HolidayWorldState, Flags, IconFileDataID, RequiredPlayerConditionID, " +
|
"RatedPlayers, MinPlayers, MaxPlayers, GroupsAllowed, MaxGroupSize, HolidayWorldState, Flags, IconFileDataID, RequiredPlayerConditionID" +
|
||||||
"MapID1, MapID2, MapID3, MapID4, MapID5, MapID6, MapID7, MapID8, MapID9, MapID10, MapID11, MapID12, MapID13, MapID14, MapID15, MapID16" +
|
|
||||||
" FROM battlemaster_list WHERE (`VerifiedBuild` > 0) = ?");
|
" FROM battlemaster_list WHERE (`VerifiedBuild` > 0) = ?");
|
||||||
PrepareStatement(HotfixStatements.SEL_BATTLEMASTER_LIST_LOCALE, "SELECT ID, Name_lang, GameType_lang, ShortDescription_lang, LongDescription_lang" +
|
PrepareStatement(HotfixStatements.SEL_BATTLEMASTER_LIST_LOCALE, "SELECT ID, Name_lang, GameType_lang, ShortDescription_lang, LongDescription_lang" +
|
||||||
" FROM battlemaster_list_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?");
|
" FROM battlemaster_list_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?");
|
||||||
|
|
||||||
|
// BattlemasterListXMap.db2
|
||||||
|
PrepareStatement(HotfixStatements.SEL_BATTLEMASTER_LIST_X_MAP, "SELECT ID, MapID, BattlemasterListID FROM battlemaster_list_x_map" +
|
||||||
|
" WHERE (`VerifiedBuild` > 0) = ?");
|
||||||
|
|
||||||
// BroadcastText.db2
|
// BroadcastText.db2
|
||||||
PrepareStatement(HotfixStatements.SEL_BROADCAST_TEXT, "SELECT `Text`, Text1, ID, LanguageID, ConditionID, EmotesID, Flags, ChatBubbleDurationMs, " +
|
PrepareStatement(HotfixStatements.SEL_BROADCAST_TEXT, "SELECT `Text`, Text1, ID, LanguageID, ConditionID, EmotesID, Flags, ChatBubbleDurationMs, " +
|
||||||
"VoiceOverPriorityID, SoundKitID1, SoundKitID2, EmoteID1, EmoteID2, EmoteID3, EmoteDelay1, EmoteDelay2, EmoteDelay3 FROM broadcast_text" +
|
"VoiceOverPriorityID, SoundKitID1, SoundKitID2, EmoteID1, EmoteID2, EmoteID3, EmoteDelay1, EmoteDelay2, EmoteDelay3 FROM broadcast_text" +
|
||||||
@@ -222,8 +225,8 @@ namespace Framework.Database
|
|||||||
" WHERE (`VerifiedBuild` > 0) = ?");
|
" WHERE (`VerifiedBuild` > 0) = ?");
|
||||||
|
|
||||||
// ChallengeModeItemBonusOverride.db2
|
// ChallengeModeItemBonusOverride.db2
|
||||||
PrepareStatement(HotfixStatements.SEL_CHALLENGE_MODE_ITEM_BONUS_OVERRIDE, "SELECT ID, ItemBonusTreeGroupID, DstItemBonusTreeID, Type, Value, " +
|
PrepareStatement(HotfixStatements.SEL_CHALLENGE_MODE_ITEM_BONUS_OVERRIDE, "SELECT ID, ItemBonusTreeGroupID, DstItemBonusTreeID, Value, " +
|
||||||
"MythicPlusSeasonID, PvPSeasonID, SrcItemBonusTreeID FROM challenge_mode_item_bonus_override WHERE (`VerifiedBuild` > 0) = ?");
|
"RequiredTimeEventPassed, SrcItemBonusTreeID FROM challenge_mode_item_bonus_override WHERE (`VerifiedBuild` > 0) = ?");
|
||||||
|
|
||||||
// CharBaseInfo.db2
|
// CharBaseInfo.db2
|
||||||
PrepareStatement(HotfixStatements.SEL_CHAR_BASE_INFO, "SELECT ID, RaceID, ClassID, OtherFactionRaceID FROM char_base_info WHERE (`VerifiedBuild` > 0) = ?");
|
PrepareStatement(HotfixStatements.SEL_CHAR_BASE_INFO, "SELECT ID, RaceID, ClassID, OtherFactionRaceID FROM char_base_info WHERE (`VerifiedBuild` > 0) = ?");
|
||||||
@@ -286,9 +289,9 @@ namespace Framework.Database
|
|||||||
"ChrCustGeoComponentLinkID FROM chr_customization_element WHERE (`VerifiedBuild` > 0) = ?");
|
"ChrCustGeoComponentLinkID FROM chr_customization_element WHERE (`VerifiedBuild` > 0) = ?");
|
||||||
|
|
||||||
// ChrCustomizationOption.db2
|
// ChrCustomizationOption.db2
|
||||||
PrepareStatement(HotfixStatements.SEL_CHR_CUSTOMIZATION_OPTION, "SELECT Name, ID, SecondaryID, Flags, ChrModelID, SortIndex, ChrCustomizationCategoryID, " +
|
PrepareStatement(HotfixStatements.SEL_CHR_CUSTOMIZATION_OPTION, "SELECT Name, ID, SecondaryID, Flags, ChrRacesID, Sex, ChrModelID, SortIndex, " +
|
||||||
"OptionType, BarberShopCostModifier, ChrCustomizationID, ChrCustomizationReqID, UiOrderIndex, AddedInPatch FROM chr_customization_option" +
|
"ChrCustomizationCategoryID, OptionType, BarberShopCostModifier, ChrCustomizationID, ChrCustomizationReqID, UiOrderIndex, AddedInPatch" +
|
||||||
" WHERE (`VerifiedBuild` > 0) = ?");
|
" FROM chr_customization_option WHERE (`VerifiedBuild` > 0) = ?");
|
||||||
PrepareStatement(HotfixStatements.SEL_CHR_CUSTOMIZATION_OPTION_LOCALE, "SELECT ID, Name_lang FROM chr_customization_option_locale" +
|
PrepareStatement(HotfixStatements.SEL_CHR_CUSTOMIZATION_OPTION_LOCALE, "SELECT ID, Name_lang FROM chr_customization_option_locale" +
|
||||||
" WHERE (`VerifiedBuild` > 0) = ? AND locale = ?");
|
" WHERE (`VerifiedBuild` > 0) = ? AND locale = ?");
|
||||||
|
|
||||||
@@ -376,8 +379,9 @@ namespace Framework.Database
|
|||||||
PrepareStatement(HotfixStatements.SEL_CREATURE_DISPLAY_INFO, "SELECT ID, ModelID, SoundID, SizeClass, CreatureModelScale, CreatureModelAlpha, BloodID, " +
|
PrepareStatement(HotfixStatements.SEL_CREATURE_DISPLAY_INFO, "SELECT ID, ModelID, SoundID, SizeClass, CreatureModelScale, CreatureModelAlpha, BloodID, " +
|
||||||
"ExtendedDisplayInfoID, NPCSoundID, ParticleColorID, PortraitCreatureDisplayInfoID, PortraitTextureFileDataID, ObjectEffectPackageID, " +
|
"ExtendedDisplayInfoID, NPCSoundID, ParticleColorID, PortraitCreatureDisplayInfoID, PortraitTextureFileDataID, ObjectEffectPackageID, " +
|
||||||
"AnimReplacementSetID, Flags, StateSpellVisualKitID, PlayerOverrideScale, PetInstanceScale, UnarmedWeaponType, MountPoofSpellVisualKitID, " +
|
"AnimReplacementSetID, Flags, StateSpellVisualKitID, PlayerOverrideScale, PetInstanceScale, UnarmedWeaponType, MountPoofSpellVisualKitID, " +
|
||||||
"DissolveEffectID, Gender, DissolveOutEffectID, CreatureModelMinLod, TextureVariationFileDataID1, TextureVariationFileDataID2, " +
|
"DissolveEffectID, Gender, DissolveOutEffectID, CreatureModelMinLod, ConditionalCreatureModelID, Unknown_1100_1, Unknown_1100_2, " +
|
||||||
"TextureVariationFileDataID3, TextureVariationFileDataID4 FROM creature_display_info WHERE (`VerifiedBuild` > 0) = ?");
|
"TextureVariationFileDataID1, TextureVariationFileDataID2, TextureVariationFileDataID3, TextureVariationFileDataID4 FROM creature_display_info" +
|
||||||
|
" WHERE (`VerifiedBuild` > 0) = ?");
|
||||||
|
|
||||||
// CreatureDisplayInfoExtra.db2
|
// CreatureDisplayInfoExtra.db2
|
||||||
PrepareStatement(HotfixStatements.SEL_CREATURE_DISPLAY_INFO_EXTRA, "SELECT ID, DisplayRaceID, DisplaySexID, DisplayClassID, Flags, BakeMaterialResourcesID, " +
|
PrepareStatement(HotfixStatements.SEL_CREATURE_DISPLAY_INFO_EXTRA, "SELECT ID, DisplayRaceID, DisplaySexID, DisplayClassID, Flags, BakeMaterialResourcesID, " +
|
||||||
@@ -393,8 +397,8 @@ namespace Framework.Database
|
|||||||
"RunSpeed, BloodID, FootprintTextureID, FootprintTextureLength, FootprintTextureWidth, FootprintParticleScale, FoleyMaterialID, " +
|
"RunSpeed, BloodID, FootprintTextureID, FootprintTextureLength, FootprintTextureWidth, FootprintParticleScale, FoleyMaterialID, " +
|
||||||
"FootstepCameraEffectID, DeathThudCameraEffectID, SoundID, SizeClass, CollisionWidth, CollisionHeight, WorldEffectScale, " +
|
"FootstepCameraEffectID, DeathThudCameraEffectID, SoundID, SizeClass, CollisionWidth, CollisionHeight, WorldEffectScale, " +
|
||||||
"CreatureGeosetDataID, HoverHeight, AttachedEffectScale, ModelScale, MissileCollisionRadius, MissileCollisionPush, MissileCollisionRaise, " +
|
"CreatureGeosetDataID, HoverHeight, AttachedEffectScale, ModelScale, MissileCollisionRadius, MissileCollisionPush, MissileCollisionRaise, " +
|
||||||
"MountHeight, OverrideLootEffectScale, OverrideNameScale, OverrideSelectionRadius, TamedPetBaseScale, Unknown820_1, Unknown820_2, " +
|
"MountHeight, OverrideLootEffectScale, OverrideNameScale, OverrideSelectionRadius, TamedPetBaseScale, MountScaleOtherIndex, MountScaleSelf, " +
|
||||||
"Unknown820_31, Unknown820_32 FROM creature_model_data WHERE (`VerifiedBuild` > 0) = ?");
|
"Unknown1100, MountScaleOther1, MountScaleOther2 FROM creature_model_data WHERE (`VerifiedBuild` > 0) = ?");
|
||||||
|
|
||||||
// CreatureType.db2
|
// CreatureType.db2
|
||||||
PrepareStatement(HotfixStatements.SEL_CREATURE_TYPE, "SELECT ID, Name, Flags FROM creature_type WHERE (`VerifiedBuild` > 0) = ?");
|
PrepareStatement(HotfixStatements.SEL_CREATURE_TYPE, "SELECT ID, Name, Flags FROM creature_type WHERE (`VerifiedBuild` > 0) = ?");
|
||||||
@@ -419,7 +423,7 @@ namespace Framework.Database
|
|||||||
// CurrencyTypes.db2
|
// CurrencyTypes.db2
|
||||||
PrepareStatement(HotfixStatements.SEL_CURRENCY_TYPES, "SELECT ID, Name, Description, CategoryID, InventoryIconFileID, SpellWeight, SpellCategory, MaxQty, " +
|
PrepareStatement(HotfixStatements.SEL_CURRENCY_TYPES, "SELECT ID, Name, Description, CategoryID, InventoryIconFileID, SpellWeight, SpellCategory, MaxQty, " +
|
||||||
"MaxEarnablePerWeek, Quality, FactionID, ItemGroupSoundsID, XpQuestDifficulty, AwardConditionID, MaxQtyWorldStateID, " +
|
"MaxEarnablePerWeek, Quality, FactionID, ItemGroupSoundsID, XpQuestDifficulty, AwardConditionID, MaxQtyWorldStateID, " +
|
||||||
"RechargingAmountPerCycle, RechargingCycleDurationMS, Flags1, Flags2 FROM currency_types WHERE (`VerifiedBuild` > 0) = ?");
|
"RechargingAmountPerCycle, RechargingCycleDurationMS, AccountTransferPercentage, Flags1, Flags2 FROM currency_types WHERE (`VerifiedBuild` > 0) = ?");
|
||||||
PrepareStatement(HotfixStatements.SEL_CURRENCY_TYPES_LOCALE, "SELECT ID, Name_lang, Description_lang FROM currency_types_locale WHERE (`VerifiedBuild` > 0) = ?" +
|
PrepareStatement(HotfixStatements.SEL_CURRENCY_TYPES_LOCALE, "SELECT ID, Name_lang, Description_lang FROM currency_types_locale WHERE (`VerifiedBuild` > 0) = ?" +
|
||||||
" AND locale = ?");
|
" AND locale = ?");
|
||||||
|
|
||||||
@@ -514,12 +518,12 @@ namespace Framework.Database
|
|||||||
// GameobjectDisplayInfo.db2
|
// GameobjectDisplayInfo.db2
|
||||||
PrepareStatement(HotfixStatements.SEL_GAMEOBJECT_DISPLAY_INFO, "SELECT ID, GeoBoxMinX, GeoBoxMinY, GeoBoxMinZ, GeoBoxMaxX, GeoBoxMaxY, GeoBoxMaxZ, " +
|
PrepareStatement(HotfixStatements.SEL_GAMEOBJECT_DISPLAY_INFO, "SELECT ID, GeoBoxMinX, GeoBoxMinY, GeoBoxMinZ, GeoBoxMaxX, GeoBoxMaxY, GeoBoxMaxZ, " +
|
||||||
"FileDataID, ObjectEffectPackageID, OverrideLootEffectScale, OverrideNameScale, AlternateDisplayType, ClientCreatureDisplayInfoID, " +
|
"FileDataID, ObjectEffectPackageID, OverrideLootEffectScale, OverrideNameScale, AlternateDisplayType, ClientCreatureDisplayInfoID, " +
|
||||||
"ClientItemID FROM gameobject_display_info WHERE (`VerifiedBuild` > 0) = ?");
|
"ClientItemID, Unknown1100 FROM gameobject_display_info WHERE (`VerifiedBuild` > 0) = ?");
|
||||||
|
|
||||||
// Gameobjects.db2
|
// Gameobjects.db2
|
||||||
PrepareStatement(HotfixStatements.SEL_GAMEOBJECTS, "SELECT Name, PosX, PosY, PosZ, Rot1, Rot2, Rot3, Rot4, ID, OwnerID, DisplayID, Scale, TypeID, " +
|
PrepareStatement(HotfixStatements.SEL_GAMEOBJECTS, "SELECT Name, PosX, PosY, PosZ, Rot1, Rot2, Rot3, Rot4, ID, OwnerID, DisplayID, Scale, TypeID, " +
|
||||||
"PhaseUseFlags, PhaseID, PhaseGroupID, PropValue1, PropValue2, PropValue3, PropValue4, PropValue5, PropValue6, PropValue7, PropValue8" +
|
"PhaseUseFlags, PhaseID, PhaseGroupID, Unknown1100, PropValue1, PropValue2, PropValue3, PropValue4, PropValue5, PropValue6, PropValue7, " +
|
||||||
" FROM gameobjects WHERE (`VerifiedBuild` > 0) = ?");
|
"PropValue8 FROM gameobjects WHERE (`VerifiedBuild` > 0) = ?");
|
||||||
PrepareStatement(HotfixStatements.SEL_GAMEOBJECTS_LOCALE, "SELECT ID, Name_lang FROM gameobjects_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?");
|
PrepareStatement(HotfixStatements.SEL_GAMEOBJECTS_LOCALE, "SELECT ID, Name_lang FROM gameobjects_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?");
|
||||||
|
|
||||||
// GarrAbility.db2
|
// GarrAbility.db2
|
||||||
@@ -787,7 +791,7 @@ namespace Framework.Database
|
|||||||
|
|
||||||
// ItemSearchName.db2
|
// ItemSearchName.db2
|
||||||
PrepareStatement(HotfixStatements.SEL_ITEM_SEARCH_NAME, "SELECT ID, AllowableRace, Display, OverallQualityID, ExpansionID, MinFactionID, MinReputation, " +
|
PrepareStatement(HotfixStatements.SEL_ITEM_SEARCH_NAME, "SELECT ID, AllowableRace, Display, OverallQualityID, ExpansionID, MinFactionID, MinReputation, " +
|
||||||
"AllowableClass, RequiredLevel, RequiredSkill, RequiredSkillRank, RequiredAbility, ItemLevel, Flags1, Flags2, Flags3, Flags4" +
|
"AllowableClass, RequiredLevel, RequiredSkill, RequiredSkillRank, RequiredAbility, ItemLevel, Flags1, Flags2, Flags3, Flags4, Flags5" +
|
||||||
" FROM item_search_name WHERE (`VerifiedBuild` > 0) = ?");
|
" FROM item_search_name WHERE (`VerifiedBuild` > 0) = ?");
|
||||||
PrepareStatement(HotfixStatements.SEL_ITEM_SEARCH_NAME_LOCALE, "SELECT ID, Display_lang FROM item_search_name_locale WHERE (`VerifiedBuild` > 0) = ?" +
|
PrepareStatement(HotfixStatements.SEL_ITEM_SEARCH_NAME_LOCALE, "SELECT ID, Display_lang FROM item_search_name_locale WHERE (`VerifiedBuild` > 0) = ?" +
|
||||||
" AND locale = ?");
|
" AND locale = ?");
|
||||||
@@ -808,14 +812,14 @@ namespace Framework.Database
|
|||||||
"StatPercentageOfSocket2, StatPercentageOfSocket3, StatPercentageOfSocket4, StatPercentageOfSocket5, StatPercentageOfSocket6, " +
|
"StatPercentageOfSocket2, StatPercentageOfSocket3, StatPercentageOfSocket4, StatPercentageOfSocket5, StatPercentageOfSocket6, " +
|
||||||
"StatPercentageOfSocket7, StatPercentageOfSocket8, StatPercentageOfSocket9, StatPercentageOfSocket10, StatPercentEditor1, StatPercentEditor2, " +
|
"StatPercentageOfSocket7, StatPercentageOfSocket8, StatPercentageOfSocket9, StatPercentageOfSocket10, StatPercentEditor1, StatPercentEditor2, " +
|
||||||
"StatPercentEditor3, StatPercentEditor4, StatPercentEditor5, StatPercentEditor6, StatPercentEditor7, StatPercentEditor8, StatPercentEditor9, " +
|
"StatPercentEditor3, StatPercentEditor4, StatPercentEditor5, StatPercentEditor6, StatPercentEditor7, StatPercentEditor8, StatPercentEditor9, " +
|
||||||
"StatPercentEditor10, Stackable, MaxCount, MinReputation, RequiredAbility, SellPrice, BuyPrice, VendorStackCount, PriceVariance, " +
|
"StatPercentEditor10, StatModifierBonusStat1, StatModifierBonusStat2, StatModifierBonusStat3, StatModifierBonusStat4, StatModifierBonusStat5, " +
|
||||||
"PriceRandomValue, Flags1, Flags2, Flags3, Flags4, FactionRelated, ModifiedCraftingReagentItemID, ContentTuningID, " +
|
"StatModifierBonusStat6, StatModifierBonusStat7, StatModifierBonusStat8, StatModifierBonusStat9, StatModifierBonusStat10, Stackable, " +
|
||||||
"PlayerLevelToItemLevelCurveID, ItemNameDescriptionID, RequiredTransmogHoliday, RequiredHoliday, GemProperties, SocketMatchEnchantmentId, " +
|
"MaxCount, MinReputation, RequiredAbility, SellPrice, BuyPrice, VendorStackCount, PriceVariance, PriceRandomValue, Flags1, Flags2, Flags3, " +
|
||||||
"TotemCategoryID, InstanceBound, ZoneBound1, ZoneBound2, ItemSet, LockID, PageID, ItemDelay, MinFactionID, RequiredSkillRank, RequiredSkill, " +
|
"Flags4, Flags5, FactionRelated, ModifiedCraftingReagentItemID, ContentTuningID, PlayerLevelToItemLevelCurveID, ItemNameDescriptionID, " +
|
||||||
"ItemLevel, AllowableClass, ArtifactID, SpellWeight, SpellWeightCategory, SocketType1, SocketType2, SocketType3, SheatheType, Material, " +
|
"RequiredTransmogHoliday, RequiredHoliday, GemProperties, SocketMatchEnchantmentId, TotemCategoryID, InstanceBound, ZoneBound1, ZoneBound2, " +
|
||||||
"PageMaterialID, Bonding, DamageDamageType, StatModifierBonusStat1, StatModifierBonusStat2, StatModifierBonusStat3, StatModifierBonusStat4, " +
|
"ItemSet, LockID, PageID, ItemDelay, MinFactionID, RequiredSkillRank, RequiredSkill, ItemLevel, AllowableClass, ArtifactID, SpellWeight, " +
|
||||||
"StatModifierBonusStat5, StatModifierBonusStat6, StatModifierBonusStat7, StatModifierBonusStat8, StatModifierBonusStat9, " +
|
"SpellWeightCategory, SocketType1, SocketType2, SocketType3, SheatheType, Material, PageMaterialID, Bonding, DamageDamageType, " +
|
||||||
"StatModifierBonusStat10, ContainerSlots, RequiredPVPMedal, RequiredPVPRank, RequiredLevel, InventoryType, OverallQualityID FROM item_sparse" +
|
"ContainerSlots, RequiredPVPMedal, RequiredPVPRank, RequiredLevel, InventoryType, OverallQualityID FROM item_sparse" +
|
||||||
" WHERE (`VerifiedBuild` > 0) = ?");
|
" WHERE (`VerifiedBuild` > 0) = ?");
|
||||||
PrepareStatement(HotfixStatements.SEL_ITEM_SPARSE_LOCALE, "SELECT ID, Description_lang, Display3_lang, Display2_lang, Display1_lang, Display_lang" +
|
PrepareStatement(HotfixStatements.SEL_ITEM_SPARSE_LOCALE, "SELECT ID, Description_lang, Display3_lang, Display2_lang, Display1_lang, Display_lang" +
|
||||||
" FROM item_sparse_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?");
|
" FROM item_sparse_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?");
|
||||||
@@ -853,7 +857,7 @@ namespace Framework.Database
|
|||||||
" WHERE (`VerifiedBuild` > 0) = ? AND locale = ?");
|
" WHERE (`VerifiedBuild` > 0) = ? AND locale = ?");
|
||||||
|
|
||||||
// JournalTier.db2
|
// JournalTier.db2
|
||||||
PrepareStatement(HotfixStatements.SEL_JOURNAL_TIER, "SELECT ID, Name, PlayerConditionID FROM journal_tier WHERE (`VerifiedBuild` > 0) = ?");
|
PrepareStatement(HotfixStatements.SEL_JOURNAL_TIER, "SELECT ID, Name, Expansion, PlayerConditionID FROM journal_tier WHERE (`VerifiedBuild` > 0) = ?");
|
||||||
PrepareStatement(HotfixStatements.SEL_JOURNAL_TIER_LOCALE, "SELECT ID, Name_lang FROM journal_tier_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?");
|
PrepareStatement(HotfixStatements.SEL_JOURNAL_TIER_LOCALE, "SELECT ID, Name_lang FROM journal_tier_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?");
|
||||||
|
|
||||||
// Keychain.db2
|
// Keychain.db2
|
||||||
@@ -910,8 +914,8 @@ namespace Framework.Database
|
|||||||
// Map.db2
|
// Map.db2
|
||||||
PrepareStatement(HotfixStatements.SEL_MAP, "SELECT ID, Directory, MapName, MapDescription0, MapDescription1, PvpShortDescription, PvpLongDescription, " +
|
PrepareStatement(HotfixStatements.SEL_MAP, "SELECT ID, Directory, MapName, MapDescription0, MapDescription1, PvpShortDescription, PvpLongDescription, " +
|
||||||
"CorpseX, CorpseY, MapType, InstanceType, ExpansionID, AreaTableID, LoadingScreenID, TimeOfDayOverride, ParentMapID, CosmeticParentMapID, " +
|
"CorpseX, CorpseY, MapType, InstanceType, ExpansionID, AreaTableID, LoadingScreenID, TimeOfDayOverride, ParentMapID, CosmeticParentMapID, " +
|
||||||
"TimeOffset, MinimapIconScale, CorpseMapID, MaxPlayers, WindSettingsID, ZmpFileDataID, WdtFileDataID, NavigationMaxDistance, Flags1, Flags2, " +
|
"TimeOffset, MinimapIconScale, CorpseMapID, MaxPlayers, WindSettingsID, ZmpFileDataID, WdtFileDataID, NavigationMaxDistance, " +
|
||||||
"Flags3 FROM map WHERE (`VerifiedBuild` > 0) = ?");
|
"PreloadFileDataID, Flags1, Flags2, Flags3 FROM map WHERE (`VerifiedBuild` > 0) = ?");
|
||||||
PrepareStatement(HotfixStatements.SEL_MAP_LOCALE, "SELECT ID, MapName_lang, MapDescription0_lang, MapDescription1_lang, PvpShortDescription_lang, " +
|
PrepareStatement(HotfixStatements.SEL_MAP_LOCALE, "SELECT ID, MapName_lang, MapDescription0_lang, MapDescription1_lang, PvpShortDescription_lang, " +
|
||||||
"PvpLongDescription_lang FROM map_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?");
|
"PvpLongDescription_lang FROM map_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?");
|
||||||
|
|
||||||
@@ -955,7 +959,7 @@ namespace Framework.Database
|
|||||||
" WHERE (`VerifiedBuild` > 0) = ?");
|
" WHERE (`VerifiedBuild` > 0) = ?");
|
||||||
|
|
||||||
// MountXDisplay.db2
|
// MountXDisplay.db2
|
||||||
PrepareStatement(HotfixStatements.SEL_MOUNT_X_DISPLAY, "SELECT ID, CreatureDisplayInfoID, PlayerConditionID, MountID FROM mount_x_display" +
|
PrepareStatement(HotfixStatements.SEL_MOUNT_X_DISPLAY, "SELECT ID, CreatureDisplayInfoID, PlayerConditionID, Unknown1100, MountID FROM mount_x_display" +
|
||||||
" WHERE (`VerifiedBuild` > 0) = ?");
|
" WHERE (`VerifiedBuild` > 0) = ?");
|
||||||
|
|
||||||
// Movie.db2
|
// Movie.db2
|
||||||
@@ -963,8 +967,8 @@ namespace Framework.Database
|
|||||||
" WHERE (`VerifiedBuild` > 0) = ?");
|
" WHERE (`VerifiedBuild` > 0) = ?");
|
||||||
|
|
||||||
// MythicPlusSeason.db2
|
// MythicPlusSeason.db2
|
||||||
PrepareStatement(HotfixStatements.SEL_MYTHIC_PLUS_SEASON, "SELECT ID, MilestoneSeason, ExpansionLevel, HeroicLFGDungeonMinGear FROM mythic_plus_season" +
|
PrepareStatement(HotfixStatements.SEL_MYTHIC_PLUS_SEASON, "SELECT ID, MilestoneSeason, StartTimeEvent, ExpansionLevel, HeroicLFGDungeonMinGear" +
|
||||||
" WHERE (`VerifiedBuild` > 0) = ?");
|
" FROM mythic_plus_season WHERE (`VerifiedBuild` > 0) = ?");
|
||||||
|
|
||||||
// NameGen.db2
|
// NameGen.db2
|
||||||
PrepareStatement(HotfixStatements.SEL_NAME_GEN, "SELECT ID, Name, RaceID, Sex FROM name_gen WHERE (`VerifiedBuild` > 0) = ?");
|
PrepareStatement(HotfixStatements.SEL_NAME_GEN, "SELECT ID, Name, RaceID, Sex FROM name_gen WHERE (`VerifiedBuild` > 0) = ?");
|
||||||
@@ -1127,7 +1131,7 @@ namespace Framework.Database
|
|||||||
PrepareStatement(HotfixStatements.SEL_SCENARIO_LOCALE, "SELECT ID, Name_lang FROM scenario_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?");
|
PrepareStatement(HotfixStatements.SEL_SCENARIO_LOCALE, "SELECT ID, Name_lang FROM scenario_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?");
|
||||||
|
|
||||||
// ScenarioStep.db2
|
// ScenarioStep.db2
|
||||||
PrepareStatement(HotfixStatements.SEL_SCENARIO_STEP, "SELECT ID, Description, Title, ScenarioID, Criteriatreeid, RewardQuestID, RelatedStep, Supersedes, " +
|
PrepareStatement(HotfixStatements.SEL_SCENARIO_STEP, "SELECT Description, Title, ID, ScenarioID, Criteriatreeid, RewardQuestID, RelatedStep, Supersedes, " +
|
||||||
"OrderIndex, Flags, VisibilityPlayerConditionID, WidgetSetID FROM scenario_step WHERE (`VerifiedBuild` > 0) = ?");
|
"OrderIndex, Flags, VisibilityPlayerConditionID, WidgetSetID FROM scenario_step WHERE (`VerifiedBuild` > 0) = ?");
|
||||||
PrepareStatement(HotfixStatements.SEL_SCENARIO_STEP_LOCALE, "SELECT ID, Description_lang, Title_lang FROM scenario_step_locale WHERE (`VerifiedBuild` > 0) = ?" +
|
PrepareStatement(HotfixStatements.SEL_SCENARIO_STEP_LOCALE, "SELECT ID, Description_lang, Title_lang FROM scenario_step_locale WHERE (`VerifiedBuild` > 0) = ?" +
|
||||||
" AND locale = ?");
|
" AND locale = ?");
|
||||||
@@ -1254,10 +1258,10 @@ namespace Framework.Database
|
|||||||
"ChannelInterruptFlags1, ChannelInterruptFlags2, SpellID FROM spell_interrupts WHERE (`VerifiedBuild` > 0) = ?");
|
"ChannelInterruptFlags1, ChannelInterruptFlags2, SpellID FROM spell_interrupts WHERE (`VerifiedBuild` > 0) = ?");
|
||||||
|
|
||||||
// SpellItemEnchantment.db2
|
// SpellItemEnchantment.db2
|
||||||
PrepareStatement(HotfixStatements.SEL_SPELL_ITEM_ENCHANTMENT, "SELECT ID, Name, HordeName, Duration, EffectArg1, EffectArg2, EffectArg3, " +
|
PrepareStatement(HotfixStatements.SEL_SPELL_ITEM_ENCHANTMENT, "SELECT ID, Name, HordeName, Duration, EffectArg1, EffectArg2, EffectArg3, Flags, " +
|
||||||
"EffectScalingPoints1, EffectScalingPoints2, EffectScalingPoints3, IconFileDataID, MinItemLevel, MaxItemLevel, TransmogUseConditionID, " +
|
"EffectScalingPoints1, EffectScalingPoints2, EffectScalingPoints3, IconFileDataID, MinItemLevel, MaxItemLevel, TransmogUseConditionID, " +
|
||||||
"TransmogCost, EffectPointsMin1, EffectPointsMin2, EffectPointsMin3, ItemVisual, Flags, RequiredSkillID, RequiredSkillRank, ItemLevel, " +
|
"TransmogCost, EffectPointsMin1, EffectPointsMin2, EffectPointsMin3, ItemVisual, RequiredSkillID, RequiredSkillRank, ItemLevel, Charges, " +
|
||||||
"Charges, Effect1, Effect2, Effect3, ScalingClass, ScalingClassRestricted, ConditionID, MinLevel, MaxLevel FROM spell_item_enchantment" +
|
"Effect1, Effect2, Effect3, ScalingClass, ScalingClassRestricted, ConditionID, MinLevel, MaxLevel FROM spell_item_enchantment" +
|
||||||
" WHERE (`VerifiedBuild` > 0) = ?");
|
" WHERE (`VerifiedBuild` > 0) = ?");
|
||||||
PrepareStatement(HotfixStatements.SEL_SPELL_ITEM_ENCHANTMENT_LOCALE, "SELECT ID, Name_lang, HordeName_lang FROM spell_item_enchantment_locale" +
|
PrepareStatement(HotfixStatements.SEL_SPELL_ITEM_ENCHANTMENT_LOCALE, "SELECT ID, Name_lang, HordeName_lang FROM spell_item_enchantment_locale" +
|
||||||
" WHERE (`VerifiedBuild` > 0) = ? AND locale = ?");
|
" WHERE (`VerifiedBuild` > 0) = ? AND locale = ?");
|
||||||
@@ -1286,8 +1290,8 @@ namespace Framework.Database
|
|||||||
// SpellMisc.db2
|
// SpellMisc.db2
|
||||||
PrepareStatement(HotfixStatements.SEL_SPELL_MISC, "SELECT ID, Attributes1, Attributes2, Attributes3, Attributes4, Attributes5, Attributes6, Attributes7, " +
|
PrepareStatement(HotfixStatements.SEL_SPELL_MISC, "SELECT ID, Attributes1, Attributes2, Attributes3, Attributes4, Attributes5, Attributes6, Attributes7, " +
|
||||||
"Attributes8, Attributes9, Attributes10, Attributes11, Attributes12, Attributes13, Attributes14, Attributes15, DifficultyID, " +
|
"Attributes8, Attributes9, Attributes10, Attributes11, Attributes12, Attributes13, Attributes14, Attributes15, DifficultyID, " +
|
||||||
"CastingTimeIndex, DurationIndex, RangeIndex, SchoolMask, Speed, LaunchDelay, MinDuration, SpellIconFileDataID, ActiveIconFileDataID, " +
|
"CastingTimeIndex, DurationIndex, PvPDurationIndex, RangeIndex, SchoolMask, Speed, LaunchDelay, MinDuration, SpellIconFileDataID, " +
|
||||||
"ContentTuningID, ShowFutureSpellPlayerConditionID, SpellVisualScript, ActiveSpellVisualScript, SpellID FROM spell_misc" +
|
"ActiveIconFileDataID, ContentTuningID, ShowFutureSpellPlayerConditionID, SpellVisualScript, ActiveSpellVisualScript, SpellID FROM spell_misc" +
|
||||||
" WHERE (`VerifiedBuild` > 0) = ?");
|
" WHERE (`VerifiedBuild` > 0) = ?");
|
||||||
|
|
||||||
// SpellName.db2
|
// SpellName.db2
|
||||||
@@ -1363,19 +1367,19 @@ namespace Framework.Database
|
|||||||
|
|
||||||
// SpellVisualEffectName.db2
|
// SpellVisualEffectName.db2
|
||||||
PrepareStatement(HotfixStatements.SEL_SPELL_VISUAL_EFFECT_NAME, "SELECT ID, ModelFileDataID, BaseMissileSpeed, Scale, MinAllowedScale, MaxAllowedScale, " +
|
PrepareStatement(HotfixStatements.SEL_SPELL_VISUAL_EFFECT_NAME, "SELECT ID, ModelFileDataID, BaseMissileSpeed, Scale, MinAllowedScale, MaxAllowedScale, " +
|
||||||
"Alpha, Flags, TextureFileDataID, EffectRadius, Type, GenericID, RibbonQualityID, DissolveEffectID, ModelPosition, Unknown901" +
|
"Alpha, Flags, TextureFileDataID, EffectRadius, Type, GenericID, RibbonQualityID, DissolveEffectID, ModelPosition, Unknown901, Unknown1100" +
|
||||||
" FROM spell_visual_effect_name WHERE (`VerifiedBuild` > 0) = ?");
|
" FROM spell_visual_effect_name WHERE (`VerifiedBuild` > 0) = ?");
|
||||||
|
|
||||||
|
// SpellVisualKit.db2
|
||||||
|
PrepareStatement(HotfixStatements.SEL_SPELL_VISUAL_KIT, "SELECT ID, ClutterLevel, FallbackSpellVisualKitId, DelayMin, DelayMax, Flags1, Flags2" +
|
||||||
|
" FROM spell_visual_kit WHERE (`VerifiedBuild` > 0) = ?");
|
||||||
|
|
||||||
// SpellVisualMissile.db2
|
// SpellVisualMissile.db2
|
||||||
PrepareStatement(HotfixStatements.SEL_SPELL_VISUAL_MISSILE, "SELECT CastOffset1, CastOffset2, CastOffset3, ImpactOffset1, ImpactOffset2, ImpactOffset3, ID, " +
|
PrepareStatement(HotfixStatements.SEL_SPELL_VISUAL_MISSILE, "SELECT CastOffset1, CastOffset2, CastOffset3, ImpactOffset1, ImpactOffset2, ImpactOffset3, ID, " +
|
||||||
"SpellVisualEffectNameID, SoundEntriesID, Attachment, DestinationAttachment, CastPositionerID, ImpactPositionerID, FollowGroundHeight, " +
|
"SpellVisualEffectNameID, SoundEntriesID, Attachment, DestinationAttachment, CastPositionerID, ImpactPositionerID, FollowGroundHeight, " +
|
||||||
"FollowGroundDropSpeed, FollowGroundApproach, Flags, SpellMissileMotionID, AnimKitID, ClutterLevel, DecayTimeAfterImpact, " +
|
"FollowGroundDropSpeed, FollowGroundApproach, Flags, SpellMissileMotionID, AnimKitID, ClutterLevel, DecayTimeAfterImpact, Unused1100, " +
|
||||||
"SpellVisualMissileSetID FROM spell_visual_missile WHERE (`VerifiedBuild` > 0) = ?");
|
"SpellVisualMissileSetID FROM spell_visual_missile WHERE (`VerifiedBuild` > 0) = ?");
|
||||||
|
|
||||||
// SpellVisualKit.db2
|
|
||||||
PrepareStatement(HotfixStatements.SEL_SPELL_VISUAL_KIT, "SELECT ID, FallbackPriority, FallbackSpellVisualKitId, DelayMin, DelayMax, Flags1, Flags2" +
|
|
||||||
" FROM spell_visual_kit WHERE (`VerifiedBuild` > 0) = ?");
|
|
||||||
|
|
||||||
// SpellXSpellVisual.db2
|
// SpellXSpellVisual.db2
|
||||||
PrepareStatement(HotfixStatements.SEL_SPELL_X_SPELL_VISUAL, "SELECT ID, DifficultyID, SpellVisualID, Probability, Flags, Priority, SpellIconFileID, " +
|
PrepareStatement(HotfixStatements.SEL_SPELL_X_SPELL_VISUAL, "SELECT ID, DifficultyID, SpellVisualID, Probability, Flags, Priority, SpellIconFileID, " +
|
||||||
"ActiveIconFileID, ViewerUnitConditionID, ViewerPlayerConditionID, CasterUnitConditionID, CasterPlayerConditionID, SpellID" +
|
"ActiveIconFileID, ViewerUnitConditionID, ViewerPlayerConditionID, CasterUnitConditionID, CasterPlayerConditionID, SpellID" +
|
||||||
@@ -1421,8 +1425,8 @@ namespace Framework.Database
|
|||||||
|
|
||||||
// TraitCond.db2
|
// TraitCond.db2
|
||||||
PrepareStatement(HotfixStatements.SEL_TRAIT_COND, "SELECT ID, CondType, TraitTreeID, GrantedRanks, QuestID, AchievementID, SpecSetID, TraitNodeGroupID, " +
|
PrepareStatement(HotfixStatements.SEL_TRAIT_COND, "SELECT ID, CondType, TraitTreeID, GrantedRanks, QuestID, AchievementID, SpecSetID, TraitNodeGroupID, " +
|
||||||
"TraitNodeID, TraitCurrencyID, SpentAmountRequired, Flags, RequiredLevel, FreeSharedStringID, SpendMoreSharedStringID FROM trait_cond" +
|
"TraitNodeID, TraitCurrencyID, SpentAmountRequired, Flags, RequiredLevel, FreeSharedStringID, SpendMoreSharedStringID, " +
|
||||||
" WHERE (`VerifiedBuild` > 0) = ?");
|
"TraitCondAccountElementID FROM trait_cond WHERE (`VerifiedBuild` > 0) = ?");
|
||||||
|
|
||||||
// TraitCost.db2
|
// TraitCost.db2
|
||||||
PrepareStatement(HotfixStatements.SEL_TRAIT_COST, "SELECT InternalName, ID, Amount, TraitCurrencyID FROM trait_cost WHERE (`VerifiedBuild` > 0) = ?");
|
PrepareStatement(HotfixStatements.SEL_TRAIT_COST, "SELECT InternalName, ID, Amount, TraitCurrencyID FROM trait_cost WHERE (`VerifiedBuild` > 0) = ?");
|
||||||
@@ -1451,10 +1455,11 @@ namespace Framework.Database
|
|||||||
" WHERE (`VerifiedBuild` > 0) = ?");
|
" WHERE (`VerifiedBuild` > 0) = ?");
|
||||||
|
|
||||||
// TraitNode.db2
|
// TraitNode.db2
|
||||||
PrepareStatement(HotfixStatements.SEL_TRAIT_NODE, "SELECT ID, TraitTreeID, PosX, PosY, Type, Flags FROM trait_node WHERE (`VerifiedBuild` > 0) = ?");
|
PrepareStatement(HotfixStatements.SEL_TRAIT_NODE, "SELECT ID, TraitTreeID, PosX, PosY, Type, Flags, TraitSubTreeID FROM trait_node" +
|
||||||
|
" WHERE (`VerifiedBuild` > 0) = ?");
|
||||||
|
|
||||||
// TraitNodeEntry.db2
|
// TraitNodeEntry.db2
|
||||||
PrepareStatement(HotfixStatements.SEL_TRAIT_NODE_ENTRY, "SELECT ID, TraitDefinitionID, MaxRanks, NodeEntryType FROM trait_node_entry" +
|
PrepareStatement(HotfixStatements.SEL_TRAIT_NODE_ENTRY, "SELECT ID, TraitDefinitionID, MaxRanks, NodeEntryType, TraitSubTreeID FROM trait_node_entry" +
|
||||||
" WHERE (`VerifiedBuild` > 0) = ?");
|
" WHERE (`VerifiedBuild` > 0) = ?");
|
||||||
|
|
||||||
// TraitNodeEntryXTraitCond.db2
|
// TraitNodeEntryXTraitCond.db2
|
||||||
@@ -1540,8 +1545,8 @@ namespace Framework.Database
|
|||||||
|
|
||||||
// UiMap.db2
|
// UiMap.db2
|
||||||
PrepareStatement(HotfixStatements.SEL_UI_MAP, "SELECT Name, ID, ParentUiMapID, Flags, `System`, Type, BountySetID, BountyDisplayLocation, " +
|
PrepareStatement(HotfixStatements.SEL_UI_MAP, "SELECT Name, ID, ParentUiMapID, Flags, `System`, Type, BountySetID, BountyDisplayLocation, " +
|
||||||
"VisibilityPlayerConditionID2, VisibilityPlayerConditionID, HelpTextPosition, BkgAtlasID, AlternateUiMapGroup, ContentTuningID FROM ui_map" +
|
"VisibilityPlayerConditionID2, VisibilityPlayerConditionID, HelpTextPosition, BkgAtlasID, AlternateUiMapGroup, ContentTuningID, " +
|
||||||
" WHERE (`VerifiedBuild` > 0) = ?");
|
"AdventureMapTextureKitID FROM ui_map WHERE (`VerifiedBuild` > 0) = ?");
|
||||||
PrepareStatement(HotfixStatements.SEL_UI_MAP_LOCALE, "SELECT ID, Name_lang FROM ui_map_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?");
|
PrepareStatement(HotfixStatements.SEL_UI_MAP_LOCALE, "SELECT ID, Name_lang FROM ui_map_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?");
|
||||||
|
|
||||||
// UiMapAssignment.db2
|
// UiMapAssignment.db2
|
||||||
@@ -1722,6 +1727,8 @@ namespace Framework.Database
|
|||||||
SEL_BATTLEMASTER_LIST,
|
SEL_BATTLEMASTER_LIST,
|
||||||
SEL_BATTLEMASTER_LIST_LOCALE,
|
SEL_BATTLEMASTER_LIST_LOCALE,
|
||||||
|
|
||||||
|
SEL_BATTLEMASTER_LIST_X_MAP,
|
||||||
|
|
||||||
SEL_BROADCAST_TEXT,
|
SEL_BROADCAST_TEXT,
|
||||||
SEL_BROADCAST_TEXT_LOCALE,
|
SEL_BROADCAST_TEXT_LOCALE,
|
||||||
|
|
||||||
@@ -2277,10 +2284,10 @@ namespace Framework.Database
|
|||||||
|
|
||||||
SEL_SPELL_VISUAL_EFFECT_NAME,
|
SEL_SPELL_VISUAL_EFFECT_NAME,
|
||||||
|
|
||||||
SEL_SPELL_VISUAL_MISSILE,
|
|
||||||
|
|
||||||
SEL_SPELL_VISUAL_KIT,
|
SEL_SPELL_VISUAL_KIT,
|
||||||
|
|
||||||
|
SEL_SPELL_VISUAL_MISSILE,
|
||||||
|
|
||||||
SEL_SPELL_X_SPELL_VISUAL,
|
SEL_SPELL_X_SPELL_VISUAL,
|
||||||
|
|
||||||
SEL_SUMMON_PROPERTIES,
|
SEL_SUMMON_PROPERTIES,
|
||||||
|
|||||||
@@ -182,6 +182,7 @@ namespace Game.Achievements
|
|||||||
case CriteriaType.HighestHealReceived:
|
case CriteriaType.HighestHealReceived:
|
||||||
case CriteriaType.AnyArtifactPowerRankPurchased:
|
case CriteriaType.AnyArtifactPowerRankPurchased:
|
||||||
case CriteriaType.AzeriteLevelReached:
|
case CriteriaType.AzeriteLevelReached:
|
||||||
|
case CriteriaType.ReachRenownLevel:
|
||||||
SetCriteriaProgress(criteria, miscValue1, referencePlayer, ProgressType.Highest);
|
SetCriteriaProgress(criteria, miscValue1, referencePlayer, ProgressType.Highest);
|
||||||
break;
|
break;
|
||||||
case CriteriaType.ReachLevel:
|
case CriteriaType.ReachLevel:
|
||||||
@@ -3698,6 +3699,40 @@ namespace Game.Achievements
|
|||||||
return false;
|
return false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case ModifierTreeType.PlayerHasActiveTraitSubTree: // 385
|
||||||
|
{
|
||||||
|
int traitConfigWithSubtree = referencePlayer.m_activePlayerData.TraitConfigs.FindIndexIf(traitConfig =>
|
||||||
|
{
|
||||||
|
if (traitConfig.Type == (int)TraitConfigType.Combat
|
||||||
|
&& (referencePlayer.m_activePlayerData.ActiveCombatTraitConfigID != traitConfig.ID
|
||||||
|
|| !traitConfig.CombatConfigFlags.GetValue().HasAnyFlag((int)TraitCombatConfigFlags.ActiveForSpec)))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return traitConfig.SubTrees.FindIndexIf(traitSubTree =>
|
||||||
|
{
|
||||||
|
return traitSubTree.TraitSubTreeID == reqValue && traitSubTree.Active != 0;
|
||||||
|
}) >= 0;
|
||||||
|
});
|
||||||
|
if (traitConfigWithSubtree < 0)
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case ModifierTreeType.TargetCreatureClassificationEqual: // 389
|
||||||
|
{
|
||||||
|
Creature targetCreature = refe?.ToCreature();
|
||||||
|
if (targetCreature == null)
|
||||||
|
return false;
|
||||||
|
if (targetCreature.GetCreatureClassification() != (CreatureClassifications)reqValue)
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case ModifierTreeType.PlayerHasCompletedQuestOrIsReadyToTurnIn: // 392
|
||||||
|
{
|
||||||
|
QuestStatus status = referencePlayer.GetQuestStatus(reqValue);
|
||||||
|
if (status != QuestStatus.Complete && status != QuestStatus.Rewarded)
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1256,7 +1256,7 @@ namespace Game.BattleGrounds
|
|||||||
|
|
||||||
public uint GetMapId()
|
public uint GetMapId()
|
||||||
{
|
{
|
||||||
return (uint)_battlegroundTemplate.BattlemasterEntry.MapId[0];
|
return (uint)_battlegroundTemplate.MapIDs[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetBgMap(BattlegroundMap map)
|
public void SetBgMap(BattlegroundMap map)
|
||||||
|
|||||||
@@ -290,10 +290,10 @@ namespace Game.BattleGrounds
|
|||||||
if (bgTypeId == BattlegroundTypeId.RB || bgTypeId == BattlegroundTypeId.AA || bgTypeId == BattlegroundTypeId.RandomEpic)
|
if (bgTypeId == BattlegroundTypeId.RB || bgTypeId == BattlegroundTypeId.AA || bgTypeId == BattlegroundTypeId.RandomEpic)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
PvpDifficultyRecord bracketEntry = Global.DB2Mgr.GetBattlegroundBracketById((uint)bg_template.BattlemasterEntry.MapId[0], bracketId);
|
PvpDifficultyRecord bracketEntry = Global.DB2Mgr.GetBattlegroundBracketById((uint)bg_template.MapIDs[0], bracketId);
|
||||||
if (bracketEntry == null)
|
if (bracketEntry == null)
|
||||||
{
|
{
|
||||||
Log.outError(LogFilter.Battleground, $"Battleground: CreateNewBattleground: bg bracket entry not found for map {bg_template.BattlemasterEntry.MapId[0]} bracket id {bracketId}");
|
Log.outError(LogFilter.Battleground, $"Battleground: CreateNewBattleground: bg bracket entry not found for map {bg_template.MapIDs[0]} bracket id {bracketId}");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -328,6 +328,11 @@ namespace Game.BattleGrounds
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MultiMap<BattlegroundTypeId, int> mapsByBattleground = new();
|
||||||
|
foreach (var (_, battlemasterListXMap) in CliDB.BattlemasterListXMapStorage)
|
||||||
|
if (CliDB.BattlemasterListStorage.HasRecord(battlemasterListXMap.BattlemasterListID) && CliDB.MapStorage.HasRecord((uint)battlemasterListXMap.MapID))
|
||||||
|
mapsByBattleground.Add((BattlegroundTypeId)battlemasterListXMap.BattlemasterListID, battlemasterListXMap.MapID);
|
||||||
|
|
||||||
uint count = 0;
|
uint count = 0;
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
@@ -351,6 +356,7 @@ namespace Game.BattleGrounds
|
|||||||
|
|
||||||
bgTemplate.ScriptId = Global.ObjectMgr.GetScriptId(result.Read<string>(5));
|
bgTemplate.ScriptId = Global.ObjectMgr.GetScriptId(result.Read<string>(5));
|
||||||
bgTemplate.BattlemasterEntry = bl;
|
bgTemplate.BattlemasterEntry = bl;
|
||||||
|
bgTemplate.MapIDs = mapsByBattleground[bgTypeId];
|
||||||
|
|
||||||
if (bgTemplate.Id != BattlegroundTypeId.AA && !IsRandomBattleground(bgTemplate.Id))
|
if (bgTemplate.Id != BattlegroundTypeId.AA && !IsRandomBattleground(bgTemplate.Id))
|
||||||
{
|
{
|
||||||
@@ -381,8 +387,8 @@ namespace Game.BattleGrounds
|
|||||||
|
|
||||||
_battlegroundTemplates[bgTypeId] = bgTemplate;
|
_battlegroundTemplates[bgTypeId] = bgTemplate;
|
||||||
|
|
||||||
if (bgTemplate.BattlemasterEntry.MapId[1] == -1) // in this case we have only one mapId
|
if (bgTemplate.MapIDs.Count == 1)
|
||||||
_battlegroundMapTemplates[(uint)bgTemplate.BattlemasterEntry.MapId[0]] = _battlegroundTemplates[bgTypeId];
|
_battlegroundMapTemplates[(uint)bgTemplate.MapIDs[0]] = _battlegroundTemplates[bgTypeId];
|
||||||
|
|
||||||
++count;
|
++count;
|
||||||
}
|
}
|
||||||
@@ -641,11 +647,8 @@ namespace Game.BattleGrounds
|
|||||||
{
|
{
|
||||||
Dictionary<BattlegroundTypeId, float> selectionWeights = new();
|
Dictionary<BattlegroundTypeId, float> selectionWeights = new();
|
||||||
|
|
||||||
foreach (var mapId in bgTemplate.BattlemasterEntry.MapId)
|
foreach (var mapId in bgTemplate.MapIDs)
|
||||||
{
|
{
|
||||||
if (mapId == -1)
|
|
||||||
break;
|
|
||||||
|
|
||||||
BattlegroundTemplate bg = GetBattlegroundTemplateByMapId((uint)mapId);
|
BattlegroundTemplate bg = GetBattlegroundTemplateByMapId((uint)mapId);
|
||||||
if (bg != null)
|
if (bg != null)
|
||||||
{
|
{
|
||||||
@@ -788,6 +791,7 @@ namespace Game.BattleGrounds
|
|||||||
public byte Weight;
|
public byte Weight;
|
||||||
public uint ScriptId;
|
public uint ScriptId;
|
||||||
public BattlemasterListRecord BattlemasterEntry;
|
public BattlemasterListRecord BattlemasterEntry;
|
||||||
|
public List<int> MapIDs = new();
|
||||||
|
|
||||||
public bool IsArena() { return BattlemasterEntry.InstanceType == (uint)MapTypes.Arena; }
|
public bool IsArena() { return BattlemasterEntry.InstanceType == (uint)MapTypes.Arena; }
|
||||||
|
|
||||||
|
|||||||
@@ -731,11 +731,8 @@ namespace Game.BattleGrounds
|
|||||||
}
|
}
|
||||||
|
|
||||||
// loop over queues for every map
|
// loop over queues for every map
|
||||||
foreach (var mapId in bg_template.BattlemasterEntry.MapId)
|
foreach (var mapId in bg_template.MapIDs)
|
||||||
{
|
{
|
||||||
if (mapId == -1)
|
|
||||||
break;
|
|
||||||
|
|
||||||
var bgQueues = Global.BattlegroundMgr.GetBGFreeSlotQueueStore((uint)mapId);
|
var bgQueues = Global.BattlegroundMgr.GetBGFreeSlotQueueStore((uint)mapId);
|
||||||
foreach (var bg in bgQueues)
|
foreach (var bg in bgQueues)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -91,6 +91,7 @@ namespace Game.DataStorage
|
|||||||
BattlePetSpeciesStorage = ReadDB2<BattlePetSpeciesRecord>("BattlePetSpecies.db2", HotfixStatements.SEL_BATTLE_PET_SPECIES, HotfixStatements.SEL_BATTLE_PET_SPECIES_LOCALE);
|
BattlePetSpeciesStorage = ReadDB2<BattlePetSpeciesRecord>("BattlePetSpecies.db2", HotfixStatements.SEL_BATTLE_PET_SPECIES, HotfixStatements.SEL_BATTLE_PET_SPECIES_LOCALE);
|
||||||
BattlePetSpeciesStateStorage = ReadDB2<BattlePetSpeciesStateRecord>("BattlePetSpeciesState.db2", HotfixStatements.SEL_BATTLE_PET_SPECIES_STATE);
|
BattlePetSpeciesStateStorage = ReadDB2<BattlePetSpeciesStateRecord>("BattlePetSpeciesState.db2", HotfixStatements.SEL_BATTLE_PET_SPECIES_STATE);
|
||||||
BattlemasterListStorage = ReadDB2<BattlemasterListRecord>("BattlemasterList.db2", HotfixStatements.SEL_BATTLEMASTER_LIST, HotfixStatements.SEL_BATTLEMASTER_LIST_LOCALE);
|
BattlemasterListStorage = ReadDB2<BattlemasterListRecord>("BattlemasterList.db2", HotfixStatements.SEL_BATTLEMASTER_LIST, HotfixStatements.SEL_BATTLEMASTER_LIST_LOCALE);
|
||||||
|
BattlemasterListXMapStorage = ReadDB2<BattlemasterListXMapRecord>("BattlemasterListXMap.db2", HotfixStatements.SEL_BATTLEMASTER_LIST_X_MAP);
|
||||||
BroadcastTextStorage = ReadDB2<BroadcastTextRecord>("BroadcastText.db2", HotfixStatements.SEL_BROADCAST_TEXT, HotfixStatements.SEL_BROADCAST_TEXT_LOCALE);
|
BroadcastTextStorage = ReadDB2<BroadcastTextRecord>("BroadcastText.db2", HotfixStatements.SEL_BROADCAST_TEXT, HotfixStatements.SEL_BROADCAST_TEXT_LOCALE);
|
||||||
BroadcastTextDurationStorage = ReadDB2<BroadcastTextDurationRecord>("BroadcastTextDuration.db2", HotfixStatements.SEL_BROADCAST_TEXT_DURATION);
|
BroadcastTextDurationStorage = ReadDB2<BroadcastTextDurationRecord>("BroadcastTextDuration.db2", HotfixStatements.SEL_BROADCAST_TEXT_DURATION);
|
||||||
CfgCategoriesStorage = ReadDB2<Cfg_CategoriesRecord>("Cfg_Categories.db2", HotfixStatements.SEL_CFG_CATEGORIES, HotfixStatements.SEL_CFG_CATEGORIES_LOCALE);
|
CfgCategoriesStorage = ReadDB2<Cfg_CategoriesRecord>("Cfg_Categories.db2", HotfixStatements.SEL_CFG_CATEGORIES, HotfixStatements.SEL_CFG_CATEGORIES_LOCALE);
|
||||||
@@ -536,6 +537,7 @@ namespace Game.DataStorage
|
|||||||
public static DB6Storage<BattlePetSpeciesRecord> BattlePetSpeciesStorage;
|
public static DB6Storage<BattlePetSpeciesRecord> BattlePetSpeciesStorage;
|
||||||
public static DB6Storage<BattlePetSpeciesStateRecord> BattlePetSpeciesStateStorage;
|
public static DB6Storage<BattlePetSpeciesStateRecord> BattlePetSpeciesStateStorage;
|
||||||
public static DB6Storage<BattlemasterListRecord> BattlemasterListStorage;
|
public static DB6Storage<BattlemasterListRecord> BattlemasterListStorage;
|
||||||
|
public static DB6Storage<BattlemasterListXMapRecord> BattlemasterListXMapStorage;
|
||||||
public static DB6Storage<BroadcastTextRecord> BroadcastTextStorage;
|
public static DB6Storage<BroadcastTextRecord> BroadcastTextStorage;
|
||||||
public static DB6Storage<BroadcastTextDurationRecord> BroadcastTextDurationStorage;
|
public static DB6Storage<BroadcastTextDurationRecord> BroadcastTextDurationStorage;
|
||||||
public static DB6Storage<Cfg_CategoriesRecord> CfgCategoriesStorage;
|
public static DB6Storage<Cfg_CategoriesRecord> CfgCategoriesStorage;
|
||||||
|
|||||||
@@ -892,7 +892,9 @@ namespace Game.DataStorage
|
|||||||
|
|
||||||
public uint GetEmptyAnimStateID()
|
public uint GetEmptyAnimStateID()
|
||||||
{
|
{
|
||||||
return AnimationDataStorage.GetNumRows();
|
return 1778;
|
||||||
|
// TEMP: well... AnimationData.db2 in 11.0.0 has more rows than max hardcoded anim id in client
|
||||||
|
//return AnimationDataStorage.GetNumRows();
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<uint> GetAreasForGroup(uint areaGroupId)
|
public List<uint> GetAreasForGroup(uint areaGroupId)
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ namespace Game.DataStorage
|
|||||||
public uint Id;
|
public uint Id;
|
||||||
public ushort Fallback;
|
public ushort Fallback;
|
||||||
public byte BehaviorTier;
|
public byte BehaviorTier;
|
||||||
public int BehaviorID;
|
public short BehaviorID;
|
||||||
public int[] Flags = new int[2];
|
public int[] Flags = new int[2];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -92,11 +92,17 @@ namespace Game.DataStorage
|
|||||||
public int Flags;
|
public int Flags;
|
||||||
public int IconFileDataID;
|
public int IconFileDataID;
|
||||||
public int RequiredPlayerConditionID;
|
public int RequiredPlayerConditionID;
|
||||||
public short[] MapId = new short[16];
|
|
||||||
|
|
||||||
public bool HasFlag(BattlemasterListFlags battlemasterListFlags) { return (Flags & (int)battlemasterListFlags) != 0; }
|
public bool HasFlag(BattlemasterListFlags battlemasterListFlags) { return (Flags & (int)battlemasterListFlags) != 0; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public sealed class BattlemasterListXMapRecord
|
||||||
|
{
|
||||||
|
public uint ID;
|
||||||
|
public int MapID;
|
||||||
|
public uint BattlemasterListID;
|
||||||
|
}
|
||||||
|
|
||||||
public sealed class BroadcastTextRecord
|
public sealed class BroadcastTextRecord
|
||||||
{
|
{
|
||||||
public LocalizedString Text;
|
public LocalizedString Text;
|
||||||
|
|||||||
@@ -36,10 +36,8 @@ namespace Game.DataStorage
|
|||||||
public uint Id;
|
public uint Id;
|
||||||
public int ItemBonusTreeGroupID;
|
public int ItemBonusTreeGroupID;
|
||||||
public int DstItemBonusTreeID;
|
public int DstItemBonusTreeID;
|
||||||
public sbyte Type;
|
|
||||||
public int Value;
|
public int Value;
|
||||||
public int MythicPlusSeasonID;
|
public int RequiredTimeEventPassed;
|
||||||
public int PvPSeasonID;
|
|
||||||
public uint SrcItemBonusTreeID;
|
public uint SrcItemBonusTreeID;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -198,6 +196,8 @@ namespace Game.DataStorage
|
|||||||
public uint Id;
|
public uint Id;
|
||||||
public ushort SecondaryID;
|
public ushort SecondaryID;
|
||||||
public int Flags;
|
public int Flags;
|
||||||
|
public int ChrRacesID;
|
||||||
|
public int Sex;
|
||||||
public uint ChrModelID;
|
public uint ChrModelID;
|
||||||
public int SortIndex;
|
public int SortIndex;
|
||||||
public int ChrCustomizationCategoryID;
|
public int ChrCustomizationCategoryID;
|
||||||
@@ -468,7 +468,7 @@ namespace Game.DataStorage
|
|||||||
public int PortraitTextureFileDataID;
|
public int PortraitTextureFileDataID;
|
||||||
public ushort ObjectEffectPackageID;
|
public ushort ObjectEffectPackageID;
|
||||||
public ushort AnimReplacementSetID;
|
public ushort AnimReplacementSetID;
|
||||||
public byte Flags;
|
public int Flags;
|
||||||
public int StateSpellVisualKitID;
|
public int StateSpellVisualKitID;
|
||||||
public float PlayerOverrideScale;
|
public float PlayerOverrideScale;
|
||||||
public float PetInstanceScale; // scale of not own player pets inside dungeons/raids/scenarios
|
public float PetInstanceScale; // scale of not own player pets inside dungeons/raids/scenarios
|
||||||
@@ -478,6 +478,9 @@ namespace Game.DataStorage
|
|||||||
public sbyte Gender;
|
public sbyte Gender;
|
||||||
public int DissolveOutEffectID;
|
public int DissolveOutEffectID;
|
||||||
public sbyte CreatureModelMinLod;
|
public sbyte CreatureModelMinLod;
|
||||||
|
public ushort ConditionalCreatureModelID;
|
||||||
|
public float Unknown_1100_1;
|
||||||
|
public ushort Unknown_1100_2;
|
||||||
public int[] TextureVariationFileDataID = new int[4];
|
public int[] TextureVariationFileDataID = new int[4];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -510,7 +513,7 @@ namespace Game.DataStorage
|
|||||||
{
|
{
|
||||||
public uint Id;
|
public uint Id;
|
||||||
public float[] GeoBox = new float[6];
|
public float[] GeoBox = new float[6];
|
||||||
public uint Flags;
|
public int Flags;
|
||||||
public uint FileDataID;
|
public uint FileDataID;
|
||||||
public float WalkSpeed;
|
public float WalkSpeed;
|
||||||
public float RunSpeed;
|
public float RunSpeed;
|
||||||
@@ -539,9 +542,10 @@ namespace Game.DataStorage
|
|||||||
public float OverrideNameScale;
|
public float OverrideNameScale;
|
||||||
public float OverrideSelectionRadius;
|
public float OverrideSelectionRadius;
|
||||||
public float TamedPetBaseScale;
|
public float TamedPetBaseScale;
|
||||||
public sbyte Unknown820_1; // scale related
|
public sbyte MountScaleOtherIndex;
|
||||||
public float Unknown820_2; // scale related
|
public float MountScaleSelf;
|
||||||
public float[] Unknown820_3 = new float[2]; // scale related
|
public ushort Unknown1100;
|
||||||
|
public float[] MountScaleOther = new float[2];
|
||||||
|
|
||||||
public bool HasFlag(CreatureModelDataFlags creatureModelDataFlags) { return (Flags & (uint)creatureModelDataFlags) != 0; }
|
public bool HasFlag(CreatureModelDataFlags creatureModelDataFlags) { return (Flags & (uint)creatureModelDataFlags) != 0; }
|
||||||
}
|
}
|
||||||
@@ -617,6 +621,7 @@ namespace Game.DataStorage
|
|||||||
public int MaxQtyWorldStateID;
|
public int MaxQtyWorldStateID;
|
||||||
public uint RechargingAmountPerCycle;
|
public uint RechargingAmountPerCycle;
|
||||||
public uint RechargingCycleDurationMS;
|
public uint RechargingCycleDurationMS;
|
||||||
|
public float AccountTransferPercentage;
|
||||||
public int[] Flags = new int[2];
|
public int[] Flags = new int[2];
|
||||||
|
|
||||||
public bool HasFlag(CurrencyTypesFlags currencyTypesFlags) { return (Flags[0] & (int)currencyTypesFlags) != 0; }
|
public bool HasFlag(CurrencyTypesFlags currencyTypesFlags) { return (Flags[0] & (int)currencyTypesFlags) != 0; }
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ namespace Game.DataStorage
|
|||||||
public byte MinPlayers;
|
public byte MinPlayers;
|
||||||
public byte MaxPlayers;
|
public byte MaxPlayers;
|
||||||
public ushort Flags;
|
public ushort Flags;
|
||||||
public byte ItemContext;
|
public sbyte ItemContext;
|
||||||
public byte ToggleDifficultyID;
|
public byte ToggleDifficultyID;
|
||||||
public uint GroupSizeHealthCurveID;
|
public uint GroupSizeHealthCurveID;
|
||||||
public uint GroupSizeDmgCurveID;
|
public uint GroupSizeDmgCurveID;
|
||||||
|
|||||||
@@ -8,9 +8,9 @@ namespace Game.DataStorage
|
|||||||
public uint Id;
|
public uint Id;
|
||||||
public long RaceMask;
|
public long RaceMask;
|
||||||
public string EmoteSlashCommand;
|
public string EmoteSlashCommand;
|
||||||
public int AnimId;
|
public short AnimID;
|
||||||
public uint EmoteFlags;
|
public int EmoteFlags;
|
||||||
public byte EmoteSpecProc;
|
public int EmoteSpecProc;
|
||||||
public uint EmoteSpecProcParam;
|
public uint EmoteSpecProcParam;
|
||||||
public uint EventSoundID;
|
public uint EventSoundID;
|
||||||
public uint SpellVisualKitId;
|
public uint SpellVisualKitId;
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ namespace Game.DataStorage
|
|||||||
|
|
||||||
public uint Id;
|
public uint Id;
|
||||||
public ushort Faction;
|
public ushort Faction;
|
||||||
public ushort Flags;
|
public int Flags;
|
||||||
public byte FactionGroup;
|
public byte FactionGroup;
|
||||||
public byte FriendGroup;
|
public byte FriendGroup;
|
||||||
public byte EnemyGroup;
|
public byte EnemyGroup;
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ namespace Game.DataStorage
|
|||||||
public int AlternateDisplayType;
|
public int AlternateDisplayType;
|
||||||
public int ClientCreatureDisplayInfoID;
|
public int ClientCreatureDisplayInfoID;
|
||||||
public int ClientItemID;
|
public int ClientItemID;
|
||||||
|
public ushort Unknown1100;
|
||||||
|
|
||||||
public Vector3 GeoBoxMin
|
public Vector3 GeoBoxMin
|
||||||
{
|
{
|
||||||
@@ -50,6 +51,7 @@ namespace Game.DataStorage
|
|||||||
public int PhaseUseFlags;
|
public int PhaseUseFlags;
|
||||||
public int PhaseID;
|
public int PhaseID;
|
||||||
public int PhaseGroupID;
|
public int PhaseGroupID;
|
||||||
|
public ushort Unknown1100;
|
||||||
public int[] PropValue = new int[8];
|
public int[] PropValue = new int[8];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -133,7 +135,7 @@ namespace Game.DataStorage
|
|||||||
public byte AllianceGarrFollRaceID;
|
public byte AllianceGarrFollRaceID;
|
||||||
public uint HordeGarrClassSpecID;
|
public uint HordeGarrClassSpecID;
|
||||||
public uint AllianceGarrClassSpecID;
|
public uint AllianceGarrClassSpecID;
|
||||||
public sbyte Quality;
|
public int Quality;
|
||||||
public byte FollowerLevel;
|
public byte FollowerLevel;
|
||||||
public ushort ItemLevelWeapon;
|
public ushort ItemLevelWeapon;
|
||||||
public ushort ItemLevelArmor;
|
public ushort ItemLevelArmor;
|
||||||
@@ -206,7 +208,7 @@ namespace Game.DataStorage
|
|||||||
{
|
{
|
||||||
public uint Id;
|
public uint Id;
|
||||||
public string Name;
|
public string Name;
|
||||||
public byte PlotType;
|
public sbyte PlotType;
|
||||||
public uint HordeConstructObjID;
|
public uint HordeConstructObjID;
|
||||||
public uint AllianceConstructObjID;
|
public uint AllianceConstructObjID;
|
||||||
public byte Flags;
|
public byte Flags;
|
||||||
@@ -293,7 +295,7 @@ namespace Game.DataStorage
|
|||||||
{
|
{
|
||||||
public uint Id;
|
public uint Id;
|
||||||
public uint SpellID;
|
public uint SpellID;
|
||||||
public byte GlyphType;
|
public sbyte GlyphType;
|
||||||
public byte GlyphExclusiveCategoryID;
|
public byte GlyphExclusiveCategoryID;
|
||||||
public uint SpellIconID;
|
public uint SpellIconID;
|
||||||
}
|
}
|
||||||
@@ -311,7 +313,7 @@ namespace Game.DataStorage
|
|||||||
public int GossipNpcOption;
|
public int GossipNpcOption;
|
||||||
public int LFGDungeonsID;
|
public int LFGDungeonsID;
|
||||||
public int TrainerID;
|
public int TrainerID;
|
||||||
public int GarrFollowerTypeID;
|
public sbyte GarrFollowerTypeID;
|
||||||
public int CharShipmentID;
|
public int CharShipmentID;
|
||||||
public int GarrTalentTreeID;
|
public int GarrTalentTreeID;
|
||||||
public int UiMapID;
|
public int UiMapID;
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ namespace Game.DataStorage
|
|||||||
public sealed class ItemAppearanceRecord
|
public sealed class ItemAppearanceRecord
|
||||||
{
|
{
|
||||||
public uint Id;
|
public uint Id;
|
||||||
public int DisplayType;
|
public sbyte DisplayType;
|
||||||
public uint ItemDisplayInfoID;
|
public uint ItemDisplayInfoID;
|
||||||
public int DefaultIconFileDataID;
|
public int DefaultIconFileDataID;
|
||||||
public int UiOrder;
|
public int UiOrder;
|
||||||
@@ -164,7 +164,7 @@ namespace Game.DataStorage
|
|||||||
public sealed class ItemContextPickerEntryRecord
|
public sealed class ItemContextPickerEntryRecord
|
||||||
{
|
{
|
||||||
public uint Id;
|
public uint Id;
|
||||||
public byte ItemCreationContext;
|
public sbyte ItemCreationContext;
|
||||||
public byte OrderIndex;
|
public byte OrderIndex;
|
||||||
public int PVal;
|
public int PVal;
|
||||||
public int LabelID;
|
public int LabelID;
|
||||||
@@ -329,7 +329,7 @@ namespace Game.DataStorage
|
|||||||
public ushort RequiredSkillRank;
|
public ushort RequiredSkillRank;
|
||||||
public uint RequiredAbility;
|
public uint RequiredAbility;
|
||||||
public ushort ItemLevel;
|
public ushort ItemLevel;
|
||||||
public int[] Flags = new int[4];
|
public int[] Flags = new int[5];
|
||||||
}
|
}
|
||||||
|
|
||||||
public sealed class ItemSetRecord
|
public sealed class ItemSetRecord
|
||||||
@@ -373,6 +373,7 @@ namespace Game.DataStorage
|
|||||||
public float ItemRange;
|
public float ItemRange;
|
||||||
public float[] StatPercentageOfSocket = new float[ItemConst.MaxStats];
|
public float[] StatPercentageOfSocket = new float[ItemConst.MaxStats];
|
||||||
public int[] StatPercentEditor = new int[ItemConst.MaxStats];
|
public int[] StatPercentEditor = new int[ItemConst.MaxStats];
|
||||||
|
public int[] StatModifierBonusStat = new int[ItemConst.MaxStats];
|
||||||
public uint Stackable;
|
public uint Stackable;
|
||||||
public uint MaxCount;
|
public uint MaxCount;
|
||||||
public uint MinReputation;
|
public uint MinReputation;
|
||||||
@@ -382,7 +383,7 @@ namespace Game.DataStorage
|
|||||||
public uint VendorStackCount;
|
public uint VendorStackCount;
|
||||||
public float PriceVariance;
|
public float PriceVariance;
|
||||||
public float PriceRandomValue;
|
public float PriceRandomValue;
|
||||||
public int[] Flags = new int[4];
|
public int[] Flags = new int[5];
|
||||||
public uint FactionRelated;
|
public uint FactionRelated;
|
||||||
public int ModifiedCraftingReagentItemID;
|
public int ModifiedCraftingReagentItemID;
|
||||||
public uint ContentTuningID;
|
public uint ContentTuningID;
|
||||||
@@ -413,7 +414,6 @@ namespace Game.DataStorage
|
|||||||
public byte PageMaterialID;
|
public byte PageMaterialID;
|
||||||
public byte Bonding;
|
public byte Bonding;
|
||||||
public byte DamageType;
|
public byte DamageType;
|
||||||
public sbyte[] StatModifierBonusStat = new sbyte[ItemConst.MaxStats];
|
|
||||||
public byte ContainerSlots;
|
public byte ContainerSlots;
|
||||||
public byte RequiredPVPMedal;
|
public byte RequiredPVPMedal;
|
||||||
public byte RequiredPVPRank;
|
public byte RequiredPVPRank;
|
||||||
|
|||||||
@@ -59,6 +59,7 @@ namespace Game.DataStorage
|
|||||||
{
|
{
|
||||||
public uint Id;
|
public uint Id;
|
||||||
public LocalizedString Name;
|
public LocalizedString Name;
|
||||||
|
public int Expansion;
|
||||||
public int PlayerConditionID;
|
public int PlayerConditionID;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ namespace Game.DataStorage
|
|||||||
public int ZmpFileDataID;
|
public int ZmpFileDataID;
|
||||||
public int WdtFileDataID;
|
public int WdtFileDataID;
|
||||||
public int NavigationMaxDistance;
|
public int NavigationMaxDistance;
|
||||||
|
public int PreloadFileDataID;
|
||||||
public uint[] Flags = new uint[3];
|
public uint[] Flags = new uint[3];
|
||||||
|
|
||||||
// Helpers
|
// Helpers
|
||||||
@@ -127,7 +128,7 @@ namespace Game.DataStorage
|
|||||||
public int LockID;
|
public int LockID;
|
||||||
public MapDifficultyResetInterval ResetInterval;
|
public MapDifficultyResetInterval ResetInterval;
|
||||||
public uint MaxPlayers;
|
public uint MaxPlayers;
|
||||||
public int ItemContext;
|
public byte ItemContext;
|
||||||
public uint ItemContextPickerID;
|
public uint ItemContextPickerID;
|
||||||
public int Flags;
|
public int Flags;
|
||||||
public int ContentTuningID;
|
public int ContentTuningID;
|
||||||
@@ -227,6 +228,7 @@ namespace Game.DataStorage
|
|||||||
public uint Id;
|
public uint Id;
|
||||||
public uint CreatureDisplayInfoID;
|
public uint CreatureDisplayInfoID;
|
||||||
public uint PlayerConditionID;
|
public uint PlayerConditionID;
|
||||||
|
public ushort Unknown1100;
|
||||||
public uint MountID;
|
public uint MountID;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -244,6 +246,7 @@ namespace Game.DataStorage
|
|||||||
{
|
{
|
||||||
public uint Id;
|
public uint Id;
|
||||||
public int MilestoneSeason;
|
public int MilestoneSeason;
|
||||||
|
public int StartTimeEvent;
|
||||||
public int ExpansionLevel;
|
public int ExpansionLevel;
|
||||||
public int HeroicLFGDungeonMinGear;
|
public int HeroicLFGDungeonMinGear;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -106,7 +106,7 @@ namespace Game.DataStorage
|
|||||||
public sbyte ChrSpecializationRole;
|
public sbyte ChrSpecializationRole;
|
||||||
public uint ModifierTreeID;
|
public uint ModifierTreeID;
|
||||||
public sbyte PowerType;
|
public sbyte PowerType;
|
||||||
public byte PowerTypeComp;
|
public sbyte PowerTypeComp;
|
||||||
public byte PowerTypeValue;
|
public byte PowerTypeValue;
|
||||||
public int WeaponSubclassMask;
|
public int WeaponSubclassMask;
|
||||||
public byte MaxGuildLevel;
|
public byte MaxGuildLevel;
|
||||||
@@ -151,7 +151,7 @@ namespace Game.DataStorage
|
|||||||
{
|
{
|
||||||
public uint Id;
|
public uint Id;
|
||||||
public string GlobalStringBaseTag;
|
public string GlobalStringBaseTag;
|
||||||
public byte ActualType;
|
public sbyte ActualType;
|
||||||
public byte Red;
|
public byte Red;
|
||||||
public byte Green;
|
public byte Green;
|
||||||
public byte Blue;
|
public byte Blue;
|
||||||
@@ -171,9 +171,9 @@ namespace Game.DataStorage
|
|||||||
public int RegenInterruptTimeMS;
|
public int RegenInterruptTimeMS;
|
||||||
public float RegenPeace;
|
public float RegenPeace;
|
||||||
public float RegenCombat;
|
public float RegenCombat;
|
||||||
public short Flags;
|
public int Flags;
|
||||||
|
|
||||||
public bool HasFlag(PowerTypeFlags powerTypeFlags) { return (Flags & (short)powerTypeFlags) != 0; }
|
public bool HasFlag(PowerTypeFlags powerTypeFlags) { return (Flags & (int)powerTypeFlags) != 0; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public sealed class PrestigeLevelInfoRecord
|
public sealed class PrestigeLevelInfoRecord
|
||||||
|
|||||||
@@ -19,9 +19,9 @@ namespace Game.DataStorage
|
|||||||
|
|
||||||
public sealed class ScenarioStepRecord
|
public sealed class ScenarioStepRecord
|
||||||
{
|
{
|
||||||
public uint Id;
|
|
||||||
public string Description;
|
public string Description;
|
||||||
public string Title;
|
public string Title;
|
||||||
|
public uint Id;
|
||||||
public ushort ScenarioID;
|
public ushort ScenarioID;
|
||||||
public uint CriteriaTreeId;
|
public uint CriteriaTreeId;
|
||||||
public uint RewardQuestID;
|
public uint RewardQuestID;
|
||||||
@@ -88,7 +88,7 @@ namespace Game.DataStorage
|
|||||||
public sbyte CanLink;
|
public sbyte CanLink;
|
||||||
public uint ParentSkillLineID;
|
public uint ParentSkillLineID;
|
||||||
public int ParentTierIndex;
|
public int ParentTierIndex;
|
||||||
public ushort Flags;
|
public int Flags;
|
||||||
public int SpellBookSpellID;
|
public int SpellBookSpellID;
|
||||||
public int ExpansionNameSharedStringID;
|
public int ExpansionNameSharedStringID;
|
||||||
public int HordeExpansionNameSharedStringID;
|
public int HordeExpansionNameSharedStringID;
|
||||||
@@ -133,8 +133,8 @@ namespace Game.DataStorage
|
|||||||
public long RaceMask;
|
public long RaceMask;
|
||||||
public ushort SkillID;
|
public ushort SkillID;
|
||||||
public int ClassMask;
|
public int ClassMask;
|
||||||
public ushort Flags;
|
public int Flags;
|
||||||
public sbyte Availability;
|
public int Availability;
|
||||||
public sbyte MinLevel;
|
public sbyte MinLevel;
|
||||||
public ushort SkillTierID;
|
public ushort SkillTierID;
|
||||||
|
|
||||||
@@ -374,6 +374,7 @@ namespace Game.DataStorage
|
|||||||
public string HordeName;
|
public string HordeName;
|
||||||
public int Duration;
|
public int Duration;
|
||||||
public uint[] EffectArg = new uint[ItemConst.MaxItemEnchantmentEffects];
|
public uint[] EffectArg = new uint[ItemConst.MaxItemEnchantmentEffects];
|
||||||
|
public int Flags;
|
||||||
public float[] EffectScalingPoints = new float[ItemConst.MaxItemEnchantmentEffects];
|
public float[] EffectScalingPoints = new float[ItemConst.MaxItemEnchantmentEffects];
|
||||||
public uint IconFileDataID;
|
public uint IconFileDataID;
|
||||||
public int MinItemLevel;
|
public int MinItemLevel;
|
||||||
@@ -382,7 +383,6 @@ namespace Game.DataStorage
|
|||||||
public uint TransmogCost;
|
public uint TransmogCost;
|
||||||
public ushort[] EffectPointsMin = new ushort[ItemConst.MaxItemEnchantmentEffects];
|
public ushort[] EffectPointsMin = new ushort[ItemConst.MaxItemEnchantmentEffects];
|
||||||
public ushort ItemVisual;
|
public ushort ItemVisual;
|
||||||
public ushort Flags;
|
|
||||||
public ushort RequiredSkillID;
|
public ushort RequiredSkillID;
|
||||||
public ushort RequiredSkillRank;
|
public ushort RequiredSkillRank;
|
||||||
public ushort ItemLevel;
|
public ushort ItemLevel;
|
||||||
@@ -450,6 +450,7 @@ namespace Game.DataStorage
|
|||||||
public byte DifficultyID;
|
public byte DifficultyID;
|
||||||
public ushort CastingTimeIndex;
|
public ushort CastingTimeIndex;
|
||||||
public ushort DurationIndex;
|
public ushort DurationIndex;
|
||||||
|
public ushort PvPDurationIndex;
|
||||||
public ushort RangeIndex;
|
public ushort RangeIndex;
|
||||||
public byte SchoolMask;
|
public byte SchoolMask;
|
||||||
public float Speed;
|
public float Speed;
|
||||||
@@ -647,6 +648,17 @@ namespace Game.DataStorage
|
|||||||
public int DissolveEffectID;
|
public int DissolveEffectID;
|
||||||
public int ModelPosition;
|
public int ModelPosition;
|
||||||
public sbyte Unknown901;
|
public sbyte Unknown901;
|
||||||
|
public ushort Unknown1100;
|
||||||
|
}
|
||||||
|
|
||||||
|
public sealed class SpellVisualKitRecord
|
||||||
|
{
|
||||||
|
public uint ID;
|
||||||
|
public int ClutterLevel;
|
||||||
|
public int FallbackSpellVisualKitId;
|
||||||
|
public ushort DelayMin;
|
||||||
|
public ushort DelayMax;
|
||||||
|
public int[] Flags = new int[2];
|
||||||
}
|
}
|
||||||
|
|
||||||
public sealed class SpellVisualMissileRecord
|
public sealed class SpellVisualMissileRecord
|
||||||
@@ -666,21 +678,12 @@ namespace Game.DataStorage
|
|||||||
public uint Flags;
|
public uint Flags;
|
||||||
public ushort SpellMissileMotionID;
|
public ushort SpellMissileMotionID;
|
||||||
public uint AnimKitID;
|
public uint AnimKitID;
|
||||||
public sbyte ClutterLevel;
|
public int ClutterLevel;
|
||||||
public int DecayTimeAfterImpact;
|
public int DecayTimeAfterImpact;
|
||||||
|
public ushort Unused1100;
|
||||||
public uint SpellVisualMissileSetID;
|
public uint SpellVisualMissileSetID;
|
||||||
}
|
}
|
||||||
|
|
||||||
public sealed class SpellVisualKitRecord
|
|
||||||
{
|
|
||||||
public uint Id;
|
|
||||||
public sbyte FallbackPriority;
|
|
||||||
public int FallbackSpellVisualKitId;
|
|
||||||
public ushort DelayMin;
|
|
||||||
public ushort DelayMax;
|
|
||||||
public int[] Flags = new int[2];
|
|
||||||
}
|
|
||||||
|
|
||||||
public sealed class SpellXSpellVisualRecord
|
public sealed class SpellXSpellVisualRecord
|
||||||
{
|
{
|
||||||
public uint Id;
|
public uint Id;
|
||||||
|
|||||||
@@ -125,6 +125,7 @@ namespace Game.DataStorage
|
|||||||
public int RequiredLevel;
|
public int RequiredLevel;
|
||||||
public int FreeSharedStringID;
|
public int FreeSharedStringID;
|
||||||
public int SpendMoreSharedStringID;
|
public int SpendMoreSharedStringID;
|
||||||
|
public int TraitCondAccountElementID;
|
||||||
|
|
||||||
public TraitConditionType GetCondType() { return (TraitConditionType)CondType; }
|
public TraitConditionType GetCondType() { return (TraitConditionType)CondType; }
|
||||||
}
|
}
|
||||||
@@ -199,8 +200,9 @@ namespace Game.DataStorage
|
|||||||
public int TraitTreeID;
|
public int TraitTreeID;
|
||||||
public int PosX;
|
public int PosX;
|
||||||
public int PosY;
|
public int PosY;
|
||||||
public sbyte Type;
|
public byte Type;
|
||||||
public int Flags;
|
public int Flags;
|
||||||
|
public int TraitSubTreeID;
|
||||||
|
|
||||||
public TraitNodeType GetNodeType() { return (TraitNodeType)Type; }
|
public TraitNodeType GetNodeType() { return (TraitNodeType)Type; }
|
||||||
}
|
}
|
||||||
@@ -211,6 +213,7 @@ namespace Game.DataStorage
|
|||||||
public int TraitDefinitionID;
|
public int TraitDefinitionID;
|
||||||
public int MaxRanks;
|
public int MaxRanks;
|
||||||
public byte NodeEntryType;
|
public byte NodeEntryType;
|
||||||
|
public int TraitSubTreeID;
|
||||||
|
|
||||||
public TraitNodeEntryType GetNodeEntryType() { return (TraitNodeEntryType)NodeEntryType; }
|
public TraitNodeEntryType GetNodeEntryType() { return (TraitNodeEntryType)NodeEntryType; }
|
||||||
}
|
}
|
||||||
@@ -219,7 +222,7 @@ namespace Game.DataStorage
|
|||||||
{
|
{
|
||||||
public uint Id;
|
public uint Id;
|
||||||
public int TraitCondID;
|
public int TraitCondID;
|
||||||
public uint TraitNodeEntryID;
|
public int TraitNodeEntryID;
|
||||||
}
|
}
|
||||||
|
|
||||||
public sealed class TraitNodeEntryXTraitCostRecord
|
public sealed class TraitNodeEntryXTraitCostRecord
|
||||||
@@ -342,15 +345,15 @@ namespace Game.DataStorage
|
|||||||
public string Name;
|
public string Name;
|
||||||
public uint Id;
|
public uint Id;
|
||||||
public int ClassMask;
|
public int ClassMask;
|
||||||
public uint TrackingQuestID;
|
public int TrackingQuestID;
|
||||||
public int Flags;
|
public int Flags;
|
||||||
public uint TransmogSetGroupID;
|
public uint TransmogSetGroupID;
|
||||||
public int ItemNameDescriptionID;
|
public int ItemNameDescriptionID;
|
||||||
public ushort ParentTransmogSetID;
|
public int ParentTransmogSetID;
|
||||||
public byte Unknown810;
|
public int Unknown810;
|
||||||
public byte ExpansionID;
|
public int ExpansionID;
|
||||||
public int PatchID;
|
public int PatchID;
|
||||||
public short UiOrder;
|
public int UiOrder;
|
||||||
public uint PlayerConditionID;
|
public uint PlayerConditionID;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ namespace Game.DataStorage
|
|||||||
public int BkgAtlasID;
|
public int BkgAtlasID;
|
||||||
public int AlternateUiMapGroup;
|
public int AlternateUiMapGroup;
|
||||||
public int ContentTuningID;
|
public int ContentTuningID;
|
||||||
|
public int AdventureMapTextureKitID;
|
||||||
|
|
||||||
public bool HasFlag(UiMapFlag uiMapFlag) { return (Flags & (int)uiMapFlag) != 0; }
|
public bool HasFlag(UiMapFlag uiMapFlag) { return (Flags & (int)uiMapFlag) != 0; }
|
||||||
}
|
}
|
||||||
@@ -85,9 +86,9 @@ namespace Game.DataStorage
|
|||||||
public sealed class UnitConditionRecord
|
public sealed class UnitConditionRecord
|
||||||
{
|
{
|
||||||
public uint Id;
|
public uint Id;
|
||||||
public byte Flags;
|
public int Flags;
|
||||||
public byte[] Variable = new byte[8];
|
public byte[] Variable = new byte[8];
|
||||||
public sbyte[] Op = new sbyte[8];
|
public byte[] Op = new byte[8];
|
||||||
public int[] Value = new int[8];
|
public int[] Value = new int[8];
|
||||||
|
|
||||||
public bool HasFlag(UnitConditionFlags unitConditionFlags) { return (Flags & (byte)unitConditionFlags) != 0; }
|
public bool HasFlag(UnitConditionFlags unitConditionFlags) { return (Flags & (byte)unitConditionFlags) != 0; }
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ namespace Game.DataStorage
|
|||||||
public int Flags;
|
public int Flags;
|
||||||
public int FlagsB;
|
public int FlagsB;
|
||||||
public int FlagsC;
|
public int FlagsC;
|
||||||
public sbyte AttachmentID;
|
public int AttachmentID;
|
||||||
public float EnterPreDelay;
|
public float EnterPreDelay;
|
||||||
public float EnterSpeed;
|
public float EnterSpeed;
|
||||||
public float EnterGravity;
|
public float EnterGravity;
|
||||||
@@ -48,12 +48,12 @@ namespace Game.DataStorage
|
|||||||
public float EnterMaxDuration;
|
public float EnterMaxDuration;
|
||||||
public float EnterMinArcHeight;
|
public float EnterMinArcHeight;
|
||||||
public float EnterMaxArcHeight;
|
public float EnterMaxArcHeight;
|
||||||
public int EnterAnimStart;
|
public short EnterAnimStart;
|
||||||
public int EnterAnimLoop;
|
public short EnterAnimLoop;
|
||||||
public int RideAnimStart;
|
public short RideAnimStart;
|
||||||
public int RideAnimLoop;
|
public short RideAnimLoop;
|
||||||
public int RideUpperAnimStart;
|
public short RideUpperAnimStart;
|
||||||
public int RideUpperAnimLoop;
|
public short RideUpperAnimLoop;
|
||||||
public float ExitPreDelay;
|
public float ExitPreDelay;
|
||||||
public float ExitSpeed;
|
public float ExitSpeed;
|
||||||
public float ExitGravity;
|
public float ExitGravity;
|
||||||
@@ -61,9 +61,9 @@ namespace Game.DataStorage
|
|||||||
public float ExitMaxDuration;
|
public float ExitMaxDuration;
|
||||||
public float ExitMinArcHeight;
|
public float ExitMinArcHeight;
|
||||||
public float ExitMaxArcHeight;
|
public float ExitMaxArcHeight;
|
||||||
public int ExitAnimStart;
|
public short ExitAnimStart;
|
||||||
public int ExitAnimLoop;
|
public short ExitAnimLoop;
|
||||||
public int ExitAnimEnd;
|
public short ExitAnimEnd;
|
||||||
public short VehicleEnterAnim;
|
public short VehicleEnterAnim;
|
||||||
public sbyte VehicleEnterAnimBone;
|
public sbyte VehicleEnterAnimBone;
|
||||||
public short VehicleExitAnim;
|
public short VehicleExitAnim;
|
||||||
|
|||||||
@@ -163,82 +163,35 @@ namespace Game.Entities
|
|||||||
|
|
||||||
public static uint GetBonusTreeIdOverride(uint itemBonusTreeId, ItemBonusGenerationParams generationParams)
|
public static uint GetBonusTreeIdOverride(uint itemBonusTreeId, ItemBonusGenerationParams generationParams)
|
||||||
{
|
{
|
||||||
// TODO: configure seasons globally
|
List<int> passedTimeEvents = new(); // sorted by date TODO: configure globally
|
||||||
var mythicPlusSeason = CliDB.MythicPlusSeasonStorage.LookupByKey(0);
|
|
||||||
if (mythicPlusSeason != null)
|
if (!passedTimeEvents.Empty())
|
||||||
{
|
{
|
||||||
int selectedLevel = -1;
|
int selectedLevel = -1;
|
||||||
int selectedMilestoneSeason = -1;
|
int selectedMilestoneSeason = -1;
|
||||||
ChallengeModeItemBonusOverrideRecord selectedItemBonusOverride = null;
|
ChallengeModeItemBonusOverrideRecord selectedItemBonusOverride = null;
|
||||||
foreach (var itemBonusOverride in _challengeModeItemBonusOverrides.LookupByKey(itemBonusTreeId))
|
foreach (var itemBonusOverride in _challengeModeItemBonusOverrides.LookupByKey(itemBonusTreeId))
|
||||||
{
|
{
|
||||||
if (itemBonusOverride.Type != 0)
|
if (generationParams.MythicPlusKeystoneLevel != 0 && itemBonusOverride.Value > generationParams.MythicPlusKeystoneLevel)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (itemBonusOverride.Value > generationParams.MythicPlusKeystoneLevel.GetValueOrDefault(-1))
|
if (generationParams.PvpTier != 0 && itemBonusOverride.Value > generationParams.PvpTier)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (itemBonusOverride.MythicPlusSeasonID != 0)
|
if (itemBonusOverride.RequiredTimeEventPassed != 0)
|
||||||
{
|
{
|
||||||
var overrideSeason = CliDB.MythicPlusSeasonStorage.LookupByKey(itemBonusOverride.MythicPlusSeasonID);
|
var overrideMilestoneSeason = passedTimeEvents.IndexOf(itemBonusOverride.RequiredTimeEventPassed);
|
||||||
if (overrideSeason == null)
|
if (overrideMilestoneSeason == -1)
|
||||||
continue;
|
continue; // season not started yet
|
||||||
|
|
||||||
if (mythicPlusSeason.MilestoneSeason < overrideSeason.MilestoneSeason)
|
if (selectedMilestoneSeason > overrideMilestoneSeason)
|
||||||
continue;
|
continue; // older season that what was selected
|
||||||
|
|
||||||
if (selectedMilestoneSeason > overrideSeason.MilestoneSeason)
|
if (selectedMilestoneSeason == overrideMilestoneSeason)
|
||||||
continue;
|
|
||||||
|
|
||||||
if (selectedMilestoneSeason == overrideSeason.MilestoneSeason)
|
|
||||||
if (selectedLevel > itemBonusOverride.Value)
|
if (selectedLevel > itemBonusOverride.Value)
|
||||||
continue;
|
continue; // lower level in current season than what was already found
|
||||||
|
|
||||||
selectedMilestoneSeason = overrideSeason.MilestoneSeason;
|
selectedMilestoneSeason = overrideMilestoneSeason;
|
||||||
}
|
|
||||||
else if (selectedLevel > itemBonusOverride.Value)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
selectedLevel = itemBonusOverride.Value;
|
|
||||||
selectedItemBonusOverride = itemBonusOverride;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (selectedItemBonusOverride != null && selectedItemBonusOverride.DstItemBonusTreeID != 0)
|
|
||||||
itemBonusTreeId = (uint)selectedItemBonusOverride.DstItemBonusTreeID;
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: configure seasons globally
|
|
||||||
var pvpSeason = CliDB.PvpSeasonStorage.LookupByKey(0);
|
|
||||||
if (pvpSeason != null)
|
|
||||||
{
|
|
||||||
int selectedLevel = -1;
|
|
||||||
int selectedMilestoneSeason = -1;
|
|
||||||
ChallengeModeItemBonusOverrideRecord selectedItemBonusOverride = null;
|
|
||||||
foreach (var itemBonusOverride in _challengeModeItemBonusOverrides.LookupByKey(itemBonusTreeId))
|
|
||||||
{
|
|
||||||
if (itemBonusOverride.Type != 1)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (itemBonusOverride.Value > generationParams.PvpTier.GetValueOrDefault(-1))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (itemBonusOverride.PvPSeasonID != 0)
|
|
||||||
{
|
|
||||||
var overrideSeason = CliDB.PvpSeasonStorage.LookupByKey(itemBonusOverride.PvPSeasonID);
|
|
||||||
if (overrideSeason == null)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (pvpSeason.MilestoneSeason < overrideSeason.MilestoneSeason)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (selectedMilestoneSeason > overrideSeason.MilestoneSeason)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (selectedMilestoneSeason == overrideSeason.MilestoneSeason)
|
|
||||||
if (selectedLevel > itemBonusOverride.Value)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
selectedMilestoneSeason = overrideSeason.MilestoneSeason;
|
|
||||||
}
|
}
|
||||||
else if (selectedLevel > itemBonusOverride.Value)
|
else if (selectedLevel > itemBonusOverride.Value)
|
||||||
continue;
|
continue;
|
||||||
|
|||||||
@@ -1445,7 +1445,11 @@ namespace Game.Entities
|
|||||||
playerCurrency.EarnedQuantity += (uint)amount;
|
playerCurrency.EarnedQuantity += (uint)amount;
|
||||||
|
|
||||||
if (!isGainOnRefund)
|
if (!isGainOnRefund)
|
||||||
|
{
|
||||||
UpdateCriteria(CriteriaType.CurrencyGained, id, (ulong)amount);
|
UpdateCriteria(CriteriaType.CurrencyGained, id, (ulong)amount);
|
||||||
|
if (gainSource == CurrencyGainSource.RenownRepGain)
|
||||||
|
UpdateCriteria(CriteriaType.ReachRenownLevel, id, playerCurrency.Quantity);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CurrencyChanged(id, amount);
|
CurrencyChanged(id, amount);
|
||||||
@@ -6514,6 +6518,8 @@ namespace Game.Entities
|
|||||||
XP = Math.Max(minScaledXP, XP);
|
XP = Math.Max(minScaledXP, XP);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
XP += (uint)(XP * GetTotalAuraMultiplier(AuraType.ModExplorationExperience));
|
||||||
|
|
||||||
GiveXP(XP, null);
|
GiveXP(XP, null);
|
||||||
SendExplorationExperience(areaId, XP);
|
SendExplorationExperience(areaId, XP);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1294,7 +1294,10 @@ namespace Game.Entities
|
|||||||
// 30% damage blocked, double blocked amount if block is critical
|
// 30% damage blocked, double blocked amount if block is critical
|
||||||
damageInfo.Blocked = MathFunctions.CalculatePct(damageInfo.Damage, damageInfo.Target.GetBlockPercent(GetLevel()));
|
damageInfo.Blocked = MathFunctions.CalculatePct(damageInfo.Damage, damageInfo.Target.GetBlockPercent(GetLevel()));
|
||||||
if (damageInfo.Target.IsBlockCritical())
|
if (damageInfo.Target.IsBlockCritical())
|
||||||
|
{
|
||||||
damageInfo.Blocked *= 2;
|
damageInfo.Blocked *= 2;
|
||||||
|
damageInfo.Blocked *= (uint)GetTotalAuraMultiplier(AuraType.ModCriticalBlockAmount);
|
||||||
|
}
|
||||||
|
|
||||||
damageInfo.OriginalDamage = damageInfo.Damage;
|
damageInfo.OriginalDamage = damageInfo.Damage;
|
||||||
damageInfo.Damage -= damageInfo.Blocked;
|
damageInfo.Damage -= damageInfo.Blocked;
|
||||||
|
|||||||
@@ -293,6 +293,8 @@ namespace Game.Entities
|
|||||||
// multiplicative bonus, for example Dispersion + Shadowform (0.10*0.85=0.085)
|
// multiplicative bonus, for example Dispersion + Shadowform (0.10*0.85=0.085)
|
||||||
TakenTotalMod *= GetTotalAuraMultiplierByMiscMask(AuraType.ModDamagePercentTaken, (uint)spellProto.GetSchoolMask());
|
TakenTotalMod *= GetTotalAuraMultiplierByMiscMask(AuraType.ModDamagePercentTaken, (uint)spellProto.GetSchoolMask());
|
||||||
|
|
||||||
|
TakenTotalMod *= GetTotalAuraMultiplier(AuraType.ModDamageTakenByLabel, aurEff => spellProto.HasLabel((uint)aurEff.GetMiscValue()));
|
||||||
|
|
||||||
// From caster spells
|
// From caster spells
|
||||||
if (caster != null)
|
if (caster != null)
|
||||||
{
|
{
|
||||||
@@ -306,7 +308,7 @@ namespace Game.Entities
|
|||||||
return aurEff.GetCasterGUID() == caster.GetGUID() && aurEff.IsAffectingSpell(spellProto);
|
return aurEff.GetCasterGUID() == caster.GetGUID() && aurEff.IsAffectingSpell(spellProto);
|
||||||
});
|
});
|
||||||
|
|
||||||
TakenTotalMod *= GetTotalAuraMultiplier(AuraType.ModDamageTakenFromCasterByLabel, aurEff =>
|
TakenTotalMod *= GetTotalAuraMultiplier(AuraType.ModSpellDamageFromCasterByLabel, aurEff =>
|
||||||
{
|
{
|
||||||
return aurEff.GetCasterGUID() == caster.GetGUID() && spellProto.HasLabel((uint)aurEff.GetMiscValue());
|
return aurEff.GetCasterGUID() == caster.GetGUID() && spellProto.HasLabel((uint)aurEff.GetMiscValue());
|
||||||
});
|
});
|
||||||
@@ -2182,7 +2184,10 @@ namespace Game.Entities
|
|||||||
// double blocked amount if block is critical
|
// double blocked amount if block is critical
|
||||||
float value = victim.GetBlockPercent(GetLevel());
|
float value = victim.GetBlockPercent(GetLevel());
|
||||||
if (victim.IsBlockCritical())
|
if (victim.IsBlockCritical())
|
||||||
|
{
|
||||||
value *= 2; // double blocked percent
|
value *= 2; // double blocked percent
|
||||||
|
value *= GetTotalAuraMultiplier(AuraType.ModCriticalBlockAmount);
|
||||||
|
}
|
||||||
damageInfo.blocked = (uint)MathFunctions.CalculatePct(damage, value);
|
damageInfo.blocked = (uint)MathFunctions.CalculatePct(damage, value);
|
||||||
if (damage <= damageInfo.blocked)
|
if (damage <= damageInfo.blocked)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -262,7 +262,7 @@ namespace Game.Entities
|
|||||||
|
|
||||||
var emotesEntry = CliDB.EmotesStorage.LookupByKey(emoteId);
|
var emotesEntry = CliDB.EmotesStorage.LookupByKey(emoteId);
|
||||||
if (emotesEntry != null && spellVisualKitIds != null)
|
if (emotesEntry != null && spellVisualKitIds != null)
|
||||||
if (emotesEntry.AnimId == (uint)Anim.MountSpecial || emotesEntry.AnimId == (uint)Anim.MountSelfSpecial)
|
if (emotesEntry.AnimID == (uint)Anim.MountSpecial || emotesEntry.AnimID == (uint)Anim.MountSelfSpecial)
|
||||||
packet.SpellVisualKitIDs.AddRange(spellVisualKitIds);
|
packet.SpellVisualKitIDs.AddRange(spellVisualKitIds);
|
||||||
|
|
||||||
packet.SequenceVariation = sequenceVariation;
|
packet.SequenceVariation = sequenceVariation;
|
||||||
|
|||||||
@@ -253,7 +253,7 @@ namespace Game.Garrisons
|
|||||||
Plot plotInfo = _plots[garrPlotInstanceId];
|
Plot plotInfo = _plots[garrPlotInstanceId];
|
||||||
plotInfo.PacketInfo.GarrPlotInstanceID = garrPlotInstanceId;
|
plotInfo.PacketInfo.GarrPlotInstanceID = garrPlotInstanceId;
|
||||||
plotInfo.PacketInfo.PlotPos.Relocate(gameObject.Pos.X, gameObject.Pos.Y, gameObject.Pos.Z, 2 * (float)Math.Acos(gameObject.Rot[3]));
|
plotInfo.PacketInfo.PlotPos.Relocate(gameObject.Pos.X, gameObject.Pos.Y, gameObject.Pos.Z, 2 * (float)Math.Acos(gameObject.Rot[3]));
|
||||||
plotInfo.PacketInfo.PlotType = plot.PlotType;
|
plotInfo.PacketInfo.PlotType = (byte)plot.PlotType;
|
||||||
plotInfo.Rotation = new Quaternion(gameObject.Rot[0], gameObject.Rot[1], gameObject.Rot[2], gameObject.Rot[3]);
|
plotInfo.Rotation = new Quaternion(gameObject.Rot[0], gameObject.Rot[1], gameObject.Rot[2], gameObject.Rot[3]);
|
||||||
plotInfo.EmptyGameObjectId = gameObject.Id;
|
plotInfo.EmptyGameObjectId = gameObject.Id;
|
||||||
plotInfo.GarrSiteLevelPlotInstId = plots[i].Id;
|
plotInfo.GarrSiteLevelPlotInstId = plots[i].Id;
|
||||||
|
|||||||
@@ -1187,7 +1187,7 @@ namespace Game.Groups
|
|||||||
if (reference == null)
|
if (reference == null)
|
||||||
return GroupJoinBattlegroundResult.BattlegroundJoinFailed;
|
return GroupJoinBattlegroundResult.BattlegroundJoinFailed;
|
||||||
|
|
||||||
PvpDifficultyRecord bracketEntry = Global.DB2Mgr.GetBattlegroundBracketByLevel((uint)bgOrTemplate.BattlemasterEntry.MapId[0], reference.GetLevel());
|
PvpDifficultyRecord bracketEntry = Global.DB2Mgr.GetBattlegroundBracketByLevel((uint)bgOrTemplate.MapIDs[0], reference.GetLevel());
|
||||||
if (bracketEntry == null)
|
if (bracketEntry == null)
|
||||||
return GroupJoinBattlegroundResult.BattlegroundJoinFailed;
|
return GroupJoinBattlegroundResult.BattlegroundJoinFailed;
|
||||||
|
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ namespace Game
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
// expected bracket entry
|
// expected bracket entry
|
||||||
PvpDifficultyRecord bracketEntry = Global.DB2Mgr.GetBattlegroundBracketByLevel((uint)bgTemplate.BattlemasterEntry.MapId[0], GetPlayer().GetLevel());
|
PvpDifficultyRecord bracketEntry = Global.DB2Mgr.GetBattlegroundBracketByLevel((uint)bgTemplate.MapIDs[0], GetPlayer().GetLevel());
|
||||||
if (bracketEntry == null)
|
if (bracketEntry == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -295,7 +295,7 @@ namespace Game
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint mapId = (uint)bgTemplate.BattlemasterEntry.MapId[0];
|
uint mapId = (uint)bgTemplate.MapIDs[0];
|
||||||
|
|
||||||
// BGTemplateId returns Battleground_AA when it is arena queue.
|
// BGTemplateId returns Battleground_AA when it is arena queue.
|
||||||
// Do instance id search as there is no AA bg instances.
|
// Do instance id search as there is no AA bg instances.
|
||||||
@@ -469,7 +469,7 @@ namespace Game
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
// expected bracket entry
|
// expected bracket entry
|
||||||
PvpDifficultyRecord bracketEntry = Global.DB2Mgr.GetBattlegroundBracketByLevel((uint)bgTemplate.BattlemasterEntry.MapId[0], _player.GetLevel());
|
PvpDifficultyRecord bracketEntry = Global.DB2Mgr.GetBattlegroundBracketByLevel((uint)bgTemplate.MapIDs[0], _player.GetLevel());
|
||||||
if (bracketEntry == null)
|
if (bracketEntry == null)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
@@ -506,7 +506,7 @@ namespace Game
|
|||||||
|
|
||||||
BattlegroundTypeId bgTypeId = bgTemplate.Id;
|
BattlegroundTypeId bgTypeId = bgTemplate.Id;
|
||||||
BattlegroundQueueTypeId bgQueueTypeId = Global.BattlegroundMgr.BGQueueTypeId((ushort)bgTypeId, BattlegroundQueueIdType.Arena, true, arenatype);
|
BattlegroundQueueTypeId bgQueueTypeId = Global.BattlegroundMgr.BGQueueTypeId((ushort)bgTypeId, BattlegroundQueueIdType.Arena, true, arenatype);
|
||||||
PvpDifficultyRecord bracketEntry = Global.DB2Mgr.GetBattlegroundBracketByLevel((uint)bgTemplate.BattlemasterEntry.MapId[0], _player.GetLevel());
|
PvpDifficultyRecord bracketEntry = Global.DB2Mgr.GetBattlegroundBracketByLevel((uint)bgTemplate.MapIDs[0], _player.GetLevel());
|
||||||
if (bracketEntry == null)
|
if (bracketEntry == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|||||||
@@ -4743,6 +4743,24 @@ namespace Game.Spells
|
|||||||
new StaticData(SpellEffectImplicitTargetTypes.Explicit, SpellTargetObjectTypes.Item), // 313 SPELL_EFFECT_CHANGE_ITEM_BONUSES_2
|
new StaticData(SpellEffectImplicitTargetTypes.Explicit, SpellTargetObjectTypes.Item), // 313 SPELL_EFFECT_CHANGE_ITEM_BONUSES_2
|
||||||
new StaticData(SpellEffectImplicitTargetTypes.None, SpellTargetObjectTypes.None), // 314 SPELL_EFFECT_ADD_SOCKET_BONUS
|
new StaticData(SpellEffectImplicitTargetTypes.None, SpellTargetObjectTypes.None), // 314 SPELL_EFFECT_ADD_SOCKET_BONUS
|
||||||
new StaticData(SpellEffectImplicitTargetTypes.Caster, SpellTargetObjectTypes.Unit), // 315 SPELL_EFFECT_LEARN_TRANSMOG_APPEARANCE_FROM_ITEM_MOD_APPEARANCE_GROUP
|
new StaticData(SpellEffectImplicitTargetTypes.Caster, SpellTargetObjectTypes.Unit), // 315 SPELL_EFFECT_LEARN_TRANSMOG_APPEARANCE_FROM_ITEM_MOD_APPEARANCE_GROUP
|
||||||
|
new StaticData(SpellEffectImplicitTargetTypes.Explicit, SpellTargetObjectTypes.Unit), // 316 SPELL_EFFECT_KILL_CREDIT_LABEL_1
|
||||||
|
new StaticData(SpellEffectImplicitTargetTypes.Explicit, SpellTargetObjectTypes.Unit), // 317 SPELL_EFFECT_KILL_CREDIT_LABEL_2
|
||||||
|
new StaticData(SpellEffectImplicitTargetTypes.None, SpellTargetObjectTypes.None), // 318 SPELL_EFFECT_318
|
||||||
|
new StaticData(SpellEffectImplicitTargetTypes.None, SpellTargetObjectTypes.None), // 319 SPELL_EFFECT_319
|
||||||
|
new StaticData(SpellEffectImplicitTargetTypes.None, SpellTargetObjectTypes.None), // 320 SPELL_EFFECT_320
|
||||||
|
new StaticData(SpellEffectImplicitTargetTypes.None, SpellTargetObjectTypes.None), // 321 SPELL_EFFECT_321
|
||||||
|
new StaticData(SpellEffectImplicitTargetTypes.None, SpellTargetObjectTypes.None), // 322 SPELL_EFFECT_322
|
||||||
|
new StaticData(SpellEffectImplicitTargetTypes.None, SpellTargetObjectTypes.None), // 323 SPELL_EFFECT_323
|
||||||
|
new StaticData(SpellEffectImplicitTargetTypes.None, SpellTargetObjectTypes.None), // 324 SPELL_EFFECT_324
|
||||||
|
new StaticData(SpellEffectImplicitTargetTypes.None, SpellTargetObjectTypes.None), // 325 SPELL_EFFECT_325
|
||||||
|
new StaticData(SpellEffectImplicitTargetTypes.None, SpellTargetObjectTypes.None), // 326 SPELL_EFFECT_326
|
||||||
|
new StaticData(SpellEffectImplicitTargetTypes.None, SpellTargetObjectTypes.None), // 327 SPELL_EFFECT_327
|
||||||
|
new StaticData(SpellEffectImplicitTargetTypes.None, SpellTargetObjectTypes.None), // 328 SPELL_EFFECT_328
|
||||||
|
new StaticData(SpellEffectImplicitTargetTypes.None, SpellTargetObjectTypes.None), // 329 SPELL_EFFECT_329
|
||||||
|
new StaticData(SpellEffectImplicitTargetTypes.None, SpellTargetObjectTypes.None), // 330 SPELL_EFFECT_330
|
||||||
|
new StaticData(SpellEffectImplicitTargetTypes.None, SpellTargetObjectTypes.None), // 331 SPELL_EFFECT_331
|
||||||
|
new StaticData(SpellEffectImplicitTargetTypes.None, SpellTargetObjectTypes.None), // 332 SPELL_EFFECT_332
|
||||||
|
new StaticData(SpellEffectImplicitTargetTypes.None, SpellTargetObjectTypes.None), // 333 SPELL_EFFECT_333
|
||||||
};
|
};
|
||||||
|
|
||||||
#region Fields
|
#region Fields
|
||||||
|
|||||||
Reference in New Issue
Block a user