Core: Updated to 11.1.0
Port From (https://github.com/TrinityCore/TrinityCore/commit/23624ed75abc8cbb77bb2e24a08e0836e4c41db5)
This commit is contained in:
@@ -2031,6 +2031,7 @@ namespace Framework.Constants
|
|||||||
ForgeMaster = 66,
|
ForgeMaster = 66,
|
||||||
CharacterBanker = 67,
|
CharacterBanker = 67,
|
||||||
AccountBanker = 68,
|
AccountBanker = 68,
|
||||||
|
ProfessionRespec = 69,
|
||||||
}
|
}
|
||||||
|
|
||||||
[Flags]
|
[Flags]
|
||||||
|
|||||||
@@ -92,6 +92,7 @@ namespace Framework.Constants
|
|||||||
ForgeMaster = 55,
|
ForgeMaster = 55,
|
||||||
CharacterBanker = 56,
|
CharacterBanker = 56,
|
||||||
AccountBanker = 57,
|
AccountBanker = 57,
|
||||||
|
ProfessionRespec = 58,
|
||||||
|
|
||||||
Max
|
Max
|
||||||
}
|
}
|
||||||
@@ -168,7 +169,8 @@ namespace Framework.Constants
|
|||||||
{
|
{
|
||||||
None = 0x0,
|
None = 0x0,
|
||||||
QuestLabelPrepend = 0x1,
|
QuestLabelPrepend = 0x1,
|
||||||
HideOptionIDFromClient = 0x2
|
HideOptionIDFromClient = 0x2,
|
||||||
|
PlayMovieLabelPrepend = 0x4,
|
||||||
}
|
}
|
||||||
|
|
||||||
[Flags]
|
[Flags]
|
||||||
|
|||||||
@@ -467,6 +467,7 @@ namespace Framework.Constants
|
|||||||
TransmogSetFavorite = 4,
|
TransmogSetFavorite = 4,
|
||||||
RuneforgeLegendaryAbility = 5,
|
RuneforgeLegendaryAbility = 5,
|
||||||
TransmogIllusion = 6,
|
TransmogIllusion = 6,
|
||||||
|
WarbandScene = 7,
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum ItemContext : byte
|
public enum ItemContext : byte
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -119,12 +119,22 @@ namespace Framework.Constants
|
|||||||
|
|
||||||
public enum StableResult
|
public enum StableResult
|
||||||
{
|
{
|
||||||
|
MaxSlots = 0,
|
||||||
NotEnoughMoney = 1, // "you don't have enough money"
|
NotEnoughMoney = 1, // "you don't have enough money"
|
||||||
|
NotStableMaster = 2,
|
||||||
InvalidSlot = 3, // "That slot is locked"
|
InvalidSlot = 3, // "That slot is locked"
|
||||||
|
NoPet = 4,
|
||||||
|
AlreadyStabled = 5,
|
||||||
|
AlreadySummoned = 6,
|
||||||
|
NotFound = 7,
|
||||||
StableSuccess = 8, // stable success
|
StableSuccess = 8, // stable success
|
||||||
UnstableSuccess = 9, // unstable/swap success
|
UnstableSuccess = 9, // unstable/swap success
|
||||||
BuySlotSuccess = 10, // buy slot success
|
ReviveSuccess = 10,
|
||||||
CantControlExotic = 11, // "you are unable to control exotic creatures"
|
CantControlExotic = 11, // "you are unable to control exotic creatures"
|
||||||
InternalError = 12, // "Internal pet error"
|
InternalError = 12, // "Internal pet error"
|
||||||
|
CheckForLuaHack = 13,
|
||||||
|
BuySlotSuccess = 14,
|
||||||
|
FavoriteToggle = 15,
|
||||||
|
PetRenamed = 16
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1106
-1104
File diff suppressed because it is too large
Load Diff
@@ -775,7 +775,8 @@ namespace Framework.Constants
|
|||||||
DragonridingRidingRequirement = 319,
|
DragonridingRidingRequirement = 319,
|
||||||
ItemModAppearanceGroupAlreadyKnown = 320,
|
ItemModAppearanceGroupAlreadyKnown = 320,
|
||||||
ItemCreationDisabledForEvent = 321,
|
ItemCreationDisabledForEvent = 321,
|
||||||
Unknown = 322,
|
WarbandSceneAlreadyKnown = 322,
|
||||||
|
Unknown = 323,
|
||||||
|
|
||||||
// Ok Cast Value - Here In Case A Future Version Removes Success And We Need To Use A Custom Value (Not Sent To Client Either Way)
|
// Ok Cast Value - Here In Case A Future Version Removes Success And We Need To Use A Custom Value (Not Sent To Client Either Way)
|
||||||
SpellCastOk = Success
|
SpellCastOk = Success
|
||||||
@@ -1410,55 +1411,97 @@ namespace Framework.Constants
|
|||||||
RequiresAResilientStone = 832, // Requires A Resilient Stone.
|
RequiresAResilientStone = 832, // Requires A Resilient Stone.
|
||||||
MyrritCannotCarryAnyMoreMaps = 835, // Myrrit Cannot Carry Any More Maps. Go On A Dig With Him!
|
MyrritCannotCarryAnyMoreMaps = 835, // Myrrit Cannot Carry Any More Maps. Go On A Dig With Him!
|
||||||
SomeGiftsAreBetterLeftUndelivered = 836, // Some gifts are better left undelivered.
|
SomeGiftsAreBetterLeftUndelivered = 836, // Some gifts are better left undelivered.
|
||||||
RequiresNiffenCaveDiveKeyandShieldDisabled = 850, // Requires Niffen Cave Dive Key And Shield Disabled.
|
CompanionIsUnconscious = 837, // Companion Is Unconscious!
|
||||||
ElusiveCreatureBaitWasRecentlyUsed = 851, // You Cannot Lure Anything In This Area For A Few Minutes. Elusive Creature Bait Was Recently Used.
|
RequiresCompanion = 838, // Requires Companion.
|
||||||
MustBeInQuietPlaceWithinCaerDarrow = 852, // Must be in a suitably quiet place within Caer Darrow.
|
YouAteTooManyDesserts = 840, // You Should Not Eat Too Many Desserts If You Wish To Be Invited To The Next Party.
|
||||||
YouDontHaveAnyGlimmerOfLightsActive = 856, // You don't have any Glimmer of Lights active.
|
OnlyUsableDuringLoveIsInTheAir = 841, // Only Usable During Love Is In The Air
|
||||||
YouDontHaveTheSwirlingMojoStone = 999, // You Don'T Have The Swirling Mojo Stone Equipped.
|
NoSmellsNearby = 842, // No Smells Nearby!
|
||||||
YouMustBeNearADragonflightOathstone = 1000, // You Must Be Near One Of The Five Dragonflight Oathstones In The Dragon Isles.
|
YouAlreadyHaveAConjuredFlask = 845, // You Already Have A Conjured Flask.
|
||||||
CanOnlyUseThisItemWhileAirborne = 1001, // You Can Only Use This Item While Airborne.
|
YouAlreadyHaveSomeConjuredPotions = 846, // You Already Have Some Conjured Potions.
|
||||||
ThisPlayerIsNotOppositeFaction = 1002, // This Player Is Not Of The Opposite Faction.
|
Requiresniffencavedivekeyandshielddisabled = 850, // Requires Niffen Cave Dive Key And Shield Disabled.
|
||||||
ThisPlayerAlreadyHasThisMount = 1003, // This Player Already Has This Mount.
|
Elusivecreaturebaitwasrecentlyused = 851, // You Cannot Lure Anything In This Area For A Few Minutes. Elusive Creature Bait Was Recently Used.
|
||||||
YourTargetIsInWarMode = 1004, // Your Target Is In War Mode.
|
Mustbeinquietplacewithincaerdarrow = 852, // Must Be In A Suitably Quiet Place Within Caer Darrow.
|
||||||
CooldownReset = 1005, // Cooldown Reset
|
YouNeedShadowrootedGrippers = 853, // You Need Shadowrooted Grippers.
|
||||||
SoilNutrientsMustReplenish = 1006, // The Nutrients Of This Soil Must Replenish Before Further Growth.
|
Youdonthaveanyglimmeroflightsactive = 856, // You Don't Have Any Glimmer Of Lights Active.
|
||||||
TargetAlreadyHadSomeFeathersPlucked = 1007, // The Target Has Already Had Some Feathers Plucked. It Would Be Rude To Take More.
|
OnlyTheForsakenCanDisplayThisHonor = 857, // Only The Forsaken Can Display This Honor.
|
||||||
ThisCreatureHasAlreadyBeenAttunedWith = 1008, // This Creature Has Already Been Attuned With Recently.
|
EnoughMoonkinHatchlingsAlreadyFollowYou = 858, // Enough Moonkin Hatchlings Already Follow You.
|
||||||
YouAlreadyHaveSomeMulchPrepared = 1009, // You Already Have Some Mulch Prepared. Use Your Current Mulch First.
|
YouCanOnlyOpenThisChestInYourDreams = 859, // You Can Only Open This Chest In Your Dreams.
|
||||||
YouDontKnowHowToGatherThis = 1010, // You Don't Know How To Gather This.
|
YouHaveNotProvenYourselfToThisSpirit = 860, // You Have Not Proven Yourself To This Spirit.
|
||||||
YouDontHaveAnyItemsOfThisType = 1011, // You Don't Have Any Items Of This Type.
|
NotEnoughDelveEmpowerment = 861, // Not Enough Delve Empowerment.
|
||||||
YouDontHaveAnyRadiantRemnants = 1012, // You Don't Have Any Radiant Remnants.
|
ThisItemCannotBeUsedInTheCurrentSeason = 870, // This Item Cannot Be Used In The Current Season.
|
||||||
TargetsRingIsAlreadyBoundToAnotherPlayer = 1013, // Your Target's Ring Is Already Bound To Another Player.
|
YouCannotEnterADelveWhileInARaidGroup = 871, // You Cannot Enter A Delve While In A Raid Group.
|
||||||
TargetIsNotWearingThisRing = 1014, // Your Target Is Not Also Wearing This Ring.
|
YourCompanionIsInCombat = 872, // Your Companion Is In Combat.
|
||||||
CanOnlyBeUsedOnSocketablePvpTwwItems = 1015, // Can Only Be Used On Socket Eligible Pvp Items From The War Within Expansion.
|
ThisDelveIsNotAvailableForTesting = 873, // This Delve Is Not Available For Testing. Check Back Later!
|
||||||
HarvestbotsAlreadyActive = 1016, // Harvestbots Already Active.
|
YouAreAlreadyAtFullVigor = 891, // You Are Already At Full Vigor
|
||||||
AirshipDauntlessIsAlreadyActive = 1017, // The Airship Dauntless Is Already Active.
|
YouAlreadyHaveAtLeastOneConjuredFlask = 892, // You Already Have At Least One Conjured Flask.
|
||||||
CannotSwapSpellsOnCooldownInCombat = 1026, // You Cannot Swap Spells On Cooldown While In Combat.
|
ActiveFlasksCanOnlyBeChangedOutsOfCombat = 893, // Active Flasks Can Only Be Changed Outside Of Combat.
|
||||||
MustEquipCloakOfInfinitePotential = 1027, // You Must First Equip The Cloak Of Infinite Potential.
|
ThisCannotBeCraftedDuringEarlyAccess = 900, // This Cannot Be Crafted During Early Access.
|
||||||
InsufficientBronze = 1028, // You Have Insufficient Bronze To Make This Trade.
|
Youdonthavetheswirlingmojostone = 999, // You Don't Have The Swirling Mojo Stone Equipped.
|
||||||
RequiresSkyriding = 1029, // Requires Skyriding
|
Youmustbenearadragonflightoathstone = 1000, // You Must Be Near One Of The Five Dragonflight Oathstones In The Dragon Isles.
|
||||||
YouAlreadyOverloadedThisGatheringNode = 1030, // You Have Already Overloaded This Gathering Node.
|
Canonlyusethisitemwhileairborne = 1001, // You Can Only Use This Item While Airborne.
|
||||||
YouDontKnowHowToOverloadThisNode = 1031, // You Do Not Know How To Overload This Gathering Node.
|
Thisplayerisnotoppositefaction = 1002, // This Player Is Not Of The Opposite Faction.
|
||||||
TimerunnersCannotTeleportOutOfPandaria = 1032, // Timerunners Cannot Teleport Outside Of Pandaria.
|
Thisplayeralreadyhasthismount = 1003, // This Player Already Has This Mount.
|
||||||
SpecializeFurtherForTheseNotes = 1033, // Specialize Further Or Improve Your Hasty Handwriting To Make Sense Of These Notes.
|
Yourtargetisinwarmode = 1004, // Your Target Is In War Mode.
|
||||||
ThereIsNothingLeftToInvent = 1034, // There Is Nothing Left To Invent And You Cannot Be Convinced Otherwise.
|
Cooldownreset = 1005, // Cooldown Reset
|
||||||
PlayerInPartyDoesntHaveThisTierUnlocked = 1035, // A Player In Your Party Does Not Have This Tier Unlocked
|
Soilnutrientsmustreplenish = 1006, // The Nutrients Of This Soil Must Replenish Before Further Growth.
|
||||||
YouDontHaveAnyRadiantEchoes = 1036, // You Don't Have Any Radiant Echoes.
|
Targetalreadyhadsomefeathersplucked = 1007, // The Target Has Already Had Some Feathers Plucked. It Would Be Rude To Take More.
|
||||||
RequiresTwwPathfinderUnlocked = 1037, // Requires The War Within Pathfinder Unlocked To Use In This Area.
|
Thiscreaturehasalreadybeenattunedwith = 1008, // This Creature Has Already Been Attuned With Recently.
|
||||||
CanOnlyBeUsedWhileInCombat = 1039, // Can Only Be Used While In Combat.
|
Youalreadyhavesomemulchprepared = 1009, // You Already Have Some Mulch Prepared. Use Your Current Mulch First.
|
||||||
NotHighEnoughLevelToEnterADelve = 1040, // You Are Not High Enough Level To Enter A Delve.
|
Youdontknowhowtogatherthis = 1010, // You Don't Know How To Gather This.
|
||||||
WondrousWisdomballIsNonresponsive = 1041, // For Some Reason The Wondrous Wisdomball Is Nonresponsive.
|
Youdonthaveanyitemsofthistype = 1011, // You Don't Have Any Items Of This Type.
|
||||||
YouAlreadyHaveThisCurioInYourCollection = 1042, // You Already Have This Curio In Your Collection.
|
Youdonthaveanyradiantremnants = 1012, // You Don't Have Any Radiant Remnants.
|
||||||
AlreadyHaveIdentifiedPrototype = 1043, // You Must Choose What To Do With Your Current Prototype Before Identifying New Ones.
|
Targetsringisalreadyboundtoanotherplayer = 1013, // Your Target's Ring Is Already Bound To Another Player.
|
||||||
YouAlreadyUsedKhazAlgarContract = 1044, // You Have Already Used A Khaz Algar Contract This Week.
|
Targetisnotwearingthisring = 1014, // Your Target Is Not Also Wearing This Ring.
|
||||||
YouAlreadyRevealedAllTodayPactLocations = 1051, // You Have Revealed Or Completed All Of Today's Pact Locations.
|
Canonlybeusedonsocketablepvptwwitems = 1015, // Can Only Be Used On Socket Eligible Pvp Items From The War Within Expansion.
|
||||||
TimerunnersCannotCastThisSpell = 1053, // Timerunners Cannot Cast This Spell.
|
Harvestbotsalreadyactive = 1016, // Harvestbots Already Active.
|
||||||
ThisEmblemHasNoMagicStored = 2001, // The Emblem Has No Magic Stored.
|
Airshipdauntlessisalreadyactive = 1017, // The Airship Dauntless Is Already Active.
|
||||||
YouMustBeInVisageForm = 2222, // You Must Be In Visage Form To Do This.
|
Cannotswapspellsoncooldownincombat = 1026, // You Cannot Swap Spells On Cooldown While In Combat.
|
||||||
ATrialIsBeingUndergoneNearby = 2223, // A Trial Is Already Being Undergone Nearby.
|
Mustequipcloakofinfinitepotential = 1027, // You Must First Equip The Cloak Of Infinite Potential.
|
||||||
YouCannotUseVantusRuneInStoryMode = 2224, // You Cannot Use A Vantus Rune In Story Mode.
|
Insufficientbronze = 1028, // You Have Insufficient Bronze To Make This Trade.
|
||||||
TooCloseToAnotherMoltenRitual = 2424, // You Can't Begin A Molten Ritual This Close To Another One.
|
Requiresskyriding = 1029, // Requires Skyriding
|
||||||
EarthenCannotConsumeRegularFoodOrDrink = 2425, // Earthen Cannot Consume Traditional Food Or Drink.
|
Youalreadyoverloadedthisgatheringnode = 1030, // You Have Already Overloaded This Gathering Node.
|
||||||
|
Youdontknowhowtooverloadthisnode = 1031, // You Do Not Know How To Overload This Gathering Node.
|
||||||
|
Timerunnerscannotteleportoutofpandaria = 1032, // Timerunners Cannot Teleport Outside Of Pandaria.
|
||||||
|
Specializefurtherforthesenotes = 1033, // Specialize Further Or Improve Your Hasty Handwriting To Make Sense Of These Notes.
|
||||||
|
Thereisnothinglefttoinvent = 1034, // There Is Nothing Left To Invent And You Cannot Be Convinced Otherwise.
|
||||||
|
Playerinpartydoesnthavethistierunlocked = 1035, // A Player In Your Party Does Not Have This Tier Unlocked
|
||||||
|
Youdonthaveanyradiantechoes = 1036, // You Don't Have Any Radiant Echoes.
|
||||||
|
Requirestwwpathfinderunlocked = 1037, // Requires The War Within Pathfinder Unlocked To Use In This Area.
|
||||||
|
YouDoNotOwnThatMount = 1038, // You Do Not Own That Mount.
|
||||||
|
Canonlybeusedwhileincombat = 1039, // Can Only Be Used While In Combat.
|
||||||
|
Nothighenoughleveltoenteradelve = 1040, // You Are Not High Enough Level To Enter A Delve.
|
||||||
|
Wondrouswisdomballisnonresponsive = 1041, // For Some Reason The Wondrous Wisdomball Is Nonresponsive.
|
||||||
|
Youalreadyhavethiscurioinyourcollection = 1042, // You Already Have This Curio In Your Collection.
|
||||||
|
Alreadyhaveidentifiedprototype = 1043, // You Must Choose What To Do With Your Current Prototype Before Identifying New Ones.
|
||||||
|
Youalreadyusedkhazalgarcontract = 1044, // You Have Already Used A Khaz Algar Contract This Week.
|
||||||
|
Locked = 1045, // Locked.
|
||||||
|
MarksmanshipHuntersCannotUseCallPet = 1050, // Marksmanship Hunters Cannot Use Call Pet.
|
||||||
|
Youalreadyrevealedalltodaypactlocations = 1051, // You Have Revealed Or Completed All Of Today's Pact Locations.
|
||||||
|
YouHaveNoBlacksteelCannonballs = 1052, // You Have No Blacksteel Cannonballs
|
||||||
|
Timerunnerscannotcastthisspell = 1053, // Timerunners Cannot Cast This Spell.
|
||||||
|
ThatCantBeUsedHere = 1054, // That Can't Be Used Here.
|
||||||
|
YouAreNotYetEligibleToUseThisItem = 1056, // You Are Not Yet Eligible To Use This Item.
|
||||||
|
RequiresShadowforgeTorch = 1057, // Lighting The Shadowforge Brazier Requires A Shadowforge Torch.
|
||||||
|
ThisShadowforgeBrazierIsAlreadyBurning = 1058, // This Shadowforge Brazier Is Already Burning.
|
||||||
|
FullBags = 1059, // Full Bags
|
||||||
|
YouMustBeARatToPassThroughHere = 1060, // You Must Be A Rat To Pass Through Here.
|
||||||
|
YourHandsAreFull = 1061, // Your Hands Are Full.
|
||||||
|
MustReachEmpoweredRestorationStone = 1064, // Must Reach Empowered Restoration Stone.
|
||||||
|
CantDoThisNow = 1066, // Can't Do This Now.
|
||||||
|
NoEligibleBountifulDelves = 1067, // No Eligible Bountiful Delves.
|
||||||
|
OnlyARogueCouldPickThisLock = 1068, // Only A Rogue Could Pick This Lock.
|
||||||
|
TheMegaMagnetMustBeChargedFirst = 1070, // The Mega Magnet Must Be Charged First!
|
||||||
|
MustTargetEligibleHeadChestOrLegSetItem = 1071, // Must Target An Eligible Head, Chest, Or Leg Class Set Item.
|
||||||
|
MustTargetEligibleShoulderOrHandSetItem = 1072, // Must Target An Eligible Shoulder Or Hand Class Set Item.
|
||||||
|
CannotMountWhileDisguised = 1074, // Cannot Mount While Disguised.
|
||||||
|
YourTargetIsProtectedByDarkfuseMedichopper = 1075, // Your Target Is Already Protected By A Darkfuse Medichopper.
|
||||||
|
Thisemblemhasnomagicstored = 2001, // The Emblem Has No Magic Stored.
|
||||||
|
Youmustbeinvisageform = 2222, // You Must Be In Visage Form To Do This.
|
||||||
|
Atrialisbeingundergonenearby = 2223, // A Trial Is Already Being Undergone Nearby.
|
||||||
|
Youcannotusevantusruneinstorymode = 2224, // You Cannot Use A Vantus Rune In Story Mode.
|
||||||
|
Tooclosetoanothermoltenritual = 2424, // You Can't Begin A Molten Ritual This Close To Another One.
|
||||||
|
Earthencannotconsumeregularfoodordrink = 2425, // Earthen Cannot Consume Traditional Food Or Drink.
|
||||||
|
BarrierProtectsTheAmplifierFromLosingPower = 2427, // A Barrier Protects The Amplifier From Losing Power.
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum SpellMissInfo
|
public enum SpellMissInfo
|
||||||
|
|||||||
@@ -227,7 +227,8 @@ namespace Framework.Database
|
|||||||
|
|
||||||
// ChallengeModeItemBonusOverride.db2
|
// ChallengeModeItemBonusOverride.db2
|
||||||
PrepareStatement(HotfixStatements.SEL_CHALLENGE_MODE_ITEM_BONUS_OVERRIDE, "SELECT ID, ItemBonusTreeGroupID, DstItemBonusTreeID, Value, " +
|
PrepareStatement(HotfixStatements.SEL_CHALLENGE_MODE_ITEM_BONUS_OVERRIDE, "SELECT ID, ItemBonusTreeGroupID, DstItemBonusTreeID, Value, " +
|
||||||
"RequiredTimeEventPassed, SrcItemBonusTreeID FROM challenge_mode_item_bonus_override WHERE (`VerifiedBuild` > 0) = ?");
|
"RequiredTimeEventPassed, RequiredTimeEventNotPassed, 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) = ?");
|
||||||
@@ -257,11 +258,11 @@ namespace Framework.Database
|
|||||||
|
|
||||||
// ChrClasses.db2
|
// ChrClasses.db2
|
||||||
PrepareStatement(HotfixStatements.SEL_CHR_CLASSES, "SELECT Name, Filename, NameMale, NameFemale, PetNameToken, Description, RoleInfoString, DisabledString, " +
|
PrepareStatement(HotfixStatements.SEL_CHR_CLASSES, "SELECT Name, Filename, NameMale, NameFemale, PetNameToken, Description, RoleInfoString, DisabledString, " +
|
||||||
"HyphenatedNameMale, HyphenatedNameFemale, ID, CreateScreenFileDataID, SelectScreenFileDataID, IconFileDataID, LowResScreenFileDataID, Flags, " +
|
"HyphenatedNameMale, HyphenatedNameFemale, CreateScreenFileDataID, SelectScreenFileDataID, IconFileDataID, LowResScreenFileDataID, Flags, " +
|
||||||
"SpellTextureBlobFileDataID, ArmorTypeMask, CharStartKitUnknown901, MaleCharacterCreationVisualFallback, " +
|
"SpellTextureBlobFileDataID, ArmorTypeMask, CharStartKitUnknown901, MaleCharacterCreationVisualFallback, " +
|
||||||
"MaleCharacterCreationIdleVisualFallback, FemaleCharacterCreationVisualFallback, FemaleCharacterCreationIdleVisualFallback, " +
|
"MaleCharacterCreationIdleVisualFallback, FemaleCharacterCreationVisualFallback, FemaleCharacterCreationIdleVisualFallback, " +
|
||||||
"CharacterCreationIdleGroundVisualFallback, CharacterCreationGroundVisualFallback, AlteredFormCharacterCreationIdleVisualFallback, " +
|
"CharacterCreationIdleGroundVisualFallback, CharacterCreationGroundVisualFallback, AlteredFormCharacterCreationIdleVisualFallback, " +
|
||||||
"CharacterCreationAnimLoopWaitTimeMsFallback, CinematicSequenceID, DefaultSpec, PrimaryStatPriority, DisplayPower, " +
|
"CharacterCreationAnimLoopWaitTimeMsFallback, CinematicSequenceID, DefaultSpec, ID, PrimaryStatPriority, DisplayPower, " +
|
||||||
"RangedAttackPowerPerAgility, AttackPowerPerAgility, AttackPowerPerStrength, SpellClassSet, ClassColorR, ClassColorG, ClassColorB, RolesMask" +
|
"RangedAttackPowerPerAgility, AttackPowerPerAgility, AttackPowerPerStrength, SpellClassSet, ClassColorR, ClassColorG, ClassColorB, RolesMask" +
|
||||||
" FROM chr_classes WHERE (`VerifiedBuild` > 0) = ?");
|
" FROM chr_classes WHERE (`VerifiedBuild` > 0) = ?");
|
||||||
PrepareStatement(HotfixStatements.SEL_CHR_CLASSES_LOCALE, "SELECT ID, Name_lang, NameMale_lang, NameFemale_lang, Description_lang, RoleInfoString_lang, " +
|
PrepareStatement(HotfixStatements.SEL_CHR_CLASSES_LOCALE, "SELECT ID, Name_lang, NameMale_lang, NameFemale_lang, Description_lang, RoleInfoString_lang, " +
|
||||||
@@ -297,8 +298,8 @@ namespace Framework.Database
|
|||||||
" WHERE (`VerifiedBuild` > 0) = ? AND locale = ?");
|
" WHERE (`VerifiedBuild` > 0) = ? AND locale = ?");
|
||||||
|
|
||||||
// ChrCustomizationReq.db2
|
// ChrCustomizationReq.db2
|
||||||
PrepareStatement(HotfixStatements.SEL_CHR_CUSTOMIZATION_REQ, "SELECT ID, RaceMask, ReqSource, Flags, ClassMask, AchievementID, QuestID, OverrideArchive, " +
|
PrepareStatement(HotfixStatements.SEL_CHR_CUSTOMIZATION_REQ, "SELECT ID, RaceMask, ReqSource, Flags, ClassMask, RegionGroupMask, AchievementID, QuestID, " +
|
||||||
"ItemModifiedAppearanceID FROM chr_customization_req WHERE (`VerifiedBuild` > 0) = ?");
|
"OverrideArchive, ItemModifiedAppearanceID FROM chr_customization_req WHERE (`VerifiedBuild` > 0) = ?");
|
||||||
PrepareStatement(HotfixStatements.SEL_CHR_CUSTOMIZATION_REQ_LOCALE, "SELECT ID, ReqSource_lang FROM chr_customization_req_locale WHERE (`VerifiedBuild` > 0) = ?" +
|
PrepareStatement(HotfixStatements.SEL_CHR_CUSTOMIZATION_REQ_LOCALE, "SELECT ID, ReqSource_lang FROM chr_customization_req_locale WHERE (`VerifiedBuild` > 0) = ?" +
|
||||||
" AND locale = ?");
|
" AND locale = ?");
|
||||||
|
|
||||||
@@ -319,15 +320,15 @@ namespace Framework.Database
|
|||||||
// ChrRaces.db2
|
// ChrRaces.db2
|
||||||
PrepareStatement(HotfixStatements.SEL_CHR_RACES, "SELECT ID, ClientPrefix, ClientFileString, Name, NameFemale, NameLowercase, NameFemaleLowercase, " +
|
PrepareStatement(HotfixStatements.SEL_CHR_RACES, "SELECT ID, ClientPrefix, ClientFileString, Name, NameFemale, NameLowercase, NameFemaleLowercase, " +
|
||||||
"LoreName, LoreNameFemale, LoreNameLower, LoreNameLowerFemale, LoreDescription, ShortName, ShortNameFemale, ShortNameLower, " +
|
"LoreName, LoreNameFemale, LoreNameLower, LoreNameLowerFemale, LoreDescription, ShortName, ShortNameFemale, ShortNameLower, " +
|
||||||
"ShortNameLowerFemale, Flags, FactionID, CinematicSequenceID, ResSicknessSpellID, SplashSoundID, Alliance, RaceRelated, " +
|
"ShortNameLowerFemale, Flags, FactionID, CinematicSequenceID, ResSicknessSpellID, SplashSoundID, CreateScreenFileDataID, " +
|
||||||
"UnalteredVisualRaceID, DefaultClassID, CreateScreenFileDataID, SelectScreenFileDataID, NeutralRaceID, LowResScreenFileDataID, " +
|
"SelectScreenFileDataID, LowResScreenFileDataID, AlteredFormStartVisualKitID1, AlteredFormStartVisualKitID2, AlteredFormStartVisualKitID3, " +
|
||||||
"AlteredFormStartVisualKitID1, AlteredFormStartVisualKitID2, AlteredFormStartVisualKitID3, AlteredFormFinishVisualKitID1, " +
|
"AlteredFormFinishVisualKitID1, AlteredFormFinishVisualKitID2, AlteredFormFinishVisualKitID3, HeritageArmorAchievementID, StartingLevel, " +
|
||||||
"AlteredFormFinishVisualKitID2, AlteredFormFinishVisualKitID3, HeritageArmorAchievementID, StartingLevel, UiDisplayOrder, " +
|
"UiDisplayOrder, PlayableRaceBit, TransmogrifyDisabledSlotMask, AlteredFormCustomizeOffsetFallback1, AlteredFormCustomizeOffsetFallback2, " +
|
||||||
"MaleModelFallbackRaceID, FemaleModelFallbackRaceID, MaleTextureFallbackRaceID, FemaleTextureFallbackRaceID, PlayableRaceBit, " +
|
"AlteredFormCustomizeOffsetFallback3, AlteredFormCustomizeRotationFallback, Unknown910_11, Unknown910_12, Unknown910_13, Unknown910_21, " +
|
||||||
"HelmetAnimScalingRaceID, TransmogrifyDisabledSlotMask, UnalteredVisualCustomizationRaceID, AlteredFormCustomizeOffsetFallback1, " +
|
"Unknown910_22, Unknown910_23, BaseLanguage, CreatureType, Alliance, RaceRelated, UnalteredVisualRaceID, DefaultClassID, NeutralRaceID, " +
|
||||||
"AlteredFormCustomizeOffsetFallback2, AlteredFormCustomizeOffsetFallback3, AlteredFormCustomizeRotationFallback, Unknown910_11, " +
|
"MaleModelFallbackRaceID, MaleModelFallbackSex, FemaleModelFallbackRaceID, FemaleModelFallbackSex, MaleTextureFallbackRaceID, " +
|
||||||
"Unknown910_12, Unknown910_13, Unknown910_21, Unknown910_22, Unknown910_23, Unknown1000, BaseLanguage, CreatureType, MaleModelFallbackSex, " +
|
"MaleTextureFallbackSex, FemaleTextureFallbackRaceID, FemaleTextureFallbackSex, HelmetAnimScalingRaceID, UnalteredVisualCustomizationRaceID" +
|
||||||
"FemaleModelFallbackSex, MaleTextureFallbackSex, FemaleTextureFallbackSex FROM chr_races WHERE (`VerifiedBuild` > 0) = ?");
|
" FROM chr_races WHERE (`VerifiedBuild` > 0) = ?");
|
||||||
PrepareStatement(HotfixStatements.SEL_CHR_RACES_LOCALE, "SELECT ID, Name_lang, NameFemale_lang, NameLowercase_lang, NameFemaleLowercase_lang, LoreName_lang, " +
|
PrepareStatement(HotfixStatements.SEL_CHR_RACES_LOCALE, "SELECT ID, Name_lang, NameFemale_lang, NameLowercase_lang, NameFemaleLowercase_lang, LoreName_lang, " +
|
||||||
"LoreNameFemale_lang, LoreNameLower_lang, LoreNameLowerFemale_lang, LoreDescription_lang, ShortName_lang, ShortNameFemale_lang, " +
|
"LoreNameFemale_lang, LoreNameLower_lang, LoreNameLowerFemale_lang, LoreDescription_lang, ShortName_lang, ShortNameFemale_lang, " +
|
||||||
"ShortNameLower_lang, ShortNameLowerFemale_lang FROM chr_races_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?");
|
"ShortNameLower_lang, ShortNameLowerFemale_lang FROM chr_races_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?");
|
||||||
@@ -427,7 +428,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, AccountTransferPercentage, Flags1, Flags2 FROM currency_types WHERE (`VerifiedBuild` > 0) = ?");
|
"RechargingAmountPerCycle, RechargingCycleDurationMS, AccountTransferPercentage, OrderIndex, 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 = ?");
|
||||||
|
|
||||||
@@ -631,7 +632,7 @@ namespace Framework.Database
|
|||||||
// GossipNpcOption.db2
|
// GossipNpcOption.db2
|
||||||
PrepareStatement(HotfixStatements.SEL_GOSSIP_NPC_OPTION, "SELECT ID, GossipNpcOption, LFGDungeonsID, TrainerID, GarrFollowerTypeID, CharShipmentID, " +
|
PrepareStatement(HotfixStatements.SEL_GOSSIP_NPC_OPTION, "SELECT ID, GossipNpcOption, LFGDungeonsID, TrainerID, GarrFollowerTypeID, CharShipmentID, " +
|
||||||
"GarrTalentTreeID, UiMapID, UiItemInteractionID, Unknown_1000_8, Unknown_1000_9, CovenantID, GossipOptionID, TraitTreeID, ProfessionID, " +
|
"GarrTalentTreeID, UiMapID, UiItemInteractionID, Unknown_1000_8, Unknown_1000_9, CovenantID, GossipOptionID, TraitTreeID, ProfessionID, " +
|
||||||
"Unknown_1002_14 FROM gossip_npc_option WHERE (`VerifiedBuild` > 0) = ?");
|
"Unknown_1002_14, SkillLineID FROM gossip_npc_option WHERE (`VerifiedBuild` > 0) = ?");
|
||||||
|
|
||||||
// GuildColorBackground.db2
|
// GuildColorBackground.db2
|
||||||
PrepareStatement(HotfixStatements.SEL_GUILD_COLOR_BACKGROUND, "SELECT ID, Red, Blue, Green FROM guild_color_background WHERE (`VerifiedBuild` > 0) = ?");
|
PrepareStatement(HotfixStatements.SEL_GUILD_COLOR_BACKGROUND, "SELECT ID, Red, Blue, Green FROM guild_color_background WHERE (`VerifiedBuild` > 0) = ?");
|
||||||
@@ -866,7 +867,7 @@ namespace Framework.Database
|
|||||||
|
|
||||||
// JournalInstance.db2
|
// JournalInstance.db2
|
||||||
PrepareStatement(HotfixStatements.SEL_JOURNAL_INSTANCE, "SELECT ID, Name, Description, MapID, BackgroundFileDataID, ButtonFileDataID, " +
|
PrepareStatement(HotfixStatements.SEL_JOURNAL_INSTANCE, "SELECT ID, Name, Description, MapID, BackgroundFileDataID, ButtonFileDataID, " +
|
||||||
"ButtonSmallFileDataID, LoreFileDataID, Flags, AreaID FROM journal_instance WHERE (`VerifiedBuild` > 0) = ?");
|
"ButtonSmallFileDataID, LoreFileDataID, Flags, AreaID, CovenantID FROM journal_instance WHERE (`VerifiedBuild` > 0) = ?");
|
||||||
PrepareStatement(HotfixStatements.SEL_JOURNAL_INSTANCE_LOCALE, "SELECT ID, Name_lang, Description_lang FROM journal_instance_locale" +
|
PrepareStatement(HotfixStatements.SEL_JOURNAL_INSTANCE_LOCALE, "SELECT ID, Name_lang, Description_lang FROM journal_instance_locale" +
|
||||||
" WHERE (`VerifiedBuild` > 0) = ? AND locale = ?");
|
" WHERE (`VerifiedBuild` > 0) = ? AND locale = ?");
|
||||||
|
|
||||||
@@ -967,7 +968,7 @@ namespace Framework.Database
|
|||||||
|
|
||||||
// MountCapability.db2
|
// MountCapability.db2
|
||||||
PrepareStatement(HotfixStatements.SEL_MOUNT_CAPABILITY, "SELECT ID, Flags, ReqRidingSkill, ReqAreaID, ReqSpellAuraID, ReqSpellKnownID, ModSpellAuraID, " +
|
PrepareStatement(HotfixStatements.SEL_MOUNT_CAPABILITY, "SELECT ID, Flags, ReqRidingSkill, ReqAreaID, ReqSpellAuraID, ReqSpellKnownID, ModSpellAuraID, " +
|
||||||
"ReqMapID, PlayerConditionID, FlightCapabilityID FROM mount_capability WHERE (`VerifiedBuild` > 0) = ?");
|
"ReqMapID, PlayerConditionID, FlightCapabilityID, DriveCapabilityID FROM mount_capability WHERE (`VerifiedBuild` > 0) = ?");
|
||||||
|
|
||||||
// MountEquipment.db2
|
// MountEquipment.db2
|
||||||
PrepareStatement(HotfixStatements.SEL_MOUNT_EQUIPMENT, "SELECT ID, Item, BuffSpell, Unknown820, LearnedBySpell FROM mount_equipment" +
|
PrepareStatement(HotfixStatements.SEL_MOUNT_EQUIPMENT, "SELECT ID, Item, BuffSpell, Unknown820, LearnedBySpell FROM mount_equipment" +
|
||||||
@@ -1105,7 +1106,7 @@ namespace Framework.Database
|
|||||||
PrepareStatement(HotfixStatements.SEL_QUEST_INFO_LOCALE, "SELECT ID, InfoName_lang FROM quest_info_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?");
|
PrepareStatement(HotfixStatements.SEL_QUEST_INFO_LOCALE, "SELECT ID, InfoName_lang FROM quest_info_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?");
|
||||||
|
|
||||||
// QuestLineXQuest.db2
|
// QuestLineXQuest.db2
|
||||||
PrepareStatement(HotfixStatements.SEL_QUEST_LINE_X_QUEST, "SELECT ID, QuestLineID, QuestID, OrderIndex, Flags FROM quest_line_x_quest" +
|
PrepareStatement(HotfixStatements.SEL_QUEST_LINE_X_QUEST, "SELECT ID, QuestLineID, QuestID, OrderIndex, Flags, Unknown1110 FROM quest_line_x_quest" +
|
||||||
" WHERE (`VerifiedBuild` > 0) = ?");
|
" WHERE (`VerifiedBuild` > 0) = ?");
|
||||||
|
|
||||||
// QuestMoneyReward.db2
|
// QuestMoneyReward.db2
|
||||||
|
|||||||
@@ -1343,7 +1343,7 @@ namespace Game
|
|||||||
}
|
}
|
||||||
|
|
||||||
AuctionWonNotification packet = new();
|
AuctionWonNotification packet = new();
|
||||||
packet.Info.Initialize(auctions[0], items[0].Items[0]);
|
packet.Info.Initialize(_auctionHouse.Id, auctions[0], items[0].Items[0]);
|
||||||
player.SendPacket(packet);
|
player.SendPacket(packet);
|
||||||
|
|
||||||
for (int i = 0; i < auctions.Count; ++i)
|
for (int i = 0; i < auctions.Count; ++i)
|
||||||
@@ -1445,7 +1445,7 @@ namespace Game
|
|||||||
if (bidder != null)
|
if (bidder != null)
|
||||||
{
|
{
|
||||||
AuctionWonNotification packet = new();
|
AuctionWonNotification packet = new();
|
||||||
packet.Info.Initialize(auction, auction.Items[0]);
|
packet.Info.Initialize(_auctionHouse.Id, auction, auction.Items[0]);
|
||||||
bidder.SendPacket(packet);
|
bidder.SendPacket(packet);
|
||||||
|
|
||||||
// FIXME: for offline player need also
|
// FIXME: for offline player need also
|
||||||
|
|||||||
@@ -1216,8 +1216,8 @@ namespace Game.BattleGrounds
|
|||||||
playerData.IsInWorld = true;
|
playerData.IsInWorld = true;
|
||||||
playerData.PrimaryTalentTree = (int)player.GetPrimarySpecialization();
|
playerData.PrimaryTalentTree = (int)player.GetPrimarySpecialization();
|
||||||
playerData.Sex = (sbyte)player.GetGender();
|
playerData.Sex = (sbyte)player.GetGender();
|
||||||
playerData.PlayerRace = player.GetRace();
|
playerData.PlayerRace = (sbyte)player.GetRace();
|
||||||
playerData.PlayerClass = (int)player.GetClass();
|
playerData.PlayerClass = (sbyte)player.GetClass();
|
||||||
playerData.HonorLevel = (int)player.GetHonorLevel();
|
playerData.HonorLevel = (int)player.GetHonorLevel();
|
||||||
|
|
||||||
pvpLogData.Statistics.Add(playerData);
|
pvpLogData.Statistics.Add(playerData);
|
||||||
|
|||||||
@@ -138,7 +138,7 @@ namespace Game.BattleGrounds
|
|||||||
battlefieldStatus = new BattlefieldStatusActive();
|
battlefieldStatus = new BattlefieldStatusActive();
|
||||||
BuildBattlegroundStatusHeader(battlefieldStatus.Hdr, player, ticketId, joinTime, queueId);
|
BuildBattlegroundStatusHeader(battlefieldStatus.Hdr, player, ticketId, joinTime, queueId);
|
||||||
battlefieldStatus.ShutdownTimer = bg.GetRemainingTime();
|
battlefieldStatus.ShutdownTimer = bg.GetRemainingTime();
|
||||||
battlefieldStatus.ArenaFaction = (byte)(player.GetBGTeam() == Team.Horde ? BattleGroundTeamId.Horde : BattleGroundTeamId.Alliance);
|
battlefieldStatus.ArenaFaction = (sbyte)(player.GetBGTeam() == Team.Horde ? BattleGroundTeamId.Horde : BattleGroundTeamId.Alliance);
|
||||||
battlefieldStatus.LeftEarly = false;
|
battlefieldStatus.LeftEarly = false;
|
||||||
battlefieldStatus.StartTimer = bg.GetElapsedTime();
|
battlefieldStatus.StartTimer = bg.GetElapsedTime();
|
||||||
battlefieldStatus.Mapid = bg.GetMapId();
|
battlefieldStatus.Mapid = bg.GetMapId();
|
||||||
|
|||||||
@@ -2416,7 +2416,7 @@ namespace Game.DataStorage
|
|||||||
MultiMap<uint, int> _creatureLabels = new();
|
MultiMap<uint, int> _creatureLabels = new();
|
||||||
MultiMap<uint, CurrencyContainerRecord> _currencyContainers = new();
|
MultiMap<uint, CurrencyContainerRecord> _currencyContainers = new();
|
||||||
MultiMap<uint, Vector2> _curvePoints = new();
|
MultiMap<uint, Vector2> _curvePoints = new();
|
||||||
Dictionary<Tuple<uint, byte, byte, byte>, EmotesTextSoundRecord> _emoteTextSounds = new();
|
Dictionary<Tuple<uint, sbyte, sbyte, sbyte>, EmotesTextSoundRecord> _emoteTextSounds = new();
|
||||||
Dictionary<Tuple<uint, int>, ExpectedStatRecord> _expectedStatsByLevel = new();
|
Dictionary<Tuple<uint, int>, ExpectedStatRecord> _expectedStatsByLevel = new();
|
||||||
MultiMap<uint, ContentTuningXExpectedRecord> _expectedStatModsByContentTuning = new();
|
MultiMap<uint, ContentTuningXExpectedRecord> _expectedStatModsByContentTuning = new();
|
||||||
MultiMap<uint, uint> _factionTeams = new();
|
MultiMap<uint, uint> _factionTeams = new();
|
||||||
@@ -2438,7 +2438,7 @@ namespace Game.DataStorage
|
|||||||
Dictionary<uint, MountRecord> _mountsBySpellId = new();
|
Dictionary<uint, MountRecord> _mountsBySpellId = new();
|
||||||
MultiMap<uint, MountTypeXCapabilityRecord> _mountCapabilitiesByType = new();
|
MultiMap<uint, MountTypeXCapabilityRecord> _mountCapabilitiesByType = new();
|
||||||
MultiMap<uint, MountXDisplayRecord> _mountDisplays = new();
|
MultiMap<uint, MountXDisplayRecord> _mountDisplays = new();
|
||||||
Dictionary<uint, List<NameGenRecord>[]> _nameGenData = new();
|
Dictionary<sbyte, List<NameGenRecord>[]> _nameGenData = new();
|
||||||
List<string>[] _nameValidators = new List<string>[(int)Locale.Total + 1];
|
List<string>[] _nameValidators = new List<string>[(int)Locale.Total + 1];
|
||||||
Dictionary<uint, ParagonReputationRecord> _paragonReputations = new();
|
Dictionary<uint, ParagonReputationRecord> _paragonReputations = new();
|
||||||
Dictionary<uint, PathDb2> _paths = new();
|
Dictionary<uint, PathDb2> _paths = new();
|
||||||
|
|||||||
@@ -378,7 +378,7 @@ namespace Game.DataStorage
|
|||||||
public uint Id;
|
public uint Id;
|
||||||
public uint AzeritePowerSetID;
|
public uint AzeritePowerSetID;
|
||||||
public int AzeritePowerID;
|
public int AzeritePowerID;
|
||||||
public int Class;
|
public sbyte Class;
|
||||||
public byte Tier;
|
public byte Tier;
|
||||||
public uint OrderIndex;
|
public uint OrderIndex;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,8 +26,8 @@ namespace Game.DataStorage
|
|||||||
public string Description;
|
public string Description;
|
||||||
public byte Type; // value 0 . hair, value 2 . facialhair
|
public byte Type; // value 0 . hair, value 2 . facialhair
|
||||||
public float CostModifier;
|
public float CostModifier;
|
||||||
public byte Race;
|
public sbyte Race;
|
||||||
public byte Sex;
|
public sbyte Sex;
|
||||||
public byte Data; // real ID to hair/facial hair
|
public byte Data; // real ID to hair/facial hair
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ namespace Game.DataStorage
|
|||||||
public int DstItemBonusTreeID;
|
public int DstItemBonusTreeID;
|
||||||
public int Value;
|
public int Value;
|
||||||
public int RequiredTimeEventPassed;
|
public int RequiredTimeEventPassed;
|
||||||
|
public int RequiredTimeEventNotPassed;
|
||||||
public uint SrcItemBonusTreeID;
|
public uint SrcItemBonusTreeID;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -46,7 +47,7 @@ namespace Game.DataStorage
|
|||||||
public uint Id;
|
public uint Id;
|
||||||
public sbyte RaceID;
|
public sbyte RaceID;
|
||||||
public sbyte ClassID;
|
public sbyte ClassID;
|
||||||
public int OtherFactionRaceID;
|
public sbyte OtherFactionRaceID;
|
||||||
}
|
}
|
||||||
|
|
||||||
public sealed class CharTitlesRecord
|
public sealed class CharTitlesRecord
|
||||||
@@ -82,7 +83,7 @@ namespace Game.DataStorage
|
|||||||
public LocalizedString Name;
|
public LocalizedString Name;
|
||||||
public string Shortcut;
|
public string Shortcut;
|
||||||
public int Flags;
|
public int Flags;
|
||||||
public sbyte FactionGroup;
|
public byte FactionGroup;
|
||||||
public int Ruleset;
|
public int Ruleset;
|
||||||
|
|
||||||
public bool HasFlag(ChatChannelFlags chatChannelFlags) { return (Flags & (int)chatChannelFlags) != 0; }
|
public bool HasFlag(ChatChannelFlags chatChannelFlags) { return (Flags & (int)chatChannelFlags) != 0; }
|
||||||
@@ -92,7 +93,7 @@ namespace Game.DataStorage
|
|||||||
public sealed class ChrClassUIDisplayRecord
|
public sealed class ChrClassUIDisplayRecord
|
||||||
{
|
{
|
||||||
public uint Id;
|
public uint Id;
|
||||||
public byte ChrClassesID;
|
public sbyte ChrClassesID;
|
||||||
public uint AdvGuidePlayerConditionID;
|
public uint AdvGuidePlayerConditionID;
|
||||||
public uint SplashPlayerConditionID;
|
public uint SplashPlayerConditionID;
|
||||||
}
|
}
|
||||||
@@ -109,7 +110,6 @@ namespace Game.DataStorage
|
|||||||
public string DisabledString;
|
public string DisabledString;
|
||||||
public string HyphenatedNameMale;
|
public string HyphenatedNameMale;
|
||||||
public string HyphenatedNameFemale;
|
public string HyphenatedNameFemale;
|
||||||
public uint Id;
|
|
||||||
public uint CreateScreenFileDataID;
|
public uint CreateScreenFileDataID;
|
||||||
public uint SelectScreenFileDataID;
|
public uint SelectScreenFileDataID;
|
||||||
public uint IconFileDataID;
|
public uint IconFileDataID;
|
||||||
@@ -128,6 +128,7 @@ namespace Game.DataStorage
|
|||||||
public int CharacterCreationAnimLoopWaitTimeMsFallback;
|
public int CharacterCreationAnimLoopWaitTimeMsFallback;
|
||||||
public ushort CinematicSequenceID;
|
public ushort CinematicSequenceID;
|
||||||
public ushort DefaultSpec;
|
public ushort DefaultSpec;
|
||||||
|
public uint Id;
|
||||||
public byte PrimaryStatPriority;
|
public byte PrimaryStatPriority;
|
||||||
public PowerType DisplayPower;
|
public PowerType DisplayPower;
|
||||||
public byte RangedAttackPowerPerAgility;
|
public byte RangedAttackPowerPerAgility;
|
||||||
@@ -214,6 +215,7 @@ namespace Game.DataStorage
|
|||||||
public string ReqSource;
|
public string ReqSource;
|
||||||
public int Flags;
|
public int Flags;
|
||||||
public int ClassMask;
|
public int ClassMask;
|
||||||
|
public int RegionGroupMask;
|
||||||
public int AchievementID;
|
public int AchievementID;
|
||||||
public int QuestID;
|
public int QuestID;
|
||||||
public int OverrideArchive; // -1: allow any, otherwise must match OverrideArchive cvar
|
public int OverrideArchive; // -1: allow any, otherwise must match OverrideArchive cvar
|
||||||
@@ -253,9 +255,9 @@ namespace Game.DataStorage
|
|||||||
public sealed class ChrRaceXChrModelRecord
|
public sealed class ChrRaceXChrModelRecord
|
||||||
{
|
{
|
||||||
public uint Id;
|
public uint Id;
|
||||||
public uint ChrRacesID;
|
public byte ChrRacesID;
|
||||||
public int ChrModelID;
|
public int ChrModelID;
|
||||||
public int Sex;
|
public sbyte Sex;
|
||||||
public int AllowedTransmogSlots;
|
public int AllowedTransmogSlots;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -282,38 +284,37 @@ namespace Game.DataStorage
|
|||||||
public uint CinematicSequenceID;
|
public uint CinematicSequenceID;
|
||||||
public uint ResSicknessSpellID;
|
public uint ResSicknessSpellID;
|
||||||
public int SplashSoundID;
|
public int SplashSoundID;
|
||||||
public int Alliance;
|
|
||||||
public int RaceRelated;
|
|
||||||
public int UnalteredVisualRaceID;
|
|
||||||
public int DefaultClassID;
|
|
||||||
public int CreateScreenFileDataID;
|
public int CreateScreenFileDataID;
|
||||||
public int SelectScreenFileDataID;
|
public int SelectScreenFileDataID;
|
||||||
public int NeutralRaceID;
|
|
||||||
public int LowResScreenFileDataID;
|
public int LowResScreenFileDataID;
|
||||||
public int[] AlteredFormStartVisualKitID = new int[3];
|
public int[] AlteredFormStartVisualKitID = new int[3];
|
||||||
public int[] AlteredFormFinishVisualKitID = new int[3];
|
public int[] AlteredFormFinishVisualKitID = new int[3];
|
||||||
public int HeritageArmorAchievementID;
|
public int HeritageArmorAchievementID;
|
||||||
public int StartingLevel;
|
public int StartingLevel;
|
||||||
public int UiDisplayOrder;
|
public int UiDisplayOrder;
|
||||||
public int MaleModelFallbackRaceID;
|
|
||||||
public int FemaleModelFallbackRaceID;
|
|
||||||
public int MaleTextureFallbackRaceID;
|
|
||||||
public int FemaleTextureFallbackRaceID;
|
|
||||||
public int PlayableRaceBit;
|
public int PlayableRaceBit;
|
||||||
public int HelmetAnimScalingRaceID;
|
|
||||||
public int TransmogrifyDisabledSlotMask;
|
public int TransmogrifyDisabledSlotMask;
|
||||||
public int UnalteredVisualCustomizationRaceID;
|
|
||||||
public float[] AlteredFormCustomizeOffsetFallback = new float[3];
|
public float[] AlteredFormCustomizeOffsetFallback = new float[3];
|
||||||
public float AlteredFormCustomizeRotationFallback;
|
public float AlteredFormCustomizeRotationFallback;
|
||||||
public float[] Unknown910_1 = new float[3];
|
public float[] Unknown910_1 = new float[3];
|
||||||
public float[] Unknown910_2 = new float[3];
|
public float[] Unknown910_2 = new float[3];
|
||||||
public int Unknown1000;
|
|
||||||
public sbyte BaseLanguage;
|
public sbyte BaseLanguage;
|
||||||
public sbyte CreatureType;
|
public byte CreatureType;
|
||||||
|
public sbyte Alliance;
|
||||||
|
public sbyte RaceRelated;
|
||||||
|
public sbyte UnalteredVisualRaceID;
|
||||||
|
public sbyte DefaultClassID;
|
||||||
|
public sbyte NeutralRaceID;
|
||||||
|
public sbyte MaleModelFallbackRaceID;
|
||||||
public sbyte MaleModelFallbackSex;
|
public sbyte MaleModelFallbackSex;
|
||||||
|
public sbyte FemaleModelFallbackRaceID;
|
||||||
public sbyte FemaleModelFallbackSex;
|
public sbyte FemaleModelFallbackSex;
|
||||||
|
public sbyte MaleTextureFallbackRaceID;
|
||||||
public sbyte MaleTextureFallbackSex;
|
public sbyte MaleTextureFallbackSex;
|
||||||
|
public sbyte FemaleTextureFallbackRaceID;
|
||||||
public sbyte FemaleTextureFallbackSex;
|
public sbyte FemaleTextureFallbackSex;
|
||||||
|
public sbyte HelmetAnimScalingRaceID;
|
||||||
|
public sbyte UnalteredVisualCustomizationRaceID;
|
||||||
|
|
||||||
public bool HasFlag(ChrRacesFlag chrRacesFlag) { return (Flags & (int)chrRacesFlag) != 0; }
|
public bool HasFlag(ChrRacesFlag chrRacesFlag) { return (Flags & (int)chrRacesFlag) != 0; }
|
||||||
}
|
}
|
||||||
@@ -488,7 +489,7 @@ namespace Game.DataStorage
|
|||||||
public sbyte DisplayRaceID;
|
public sbyte DisplayRaceID;
|
||||||
public sbyte DisplaySexID;
|
public sbyte DisplaySexID;
|
||||||
public sbyte DisplayClassID;
|
public sbyte DisplayClassID;
|
||||||
public sbyte Flags;
|
public int Flags;
|
||||||
public int BakeMaterialResourcesID;
|
public int BakeMaterialResourcesID;
|
||||||
public int HDBakeMaterialResourcesID;
|
public int HDBakeMaterialResourcesID;
|
||||||
}
|
}
|
||||||
@@ -559,7 +560,7 @@ namespace Game.DataStorage
|
|||||||
{
|
{
|
||||||
public uint Id;
|
public uint Id;
|
||||||
public string Name;
|
public string Name;
|
||||||
public byte Flags;
|
public int Flags;
|
||||||
}
|
}
|
||||||
|
|
||||||
public sealed class CriteriaRecord
|
public sealed class CriteriaRecord
|
||||||
@@ -627,6 +628,7 @@ namespace Game.DataStorage
|
|||||||
public uint RechargingAmountPerCycle;
|
public uint RechargingAmountPerCycle;
|
||||||
public uint RechargingCycleDurationMS;
|
public uint RechargingCycleDurationMS;
|
||||||
public float AccountTransferPercentage;
|
public float AccountTransferPercentage;
|
||||||
|
public byte OrderIndex;
|
||||||
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; }
|
||||||
|
|||||||
@@ -27,9 +27,9 @@ namespace Game.DataStorage
|
|||||||
public sealed class EmotesTextSoundRecord
|
public sealed class EmotesTextSoundRecord
|
||||||
{
|
{
|
||||||
public uint Id;
|
public uint Id;
|
||||||
public byte RaceId;
|
public sbyte RaceId;
|
||||||
public byte ClassId;
|
public sbyte ClassId;
|
||||||
public byte SexId;
|
public sbyte SexId;
|
||||||
public uint SoundId;
|
public uint SoundId;
|
||||||
public uint EmotesTextId;
|
public uint EmotesTextId;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -161,7 +161,7 @@ namespace Game.DataStorage
|
|||||||
public uint AllySlottingBroadcastTextID;
|
public uint AllySlottingBroadcastTextID;
|
||||||
public byte ChrClassID;
|
public byte ChrClassID;
|
||||||
public int Flags;
|
public int Flags;
|
||||||
public byte Gender;
|
public sbyte Gender;
|
||||||
public int AutoCombatantID;
|
public int AutoCombatantID;
|
||||||
public int CovenantID;
|
public int CovenantID;
|
||||||
}
|
}
|
||||||
@@ -332,6 +332,7 @@ namespace Game.DataStorage
|
|||||||
public int TraitTreeID;
|
public int TraitTreeID;
|
||||||
public int ProfessionID;
|
public int ProfessionID;
|
||||||
public int Unknown_1002_14;
|
public int Unknown_1002_14;
|
||||||
|
public int SkillLineID;
|
||||||
}
|
}
|
||||||
|
|
||||||
public sealed class GuildColorBackgroundRecord
|
public sealed class GuildColorBackgroundRecord
|
||||||
|
|||||||
@@ -416,7 +416,7 @@ namespace Game.DataStorage
|
|||||||
public byte DamageType;
|
public byte DamageType;
|
||||||
public byte ContainerSlots;
|
public byte ContainerSlots;
|
||||||
public byte RequiredPVPMedal;
|
public byte RequiredPVPMedal;
|
||||||
public byte RequiredPVPRank;
|
public sbyte RequiredPVPRank;
|
||||||
public sbyte RequiredLevel;
|
public sbyte RequiredLevel;
|
||||||
public InventoryType inventoryType;
|
public InventoryType inventoryType;
|
||||||
public sbyte OverallQualityID;
|
public sbyte OverallQualityID;
|
||||||
|
|||||||
@@ -53,6 +53,7 @@ namespace Game.DataStorage
|
|||||||
public int LoreFileDataID;
|
public int LoreFileDataID;
|
||||||
public int Flags;
|
public int Flags;
|
||||||
public ushort AreaID;
|
public ushort AreaID;
|
||||||
|
public ushort CovenantID;
|
||||||
}
|
}
|
||||||
|
|
||||||
public sealed class JournalTierRecord
|
public sealed class JournalTierRecord
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ namespace Game.DataStorage
|
|||||||
public uint Id;
|
public uint Id;
|
||||||
public string Name;
|
public string Name;
|
||||||
public string[] Texture = new string[6];
|
public string[] Texture = new string[6];
|
||||||
public ushort Flags;
|
public int Flags;
|
||||||
public byte SoundBank; // used to be "type", maybe needs fixing (works well for now)
|
public byte SoundBank; // used to be "type", maybe needs fixing (works well for now)
|
||||||
public uint SoundID;
|
public uint SoundID;
|
||||||
public uint SpellID;
|
public uint SpellID;
|
||||||
|
|||||||
@@ -211,6 +211,7 @@ namespace Game.DataStorage
|
|||||||
public short ReqMapID;
|
public short ReqMapID;
|
||||||
public int PlayerConditionID;
|
public int PlayerConditionID;
|
||||||
public int FlightCapabilityID;
|
public int FlightCapabilityID;
|
||||||
|
public int DriveCapabilityID;
|
||||||
|
|
||||||
public bool HasFlag(MountCapabilityFlags mountCapabilityFlags) { return (Flags & (int)mountCapabilityFlags) != 0; }
|
public bool HasFlag(MountCapabilityFlags mountCapabilityFlags) { return (Flags & (int)mountCapabilityFlags) != 0; }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ namespace Game.DataStorage
|
|||||||
{
|
{
|
||||||
public uint Id;
|
public uint Id;
|
||||||
public string Name;
|
public string Name;
|
||||||
public byte RaceID;
|
public sbyte RaceID;
|
||||||
public byte Sex;
|
public sbyte Sex;
|
||||||
}
|
}
|
||||||
|
|
||||||
public sealed class NamesProfanityRecord
|
public sealed class NamesProfanityRecord
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ namespace Game.DataStorage
|
|||||||
public byte Green;
|
public byte Green;
|
||||||
public byte Blue;
|
public byte Blue;
|
||||||
public byte Alpha;
|
public byte Alpha;
|
||||||
public byte Flags;
|
public int Flags;
|
||||||
}
|
}
|
||||||
|
|
||||||
public sealed class PathNodeRecord
|
public sealed class PathNodeRecord
|
||||||
@@ -85,7 +85,7 @@ namespace Game.DataStorage
|
|||||||
public ushort WorldStateExpressionID;
|
public ushort WorldStateExpressionID;
|
||||||
public int WeatherID;
|
public int WeatherID;
|
||||||
public byte PartyStatus;
|
public byte PartyStatus;
|
||||||
public byte LifetimeMaxPVPRank;
|
public sbyte LifetimeMaxPVPRank;
|
||||||
public uint AchievementLogic;
|
public uint AchievementLogic;
|
||||||
public sbyte Gender;
|
public sbyte Gender;
|
||||||
public sbyte NativeGender;
|
public sbyte NativeGender;
|
||||||
@@ -115,8 +115,8 @@ namespace Game.DataStorage
|
|||||||
public byte MinGuildLevel;
|
public byte MinGuildLevel;
|
||||||
public sbyte MaxExpansionTier;
|
public sbyte MaxExpansionTier;
|
||||||
public sbyte MinExpansionTier;
|
public sbyte MinExpansionTier;
|
||||||
public byte MinPVPRank;
|
public sbyte MinPVPRank;
|
||||||
public byte MaxPVPRank;
|
public sbyte MaxPVPRank;
|
||||||
public uint ContentTuningID;
|
public uint ContentTuningID;
|
||||||
public int CovenantID;
|
public int CovenantID;
|
||||||
public uint TraitNodeEntryLogic;
|
public uint TraitNodeEntryLogic;
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ namespace Game.DataStorage
|
|||||||
public uint QuestID;
|
public uint QuestID;
|
||||||
public uint OrderIndex;
|
public uint OrderIndex;
|
||||||
public int Flags;
|
public int Flags;
|
||||||
|
public int Unknown1110;
|
||||||
}
|
}
|
||||||
|
|
||||||
public sealed class QuestMoneyRewardRecord
|
public sealed class QuestMoneyRewardRecord
|
||||||
|
|||||||
@@ -576,7 +576,7 @@ namespace Game.DataStorage
|
|||||||
public uint Id;
|
public uint Id;
|
||||||
public string Name;
|
public string Name;
|
||||||
public uint CreatureDisplayID;
|
public uint CreatureDisplayID;
|
||||||
public sbyte CreatureType;
|
public byte CreatureType;
|
||||||
public int Flags;
|
public int Flags;
|
||||||
public int AttackIconFileID;
|
public int AttackIconFileID;
|
||||||
public sbyte BonusActionBar;
|
public sbyte BonusActionBar;
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ namespace Game.DataStorage
|
|||||||
public byte TierID;
|
public byte TierID;
|
||||||
public byte Flags;
|
public byte Flags;
|
||||||
public byte ColumnIndex;
|
public byte ColumnIndex;
|
||||||
public byte ClassID;
|
public sbyte ClassID;
|
||||||
public ushort SpecID;
|
public ushort SpecID;
|
||||||
public uint SpellID;
|
public uint SpellID;
|
||||||
public uint OverridesSpellID;
|
public uint OverridesSpellID;
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ namespace Game.DataStorage
|
|||||||
{
|
{
|
||||||
public uint Id;
|
public uint Id;
|
||||||
public uint QuestFeedbackEffectID;
|
public uint QuestFeedbackEffectID;
|
||||||
public byte WhenToDisplay;
|
public int WhenToDisplay;
|
||||||
public byte TargetType;
|
public byte TargetType;
|
||||||
public int TargetAsset;
|
public int TargetAsset;
|
||||||
public uint PlayerConditionID;
|
public uint PlayerConditionID;
|
||||||
@@ -48,7 +48,7 @@ namespace Game.DataStorage
|
|||||||
public int HitRectLeft;
|
public int HitRectLeft;
|
||||||
public int HitRectRight;
|
public int HitRectRight;
|
||||||
public uint PlayerConditionID;
|
public uint PlayerConditionID;
|
||||||
public uint Flags;
|
public int Flags;
|
||||||
public uint[] AreaID = new uint[SharedConst.MaxWorldMapOverlayArea];
|
public uint[] AreaID = new uint[SharedConst.MaxWorldMapOverlayArea];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2945,7 +2945,7 @@ namespace Game.Entities
|
|||||||
int scalingLevelMin = m_unitData.ScalingLevelMin;
|
int scalingLevelMin = m_unitData.ScalingLevelMin;
|
||||||
int scalingLevelMax = m_unitData.ScalingLevelMax;
|
int scalingLevelMax = m_unitData.ScalingLevelMax;
|
||||||
int scalingLevelDelta = m_unitData.ScalingLevelDelta;
|
int scalingLevelDelta = m_unitData.ScalingLevelDelta;
|
||||||
int scalingFactionGroup = m_unitData.ScalingFactionGroup;
|
byte scalingFactionGroup = m_unitData.ScalingFactionGroup;
|
||||||
uint targetLevel = unitTarget.m_unitData.EffectiveLevel;
|
uint targetLevel = unitTarget.m_unitData.EffectiveLevel;
|
||||||
if (targetLevel == 0)
|
if (targetLevel == 0)
|
||||||
targetLevel = unitTarget.GetLevel();
|
targetLevel = unitTarget.GetLevel();
|
||||||
@@ -3804,7 +3804,12 @@ namespace Game.Entities
|
|||||||
m_unitData.WriteCreate(data, flags, this, target);
|
m_unitData.WriteCreate(data, flags, this, target);
|
||||||
|
|
||||||
if (m_vendorData != null)
|
if (m_vendorData != null)
|
||||||
|
{
|
||||||
|
if (EntityFragmentsHolder.IsIndirectFragment(EntityFragment.FVendor_C))
|
||||||
|
data.WriteUInt8(1); // IndirectFragmentActive: FVendor_C
|
||||||
|
|
||||||
m_vendorData.WriteCreate(data, flags, this, target);
|
m_vendorData.WriteCreate(data, flags, this, target);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void BuildValuesUpdate(WorldPacket data, UpdateFieldFlag flags, Player target)
|
public override void BuildValuesUpdate(WorldPacket data, UpdateFieldFlag flags, Player target)
|
||||||
@@ -3869,9 +3874,7 @@ namespace Game.Entities
|
|||||||
|
|
||||||
public override void ClearUpdateMask(bool remove)
|
public override void ClearUpdateMask(bool remove)
|
||||||
{
|
{
|
||||||
if (m_vendorData != null)
|
m_values.ClearChangesMask(m_vendorData);
|
||||||
m_values.ClearChangesMask(m_vendorData);
|
|
||||||
|
|
||||||
base.ClearUpdateMask(remove);
|
base.ClearUpdateMask(remove);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -167,9 +167,9 @@ namespace Game.Entities
|
|||||||
stats.Flags[0] = (uint)creatureDifficulty.TypeFlags;
|
stats.Flags[0] = (uint)creatureDifficulty.TypeFlags;
|
||||||
stats.Flags[1] = creatureDifficulty.TypeFlags2;
|
stats.Flags[1] = creatureDifficulty.TypeFlags2;
|
||||||
|
|
||||||
stats.CreatureType = (int)CreatureType;
|
stats.CreatureType = (sbyte)CreatureType;
|
||||||
stats.CreatureFamily = (int)Family;
|
stats.CreatureFamily = (int)Family;
|
||||||
stats.Classification = (int)Classification;
|
stats.Classification = (sbyte)Classification;
|
||||||
|
|
||||||
for (uint i = 0; i < SharedConst.MaxCreatureKillCredit; ++i)
|
for (uint i = 0; i < SharedConst.MaxCreatureKillCredit; ++i)
|
||||||
stats.ProxyCreatureID[i] = KillCredit[i];
|
stats.ProxyCreatureID[i] = KillCredit[i];
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ namespace Game.Misc
|
|||||||
public class GossipMenu
|
public class GossipMenu
|
||||||
{
|
{
|
||||||
public uint AddMenuItem(int gossipOptionId, int orderIndex, GossipOptionNpc optionNpc, string optionText, uint language,
|
public uint AddMenuItem(int gossipOptionId, int orderIndex, GossipOptionNpc optionNpc, string optionText, uint language,
|
||||||
GossipOptionFlags flags, int? gossipNpcOptionId, uint actionMenuId, uint actionPoiId, bool boxCoded, uint boxMoney,
|
GossipOptionFlags flags, int? gossipNpcOptionId, uint actionMenuId, uint actionPoiId, bool boxCoded, ulong boxMoney,
|
||||||
string boxText, int? spellId, int? overrideIconId, uint sender, uint action)
|
string boxText, int? spellId, int? overrideIconId, uint sender, uint action)
|
||||||
{
|
{
|
||||||
Cypher.Assert(_menuItems.Count <= SharedConst.MaxGossipMenuItems);
|
Cypher.Assert(_menuItems.Count <= SharedConst.MaxGossipMenuItems);
|
||||||
@@ -261,7 +261,7 @@ namespace Game.Misc
|
|||||||
opt.GossipOptionID = item.GossipOptionID;
|
opt.GossipOptionID = item.GossipOptionID;
|
||||||
opt.OptionNPC = item.OptionNpc;
|
opt.OptionNPC = item.OptionNpc;
|
||||||
opt.OptionFlags = (byte)(item.BoxCoded ? 1 : 0); // makes pop up box password
|
opt.OptionFlags = (byte)(item.BoxCoded ? 1 : 0); // makes pop up box password
|
||||||
opt.OptionCost = (int)item.BoxMoney; // money required to open menu, 2.0.3
|
opt.OptionCost = item.BoxMoney; // money required to open menu, 2.0.3
|
||||||
opt.OptionLanguage = item.Language;
|
opt.OptionLanguage = item.Language;
|
||||||
opt.Flags = item.Flags;
|
opt.Flags = item.Flags;
|
||||||
opt.OrderIndex = (int)item.OrderIndex;
|
opt.OrderIndex = (int)item.OrderIndex;
|
||||||
@@ -757,7 +757,7 @@ namespace Game.Misc
|
|||||||
public GossipOptionFlags Flags;
|
public GossipOptionFlags Flags;
|
||||||
public int? GossipNpcOptionID;
|
public int? GossipNpcOptionID;
|
||||||
public bool BoxCoded;
|
public bool BoxCoded;
|
||||||
public uint BoxMoney;
|
public ulong BoxMoney;
|
||||||
public string BoxText;
|
public string BoxText;
|
||||||
public int? SpellID;
|
public int? SpellID;
|
||||||
public int? OverrideIconID;
|
public int? OverrideIconID;
|
||||||
@@ -801,7 +801,7 @@ namespace Game.Misc
|
|||||||
public uint ActionPoiID;
|
public uint ActionPoiID;
|
||||||
public int? GossipNpcOptionID;
|
public int? GossipNpcOptionID;
|
||||||
public bool BoxCoded;
|
public bool BoxCoded;
|
||||||
public uint BoxMoney;
|
public ulong BoxMoney;
|
||||||
public string BoxText;
|
public string BoxText;
|
||||||
public uint BoxBroadcastTextId;
|
public uint BoxBroadcastTextId;
|
||||||
public int? SpellID;
|
public int? SpellID;
|
||||||
|
|||||||
@@ -2355,7 +2355,7 @@ namespace Game.Entities
|
|||||||
Player player = user.ToPlayer();
|
Player player = user.ToPlayer();
|
||||||
|
|
||||||
EnableBarberShop enableBarberShop = new();
|
EnableBarberShop enableBarberShop = new();
|
||||||
enableBarberShop.CustomizationScope = (byte)info.BarberChair.CustomizationScope;
|
enableBarberShop.CustomizationFeatureMask = (byte)info.BarberChair.CustomizationFeatureMask;
|
||||||
player.SendPacket(enableBarberShop);
|
player.SendPacket(enableBarberShop);
|
||||||
|
|
||||||
// fallback, will always work
|
// fallback, will always work
|
||||||
|
|||||||
@@ -1298,7 +1298,7 @@ namespace Game.Entities
|
|||||||
public int HeightOffset; // 1 Height Offset (inches), int, Min value: -100, Max value: 100, Default value: 0
|
public int HeightOffset; // 1 Height Offset (inches), int, Min value: -100, Max value: 100, Default value: 0
|
||||||
public uint SitAnimKit; // 2 Sit Anim Kit, References: AnimKit, NoValue = 0
|
public uint SitAnimKit; // 2 Sit Anim Kit, References: AnimKit, NoValue = 0
|
||||||
public uint InteractRadiusOverride; // 3 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
|
public uint InteractRadiusOverride; // 3 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
|
||||||
public uint CustomizationScope; // 4 Customization Scope, int, Min value: 0, Max value: 2147483647, Default value: 0
|
public uint CustomizationFeatureMask; // 4 Customization Feature Mask, int, Min value: 0, Max value: 2147483647, Default value: 0
|
||||||
public uint Preventteleportingtheplayeroutofthebarbershopchair;// 5 Prevent teleporting the player out of the barbershop chair, enum { false, true, }; Default: false
|
public uint Preventteleportingtheplayeroutofthebarbershopchair;// 5 Prevent teleporting the player out of the barbershop chair, enum { false, true, }; Default: false
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1476,13 +1476,14 @@ namespace Game.Entities
|
|||||||
|
|
||||||
public struct uilink
|
public struct uilink
|
||||||
{
|
{
|
||||||
public uint UILinkType; // 0 UI Link Type, enum { Adventure Journal, Obliterum Forge, Scrapping Machine, Item Interaction }; Default: Adventure Journal
|
public uint UILinkType; // 0 UI Link Type(Deprecated), enum { Adventure Journal, Obliterum Forge, Scrapping Machine, Item Interaction }; Default: Adventure Journal
|
||||||
public uint allowMounted; // 1 allowMounted, enum { false, true, }; Default: false
|
public uint allowMounted; // 1 allowMounted, enum { false, true, }; Default: false
|
||||||
public uint GiganticAOI; // 2 Gigantic AOI, enum { false, true, }; Default: false
|
public uint GiganticAOI; // 2 Gigantic AOI, enum { false, true, }; Default: false
|
||||||
public uint spellFocusType; // 3 spellFocusType, References: SpellFocusObject, NoValue = 0
|
public uint spellFocusType; // 3 spellFocusType, References: SpellFocusObject, NoValue = 0
|
||||||
public uint radius; // 4 radius, int, Min value: 0, Max value: 50, Default value: 10
|
public uint radius; // 4 radius, int, Min value: 0, Max value: 50, Default value: 10
|
||||||
public uint InteractRadiusOverride; // 5 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
|
public uint InteractRadiusOverride; // 5 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
|
||||||
public uint ItemInteractionID; // 6 Item Interaction ID, References: UiItemInteraction, NoValue = 0
|
public uint ItemInteractionID; // 6 Item Interaction ID, References: UiItemInteraction, NoValue = 0
|
||||||
|
public uint PlayerInteractionType; // 7 Player Interaction Type, enum { None, TradePartner, Item, Gossip, QuestGiver, Merchant, TaxiNode, Trainer, Banker, AlliedRaceDetailsGiver, GuildBanker, Registrar, Vendor, PetitionVendor, GuildTabardVendor, TalentMaster, SpecializationMaster, MailInfo, SpiritHealer, AreaSpiritHealer, Binder, Auctioneer, StableMaster, BattleMaster, Transmogrifier, LFGDungeon, VoidStorageBanker, BlackMarketAuctioneer, AdventureMap, WorldMap, GarrArchitect, GarrTradeskill, GarrMission, ShipmentCrafter, GarrRecruitment, GarrTalent, Trophy, PlayerChoice, ArtifactForge, ObliterumForge, ScrappingMachine, ContributionCollector, AzeriteRespec, IslandQueue, ItemInteraction, ChromieTime, CovenantPreview, AnimaDiversion, LegendaryCrafting, WeeklyRewards, Soulbind, CovenantSanctum, NewPlayerGuide, ItemUpgrade, AdventureJournal, Renown, AzeriteForge, PerksProgramVendor, ProfessionsCraftingOrder, Professions, ProfessionsCustomerOrder, TraitSystem, BarbersChoice, JailersTowerBuffs, MajorFactionRenown, PersonalTabardVendor, ForgeMaster, CharacterBanker, AccountBanker, ProfessionRespec, PlaceholderType71, PlaceholderType72, PlaceholderType73, PlaceholderType74, PlaceholderType75, PlaceholderType76, PlaceholderType77, }; Default: None
|
||||||
}
|
}
|
||||||
|
|
||||||
public struct keystonereceptacle
|
public struct keystonereceptacle
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -33,7 +33,7 @@ namespace Game.Entities
|
|||||||
FEntityLocalMatrix = 113,
|
FEntityLocalMatrix = 113,
|
||||||
FEntityWorldMatrix = 114,
|
FEntityWorldMatrix = 114,
|
||||||
CActor = 115, // INDIRECT,
|
CActor = 115, // INDIRECT,
|
||||||
FVendor_C = 117, // UPDATEABLE,
|
FVendor_C = 117, // UPDATEABLE, INDIRECT,
|
||||||
FMirroredObject_C = 119,
|
FMirroredObject_C = 119,
|
||||||
End = 255,
|
End = 255,
|
||||||
}
|
}
|
||||||
@@ -84,7 +84,7 @@ namespace Game.Entities
|
|||||||
Array.Sort(arr);
|
Array.Sort(arr);
|
||||||
++count;
|
++count;
|
||||||
return (whereIndex, true);
|
return (whereIndex, true);
|
||||||
};
|
}
|
||||||
|
|
||||||
if (!insertSorted(ref Ids, ref Count, fragment).Item2)
|
if (!insertSorted(ref Ids, ref Count, fragment).Item2)
|
||||||
return;
|
return;
|
||||||
@@ -103,7 +103,8 @@ namespace Game.Entities
|
|||||||
if (IsIndirectFragment(UpdateableIds[i]))
|
if (IsIndirectFragment(UpdateableIds[i]))
|
||||||
{
|
{
|
||||||
ContentsChangedMask |= UpdateableMasks[i]; // set the first bit to true to activate fragment
|
ContentsChangedMask |= UpdateableMasks[i]; // set the first bit to true to activate fragment
|
||||||
UpdateableMasks[i] |= (byte)(1 << maskIndex++);
|
++maskIndex;
|
||||||
|
UpdateableMasks[i] <<= 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -125,7 +126,7 @@ namespace Game.Entities
|
|||||||
return (where, true);
|
return (where, true);
|
||||||
}
|
}
|
||||||
return (where, false);
|
return (where, false);
|
||||||
};
|
}
|
||||||
|
|
||||||
if (!removeSorted(ref Ids, ref Count, fragment).Item2)
|
if (!removeSorted(ref Ids, ref Count, fragment).Item2)
|
||||||
return;
|
return;
|
||||||
@@ -142,7 +143,10 @@ namespace Game.Entities
|
|||||||
{
|
{
|
||||||
UpdateableMasks[i] = (byte)(1 << maskIndex++);
|
UpdateableMasks[i] = (byte)(1 << maskIndex++);
|
||||||
if (IsIndirectFragment(UpdateableIds[i]))
|
if (IsIndirectFragment(UpdateableIds[i]))
|
||||||
UpdateableMasks[i] |= (byte)(1 << maskIndex++);
|
{
|
||||||
|
++maskIndex;
|
||||||
|
UpdateableMasks[i] <<= 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -157,7 +161,7 @@ namespace Game.Entities
|
|||||||
|
|
||||||
public static bool IsIndirectFragment(EntityFragment frag)
|
public static bool IsIndirectFragment(EntityFragment frag)
|
||||||
{
|
{
|
||||||
return frag == EntityFragment.CGObject || frag == EntityFragment.CActor;
|
return frag == EntityFragment.CGObject || frag == EntityFragment.CActor || frag == EntityFragment.FVendor_C;
|
||||||
}
|
}
|
||||||
|
|
||||||
public EntityFragment[] GetIds() { return Ids[..Count]; }
|
public EntityFragment[] GetIds() { return Ids[..Count]; }
|
||||||
|
|||||||
@@ -249,9 +249,14 @@ namespace Game.Entities
|
|||||||
|
|
||||||
public void BuildEntityFragmentsForValuesUpdateForPlayerWithMask(WorldPacket data, UpdateFieldFlag flags)
|
public void BuildEntityFragmentsForValuesUpdateForPlayerWithMask(WorldPacket data, UpdateFieldFlag flags)
|
||||||
{
|
{
|
||||||
|
byte contentsChangedMask = EntityDefinitionsConst.CGObjectChangedMask;
|
||||||
|
foreach (var updateableFragmentId in m_entityFragments.GetUpdateableIds())
|
||||||
|
if (EntityFragmentsHolder.IsIndirectFragment(updateableFragmentId))
|
||||||
|
contentsChangedMask |= (byte)(m_entityFragments.GetUpdateMaskFor(updateableFragmentId) >> 1); // set the "fragment exists" bit
|
||||||
|
|
||||||
data.WriteUInt8((byte)(flags.HasFlag(UpdateFieldFlag.Owner) ? 1 : 0));
|
data.WriteUInt8((byte)(flags.HasFlag(UpdateFieldFlag.Owner) ? 1 : 0));
|
||||||
data.WriteUInt8(0); // m_entityFragments.IdsChanged
|
data.WriteUInt8(0); // m_entityFragments.IdsChanged
|
||||||
data.WriteUInt8(EntityDefinitionsConst.CGObjectUpdateMask);
|
data.WriteUInt8(contentsChangedMask);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void BuildDestroyUpdateBlock(UpdateData data)
|
public void BuildDestroyUpdateBlock(UpdateData data)
|
||||||
@@ -319,6 +324,7 @@ namespace Game.Entities
|
|||||||
bool HasSpline = unit.IsSplineEnabled();
|
bool HasSpline = unit.IsSplineEnabled();
|
||||||
bool HasInertia = unit.m_movementInfo.inertia.HasValue;
|
bool HasInertia = unit.m_movementInfo.inertia.HasValue;
|
||||||
bool HasAdvFlying = unit.m_movementInfo.advFlying.HasValue;
|
bool HasAdvFlying = unit.m_movementInfo.advFlying.HasValue;
|
||||||
|
bool HasDriveStatus = unit.m_movementInfo.driveStatus.HasValue;
|
||||||
bool HasStandingOnGameObjectGUID = unit.m_movementInfo.standingOnGameObjectGUID.HasValue;
|
bool HasStandingOnGameObjectGUID = unit.m_movementInfo.standingOnGameObjectGUID.HasValue;
|
||||||
|
|
||||||
data.WritePackedGuid(GetGUID()); // MoverGUID
|
data.WritePackedGuid(GetGUID()); // MoverGUID
|
||||||
@@ -349,6 +355,9 @@ namespace Game.Entities
|
|||||||
data.WriteBit(false); // HeightChangeFailed
|
data.WriteBit(false); // HeightChangeFailed
|
||||||
data.WriteBit(false); // RemoteTimeValid
|
data.WriteBit(false); // RemoteTimeValid
|
||||||
data.WriteBit(HasInertia); // HasInertia
|
data.WriteBit(HasInertia); // HasInertia
|
||||||
|
data.WriteBit(HasAdvFlying); // HasAdvFlying
|
||||||
|
data.WriteBit(HasDriveStatus); // HasDriveStatus
|
||||||
|
data.FlushBits();
|
||||||
|
|
||||||
if (!unit.m_movementInfo.transport.guid.IsEmpty())
|
if (!unit.m_movementInfo.transport.guid.IsEmpty())
|
||||||
MovementExtensions.WriteTransportInfo(data, unit.m_movementInfo.transport);
|
MovementExtensions.WriteTransportInfo(data, unit.m_movementInfo.transport);
|
||||||
@@ -382,6 +391,14 @@ namespace Game.Entities
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (HasDriveStatus)
|
||||||
|
{
|
||||||
|
data.WriteBit(unit.m_movementInfo.driveStatus.Value.accelerating);
|
||||||
|
data.WriteBit(unit.m_movementInfo.driveStatus.Value.drifting);
|
||||||
|
data.WriteFloat(unit.m_movementInfo.driveStatus.Value.speed);
|
||||||
|
data.WriteFloat(unit.m_movementInfo.driveStatus.Value.movementAngle);
|
||||||
|
}
|
||||||
|
|
||||||
data.WriteFloat(unit.GetSpeed(UnitMoveType.Walk));
|
data.WriteFloat(unit.GetSpeed(UnitMoveType.Walk));
|
||||||
data.WriteFloat(unit.GetSpeed(UnitMoveType.Run));
|
data.WriteFloat(unit.GetSpeed(UnitMoveType.Run));
|
||||||
data.WriteFloat(unit.GetSpeed(UnitMoveType.RunBack));
|
data.WriteFloat(unit.GetSpeed(UnitMoveType.RunBack));
|
||||||
@@ -841,7 +858,6 @@ namespace Game.Entities
|
|||||||
{
|
{
|
||||||
m_values.ClearChangesMask(m_objectData);
|
m_values.ClearChangesMask(m_objectData);
|
||||||
m_entityFragments.IdsChanged = false;
|
m_entityFragments.IdsChanged = false;
|
||||||
m_entityFragments.ContentsChangedMask = EntityDefinitionsConst.CGObjectActiveMask;
|
|
||||||
|
|
||||||
if (m_objectUpdated)
|
if (m_objectUpdated)
|
||||||
{
|
{
|
||||||
@@ -3963,6 +3979,7 @@ namespace Game.Entities
|
|||||||
public JumpInfo jump;
|
public JumpInfo jump;
|
||||||
public float stepUpStartElevation { get; set; }
|
public float stepUpStartElevation { get; set; }
|
||||||
public AdvFlying? advFlying;
|
public AdvFlying? advFlying;
|
||||||
|
public Drive? driveStatus;
|
||||||
public ObjectGuid? standingOnGameObjectGUID;
|
public ObjectGuid? standingOnGameObjectGUID;
|
||||||
|
|
||||||
public MovementInfo()
|
public MovementInfo()
|
||||||
@@ -4027,12 +4044,14 @@ namespace Game.Entities
|
|||||||
public uint prevTime;
|
public uint prevTime;
|
||||||
public uint vehicleId;
|
public uint vehicleId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public struct Inertia
|
public struct Inertia
|
||||||
{
|
{
|
||||||
public int id;
|
public int id;
|
||||||
public Position force;
|
public Position force;
|
||||||
public uint lifetime;
|
public uint lifetime;
|
||||||
}
|
}
|
||||||
|
|
||||||
public struct JumpInfo
|
public struct JumpInfo
|
||||||
{
|
{
|
||||||
public void Reset()
|
public void Reset()
|
||||||
@@ -4047,12 +4066,21 @@ namespace Game.Entities
|
|||||||
public float cosAngle;
|
public float cosAngle;
|
||||||
public float xyspeed;
|
public float xyspeed;
|
||||||
}
|
}
|
||||||
|
|
||||||
// advflying
|
// advflying
|
||||||
public struct AdvFlying
|
public struct AdvFlying
|
||||||
{
|
{
|
||||||
public float forwardVelocity;
|
public float forwardVelocity;
|
||||||
public float upVelocity;
|
public float upVelocity;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public struct Drive
|
||||||
|
{
|
||||||
|
public float speed;
|
||||||
|
public float movementAngle;
|
||||||
|
public bool accelerating;
|
||||||
|
public bool drifting;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class MovementForce
|
public class MovementForce
|
||||||
@@ -4064,6 +4092,9 @@ namespace Game.Entities
|
|||||||
public float Magnitude;
|
public float Magnitude;
|
||||||
public MovementForceType Type;
|
public MovementForceType Type;
|
||||||
public int MovementForceID;
|
public int MovementForceID;
|
||||||
|
public int Unknown1110_1;
|
||||||
|
public int Unused1110;
|
||||||
|
public uint Flags;
|
||||||
|
|
||||||
public void Read(WorldPacket data)
|
public void Read(WorldPacket data)
|
||||||
{
|
{
|
||||||
@@ -4073,6 +4104,9 @@ namespace Game.Entities
|
|||||||
TransportID = data.ReadUInt32();
|
TransportID = data.ReadUInt32();
|
||||||
Magnitude = data.ReadFloat();
|
Magnitude = data.ReadFloat();
|
||||||
MovementForceID = data.ReadInt32();
|
MovementForceID = data.ReadInt32();
|
||||||
|
Unknown1110_1 = data.ReadInt32();
|
||||||
|
Unused1110 = data.ReadInt32();
|
||||||
|
Flags = data.ReadUInt32();
|
||||||
Type = (MovementForceType)data.ReadBits<byte>(2);
|
Type = (MovementForceType)data.ReadBits<byte>(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4264,7 +4298,13 @@ namespace Game.Entities
|
|||||||
{
|
{
|
||||||
_owner.m_entityFragments.ContentsChangedMask &= (byte)~_owner.m_entityFragments.GetUpdateMaskFor((EntityFragment)updateData._blockBit);
|
_owner.m_entityFragments.ContentsChangedMask &= (byte)~_owner.m_entityFragments.GetUpdateMaskFor((EntityFragment)updateData._blockBit);
|
||||||
if ((EntityFragment)updateData._blockBit == EntityFragment.CGObject)
|
if ((EntityFragment)updateData._blockBit == EntityFragment.CGObject)
|
||||||
|
{
|
||||||
_changesMask.Reset(updateData.Bit);
|
_changesMask.Reset(updateData.Bit);
|
||||||
|
if (!_changesMask.IsAnySet())
|
||||||
|
_owner.m_entityFragments.ContentsChangedMask &= (byte)~_owner.m_entityFragments.GetUpdateMaskFor((EntityFragment)updateData._blockBit);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
_owner.m_entityFragments.ContentsChangedMask &= (byte)~_owner.m_entityFragments.GetUpdateMaskFor((EntityFragment)updateData._blockBit);
|
||||||
|
|
||||||
updateData.ClearChangesMask();
|
updateData.ClearChangesMask();
|
||||||
}
|
}
|
||||||
@@ -4273,7 +4313,13 @@ namespace Game.Entities
|
|||||||
{
|
{
|
||||||
_owner.m_entityFragments.ContentsChangedMask &= (byte)~_owner.m_entityFragments.GetUpdateMaskFor((EntityFragment)updateData._blockBit);
|
_owner.m_entityFragments.ContentsChangedMask &= (byte)~_owner.m_entityFragments.GetUpdateMaskFor((EntityFragment)updateData._blockBit);
|
||||||
if ((EntityFragment)updateData._blockBit == EntityFragment.CGObject)
|
if ((EntityFragment)updateData._blockBit == EntityFragment.CGObject)
|
||||||
|
{
|
||||||
_changesMask.Reset(updateData.Bit);
|
_changesMask.Reset(updateData.Bit);
|
||||||
|
if (!_changesMask.IsAnySet())
|
||||||
|
_owner.m_entityFragments.ContentsChangedMask &= (byte)~_owner.m_entityFragments.GetUpdateMaskFor((EntityFragment)updateData._blockBit);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
_owner.m_entityFragments.ContentsChangedMask &= (byte)~_owner.m_entityFragments.GetUpdateMaskFor((EntityFragment)updateData._blockBit);
|
||||||
|
|
||||||
if (typeof(IHasChangesMask).IsAssignableFrom(typeof(U)))
|
if (typeof(IHasChangesMask).IsAssignableFrom(typeof(U)))
|
||||||
((IHasChangesMask)updateField._value).ClearChangesMask();
|
((IHasChangesMask)updateField._value).ClearChangesMask();
|
||||||
|
|||||||
@@ -162,7 +162,7 @@ namespace Game.Entities
|
|||||||
data.Honor = honor;
|
data.Honor = honor;
|
||||||
data.OriginalHonor = honor;
|
data.OriginalHonor = honor;
|
||||||
data.Target = victim_guid;
|
data.Target = victim_guid;
|
||||||
data.Rank = victim_rank;
|
data.Rank = (sbyte)victim_rank;
|
||||||
|
|
||||||
SendPacket(data);
|
SendPacket(data);
|
||||||
|
|
||||||
|
|||||||
@@ -853,7 +853,7 @@ namespace Game.Entities
|
|||||||
Pet oldPet = GetPet();
|
Pet oldPet = GetPet();
|
||||||
if (oldPet != null && !oldPet.IsAlive())
|
if (oldPet != null && !oldPet.IsAlive())
|
||||||
{
|
{
|
||||||
sess.SendPetStableResult(StableResult.InternalError);
|
sess.SendPetStableResult(StableResult.NoPet);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -881,7 +881,7 @@ namespace Game.Entities
|
|||||||
Pet oldPet = GetPet();
|
Pet oldPet = GetPet();
|
||||||
if (oldPet != null && !oldPet.IsAlive())
|
if (oldPet != null && !oldPet.IsAlive())
|
||||||
{
|
{
|
||||||
sess.SendPetStableResult(StableResult.InternalError);
|
sess.SendPetStableResult(StableResult.NoPet);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2813,7 +2813,7 @@ namespace Game.Entities
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
long cost = item.BoxMoney;
|
long cost = (long)item.BoxMoney;
|
||||||
if (!HasEnoughMoney(cost))
|
if (!HasEnoughMoney(cost))
|
||||||
{
|
{
|
||||||
SendBuyError(BuyResult.NotEnoughtMoney, null, 0);
|
SendBuyError(BuyResult.NotEnoughtMoney, null, 0);
|
||||||
@@ -2968,7 +2968,7 @@ namespace Game.Entities
|
|||||||
PlayerInteractionType.ProfessionsCraftingOrder, PlayerInteractionType.Professions, PlayerInteractionType.ProfessionsCustomerOrder,
|
PlayerInteractionType.ProfessionsCraftingOrder, PlayerInteractionType.Professions, PlayerInteractionType.ProfessionsCustomerOrder,
|
||||||
PlayerInteractionType.TraitSystem, PlayerInteractionType.BarbersChoice, PlayerInteractionType.MajorFactionRenown,
|
PlayerInteractionType.TraitSystem, PlayerInteractionType.BarbersChoice, PlayerInteractionType.MajorFactionRenown,
|
||||||
PlayerInteractionType.PersonalTabardVendor, PlayerInteractionType.ForgeMaster, PlayerInteractionType.CharacterBanker,
|
PlayerInteractionType.PersonalTabardVendor, PlayerInteractionType.ForgeMaster, PlayerInteractionType.CharacterBanker,
|
||||||
PlayerInteractionType.AccountBanker
|
PlayerInteractionType.AccountBanker, PlayerInteractionType.ProfessionRespec
|
||||||
};
|
};
|
||||||
|
|
||||||
PlayerInteractionType interactionType = GossipOptionNpcToInteractionType[(int)gossipOptionNpc];
|
PlayerInteractionType interactionType = GossipOptionNpcToInteractionType[(int)gossipOptionNpc];
|
||||||
@@ -5938,8 +5938,8 @@ namespace Game.Entities
|
|||||||
|
|
||||||
PlayerLevelInfo info = ObjectMgr.GetPlayerLevelInfo(GetRace(), GetClass(), GetLevel());
|
PlayerLevelInfo info = ObjectMgr.GetPlayerLevelInfo(GetRace(), GetClass(), GetLevel());
|
||||||
|
|
||||||
int exp_max_lvl = (int)ObjectMgr.GetMaxLevelForExpansion(GetSession().GetExpansion());
|
uint exp_max_lvl = ObjectMgr.GetMaxLevelForExpansion(GetSession().GetExpansion());
|
||||||
int conf_max_lvl = WorldConfig.GetIntValue(WorldCfg.MaxPlayerLevel);
|
uint conf_max_lvl = WorldConfig.GetUIntValue(WorldCfg.MaxPlayerLevel);
|
||||||
if (exp_max_lvl == SharedConst.DefaultMaxLevel || exp_max_lvl >= conf_max_lvl)
|
if (exp_max_lvl == SharedConst.DefaultMaxLevel || exp_max_lvl >= conf_max_lvl)
|
||||||
SetUpdateFieldValue(m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.MaxLevel), conf_max_lvl);
|
SetUpdateFieldValue(m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.MaxLevel), conf_max_lvl);
|
||||||
else
|
else
|
||||||
@@ -8023,7 +8023,7 @@ namespace Game.Entities
|
|||||||
{
|
{
|
||||||
PlayerTalkClass.GetGossipMenu().AddMenuItem(0, -1, optionNpc, text, 0, GossipOptionFlags.None, null, 0, 0, false, 0, "", null, null, sender, action);
|
PlayerTalkClass.GetGossipMenu().AddMenuItem(0, -1, optionNpc, text, 0, GossipOptionFlags.None, null, 0, 0, false, 0, "", null, null, sender, action);
|
||||||
}
|
}
|
||||||
public void AddGossipItem(GossipOptionNpc optionNpc, string text, uint sender, uint action, string popupText, uint popupMoney, bool coded)
|
public void AddGossipItem(GossipOptionNpc optionNpc, string text, uint sender, uint action, string popupText, ulong popupMoney, bool coded)
|
||||||
{
|
{
|
||||||
PlayerTalkClass.GetGossipMenu().AddMenuItem(0, -1, optionNpc, text, 0, GossipOptionFlags.None, null, 0, 0, coded, popupMoney, popupText, null, null, sender, action);
|
PlayerTalkClass.GetGossipMenu().AddMenuItem(0, -1, optionNpc, text, 0, GossipOptionFlags.None, null, 0, 0, coded, popupMoney, popupText, null, null, sender, action);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -516,7 +516,7 @@ namespace Game.Garrisons
|
|||||||
public void SendInfo()
|
public void SendInfo()
|
||||||
{
|
{
|
||||||
GetGarrisonInfoResult garrisonInfo = new();
|
GetGarrisonInfoResult garrisonInfo = new();
|
||||||
garrisonInfo.FactionIndex = GetFaction();
|
garrisonInfo.FactionIndex = (sbyte)GetFaction();
|
||||||
|
|
||||||
GarrisonInfo garrison = new();
|
GarrisonInfo garrison = new();
|
||||||
garrison.GarrTypeID = GetGarrisonType();
|
garrison.GarrTypeID = GetGarrisonType();
|
||||||
|
|||||||
@@ -567,7 +567,7 @@ namespace Game
|
|||||||
gMenuItem.GossipNpcOptionID = result.Read<int>(10);
|
gMenuItem.GossipNpcOptionID = result.Read<int>(10);
|
||||||
|
|
||||||
gMenuItem.BoxCoded = result.Read<bool>(11);
|
gMenuItem.BoxCoded = result.Read<bool>(11);
|
||||||
gMenuItem.BoxMoney = result.Read<uint>(12);
|
gMenuItem.BoxMoney = result.Read<ulong>(12);
|
||||||
gMenuItem.BoxText = result.Read<string>(13);
|
gMenuItem.BoxText = result.Read<string>(13);
|
||||||
gMenuItem.BoxBroadcastTextId = result.Read<uint>(14);
|
gMenuItem.BoxBroadcastTextId = result.Read<uint>(14);
|
||||||
if (!result.IsNull(15))
|
if (!result.IsNull(15))
|
||||||
|
|||||||
@@ -995,6 +995,7 @@ namespace Game
|
|||||||
|
|
||||||
AuctionHelloResponse auctionHelloResponse = new();
|
AuctionHelloResponse auctionHelloResponse = new();
|
||||||
auctionHelloResponse.Auctioneer = guid;
|
auctionHelloResponse.Auctioneer = guid;
|
||||||
|
auctionHelloResponse.AuctionHouseID = ahEntry.Id;
|
||||||
auctionHelloResponse.OpenForBusiness = true;
|
auctionHelloResponse.OpenForBusiness = true;
|
||||||
SendPacket(auctionHelloResponse);
|
SendPacket(auctionHelloResponse);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -115,7 +115,7 @@ namespace Game
|
|||||||
foreach (var requirement in Global.ObjectMgr.GetRaceUnlockRequirements())
|
foreach (var requirement in Global.ObjectMgr.GetRaceUnlockRequirements())
|
||||||
{
|
{
|
||||||
EnumCharactersResult.RaceUnlock raceUnlock = new();
|
EnumCharactersResult.RaceUnlock raceUnlock = new();
|
||||||
raceUnlock.RaceID = requirement.Key;
|
raceUnlock.RaceID = (sbyte)requirement.Key;
|
||||||
raceUnlock.HasUnlockedLicense = (byte)GetAccountExpansion() >= requirement.Value.Expansion;
|
raceUnlock.HasUnlockedLicense = (byte)GetAccountExpansion() >= requirement.Value.Expansion;
|
||||||
raceUnlock.HasUnlockedAchievement = requirement.Value.AchievementId != 0 && (WorldConfig.GetBoolValue(WorldCfg.CharacterCreatingDisableAlliedRaceAchievementRequirement)
|
raceUnlock.HasUnlockedAchievement = requirement.Value.AchievementId != 0 && (WorldConfig.GetBoolValue(WorldCfg.CharacterCreatingDisableAlliedRaceAchievementRequirement)
|
||||||
/* || HasAccountAchievement(requirement.second.AchievementId)*/);
|
/* || HasAccountAchievement(requirement.second.AchievementId)*/);
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ namespace Game
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case ItemCollectionType.TransmogSetFavorite:
|
case ItemCollectionType.TransmogSetFavorite:
|
||||||
|
case ItemCollectionType.WarbandScene:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -354,9 +354,15 @@ namespace Game
|
|||||||
[WorldPacketHandler(ClientOpcodes.SetPetSlot)]
|
[WorldPacketHandler(ClientOpcodes.SetPetSlot)]
|
||||||
void HandleSetPetSlot(SetPetSlot setPetSlot)
|
void HandleSetPetSlot(SetPetSlot setPetSlot)
|
||||||
{
|
{
|
||||||
if (!CheckStableMaster(setPetSlot.StableMaster) || setPetSlot.DestSlot >= (byte)PetSaveMode.LastStableSlot)
|
if (!CheckStableMaster(setPetSlot.StableMaster))
|
||||||
{
|
{
|
||||||
SendPetStableResult(StableResult.InternalError);
|
SendPetStableResult(StableResult.NotStableMaster);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (setPetSlot.DestSlot >= (byte)PetSaveMode.LastStableSlot)
|
||||||
|
{
|
||||||
|
SendPetStableResult(StableResult.InvalidSlot);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ namespace Game.Networking.Packets
|
|||||||
MinLevel = _worldPacket.ReadUInt8();
|
MinLevel = _worldPacket.ReadUInt8();
|
||||||
MaxLevel = _worldPacket.ReadUInt8();
|
MaxLevel = _worldPacket.ReadUInt8();
|
||||||
Unused1007_1 = _worldPacket.ReadUInt8();
|
Unused1007_1 = _worldPacket.ReadUInt8();
|
||||||
Unused1007_2= _worldPacket.ReadUInt8();
|
Unused1007_2 = _worldPacket.ReadUInt8();
|
||||||
Filters = (AuctionHouseFilterMask)_worldPacket.ReadUInt32();
|
Filters = (AuctionHouseFilterMask)_worldPacket.ReadUInt32();
|
||||||
uint knownPetSize = _worldPacket.ReadUInt32();
|
uint knownPetSize = _worldPacket.ReadUInt32();
|
||||||
MaxPetLevel = _worldPacket.ReadInt8();
|
MaxPetLevel = _worldPacket.ReadInt8();
|
||||||
@@ -133,8 +133,8 @@ namespace Game.Networking.Packets
|
|||||||
|
|
||||||
public override void Read()
|
public override void Read()
|
||||||
{
|
{
|
||||||
Auctioneer = _worldPacket.ReadPackedGuid();
|
Auctioneer = _worldPacket.ReadPackedGuid();
|
||||||
Offset = _worldPacket.ReadUInt32();
|
Offset = _worldPacket.ReadUInt32();
|
||||||
if (_worldPacket.HasBit())
|
if (_worldPacket.HasBit())
|
||||||
TaintedBy = new();
|
TaintedBy = new();
|
||||||
|
|
||||||
@@ -270,7 +270,7 @@ namespace Game.Networking.Packets
|
|||||||
}
|
}
|
||||||
|
|
||||||
class AuctionPlaceBid : ClientPacket
|
class AuctionPlaceBid : ClientPacket
|
||||||
{
|
{
|
||||||
public ObjectGuid Auctioneer;
|
public ObjectGuid Auctioneer;
|
||||||
public ulong BidAmount;
|
public ulong BidAmount;
|
||||||
public uint AuctionID;
|
public uint AuctionID;
|
||||||
@@ -341,7 +341,7 @@ namespace Game.Networking.Packets
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class AuctionSellCommodity : ClientPacket
|
class AuctionSellCommodity : ClientPacket
|
||||||
{
|
{
|
||||||
public ObjectGuid Auctioneer;
|
public ObjectGuid Auctioneer;
|
||||||
@@ -402,7 +402,7 @@ namespace Game.Networking.Packets
|
|||||||
}
|
}
|
||||||
|
|
||||||
class AuctionSetFavoriteItem : ClientPacket
|
class AuctionSetFavoriteItem : ClientPacket
|
||||||
{
|
{
|
||||||
public AuctionFavoriteInfo Item;
|
public AuctionFavoriteInfo Item;
|
||||||
public bool IsNotFavorite = true;
|
public bool IsNotFavorite = true;
|
||||||
|
|
||||||
@@ -439,7 +439,7 @@ namespace Game.Networking.Packets
|
|||||||
}
|
}
|
||||||
|
|
||||||
class AuctionClosedNotification : ServerPacket
|
class AuctionClosedNotification : ServerPacket
|
||||||
{
|
{
|
||||||
public AuctionOwnerNotification Info;
|
public AuctionOwnerNotification Info;
|
||||||
public float ProceedsMailDelay;
|
public float ProceedsMailDelay;
|
||||||
public bool Sold = true;
|
public bool Sold = true;
|
||||||
@@ -456,7 +456,7 @@ namespace Game.Networking.Packets
|
|||||||
}
|
}
|
||||||
|
|
||||||
class AuctionCommandResult : ServerPacket
|
class AuctionCommandResult : ServerPacket
|
||||||
{
|
{
|
||||||
public uint AuctionID; ///< the id of the auction that triggered this notification
|
public uint AuctionID; ///< the id of the auction that triggered this notification
|
||||||
public int Command; ///< the type of action that triggered this notification. Possible values are @ref AuctionAction
|
public int Command; ///< the type of action that triggered this notification. Possible values are @ref AuctionAction
|
||||||
public int ErrorCode; ///< the error code that was generated when trying to perform the action. Possible values are @ref AuctionError
|
public int ErrorCode; ///< the error code that was generated when trying to perform the action. Possible values are @ref AuctionError
|
||||||
@@ -515,6 +515,7 @@ namespace Game.Networking.Packets
|
|||||||
public ObjectGuid Auctioneer;
|
public ObjectGuid Auctioneer;
|
||||||
public uint PurchaseDeliveryDelay;
|
public uint PurchaseDeliveryDelay;
|
||||||
public uint CancelDeliveryDelay;
|
public uint CancelDeliveryDelay;
|
||||||
|
public uint AuctionHouseID;
|
||||||
public bool OpenForBusiness = true;
|
public bool OpenForBusiness = true;
|
||||||
|
|
||||||
public AuctionHelloResponse() : base(ServerOpcodes.AuctionHelloResponse) { }
|
public AuctionHelloResponse() : base(ServerOpcodes.AuctionHelloResponse) { }
|
||||||
@@ -524,13 +525,14 @@ namespace Game.Networking.Packets
|
|||||||
_worldPacket.WritePackedGuid(Auctioneer);
|
_worldPacket.WritePackedGuid(Auctioneer);
|
||||||
_worldPacket.WriteUInt32(PurchaseDeliveryDelay);
|
_worldPacket.WriteUInt32(PurchaseDeliveryDelay);
|
||||||
_worldPacket.WriteUInt32(CancelDeliveryDelay);
|
_worldPacket.WriteUInt32(CancelDeliveryDelay);
|
||||||
|
_worldPacket.WriteUInt32(AuctionHouseID);
|
||||||
_worldPacket.WriteBit(OpenForBusiness);
|
_worldPacket.WriteBit(OpenForBusiness);
|
||||||
_worldPacket.FlushBits();
|
_worldPacket.FlushBits();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class AuctionListBiddedItemsResult : ServerPacket
|
public class AuctionListBiddedItemsResult : ServerPacket
|
||||||
{
|
{
|
||||||
public List<AuctionItem> Items = new();
|
public List<AuctionItem> Items = new();
|
||||||
public uint DesiredDelay;
|
public uint DesiredDelay;
|
||||||
public bool HasMoreResults;
|
public bool HasMoreResults;
|
||||||
@@ -550,7 +552,7 @@ namespace Game.Networking.Packets
|
|||||||
}
|
}
|
||||||
|
|
||||||
public class AuctionListBucketsResult : ServerPacket
|
public class AuctionListBucketsResult : ServerPacket
|
||||||
{
|
{
|
||||||
public List<BucketInfo> Buckets = new();
|
public List<BucketInfo> Buckets = new();
|
||||||
public uint DesiredDelay;
|
public uint DesiredDelay;
|
||||||
public int Unknown830_0;
|
public int Unknown830_0;
|
||||||
@@ -576,7 +578,7 @@ namespace Game.Networking.Packets
|
|||||||
}
|
}
|
||||||
|
|
||||||
class AuctionFavoriteList : ServerPacket
|
class AuctionFavoriteList : ServerPacket
|
||||||
{
|
{
|
||||||
public uint DesiredDelay;
|
public uint DesiredDelay;
|
||||||
public List<AuctionFavoriteInfo> Items = new();
|
public List<AuctionFavoriteInfo> Items = new();
|
||||||
|
|
||||||
@@ -623,7 +625,7 @@ namespace Game.Networking.Packets
|
|||||||
}
|
}
|
||||||
|
|
||||||
public class AuctionListOwnedItemsResult : ServerPacket
|
public class AuctionListOwnedItemsResult : ServerPacket
|
||||||
{
|
{
|
||||||
public List<AuctionItem> Items = new();
|
public List<AuctionItem> Items = new();
|
||||||
public List<AuctionItem> SoldItems = new();
|
public List<AuctionItem> SoldItems = new();
|
||||||
public uint DesiredDelay;
|
public uint DesiredDelay;
|
||||||
@@ -648,7 +650,7 @@ namespace Game.Networking.Packets
|
|||||||
}
|
}
|
||||||
|
|
||||||
class AuctionOutbidNotification : ServerPacket
|
class AuctionOutbidNotification : ServerPacket
|
||||||
{
|
{
|
||||||
public AuctionBidderNotification Info;
|
public AuctionBidderNotification Info;
|
||||||
public ulong BidAmount;
|
public ulong BidAmount;
|
||||||
public ulong MinIncrement;
|
public ulong MinIncrement;
|
||||||
@@ -664,7 +666,7 @@ namespace Game.Networking.Packets
|
|||||||
}
|
}
|
||||||
|
|
||||||
class AuctionOwnerBidNotification : ServerPacket
|
class AuctionOwnerBidNotification : ServerPacket
|
||||||
{
|
{
|
||||||
public AuctionOwnerNotification Info;
|
public AuctionOwnerNotification Info;
|
||||||
public ObjectGuid Bidder;
|
public ObjectGuid Bidder;
|
||||||
public ulong MinIncrement;
|
public ulong MinIncrement;
|
||||||
@@ -680,7 +682,7 @@ namespace Game.Networking.Packets
|
|||||||
}
|
}
|
||||||
|
|
||||||
public class AuctionReplicateResponse : ServerPacket
|
public class AuctionReplicateResponse : ServerPacket
|
||||||
{
|
{
|
||||||
public uint ChangeNumberCursor;
|
public uint ChangeNumberCursor;
|
||||||
public uint ChangeNumberGlobal;
|
public uint ChangeNumberGlobal;
|
||||||
public uint DesiredDelay;
|
public uint DesiredDelay;
|
||||||
@@ -705,7 +707,7 @@ namespace Game.Networking.Packets
|
|||||||
}
|
}
|
||||||
|
|
||||||
class AuctionWonNotification : ServerPacket
|
class AuctionWonNotification : ServerPacket
|
||||||
{
|
{
|
||||||
public AuctionBidderNotification Info;
|
public AuctionBidderNotification Info;
|
||||||
|
|
||||||
public AuctionWonNotification() : base(ServerOpcodes.AuctionWonNotification) { }
|
public AuctionWonNotification() : base(ServerOpcodes.AuctionWonNotification) { }
|
||||||
@@ -791,7 +793,7 @@ namespace Game.Networking.Packets
|
|||||||
ItemClass = data.ReadInt32();
|
ItemClass = data.ReadInt32();
|
||||||
uint subClassFilterCount = data.ReadBits<uint>(5);
|
uint subClassFilterCount = data.ReadBits<uint>(5);
|
||||||
|
|
||||||
for (var i = 0; i < subClassFilterCount; ++i)
|
for (var i = 0; i < subClassFilterCount; ++i)
|
||||||
SubClassFilters[i] = new AuctionListFilterSubClass(data);
|
SubClassFilters[i] = new AuctionListFilterSubClass(data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -944,6 +946,7 @@ namespace Game.Networking.Packets
|
|||||||
public ObjectGuid ItemGuid;
|
public ObjectGuid ItemGuid;
|
||||||
public ObjectGuid OwnerAccountID;
|
public ObjectGuid OwnerAccountID;
|
||||||
public uint EndTime;
|
public uint EndTime;
|
||||||
|
public uint Unused1110;
|
||||||
public ObjectGuid? Bidder;
|
public ObjectGuid? Bidder;
|
||||||
public ulong? BidAmount;
|
public ulong? BidAmount;
|
||||||
public List<ItemGemData> Gems = new();
|
public List<ItemGemData> Gems = new();
|
||||||
@@ -981,6 +984,7 @@ namespace Game.Networking.Packets
|
|||||||
data.WritePackedGuid(Owner);
|
data.WritePackedGuid(Owner);
|
||||||
data.WriteInt32(DurationLeft);
|
data.WriteInt32(DurationLeft);
|
||||||
data.WriteUInt8(DeleteReason);
|
data.WriteUInt8(DeleteReason);
|
||||||
|
data.WriteUInt32(Unused1110);
|
||||||
|
|
||||||
foreach (ItemEnchantData enchant in Enchantments)
|
foreach (ItemEnchantData enchant in Enchantments)
|
||||||
enchant.Write(data);
|
enchant.Write(data);
|
||||||
@@ -1026,12 +1030,14 @@ namespace Game.Networking.Packets
|
|||||||
|
|
||||||
struct AuctionBidderNotification
|
struct AuctionBidderNotification
|
||||||
{
|
{
|
||||||
|
public uint AuctionHouseID;
|
||||||
public uint AuctionID;
|
public uint AuctionID;
|
||||||
public ObjectGuid Bidder;
|
public ObjectGuid Bidder;
|
||||||
public ItemInstance Item;
|
public ItemInstance Item;
|
||||||
|
|
||||||
public void Initialize(AuctionPosting auction, Item item)
|
public void Initialize(uint auctionHouseId, AuctionPosting auction, Item item)
|
||||||
{
|
{
|
||||||
|
AuctionHouseID = auctionHouseId;
|
||||||
AuctionID = auction.Id;
|
AuctionID = auction.Id;
|
||||||
Item = new ItemInstance(item);
|
Item = new ItemInstance(item);
|
||||||
Bidder = auction.Bidder;
|
Bidder = auction.Bidder;
|
||||||
@@ -1039,6 +1045,7 @@ namespace Game.Networking.Packets
|
|||||||
|
|
||||||
public void Write(WorldPacket data)
|
public void Write(WorldPacket data)
|
||||||
{
|
{
|
||||||
|
data.WriteUInt32(AuctionHouseID);
|
||||||
data.WriteUInt32(AuctionID);
|
data.WriteUInt32(AuctionID);
|
||||||
data.WritePackedGuid(Bidder);
|
data.WritePackedGuid(Bidder);
|
||||||
Item.Write(data);
|
Item.Write(data);
|
||||||
|
|||||||
@@ -371,6 +371,7 @@ namespace Game.Networking.Packets
|
|||||||
class EnterEncryptedMode : ServerPacket
|
class EnterEncryptedMode : ServerPacket
|
||||||
{
|
{
|
||||||
byte[] EncryptionKey;
|
byte[] EncryptionKey;
|
||||||
|
int RegionGroup;
|
||||||
bool Enabled;
|
bool Enabled;
|
||||||
static byte[] expandedPrivateKey;
|
static byte[] expandedPrivateKey;
|
||||||
|
|
||||||
@@ -404,6 +405,7 @@ namespace Game.Networking.Packets
|
|||||||
toSign.Finish(EnableEncryptionSeed, 16);
|
toSign.Finish(EnableEncryptionSeed, 16);
|
||||||
|
|
||||||
_worldPacket.WriteBytes(Ed25519.Sign(toSign.Digest, expandedPrivateKey, 0, EnableEncryptionContext));
|
_worldPacket.WriteBytes(Ed25519.Sign(toSign.Digest, expandedPrivateKey, 0, EnableEncryptionContext));
|
||||||
|
_worldPacket.WriteInt32(RegionGroup);
|
||||||
_worldPacket.WriteBit(Enabled);
|
_worldPacket.WriteBit(Enabled);
|
||||||
_worldPacket.FlushBits();
|
_worldPacket.FlushBits();
|
||||||
}
|
}
|
||||||
@@ -416,7 +418,7 @@ namespace Game.Networking.Packets
|
|||||||
{
|
{
|
||||||
data.WriteUInt32(WaitCount);
|
data.WriteUInt32(WaitCount);
|
||||||
data.WriteUInt32(WaitTime);
|
data.WriteUInt32(WaitTime);
|
||||||
data.WriteUInt32(AllowedFactionGroupForCharacterCreate);
|
data.WriteUInt8(AllowedFactionGroupForCharacterCreate);
|
||||||
data.WriteBit(HasFCM);
|
data.WriteBit(HasFCM);
|
||||||
data.WriteBit(CanCreateOnlyIfExisting);
|
data.WriteBit(CanCreateOnlyIfExisting);
|
||||||
data.FlushBits();
|
data.FlushBits();
|
||||||
@@ -424,7 +426,7 @@ namespace Game.Networking.Packets
|
|||||||
|
|
||||||
public uint WaitCount; // position of the account in the login queue
|
public uint WaitCount; // position of the account in the login queue
|
||||||
public uint WaitTime; // Wait time in login queue in minutes, if sent queued and this value is 0 client displays "unknown time"
|
public uint WaitTime; // Wait time in login queue in minutes, if sent queued and this value is 0 client displays "unknown time"
|
||||||
public uint AllowedFactionGroupForCharacterCreate;
|
public byte AllowedFactionGroupForCharacterCreate;
|
||||||
public bool HasFCM; // true if the account has a forced character migration pending. @todo implement
|
public bool HasFCM; // true if the account has a forced character migration pending. @todo implement
|
||||||
public bool CanCreateOnlyIfExisting; ///< Can create characters on realm only if player has other existing characters there
|
public bool CanCreateOnlyIfExisting; ///< Can create characters on realm only if player has other existing characters there
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -144,7 +144,7 @@ namespace Game.Networking.Packets
|
|||||||
_worldPacket.WriteUInt32(Mapid);
|
_worldPacket.WriteUInt32(Mapid);
|
||||||
_worldPacket.WriteUInt32(ShutdownTimer);
|
_worldPacket.WriteUInt32(ShutdownTimer);
|
||||||
_worldPacket.WriteUInt32(StartTimer);
|
_worldPacket.WriteUInt32(StartTimer);
|
||||||
_worldPacket.WriteBit(ArenaFaction != 0);
|
_worldPacket.WriteInt8(ArenaFaction);
|
||||||
_worldPacket.WriteBit(LeftEarly);
|
_worldPacket.WriteBit(LeftEarly);
|
||||||
_worldPacket.WriteBit(Brawl);
|
_worldPacket.WriteBit(Brawl);
|
||||||
_worldPacket.FlushBits();
|
_worldPacket.FlushBits();
|
||||||
@@ -152,7 +152,7 @@ namespace Game.Networking.Packets
|
|||||||
|
|
||||||
public BattlefieldStatusHeader Hdr = new();
|
public BattlefieldStatusHeader Hdr = new();
|
||||||
public uint ShutdownTimer;
|
public uint ShutdownTimer;
|
||||||
public byte ArenaFaction;
|
public sbyte ArenaFaction;
|
||||||
public bool LeftEarly;
|
public bool LeftEarly;
|
||||||
public bool Brawl;
|
public bool Brawl;
|
||||||
public uint StartTimer;
|
public uint StartTimer;
|
||||||
@@ -704,13 +704,14 @@ namespace Game.Networking.Packets
|
|||||||
{
|
{
|
||||||
data.WritePackedGuid(PlayerGUID);
|
data.WritePackedGuid(PlayerGUID);
|
||||||
data.WriteUInt32(Kills);
|
data.WriteUInt32(Kills);
|
||||||
|
data.WriteInt32(Faction);
|
||||||
data.WriteUInt32(DamageDone);
|
data.WriteUInt32(DamageDone);
|
||||||
data.WriteUInt32(HealingDone);
|
data.WriteUInt32(HealingDone);
|
||||||
data.WriteInt32(Stats.Count);
|
data.WriteInt32(Stats.Count);
|
||||||
data.WriteInt32(PrimaryTalentTree);
|
data.WriteInt32(PrimaryTalentTree);
|
||||||
data.WriteInt8(Sex);
|
data.WriteInt8(Sex);
|
||||||
data.WriteUInt32((uint)PlayerRace);
|
data.WriteInt8(PlayerRace);
|
||||||
data.WriteInt32(PlayerClass);
|
data.WriteInt8(PlayerClass);
|
||||||
data.WriteInt32(CreatureID);
|
data.WriteInt32(CreatureID);
|
||||||
data.WriteInt32(HonorLevel);
|
data.WriteInt32(HonorLevel);
|
||||||
data.WriteInt32(Role);
|
data.WriteInt32(Role);
|
||||||
@@ -718,7 +719,6 @@ namespace Game.Networking.Packets
|
|||||||
foreach (var pvpStat in Stats)
|
foreach (var pvpStat in Stats)
|
||||||
pvpStat.Write(data);
|
pvpStat.Write(data);
|
||||||
|
|
||||||
data.WriteBit(Faction != 0);
|
|
||||||
data.WriteBit(IsInWorld);
|
data.WriteBit(IsInWorld);
|
||||||
data.WriteBit(Honor.HasValue);
|
data.WriteBit(Honor.HasValue);
|
||||||
data.WriteBit(PreMatchRating.HasValue);
|
data.WriteBit(PreMatchRating.HasValue);
|
||||||
@@ -749,7 +749,7 @@ namespace Game.Networking.Packets
|
|||||||
|
|
||||||
public ObjectGuid PlayerGUID;
|
public ObjectGuid PlayerGUID;
|
||||||
public uint Kills;
|
public uint Kills;
|
||||||
public byte Faction;
|
public int Faction;
|
||||||
public bool IsInWorld;
|
public bool IsInWorld;
|
||||||
public HonorData? Honor;
|
public HonorData? Honor;
|
||||||
public uint DamageDone;
|
public uint DamageDone;
|
||||||
@@ -762,8 +762,8 @@ namespace Game.Networking.Packets
|
|||||||
public List<PVPMatchPlayerPVPStat> Stats = new();
|
public List<PVPMatchPlayerPVPStat> Stats = new();
|
||||||
public int PrimaryTalentTree;
|
public int PrimaryTalentTree;
|
||||||
public sbyte Sex;
|
public sbyte Sex;
|
||||||
public Race PlayerRace;
|
public sbyte PlayerRace;
|
||||||
public int PlayerClass;
|
public sbyte PlayerClass;
|
||||||
public int CreatureID;
|
public int CreatureID;
|
||||||
public int HonorLevel;
|
public int HonorLevel;
|
||||||
public int Role;
|
public int Role;
|
||||||
|
|||||||
@@ -52,9 +52,6 @@ namespace Game.Networking.Packets
|
|||||||
foreach (RaceLimitDisableInfo raceLimitDisableInfo in RaceLimitDisables)
|
foreach (RaceLimitDisableInfo raceLimitDisableInfo in RaceLimitDisables)
|
||||||
raceLimitDisableInfo.Write(_worldPacket);
|
raceLimitDisableInfo.Write(_worldPacket);
|
||||||
|
|
||||||
foreach (WarbandGroup warbandGroup in WarbandGroups)
|
|
||||||
warbandGroup.Write(_worldPacket);
|
|
||||||
|
|
||||||
foreach (CharacterInfo charInfo in Characters)
|
foreach (CharacterInfo charInfo in Characters)
|
||||||
charInfo.Write(_worldPacket);
|
charInfo.Write(_worldPacket);
|
||||||
|
|
||||||
@@ -63,6 +60,9 @@ namespace Game.Networking.Packets
|
|||||||
|
|
||||||
foreach (RaceUnlock raceUnlock in RaceUnlockData)
|
foreach (RaceUnlock raceUnlock in RaceUnlockData)
|
||||||
raceUnlock.Write(_worldPacket);
|
raceUnlock.Write(_worldPacket);
|
||||||
|
|
||||||
|
foreach (WarbandGroup warbandGroup in WarbandGroups)
|
||||||
|
warbandGroup.Write(_worldPacket);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool Success;
|
public bool Success;
|
||||||
@@ -197,6 +197,7 @@ namespace Game.Networking.Packets
|
|||||||
data.WriteUInt32((uint)Flags);
|
data.WriteUInt32((uint)Flags);
|
||||||
data.WriteUInt32((uint)Flags2);
|
data.WriteUInt32((uint)Flags2);
|
||||||
data.WriteUInt32(Flags3);
|
data.WriteUInt32(Flags3);
|
||||||
|
data.WriteUInt32(Flags4);
|
||||||
data.WriteUInt8(CantLoginReason);
|
data.WriteUInt8(CantLoginReason);
|
||||||
|
|
||||||
data.WriteUInt32(PetCreatureDisplayId);
|
data.WriteUInt32(PetCreatureDisplayId);
|
||||||
@@ -216,6 +217,7 @@ namespace Game.Networking.Packets
|
|||||||
|
|
||||||
data.WriteInt32(TimerunningSeasonID);
|
data.WriteInt32(TimerunningSeasonID);
|
||||||
data.WriteUInt32(OverrideSelectScreenFileDataID);
|
data.WriteUInt32(OverrideSelectScreenFileDataID);
|
||||||
|
data.WriteUInt32(Unused1110_1);
|
||||||
|
|
||||||
foreach (ChrCustomizationChoice customization in Customizations)
|
foreach (ChrCustomizationChoice customization in Customizations)
|
||||||
{
|
{
|
||||||
@@ -225,6 +227,8 @@ namespace Game.Networking.Packets
|
|||||||
|
|
||||||
data.WriteBits(Name.GetByteCount(), 6);
|
data.WriteBits(Name.GetByteCount(), 6);
|
||||||
data.WriteBit(FirstLogin);
|
data.WriteBit(FirstLogin);
|
||||||
|
data.WriteBit(Unused1110_2);
|
||||||
|
data.WriteBit(Unused1110_3);
|
||||||
data.FlushBits();
|
data.FlushBits();
|
||||||
|
|
||||||
data.WriteString(Name);
|
data.WriteString(Name);
|
||||||
@@ -247,6 +251,7 @@ namespace Game.Networking.Packets
|
|||||||
public CharacterFlags Flags; // Character flag @see enum CharacterFlags
|
public CharacterFlags Flags; // Character flag @see enum CharacterFlags
|
||||||
public CharacterCustomizeFlags Flags2; // Character customization flags @see enum CharacterCustomizeFlags
|
public CharacterCustomizeFlags Flags2; // Character customization flags @see enum CharacterCustomizeFlags
|
||||||
public uint Flags3; // Character flags 3 @todo research
|
public uint Flags3; // Character flags 3 @todo research
|
||||||
|
public uint Flags4; ///< Character flags 4 @todo research
|
||||||
public bool FirstLogin;
|
public bool FirstLogin;
|
||||||
public byte CantLoginReason;
|
public byte CantLoginReason;
|
||||||
public long LastActiveTime;
|
public long LastActiveTime;
|
||||||
@@ -261,6 +266,9 @@ namespace Game.Networking.Packets
|
|||||||
public uint[] ProfessionIds = new uint[2]; // @todo
|
public uint[] ProfessionIds = new uint[2]; // @todo
|
||||||
public VisualItemInfo[] VisualItems = new VisualItemInfo[19];
|
public VisualItemInfo[] VisualItems = new VisualItemInfo[19];
|
||||||
public CustomTabardInfo PersonalTabard = new();
|
public CustomTabardInfo PersonalTabard = new();
|
||||||
|
public uint Unused1110_1;
|
||||||
|
public bool Unused1110_2;
|
||||||
|
public bool Unused1110_3;
|
||||||
|
|
||||||
public struct VisualItemInfo
|
public struct VisualItemInfo
|
||||||
{
|
{
|
||||||
@@ -350,6 +358,7 @@ namespace Game.Networking.Packets
|
|||||||
{
|
{
|
||||||
public CharacterInfoBasic Basic;
|
public CharacterInfoBasic Basic;
|
||||||
public ulong Money;
|
public ulong Money;
|
||||||
|
public float AvgEquippedItemLevel;
|
||||||
public float CurrentSeasonMythicPlusOverallScore;
|
public float CurrentSeasonMythicPlusOverallScore;
|
||||||
public uint CurrentSeasonBestPvpRating;
|
public uint CurrentSeasonBestPvpRating;
|
||||||
public sbyte PvpRatingBracket;
|
public sbyte PvpRatingBracket;
|
||||||
@@ -364,6 +373,7 @@ namespace Game.Networking.Packets
|
|||||||
{
|
{
|
||||||
Basic.Write(data);
|
Basic.Write(data);
|
||||||
data.WriteUInt64(Money);
|
data.WriteUInt64(Money);
|
||||||
|
data.WriteFloat(AvgEquippedItemLevel);
|
||||||
data.WriteFloat(CurrentSeasonMythicPlusOverallScore);
|
data.WriteFloat(CurrentSeasonMythicPlusOverallScore);
|
||||||
data.WriteUInt32(CurrentSeasonBestPvpRating);
|
data.WriteUInt32(CurrentSeasonBestPvpRating);
|
||||||
data.WriteInt8(PvpRatingBracket);
|
data.WriteInt8(PvpRatingBracket);
|
||||||
@@ -373,7 +383,7 @@ namespace Game.Networking.Packets
|
|||||||
|
|
||||||
public struct RaceUnlock
|
public struct RaceUnlock
|
||||||
{
|
{
|
||||||
public int RaceID;
|
public sbyte RaceID;
|
||||||
public bool HasUnlockedLicense;
|
public bool HasUnlockedLicense;
|
||||||
public bool HasUnlockedAchievement;
|
public bool HasUnlockedAchievement;
|
||||||
public bool HasHeritageArmorUnlockAchievement;
|
public bool HasHeritageArmorUnlockAchievement;
|
||||||
@@ -382,7 +392,7 @@ namespace Game.Networking.Packets
|
|||||||
|
|
||||||
public void Write(WorldPacket data)
|
public void Write(WorldPacket data)
|
||||||
{
|
{
|
||||||
data.WriteInt32(RaceID);
|
data.WriteInt8(RaceID);
|
||||||
data.WriteBit(HasUnlockedLicense);
|
data.WriteBit(HasUnlockedLicense);
|
||||||
data.WriteBit(HasUnlockedAchievement);
|
data.WriteBit(HasUnlockedAchievement);
|
||||||
data.WriteBit(HasHeritageArmorUnlockAchievement);
|
data.WriteBit(HasHeritageArmorUnlockAchievement);
|
||||||
@@ -406,12 +416,12 @@ namespace Game.Networking.Packets
|
|||||||
|
|
||||||
public struct RaceLimitDisableInfo
|
public struct RaceLimitDisableInfo
|
||||||
{
|
{
|
||||||
public int RaceID;
|
public sbyte RaceID;
|
||||||
public int Reason;
|
public int Reason;
|
||||||
|
|
||||||
public void Write(WorldPacket data)
|
public void Write(WorldPacket data)
|
||||||
{
|
{
|
||||||
data.WriteInt32(RaceID);
|
data.WriteInt8(RaceID);
|
||||||
data.WriteInt32(Reason);
|
data.WriteInt32(Reason);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -966,9 +976,9 @@ namespace Game.Networking.Packets
|
|||||||
{
|
{
|
||||||
var customizationCount = _worldPacket.ReadUInt32();
|
var customizationCount = _worldPacket.ReadUInt32();
|
||||||
NewSex = _worldPacket.ReadUInt8();
|
NewSex = _worldPacket.ReadUInt8();
|
||||||
CustomizedRace = _worldPacket.ReadInt32();
|
CustomizedRace = _worldPacket.ReadInt8();
|
||||||
CustomizedChrModelID = _worldPacket.ReadInt32();
|
CustomizedChrModelID = _worldPacket.ReadInt32();
|
||||||
UnalteredVisualRaceID = _worldPacket.ReadInt32();
|
UnalteredVisualRaceID = _worldPacket.ReadInt8();
|
||||||
|
|
||||||
for (var i = 0; i < customizationCount; ++i)
|
for (var i = 0; i < customizationCount; ++i)
|
||||||
{
|
{
|
||||||
@@ -984,9 +994,9 @@ namespace Game.Networking.Packets
|
|||||||
|
|
||||||
public byte NewSex;
|
public byte NewSex;
|
||||||
public Array<ChrCustomizationChoice> Customizations = new(250);
|
public Array<ChrCustomizationChoice> Customizations = new(250);
|
||||||
public int CustomizedRace;
|
public sbyte CustomizedRace;
|
||||||
public int CustomizedChrModelID;
|
public int CustomizedChrModelID;
|
||||||
public int UnalteredVisualRaceID;
|
public sbyte UnalteredVisualRaceID;
|
||||||
}
|
}
|
||||||
|
|
||||||
public class BarberShopResult : ServerPacket
|
public class BarberShopResult : ServerPacket
|
||||||
@@ -1301,13 +1311,13 @@ namespace Game.Networking.Packets
|
|||||||
|
|
||||||
public struct WarbandGroupMember
|
public struct WarbandGroupMember
|
||||||
{
|
{
|
||||||
public int WarbandScenePlacementID;
|
public uint WarbandScenePlacementID;
|
||||||
public int Type;
|
public int Type;
|
||||||
public ObjectGuid Guid;
|
public ObjectGuid Guid;
|
||||||
|
|
||||||
public void Write(WorldPacket data)
|
public void Write(WorldPacket data)
|
||||||
{
|
{
|
||||||
data.WriteInt32(WarbandScenePlacementID);
|
data.WriteUInt32(WarbandScenePlacementID);
|
||||||
data.WriteInt32(Type);
|
data.WriteInt32(Type);
|
||||||
if (Type == 0)
|
if (Type == 0)
|
||||||
data.WritePackedGuid(Guid);
|
data.WritePackedGuid(Guid);
|
||||||
@@ -1317,19 +1327,27 @@ namespace Game.Networking.Packets
|
|||||||
public class WarbandGroup
|
public class WarbandGroup
|
||||||
{
|
{
|
||||||
public ulong GroupID;
|
public ulong GroupID;
|
||||||
public byte Unknown_1100;
|
public byte OrderIndex;
|
||||||
public int Flags; ///< enum WarbandGroupFlags { Collapsed = 1 }
|
public uint WarbandSceneID;
|
||||||
|
public uint Flags; ///< enum WarbandGroupFlags { Collapsed = 1 }
|
||||||
public List<WarbandGroupMember> Members = new();
|
public List<WarbandGroupMember> Members = new();
|
||||||
|
public string Name = "";
|
||||||
|
|
||||||
public void Write(WorldPacket data)
|
public void Write(WorldPacket data)
|
||||||
{
|
{
|
||||||
data.WriteUInt64(GroupID);
|
data.WriteUInt64(GroupID);
|
||||||
data.WriteUInt8(Unknown_1100);
|
data.WriteUInt8(OrderIndex);
|
||||||
data.WriteInt32(Flags);
|
data.WriteUInt32(WarbandSceneID);
|
||||||
|
data.WriteUInt32(Flags);
|
||||||
data.WriteInt32(Members.Count);
|
data.WriteInt32(Members.Count);
|
||||||
|
|
||||||
foreach (WarbandGroupMember member in Members)
|
foreach (WarbandGroupMember member in Members)
|
||||||
member.Write(data);
|
member.Write(data);
|
||||||
|
|
||||||
|
data.WriteBits(Name.GetByteCount(), 9);
|
||||||
|
data.FlushBits();
|
||||||
|
|
||||||
|
data.WriteString(Name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ namespace Game.Networking.Packets
|
|||||||
|
|
||||||
public override void Read()
|
public override void Read()
|
||||||
{
|
{
|
||||||
Type = (ItemCollectionType)_worldPacket.ReadUInt32();
|
Type = (ItemCollectionType)_worldPacket.ReadUInt8();
|
||||||
Id = _worldPacket.ReadUInt32();
|
Id = _worldPacket.ReadUInt32();
|
||||||
IsFavorite = _worldPacket.HasBit();
|
IsFavorite = _worldPacket.HasBit();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -254,13 +254,13 @@ namespace Game.Networking.Packets
|
|||||||
_worldPacket.WriteInt32(OriginalHonor);
|
_worldPacket.WriteInt32(OriginalHonor);
|
||||||
_worldPacket.WriteInt32(Honor);
|
_worldPacket.WriteInt32(Honor);
|
||||||
_worldPacket.WritePackedGuid(Target);
|
_worldPacket.WritePackedGuid(Target);
|
||||||
_worldPacket.WriteUInt32(Rank);
|
_worldPacket.WriteInt8(Rank);
|
||||||
}
|
}
|
||||||
|
|
||||||
public int OriginalHonor;
|
public int OriginalHonor;
|
||||||
public int Honor;
|
public int Honor;
|
||||||
public ObjectGuid Target;
|
public ObjectGuid Target;
|
||||||
public uint Rank;
|
public sbyte Rank;
|
||||||
}
|
}
|
||||||
|
|
||||||
class BreakTarget : ServerPacket
|
class BreakTarget : ServerPacket
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ namespace Game.Networking.Packets
|
|||||||
|
|
||||||
public override void Write()
|
public override void Write()
|
||||||
{
|
{
|
||||||
_worldPacket.WriteUInt32(FactionIndex);
|
_worldPacket.WriteInt8(FactionIndex);
|
||||||
_worldPacket.WriteInt32(Garrisons.Count);
|
_worldPacket.WriteInt32(Garrisons.Count);
|
||||||
_worldPacket.WriteInt32(FollowerSoftCaps.Count);
|
_worldPacket.WriteInt32(FollowerSoftCaps.Count);
|
||||||
|
|
||||||
@@ -62,7 +62,7 @@ namespace Game.Networking.Packets
|
|||||||
garrison.Write(_worldPacket);
|
garrison.Write(_worldPacket);
|
||||||
}
|
}
|
||||||
|
|
||||||
public uint FactionIndex;
|
public sbyte FactionIndex;
|
||||||
public List<GarrisonInfo> Garrisons = new();
|
public List<GarrisonInfo> Garrisons = new();
|
||||||
public List<FollowerSoftCapInfo> FollowerSoftCaps = new();
|
public List<FollowerSoftCapInfo> FollowerSoftCaps = new();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -152,8 +152,8 @@ namespace Game.Networking.Packets
|
|||||||
|
|
||||||
public override void Write()
|
public override void Write()
|
||||||
{
|
{
|
||||||
_worldPacket.WriteUInt32((uint)Result);
|
_worldPacket.WriteUInt8((byte)Result);
|
||||||
_worldPacket.WriteUInt32((uint)Command);
|
_worldPacket.WriteUInt8((byte)Command);
|
||||||
|
|
||||||
_worldPacket.WriteBits(Name.GetByteCount(), 8);
|
_worldPacket.WriteBits(Name.GetByteCount(), 8);
|
||||||
_worldPacket.WriteString(Name);
|
_worldPacket.WriteString(Name);
|
||||||
|
|||||||
@@ -793,13 +793,13 @@ namespace Game.Networking.Packets
|
|||||||
|
|
||||||
public class EnableBarberShop : ServerPacket
|
public class EnableBarberShop : ServerPacket
|
||||||
{
|
{
|
||||||
public byte CustomizationScope;
|
public uint CustomizationFeatureMask;
|
||||||
|
|
||||||
public EnableBarberShop() : base(ServerOpcodes.EnableBarberShop) { }
|
public EnableBarberShop() : base(ServerOpcodes.EnableBarberShop) { }
|
||||||
|
|
||||||
public override void Write()
|
public override void Write()
|
||||||
{
|
{
|
||||||
_worldPacket.WriteUInt8(CustomizationScope);
|
_worldPacket.WriteUInt32(CustomizationFeatureMask);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -92,6 +92,7 @@ namespace Game.Networking.Packets
|
|||||||
data.ReadBit(); // RemoteTimeValid
|
data.ReadBit(); // RemoteTimeValid
|
||||||
bool hasInertia = data.HasBit();
|
bool hasInertia = data.HasBit();
|
||||||
bool hasAdvFlying = data.HasBit();
|
bool hasAdvFlying = data.HasBit();
|
||||||
|
bool hasDriveStatus = data.HasBit();
|
||||||
|
|
||||||
if (hasTransport)
|
if (hasTransport)
|
||||||
ReadTransportInfo(data, ref movementInfo.transport);
|
ReadTransportInfo(data, ref movementInfo.transport);
|
||||||
@@ -112,9 +113,9 @@ namespace Game.Networking.Packets
|
|||||||
if (hasAdvFlying)
|
if (hasAdvFlying)
|
||||||
{
|
{
|
||||||
MovementInfo.AdvFlying advFlying = new();
|
MovementInfo.AdvFlying advFlying = new();
|
||||||
|
|
||||||
advFlying.forwardVelocity = data.ReadFloat();
|
advFlying.forwardVelocity = data.ReadFloat();
|
||||||
advFlying.upVelocity = data.ReadFloat();
|
advFlying.upVelocity = data.ReadFloat();
|
||||||
|
|
||||||
movementInfo.advFlying = advFlying;
|
movementInfo.advFlying = advFlying;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -134,6 +135,19 @@ namespace Game.Networking.Packets
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (hasDriveStatus)
|
||||||
|
{
|
||||||
|
data.ResetBitPos();
|
||||||
|
|
||||||
|
MovementInfo.Drive driveStatus = new();
|
||||||
|
driveStatus.accelerating = data.HasBit();
|
||||||
|
driveStatus.drifting = data.HasBit();
|
||||||
|
driveStatus.speed = data.ReadFloat();
|
||||||
|
driveStatus.movementAngle = data.ReadFloat();
|
||||||
|
|
||||||
|
movementInfo.driveStatus = driveStatus;
|
||||||
|
}
|
||||||
|
|
||||||
return movementInfo;
|
return movementInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -145,6 +159,7 @@ namespace Game.Networking.Packets
|
|||||||
bool hasSpline = false; // todo 6.x send this infos
|
bool hasSpline = false; // todo 6.x send this infos
|
||||||
bool hasInertia = movementInfo.inertia.HasValue;
|
bool hasInertia = movementInfo.inertia.HasValue;
|
||||||
bool hasAdvFlying = movementInfo.advFlying.HasValue;
|
bool hasAdvFlying = movementInfo.advFlying.HasValue;
|
||||||
|
bool hasDriveStatus = movementInfo.driveStatus.HasValue;
|
||||||
bool hasStandingOnGameObjectGUID = movementInfo.standingOnGameObjectGUID.HasValue;
|
bool hasStandingOnGameObjectGUID = movementInfo.standingOnGameObjectGUID.HasValue;
|
||||||
|
|
||||||
data.WritePackedGuid(movementInfo.Guid);
|
data.WritePackedGuid(movementInfo.Guid);
|
||||||
@@ -178,6 +193,7 @@ namespace Game.Networking.Packets
|
|||||||
data.WriteBit(false); // RemoteTimeValid
|
data.WriteBit(false); // RemoteTimeValid
|
||||||
data.WriteBit(hasInertia);
|
data.WriteBit(hasInertia);
|
||||||
data.WriteBit(hasAdvFlying);
|
data.WriteBit(hasAdvFlying);
|
||||||
|
data.WriteBit(hasDriveStatus);
|
||||||
data.FlushBits();
|
data.FlushBits();
|
||||||
|
|
||||||
if (hasTransportData)
|
if (hasTransportData)
|
||||||
@@ -213,6 +229,14 @@ namespace Game.Networking.Packets
|
|||||||
data.WriteFloat(movementInfo.jump.xyspeed);
|
data.WriteFloat(movementInfo.jump.xyspeed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (hasDriveStatus)
|
||||||
|
{
|
||||||
|
data.WriteBit(movementInfo.driveStatus.Value.accelerating);
|
||||||
|
data.WriteBit(movementInfo.driveStatus.Value.drifting);
|
||||||
|
data.WriteFloat(movementInfo.driveStatus.Value.speed);
|
||||||
|
data.WriteFloat(movementInfo.driveStatus.Value.movementAngle);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void WriteCreateObjectSplineDataBlock(MoveSpline moveSpline, WorldPacket data)
|
public static void WriteCreateObjectSplineDataBlock(MoveSpline moveSpline, WorldPacket data)
|
||||||
@@ -360,6 +384,9 @@ namespace Game.Networking.Packets
|
|||||||
data.WriteUInt32(movementForce.TransportID);
|
data.WriteUInt32(movementForce.TransportID);
|
||||||
data.WriteFloat(movementForce.Magnitude);
|
data.WriteFloat(movementForce.Magnitude);
|
||||||
data.WriteInt32(movementForce.MovementForceID);
|
data.WriteInt32(movementForce.MovementForceID);
|
||||||
|
data.WriteInt32(movementForce.Unknown1110_1);
|
||||||
|
data.WriteInt32(movementForce.Unused1110);
|
||||||
|
data.WriteUInt32(movementForce.Flags);
|
||||||
data.WriteBits((byte)movementForce.Type, 2);
|
data.WriteBits((byte)movementForce.Type, 2);
|
||||||
data.FlushBits();
|
data.FlushBits();
|
||||||
}
|
}
|
||||||
@@ -608,6 +635,7 @@ namespace Game.Networking.Packets
|
|||||||
_worldPacket.WriteXYZ(OldMapPosition);
|
_worldPacket.WriteXYZ(OldMapPosition);
|
||||||
_worldPacket.WriteBit(Ship.HasValue);
|
_worldPacket.WriteBit(Ship.HasValue);
|
||||||
_worldPacket.WriteBit(TransferSpellID.HasValue);
|
_worldPacket.WriteBit(TransferSpellID.HasValue);
|
||||||
|
_worldPacket.WriteBit(TaxiPathID.HasValue);
|
||||||
_worldPacket.FlushBits();
|
_worldPacket.FlushBits();
|
||||||
|
|
||||||
if (Ship.HasValue)
|
if (Ship.HasValue)
|
||||||
@@ -618,12 +646,16 @@ namespace Game.Networking.Packets
|
|||||||
|
|
||||||
if (TransferSpellID.HasValue)
|
if (TransferSpellID.HasValue)
|
||||||
_worldPacket.WriteInt32(TransferSpellID.Value);
|
_worldPacket.WriteInt32(TransferSpellID.Value);
|
||||||
|
|
||||||
|
if (TaxiPathID.HasValue)
|
||||||
|
_worldPacket.WriteInt32(TaxiPathID.Value);
|
||||||
}
|
}
|
||||||
|
|
||||||
public int MapID = -1;
|
public int MapID = -1;
|
||||||
public Position OldMapPosition;
|
public Position OldMapPosition;
|
||||||
public ShipTransferPending? Ship;
|
public ShipTransferPending? Ship;
|
||||||
public int? TransferSpellID;
|
public int? TransferSpellID;
|
||||||
|
public int? TaxiPathID;
|
||||||
|
|
||||||
public struct ShipTransferPending
|
public struct ShipTransferPending
|
||||||
{
|
{
|
||||||
@@ -1252,6 +1284,7 @@ namespace Game.Networking.Packets
|
|||||||
data.WriteBit(MovementForceGUID.HasValue);
|
data.WriteBit(MovementForceGUID.HasValue);
|
||||||
data.WriteBit(MovementInertiaID.HasValue);
|
data.WriteBit(MovementInertiaID.HasValue);
|
||||||
data.WriteBit(MovementInertiaLifetimeMs.HasValue);
|
data.WriteBit(MovementInertiaLifetimeMs.HasValue);
|
||||||
|
data.WriteBit(DriveCapabilityRecID.HasValue);
|
||||||
data.FlushBits();
|
data.FlushBits();
|
||||||
|
|
||||||
if (@MovementForce != null)
|
if (@MovementForce != null)
|
||||||
@@ -1292,6 +1325,9 @@ namespace Game.Networking.Packets
|
|||||||
|
|
||||||
if (MovementInertiaLifetimeMs.HasValue)
|
if (MovementInertiaLifetimeMs.HasValue)
|
||||||
data.WriteUInt32(MovementInertiaLifetimeMs.Value);
|
data.WriteUInt32(MovementInertiaLifetimeMs.Value);
|
||||||
|
|
||||||
|
if (DriveCapabilityRecID.HasValue)
|
||||||
|
data.WriteInt32(DriveCapabilityRecID.Value);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ServerOpcodes MessageID;
|
public ServerOpcodes MessageID;
|
||||||
@@ -1305,6 +1341,7 @@ namespace Game.Networking.Packets
|
|||||||
public ObjectGuid? MovementForceGUID;
|
public ObjectGuid? MovementForceGUID;
|
||||||
public int? MovementInertiaID;
|
public int? MovementInertiaID;
|
||||||
public uint? MovementInertiaLifetimeMs;
|
public uint? MovementInertiaLifetimeMs;
|
||||||
|
public int? DriveCapabilityRecID;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ namespace Game.Networking.Packets
|
|||||||
public int BestRunLevel;
|
public int BestRunLevel;
|
||||||
public int BestRunDurationMS;
|
public int BestRunDurationMS;
|
||||||
public bool FinishedSuccess;
|
public bool FinishedSuccess;
|
||||||
|
public byte Unknown1110;
|
||||||
|
|
||||||
public void Write(WorldPacket data)
|
public void Write(WorldPacket data)
|
||||||
{
|
{
|
||||||
@@ -20,6 +21,7 @@ namespace Game.Networking.Packets
|
|||||||
data.WriteFloat(MapScore);
|
data.WriteFloat(MapScore);
|
||||||
data.WriteInt32(BestRunLevel);
|
data.WriteInt32(BestRunLevel);
|
||||||
data.WriteInt32(BestRunDurationMS);
|
data.WriteInt32(BestRunDurationMS);
|
||||||
|
data.WriteUInt8(Unknown1110);
|
||||||
data.WriteBit(FinishedSuccess);
|
data.WriteBit(FinishedSuccess);
|
||||||
data.FlushBits();
|
data.FlushBits();
|
||||||
}
|
}
|
||||||
@@ -50,7 +52,7 @@ namespace Game.Networking.Packets
|
|||||||
public uint NativeRealmAddress;
|
public uint NativeRealmAddress;
|
||||||
public uint VirtualRealmAddress;
|
public uint VirtualRealmAddress;
|
||||||
public int ChrSpecializationID;
|
public int ChrSpecializationID;
|
||||||
public short RaceID;
|
public sbyte RaceID;
|
||||||
public int ItemLevel;
|
public int ItemLevel;
|
||||||
public int CovenantID;
|
public int CovenantID;
|
||||||
public int SoulbindID;
|
public int SoulbindID;
|
||||||
@@ -64,7 +66,7 @@ namespace Game.Networking.Packets
|
|||||||
data.WriteUInt32(NativeRealmAddress);
|
data.WriteUInt32(NativeRealmAddress);
|
||||||
data.WriteUInt32(VirtualRealmAddress);
|
data.WriteUInt32(VirtualRealmAddress);
|
||||||
data.WriteInt32(ChrSpecializationID);
|
data.WriteInt32(ChrSpecializationID);
|
||||||
data.WriteInt16(RaceID);
|
data.WriteInt8(RaceID);
|
||||||
data.WriteInt32(ItemLevel);
|
data.WriteInt32(ItemLevel);
|
||||||
data.WriteInt32(CovenantID);
|
data.WriteInt32(CovenantID);
|
||||||
data.WriteInt32(SoulbindID);
|
data.WriteInt32(SoulbindID);
|
||||||
|
|||||||
@@ -340,7 +340,7 @@ namespace Game.Networking.Packets
|
|||||||
public int GossipOptionID;
|
public int GossipOptionID;
|
||||||
public GossipOptionNpc OptionNPC;
|
public GossipOptionNpc OptionNPC;
|
||||||
public byte OptionFlags;
|
public byte OptionFlags;
|
||||||
public int OptionCost;
|
public ulong OptionCost;
|
||||||
public uint OptionLanguage;
|
public uint OptionLanguage;
|
||||||
public GossipOptionFlags Flags;
|
public GossipOptionFlags Flags;
|
||||||
public int OrderIndex;
|
public int OrderIndex;
|
||||||
@@ -357,7 +357,7 @@ namespace Game.Networking.Packets
|
|||||||
data.WriteInt32(GossipOptionID);
|
data.WriteInt32(GossipOptionID);
|
||||||
data.WriteUInt8((byte)OptionNPC);
|
data.WriteUInt8((byte)OptionNPC);
|
||||||
data.WriteInt8((sbyte)OptionFlags);
|
data.WriteInt8((sbyte)OptionFlags);
|
||||||
data.WriteInt32(OptionCost);
|
data.WriteUInt64(OptionCost);
|
||||||
data.WriteUInt32(OptionLanguage);
|
data.WriteUInt32(OptionLanguage);
|
||||||
data.WriteInt32((int)Flags);
|
data.WriteInt32((int)Flags);
|
||||||
data.WriteInt32(OrderIndex);
|
data.WriteInt32(OrderIndex);
|
||||||
|
|||||||
@@ -195,9 +195,14 @@ namespace Game.Networking.Packets
|
|||||||
|
|
||||||
class GroupUninvite : ServerPacket
|
class GroupUninvite : ServerPacket
|
||||||
{
|
{
|
||||||
|
public byte Reason;
|
||||||
|
|
||||||
public GroupUninvite() : base(ServerOpcodes.GroupUninvite) { }
|
public GroupUninvite() : base(ServerOpcodes.GroupUninvite) { }
|
||||||
|
|
||||||
public override void Write() { }
|
public override void Write()
|
||||||
|
{
|
||||||
|
_worldPacket.WriteUInt8(Reason);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class RequestPartyMemberStats : ClientPacket
|
class RequestPartyMemberStats : ClientPacket
|
||||||
@@ -365,7 +370,7 @@ namespace Game.Networking.Packets
|
|||||||
}
|
}
|
||||||
|
|
||||||
MemberStats.ChromieTime.ConditionalFlags = player.m_playerData.CtrOptions.GetValue().ConditionalFlags;
|
MemberStats.ChromieTime.ConditionalFlags = player.m_playerData.CtrOptions.GetValue().ConditionalFlags;
|
||||||
MemberStats.ChromieTime.FactionGroup = (int)player.m_playerData.CtrOptions.GetValue().FactionGroup;
|
MemberStats.ChromieTime.FactionGroup = (sbyte)player.m_playerData.CtrOptions.GetValue().FactionGroup;
|
||||||
MemberStats.ChromieTime.ChromieTimeExpansionMask = player.m_playerData.CtrOptions.GetValue().ChromieTimeExpansionMask;
|
MemberStats.ChromieTime.ChromieTimeExpansionMask = player.m_playerData.CtrOptions.GetValue().ChromieTimeExpansionMask;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1167,13 +1172,13 @@ namespace Game.Networking.Packets
|
|||||||
public struct CTROptions
|
public struct CTROptions
|
||||||
{
|
{
|
||||||
public uint ConditionalFlags;
|
public uint ConditionalFlags;
|
||||||
public int FactionGroup;
|
public sbyte FactionGroup;
|
||||||
public uint ChromieTimeExpansionMask;
|
public uint ChromieTimeExpansionMask;
|
||||||
|
|
||||||
public void Write(WorldPacket data)
|
public void Write(WorldPacket data)
|
||||||
{
|
{
|
||||||
data.WriteUInt32(ConditionalFlags);
|
data.WriteUInt32(ConditionalFlags);
|
||||||
data.WriteInt32(FactionGroup);
|
data.WriteInt8(FactionGroup);
|
||||||
data.WriteUInt32(ChromieTimeExpansionMask);
|
data.WriteUInt32(ChromieTimeExpansionMask);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ namespace Game.Networking.Packets
|
|||||||
public int ItemModifiedAppearanceID;
|
public int ItemModifiedAppearanceID;
|
||||||
public int TransmogIllusionID;
|
public int TransmogIllusionID;
|
||||||
public int ToyID;
|
public int ToyID;
|
||||||
|
public int WarbandSceneID;
|
||||||
public int Price;
|
public int Price;
|
||||||
public int OriginalPrice;
|
public int OriginalPrice;
|
||||||
public long AvailableUntil;
|
public long AvailableUntil;
|
||||||
@@ -30,6 +31,7 @@ namespace Game.Networking.Packets
|
|||||||
data.WriteInt32(Price);
|
data.WriteInt32(Price);
|
||||||
data.WriteInt32(OriginalPrice);
|
data.WriteInt32(OriginalPrice);
|
||||||
data.WriteInt64(AvailableUntil);
|
data.WriteInt64(AvailableUntil);
|
||||||
|
data.WriteInt32(WarbandSceneID);
|
||||||
data.WriteBit(Disabled);
|
data.WriteBit(Disabled);
|
||||||
data.WriteBit(DoesNotExpire);
|
data.WriteBit(DoesNotExpire);
|
||||||
data.FlushBits();
|
data.FlushBits();
|
||||||
|
|||||||
@@ -143,7 +143,7 @@ namespace Game.Networking.Packets
|
|||||||
|
|
||||||
public override void Write()
|
public override void Write()
|
||||||
{
|
{
|
||||||
_worldPacket.WriteUInt8((byte)Result);
|
_worldPacket.WriteInt32((int)Result);
|
||||||
}
|
}
|
||||||
|
|
||||||
public StableResult Result;
|
public StableResult Result;
|
||||||
|
|||||||
@@ -87,9 +87,9 @@ namespace Game.Networking.Packets
|
|||||||
for (var i = 0; i < 2; ++i)
|
for (var i = 0; i < 2; ++i)
|
||||||
_worldPacket.WriteUInt32(Stats.Flags[i]);
|
_worldPacket.WriteUInt32(Stats.Flags[i]);
|
||||||
|
|
||||||
_worldPacket.WriteInt32(Stats.CreatureType);
|
_worldPacket.WriteInt8(Stats.CreatureType);
|
||||||
_worldPacket.WriteInt32(Stats.CreatureFamily);
|
_worldPacket.WriteInt32(Stats.CreatureFamily);
|
||||||
_worldPacket.WriteInt32(Stats.Classification);
|
_worldPacket.WriteInt8(Stats.Classification);
|
||||||
|
|
||||||
for (var i = 0; i < SharedConst.MaxCreatureKillCredit; ++i)
|
for (var i = 0; i < SharedConst.MaxCreatureKillCredit; ++i)
|
||||||
_worldPacket.WriteUInt32(Stats.ProxyCreatureID[i]);
|
_worldPacket.WriteUInt32(Stats.ProxyCreatureID[i]);
|
||||||
@@ -750,9 +750,9 @@ namespace Game.Networking.Packets
|
|||||||
public string Title;
|
public string Title;
|
||||||
public string TitleAlt;
|
public string TitleAlt;
|
||||||
public string CursorName;
|
public string CursorName;
|
||||||
public int CreatureType;
|
public sbyte CreatureType;
|
||||||
public int CreatureFamily;
|
public int CreatureFamily;
|
||||||
public int Classification;
|
public sbyte Classification;
|
||||||
public CreatureDisplayStats Display = new();
|
public CreatureDisplayStats Display = new();
|
||||||
public float HpMulti;
|
public float HpMulti;
|
||||||
public float EnergyMulti;
|
public float EnergyMulti;
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ namespace Game.Networking.Packets
|
|||||||
_worldPacket.WriteUInt8((byte)Status);
|
_worldPacket.WriteUInt8((byte)Status);
|
||||||
_worldPacket.WriteUInt32(AreaID);
|
_worldPacket.WriteUInt32(AreaID);
|
||||||
_worldPacket.WriteUInt32(Level);
|
_worldPacket.WriteUInt32(Level);
|
||||||
_worldPacket.WriteUInt32((uint)ClassID);
|
_worldPacket.WriteInt8((sbyte)ClassID);
|
||||||
_worldPacket.WriteBits(Notes.GetByteCount(), 10);
|
_worldPacket.WriteBits(Notes.GetByteCount(), 10);
|
||||||
_worldPacket.FlushBits();
|
_worldPacket.FlushBits();
|
||||||
_worldPacket.WriteString(Notes);
|
_worldPacket.WriteString(Notes);
|
||||||
@@ -200,7 +200,7 @@ namespace Game.Networking.Packets
|
|||||||
data.WriteUInt8((byte)Status);
|
data.WriteUInt8((byte)Status);
|
||||||
data.WriteUInt32(AreaID);
|
data.WriteUInt32(AreaID);
|
||||||
data.WriteUInt32(Level);
|
data.WriteUInt32(Level);
|
||||||
data.WriteUInt32((uint)ClassID);
|
data.WriteInt8((sbyte)ClassID);
|
||||||
data.WriteBits(Notes.GetByteCount(), 10);
|
data.WriteBits(Notes.GetByteCount(), 10);
|
||||||
data.FlushBits();
|
data.FlushBits();
|
||||||
data.WriteString(Notes);
|
data.WriteString(Notes);
|
||||||
|
|||||||
@@ -1620,6 +1620,7 @@ namespace Game.Networking.Packets
|
|||||||
data.WriteUInt16(CastLevel);
|
data.WriteUInt16(CastLevel);
|
||||||
data.WriteUInt8(Applications);
|
data.WriteUInt8(Applications);
|
||||||
data.WriteInt32(ContentTuningID);
|
data.WriteInt32(ContentTuningID);
|
||||||
|
data.WriteVector3(DstLocation);
|
||||||
data.WriteBit(CastUnit.HasValue);
|
data.WriteBit(CastUnit.HasValue);
|
||||||
data.WriteBit(Duration.HasValue);
|
data.WriteBit(Duration.HasValue);
|
||||||
data.WriteBit(Remaining.HasValue);
|
data.WriteBit(Remaining.HasValue);
|
||||||
@@ -1665,13 +1666,14 @@ namespace Game.Networking.Packets
|
|||||||
float? TimeMod;
|
float? TimeMod;
|
||||||
public List<float> Points = new();
|
public List<float> Points = new();
|
||||||
public List<float> EstimatedPoints = new();
|
public List<float> EstimatedPoints = new();
|
||||||
|
public Vector3 DstLocation;
|
||||||
}
|
}
|
||||||
|
|
||||||
public struct AuraInfo
|
public struct AuraInfo
|
||||||
{
|
{
|
||||||
public void Write(WorldPacket data)
|
public void Write(WorldPacket data)
|
||||||
{
|
{
|
||||||
data.WriteUInt8(Slot);
|
data.WriteUInt16(Slot);
|
||||||
data.WriteBit(AuraData != null);
|
data.WriteBit(AuraData != null);
|
||||||
data.FlushBits();
|
data.FlushBits();
|
||||||
|
|
||||||
@@ -1679,7 +1681,7 @@ namespace Game.Networking.Packets
|
|||||||
AuraData.Write(data);
|
AuraData.Write(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
public byte Slot;
|
public ushort Slot;
|
||||||
public AuraDataInfo AuraData;
|
public AuraDataInfo AuraData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -42,10 +42,16 @@ namespace Game.Networking.Packets
|
|||||||
_worldPacket.WriteInt16(NameLookupTelemetryInterval);
|
_worldPacket.WriteInt16(NameLookupTelemetryInterval);
|
||||||
_worldPacket.WriteUInt32((uint)NotFoundCacheTimeSeconds.TotalSeconds);
|
_worldPacket.WriteUInt32((uint)NotFoundCacheTimeSeconds.TotalSeconds);
|
||||||
|
|
||||||
|
_worldPacket.WriteUInt32(RealmPvpTypeOverride);
|
||||||
|
|
||||||
_worldPacket.WriteInt32(AddonChatThrottle.MaxTries);
|
_worldPacket.WriteInt32(AddonChatThrottle.MaxTries);
|
||||||
_worldPacket.WriteInt32(AddonChatThrottle.TriesRestoredPerSecond);
|
_worldPacket.WriteInt32(AddonChatThrottle.TriesRestoredPerSecond);
|
||||||
_worldPacket.WriteInt32(AddonChatThrottle.UsedTriesPerMessage);
|
_worldPacket.WriteInt32(AddonChatThrottle.UsedTriesPerMessage);
|
||||||
|
|
||||||
|
_worldPacket.WriteFloat(AddonPerformanceMsgWarning);
|
||||||
|
_worldPacket.WriteFloat(AddonPerformanceMsgError);
|
||||||
|
_worldPacket.WriteFloat(AddonPerformanceMsgOverall);
|
||||||
|
|
||||||
foreach (GameRuleValuePair gameRuleValue in GameRules)
|
foreach (GameRuleValuePair gameRuleValue in GameRules)
|
||||||
gameRuleValue.Write(_worldPacket);
|
gameRuleValue.Write(_worldPacket);
|
||||||
|
|
||||||
@@ -108,6 +114,7 @@ namespace Game.Networking.Packets
|
|||||||
_worldPacket.WriteBit(false); // unused 11.0.7
|
_worldPacket.WriteBit(false); // unused 11.0.7
|
||||||
_worldPacket.WriteBit(LobbyMatchmakerQueueFromMainlineEnabled);
|
_worldPacket.WriteBit(LobbyMatchmakerQueueFromMainlineEnabled);
|
||||||
_worldPacket.WriteBit(CanSendLobbyMatchmakerPartyCustomizations);
|
_worldPacket.WriteBit(CanSendLobbyMatchmakerPartyCustomizations);
|
||||||
|
_worldPacket.WriteBit(AddonProfilerEnabled);
|
||||||
|
|
||||||
_worldPacket.FlushBits();
|
_worldPacket.FlushBits();
|
||||||
|
|
||||||
@@ -216,6 +223,7 @@ namespace Game.Networking.Packets
|
|||||||
public bool IsAccountCurrencyTransferEnabled;
|
public bool IsAccountCurrencyTransferEnabled;
|
||||||
public bool LobbyMatchmakerQueueFromMainlineEnabled;
|
public bool LobbyMatchmakerQueueFromMainlineEnabled;
|
||||||
public bool CanSendLobbyMatchmakerPartyCustomizations;
|
public bool CanSendLobbyMatchmakerPartyCustomizations;
|
||||||
|
public bool AddonProfilerEnabled;
|
||||||
|
|
||||||
public SocialQueueConfig QuickJoinConfig;
|
public SocialQueueConfig QuickJoinConfig;
|
||||||
public SquelchInfo Squelch;
|
public SquelchInfo Squelch;
|
||||||
@@ -225,6 +233,10 @@ namespace Game.Networking.Packets
|
|||||||
public int RemainingTimerunningSeasonSeconds;
|
public int RemainingTimerunningSeasonSeconds;
|
||||||
public string Unknown1027; // related to movement lua functions used by keybinds
|
public string Unknown1027; // related to movement lua functions used by keybinds
|
||||||
public AddonChatThrottleParams AddonChatThrottle;
|
public AddonChatThrottleParams AddonChatThrottle;
|
||||||
|
public uint RealmPvpTypeOverride; ///< Use Cfg_Configs value = 0, ForceEnabled = 1, ForceDisabled = 2
|
||||||
|
public float AddonPerformanceMsgWarning;
|
||||||
|
public float AddonPerformanceMsgError;
|
||||||
|
public float AddonPerformanceMsgOverall;
|
||||||
|
|
||||||
public struct SessionAlertConfig
|
public struct SessionAlertConfig
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -80,12 +80,12 @@ namespace Game.Networking.Packets
|
|||||||
{
|
{
|
||||||
public void Read(WorldPacket data)
|
public void Read(WorldPacket data)
|
||||||
{
|
{
|
||||||
FactionGroup = data.ReadInt32();
|
FactionGroup = data.ReadUInt8();
|
||||||
Locale = data.ReadInt32();
|
Locale = data.ReadInt32();
|
||||||
RequesterVirtualRealmAddress = data.ReadUInt32();
|
RequesterVirtualRealmAddress = data.ReadUInt32();
|
||||||
}
|
}
|
||||||
|
|
||||||
public int FactionGroup;
|
public byte FactionGroup;
|
||||||
public int Locale;
|
public int Locale;
|
||||||
public uint RequesterVirtualRealmAddress;
|
public uint RequesterVirtualRealmAddress;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ namespace Game.Scripting
|
|||||||
player.PlayerTalkClass.GetGossipMenu().AddMenuItem(0, -1, optionNpc, text, 0, GossipOptionFlags.None, null, 0, 0, false, 0, "", null, null, sender, action);
|
player.PlayerTalkClass.GetGossipMenu().AddMenuItem(0, -1, optionNpc, text, 0, GossipOptionFlags.None, null, 0, 0, false, 0, "", null, null, sender, action);
|
||||||
}
|
}
|
||||||
// Using provided texts, not from DB
|
// Using provided texts, not from DB
|
||||||
public static void AddGossipItemFor(Player player, GossipOptionNpc optionNpc, string text, uint sender, uint action, string popupText, uint popupMoney, bool coded)
|
public static void AddGossipItemFor(Player player, GossipOptionNpc optionNpc, string text, uint sender, uint action, string popupText, ulong popupMoney, bool coded)
|
||||||
{
|
{
|
||||||
player.PlayerTalkClass.GetGossipMenu().AddMenuItem(0, -1, optionNpc, text, 0, GossipOptionFlags.None, null, 0, 0, coded, popupMoney, popupText, null, null, sender, action);
|
player.PlayerTalkClass.GetGossipMenu().AddMenuItem(0, -1, optionNpc, text, 0, GossipOptionFlags.None, null, 0, 0, coded, popupMoney, popupText, null, null, sender, action);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ namespace Game.Spells
|
|||||||
Unit _target;
|
Unit _target;
|
||||||
Aura _base;
|
Aura _base;
|
||||||
AuraRemoveMode _removeMode; // Store info for know remove aura reason
|
AuraRemoveMode _removeMode; // Store info for know remove aura reason
|
||||||
byte _slot; // Aura slot on unit
|
ushort _slot; // Aura slot on unit
|
||||||
AuraFlags _flags; // Aura info flag
|
AuraFlags _flags; // Aura info flag
|
||||||
uint _effectsToApply; // Used only at spell hit to determine which effect should be applied
|
uint _effectsToApply; // Used only at spell hit to determine which effect should be applied
|
||||||
bool _needClientUpdate;
|
bool _needClientUpdate;
|
||||||
@@ -70,7 +70,7 @@ namespace Game.Spells
|
|||||||
Cypher.Assert(GetTarget() != null && GetBase() != null);
|
Cypher.Assert(GetTarget() != null && GetBase() != null);
|
||||||
|
|
||||||
// Try find slot for aura
|
// Try find slot for aura
|
||||||
byte slot = 0;
|
ushort slot = 0;
|
||||||
// Lookup for auras already applied from spell
|
// Lookup for auras already applied from spell
|
||||||
foreach (AuraApplication visibleAura in GetTarget().GetVisibleAuras())
|
foreach (AuraApplication visibleAura in GetTarget().GetVisibleAuras())
|
||||||
{
|
{
|
||||||
@@ -314,7 +314,7 @@ namespace Game.Spells
|
|||||||
public Unit GetTarget() { return _target; }
|
public Unit GetTarget() { return _target; }
|
||||||
public Aura GetBase() { return _base; }
|
public Aura GetBase() { return _base; }
|
||||||
|
|
||||||
public byte GetSlot() { return _slot; }
|
public ushort GetSlot() { return _slot; }
|
||||||
public AuraFlags GetFlags() { return _flags; }
|
public AuraFlags GetFlags() { return _flags; }
|
||||||
public uint GetEffectMask() { return _effectMask; }
|
public uint GetEffectMask() { return _effectMask; }
|
||||||
public bool HasEffect(uint effect)
|
public bool HasEffect(uint effect)
|
||||||
|
|||||||
Reference in New Issue
Block a user