mirror of
https://github.com/mangosfour/server.git
synced 2025-12-12 10:37:03 +00:00
Added support for 3.3.0 PTR client.
This commit is contained in:
parent
f37f27d3c2
commit
c9636623bf
15 changed files with 83 additions and 55 deletions
|
|
@ -1712,8 +1712,9 @@ void BattleGroundMgr::CreateInitialBattleGrounds()
|
||||||
}
|
}
|
||||||
if (MinLvl == 0 || MaxLvl == 0 || MinLvl > MaxLvl)
|
if (MinLvl == 0 || MaxLvl == 0 || MinLvl > MaxLvl)
|
||||||
{
|
{
|
||||||
MinLvl = bl->minlvl;
|
// TODO: fix me
|
||||||
MaxLvl = bl->maxlvl;
|
MinLvl = 0;//bl->minlvl;
|
||||||
|
MaxLvl = 80;//bl->maxlvl;
|
||||||
}
|
}
|
||||||
|
|
||||||
start1 = fields[5].GetUInt32();
|
start1 = fields[5].GetUInt32();
|
||||||
|
|
|
||||||
|
|
@ -567,16 +567,12 @@ struct BattlemasterListEntry
|
||||||
uint32 id; // 0
|
uint32 id; // 0
|
||||||
int32 mapid[8]; // 1-8 mapid
|
int32 mapid[8]; // 1-8 mapid
|
||||||
uint32 type; // 9 (3 - BG, 4 - arena)
|
uint32 type; // 9 (3 - BG, 4 - arena)
|
||||||
uint32 minlvl; // 10
|
uint32 maxplayersperteam; // 10
|
||||||
uint32 maxlvl; // 11
|
//uint32 unk1; // 11 (0 or 1)
|
||||||
uint32 maxplayersperteam; // 12
|
char* name[16]; // 12-27
|
||||||
// 13 minplayers
|
// 28 string flag, unused
|
||||||
// 14 0 or 9
|
// 29 unused
|
||||||
// 15
|
//uint32 unk2; // 30 new 3.1
|
||||||
char* name[16]; // 16-31
|
|
||||||
// 32 string flag, unused
|
|
||||||
// 33 unused
|
|
||||||
//uint32 unk; // 34 new 3.1
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#define MAX_OUTFIT_ITEMS 24
|
#define MAX_OUTFIT_ITEMS 24
|
||||||
|
|
@ -784,10 +780,14 @@ struct FactionEntry
|
||||||
int32 BaseRepValue[4]; // 10-13 m_reputationBase
|
int32 BaseRepValue[4]; // 10-13 m_reputationBase
|
||||||
uint32 ReputationFlags[4]; // 14-17 m_reputationFlags
|
uint32 ReputationFlags[4]; // 14-17 m_reputationFlags
|
||||||
uint32 team; // 18 m_parentFactionID
|
uint32 team; // 18 m_parentFactionID
|
||||||
char* name[16]; // 19-34 m_name_lang
|
//float unk1; // 19
|
||||||
// 35 string flags
|
//float unk2; // 20
|
||||||
//char* description[16]; // 36-51 m_description_lang
|
//uint32 unk3 // 21
|
||||||
// 52 string flags
|
//uint32 unk4; // 22
|
||||||
|
char* name[16]; // 23-38 m_name_lang
|
||||||
|
// 39 string flags
|
||||||
|
//char* description[16]; // 40-55 m_description_lang
|
||||||
|
// 56 string flags
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FactionTemplateEntry
|
struct FactionTemplateEntry
|
||||||
|
|
@ -1077,23 +1077,24 @@ struct MapEntry
|
||||||
uint32 MapID; // 0
|
uint32 MapID; // 0
|
||||||
//char* internalname; // 1 unused
|
//char* internalname; // 1 unused
|
||||||
uint32 map_type; // 2
|
uint32 map_type; // 2
|
||||||
// 3 0 or 1 for battlegrounds (not arenas)
|
//uint32 unk_330; // 3
|
||||||
char* name[16]; // 4-19
|
// 4 0 or 1 for battlegrounds (not arenas)
|
||||||
// 20 name flags, unused
|
char* name[16]; // 5-20
|
||||||
uint32 linked_zone; // 21 common zone for instance and continent map
|
// 21 name flags, unused
|
||||||
//char* hordeIntro[16]; // 23-37 text for PvP Zones
|
uint32 linked_zone; // 22 common zone for instance and continent map
|
||||||
// 38 intro text flags
|
//char* hordeIntro[16]; // 23-38 text for PvP Zones
|
||||||
//char* allianceIntro[16]; // 39-54 text for PvP Zones
|
// 39 intro text flags
|
||||||
// 55 intro text flags
|
//char* allianceIntro[16]; // 40-55 text for PvP Zones
|
||||||
uint32 multimap_id; // 56
|
// 56 intro text flags
|
||||||
// 57
|
uint32 multimap_id; // 57
|
||||||
int32 entrance_map; // 58 map_id of entrance map
|
// 58
|
||||||
float entrance_x; // 59 entrance x coordinate (if exist single entry)
|
int32 entrance_map; // 59 map_id of entrance map
|
||||||
float entrance_y; // 60 entrance y coordinate (if exist single entry)
|
float entrance_x; // 60 entrance x coordinate (if exist single entry)
|
||||||
// 61 -1, 0 and 720
|
float entrance_y; // 61 entrance y coordinate (if exist single entry)
|
||||||
uint32 addon; // 62 (0-original maps,1-tbc addon)
|
// 62 -1, 0 and 720
|
||||||
// 63 some kind of time?
|
uint32 addon; // 63 (0-original maps,1-tbc addon)
|
||||||
//uint32 maxPlayers; // 64 max players
|
// 64 some kind of time?
|
||||||
|
//uint32 maxPlayers; // 65 max players
|
||||||
|
|
||||||
// Helpers
|
// Helpers
|
||||||
uint32 Expansion() const { return addon; }
|
uint32 Expansion() const { return addon; }
|
||||||
|
|
@ -1423,6 +1424,7 @@ struct SpellEntry
|
||||||
//uint32 PowerDisplayId; // 234 PowerDisplay.dbc, new in 3.1
|
//uint32 PowerDisplayId; // 234 PowerDisplay.dbc, new in 3.1
|
||||||
//float unk_320_4[3]; // 235-237 3.2.0
|
//float unk_320_4[3]; // 235-237 3.2.0
|
||||||
//uint32 spellDescriptionVariableID; // 238 3.2.0
|
//uint32 spellDescriptionVariableID; // 238 3.2.0
|
||||||
|
//uint32 SpellDifficultyId; // 239 3.3.0
|
||||||
|
|
||||||
// helpers
|
// helpers
|
||||||
int32 CalculateSimpleValue(uint8 eff) const { return EffectBasePoints[eff]+int32(EffectBaseDice[eff]); }
|
int32 CalculateSimpleValue(uint8 eff) const { return EffectBasePoints[eff]+int32(EffectBaseDice[eff]); }
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@ const char AreaTriggerEntryfmt[]="niffffffff";
|
||||||
const char AuctionHouseEntryfmt[]="niiixxxxxxxxxxxxxxxxx";
|
const char AuctionHouseEntryfmt[]="niiixxxxxxxxxxxxxxxxx";
|
||||||
const char BankBagSlotPricesEntryfmt[]="ni";
|
const char BankBagSlotPricesEntryfmt[]="ni";
|
||||||
const char BarberShopStyleEntryfmt[]="nixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxiii";
|
const char BarberShopStyleEntryfmt[]="nixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxiii";
|
||||||
const char BattlemasterListEntryfmt[]="niiiiiiiiiiiixxxssssssssssssssssxxx";
|
const char BattlemasterListEntryfmt[]="niiiiiiiiiixssssssssssssssssxxx";
|
||||||
const char CharStartOutfitEntryfmt[]="diiiiiiiiiiiiiiiiiiiiiiiiixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
|
const char CharStartOutfitEntryfmt[]="diiiiiiiiiiiiiiiiiiiiiiiiixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
|
||||||
const char CharTitlesEntryfmt[]="nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxi";
|
const char CharTitlesEntryfmt[]="nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxi";
|
||||||
const char ChatChannelsEntryfmt[]="iixssssssssssssssssxxxxxxxxxxxxxxxxxx";
|
const char ChatChannelsEntryfmt[]="iixssssssssssssssssxxxxxxxxxxxxxxxxxx";
|
||||||
|
|
@ -44,7 +44,7 @@ const char DurabilityCostsfmt[]="niiiiiiiiiiiiiiiiiiiiiiiiiiiii";
|
||||||
const char DurabilityQualityfmt[]="nf";
|
const char DurabilityQualityfmt[]="nf";
|
||||||
const char EmotesEntryfmt[]="nxxiiix";
|
const char EmotesEntryfmt[]="nxxiiix";
|
||||||
const char EmotesTextEntryfmt[]="nxixxxxxxxxxxxxxxxx";
|
const char EmotesTextEntryfmt[]="nxixxxxxxxxxxxxxxxx";
|
||||||
const char FactionEntryfmt[]="niiiiiiiiiiiiiiiiiissssssssssssssssxxxxxxxxxxxxxxxxxx";
|
const char FactionEntryfmt[]="niiiiiiiiiiiiiiiiiixxxxssssssssssssssssxxxxxxxxxxxxxxxxxx";
|
||||||
const char FactionTemplateEntryfmt[]="niiiiiiiiiiiii";
|
const char FactionTemplateEntryfmt[]="niiiiiiiiiiiii";
|
||||||
const char GameObjectDisplayInfofmt[]="nxxxxxxxxxxxxxxxxxx";
|
const char GameObjectDisplayInfofmt[]="nxxxxxxxxxxxxxxxxxx";
|
||||||
const char GemPropertiesEntryfmt[]="nixxi";
|
const char GemPropertiesEntryfmt[]="nixxi";
|
||||||
|
|
@ -72,7 +72,7 @@ const char ItemRandomSuffixfmt[]="nxxxxxxxxxxxxxxxxxxiiiiiiiiii";
|
||||||
const char ItemSetEntryfmt[]="dssssssssssssssssxxxxxxxxxxxxxxxxxxiiiiiiiiiiiiiiiiii";
|
const char ItemSetEntryfmt[]="dssssssssssssssssxxxxxxxxxxxxxxxxxxiiiiiiiiiiiiiiiiii";
|
||||||
const char LockEntryfmt[]="niiiiiiiiiiiiiiiiiiiiiiiixxxxxxxx";
|
const char LockEntryfmt[]="niiiiiiiiiiiiiiiiiiiiiiiixxxxxxxx";
|
||||||
const char MailTemplateEntryfmt[]="nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
|
const char MailTemplateEntryfmt[]="nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
|
||||||
const char MapEntryfmt[]="nxixssssssssssssssssxixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxixiffxixx";
|
const char MapEntryfmt[]="nxixxssssssssssssssssxixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxixiffxixx";
|
||||||
const char MapDifficultyEntryfmt[]="diixxxxxxxxxxxxxxxxxiix";
|
const char MapDifficultyEntryfmt[]="diixxxxxxxxxxxxxxxxxiix";
|
||||||
const char MovieEntryfmt[]="nxx";
|
const char MovieEntryfmt[]="nxx";
|
||||||
const char QuestSortEntryfmt[]="nxxxxxxxxxxxxxxxxx";
|
const char QuestSortEntryfmt[]="nxxxxxxxxxxxxxxxxx";
|
||||||
|
|
@ -84,7 +84,7 @@ const char SkillLineAbilityfmt[]="niiiixxiiiiixx";
|
||||||
const char SoundEntriesfmt[]="nxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
|
const char SoundEntriesfmt[]="nxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
|
||||||
const char SpellCastTimefmt[]="nixx";
|
const char SpellCastTimefmt[]="nixx";
|
||||||
const char SpellDurationfmt[]="niii";
|
const char SpellDurationfmt[]="niii";
|
||||||
const char SpellEntryfmt[]="niiiiiiiiiixixixiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiifxiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiffffffiiiiiiiiiiiiiiiiiiiiifffiiiiiiiiiiiiiiifffiiiiiiiiiiiiixssssssssssssssssxssssssssssssssssxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxiiiiiiiiiiixfffxxxiiiiixxxxxx";
|
const char SpellEntryfmt[]="niiiiiiiiiixixixiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiifxiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiffffffiiiiiiiiiiiiiiiiiiiiifffiiiiiiiiiiiiiiifffiiiiiiiiiiiiixssssssssssssssssxssssssssssssssssxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxiiiiiiiiiiixfffxxxiiiiixxxxxxx";
|
||||||
const char SpellFocusObjectfmt[]="nxxxxxxxxxxxxxxxxx";
|
const char SpellFocusObjectfmt[]="nxxxxxxxxxxxxxxxxx";
|
||||||
const char SpellItemEnchantmentfmt[]="nxiiiiiixxxiiissssssssssssssssxiiiixxx";
|
const char SpellItemEnchantmentfmt[]="nxiiiiiixxxiiissssssssssssssssxiiiixxx";
|
||||||
const char SpellItemEnchantmentConditionfmt[]="nbbbbbxxxxxbbbbbbbbbbiiiiiXXXXX";
|
const char SpellItemEnchantmentConditionfmt[]="nbbbbbxxxxxbbbbbbbbbbiiiiiXXXXX";
|
||||||
|
|
|
||||||
|
|
@ -572,11 +572,14 @@ void PlayerMenu::SendQuestQueryResponse( Quest const *pQuest )
|
||||||
|
|
||||||
// rewarded honor points
|
// rewarded honor points
|
||||||
data << uint32(MaNGOS::Honor::hk_honor_at_level(pSession->GetPlayer()->getLevel(), pQuest->GetRewHonorableKills()));
|
data << uint32(MaNGOS::Honor::hk_honor_at_level(pSession->GetPlayer()->getLevel(), pQuest->GetRewHonorableKills()));
|
||||||
|
data << float(1); // weird honor multiplier
|
||||||
data << uint32(pQuest->GetSrcItemId()); // source item id
|
data << uint32(pQuest->GetSrcItemId()); // source item id
|
||||||
data << uint32(pQuest->GetFlags() & 0xFFFF); // quest flags
|
data << uint32(pQuest->GetFlags() & 0xFFFF); // quest flags
|
||||||
data << uint32(pQuest->GetCharTitleId()); // CharTitleId, new 2.4.0, player gets this title (id from CharTitles)
|
data << uint32(pQuest->GetCharTitleId()); // CharTitleId, new 2.4.0, player gets this title (id from CharTitles)
|
||||||
data << uint32(pQuest->GetPlayersSlain()); // players slain
|
data << uint32(pQuest->GetPlayersSlain()); // players slain
|
||||||
data << uint32(pQuest->GetBonusTalents()); // bonus talents
|
data << uint32(pQuest->GetBonusTalents()); // bonus talents
|
||||||
|
data << uint32(0); // bonus arena points
|
||||||
|
data << uint32(0); // unknown
|
||||||
|
|
||||||
int iI;
|
int iI;
|
||||||
|
|
||||||
|
|
@ -601,6 +604,15 @@ void PlayerMenu::SendQuestQueryResponse( Quest const *pQuest )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for(iI = 0; iI < QUEST_REPUTATIONS_COUNT; ++iI) // reward factions ids
|
||||||
|
data << uint32(0);
|
||||||
|
|
||||||
|
for(iI = 0; iI < QUEST_REPUTATIONS_COUNT; ++iI) // columnid+1 QuestFactionReward.dbc?
|
||||||
|
data << uint32(0);
|
||||||
|
|
||||||
|
for(iI = 0; iI < QUEST_REPUTATIONS_COUNT; ++iI) // unk (0)
|
||||||
|
data << uint32(0);
|
||||||
|
|
||||||
data << pQuest->GetPointMapId();
|
data << pQuest->GetPointMapId();
|
||||||
data << pQuest->GetPointX();
|
data << pQuest->GetPointX();
|
||||||
data << pQuest->GetPointY();
|
data << pQuest->GetPointY();
|
||||||
|
|
@ -610,6 +622,7 @@ void PlayerMenu::SendQuestQueryResponse( Quest const *pQuest )
|
||||||
data << Objectives;
|
data << Objectives;
|
||||||
data << Details;
|
data << Details;
|
||||||
data << EndText;
|
data << EndText;
|
||||||
|
data << uint8(0); // some string
|
||||||
|
|
||||||
for (iI = 0; iI < QUEST_OBJECTIVES_COUNT; ++iI)
|
for (iI = 0; iI < QUEST_OBJECTIVES_COUNT; ++iI)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -313,6 +313,7 @@ void WorldSession::HandleMailDelete(WorldPacket & recv_data )
|
||||||
uint32 mailId;
|
uint32 mailId;
|
||||||
recv_data >> mailbox;
|
recv_data >> mailbox;
|
||||||
recv_data >> mailId;
|
recv_data >> mailId;
|
||||||
|
recv_data.read_skip<uint32>(); // 3.3.0
|
||||||
|
|
||||||
if (!GetPlayer()->GetGameObjectIfCanInteractWith(mailbox, GAMEOBJECT_TYPE_MAILBOX))
|
if (!GetPlayer()->GetGameObjectIfCanInteractWith(mailbox, GAMEOBJECT_TYPE_MAILBOX))
|
||||||
return;
|
return;
|
||||||
|
|
|
||||||
|
|
@ -1518,13 +1518,17 @@ void WorldSession::HandleMoveSetCanFlyAckOpcode( WorldPacket & recv_data )
|
||||||
sLog.outDebug("WORLD: CMSG_MOVE_SET_CAN_FLY_ACK");
|
sLog.outDebug("WORLD: CMSG_MOVE_SET_CAN_FLY_ACK");
|
||||||
//recv_data.hexlike();
|
//recv_data.hexlike();
|
||||||
|
|
||||||
recv_data.read_skip<uint64>(); // guid
|
uint64 guid;
|
||||||
|
if(!recv_data.readPackGUID(guid))
|
||||||
|
return;
|
||||||
|
|
||||||
recv_data.read_skip<uint32>(); // unk
|
recv_data.read_skip<uint32>(); // unk
|
||||||
|
|
||||||
MovementInfo movementInfo;
|
MovementInfo movementInfo;
|
||||||
|
movementInfo.guid = guid;
|
||||||
ReadMovementInfo(recv_data, &movementInfo);
|
ReadMovementInfo(recv_data, &movementInfo);
|
||||||
|
|
||||||
recv_data.read_skip<uint32>(); // unk2
|
recv_data.read_skip<float>(); // unk2
|
||||||
|
|
||||||
_player->m_movementInfo.SetMovementFlags(movementInfo.GetMovementFlags());
|
_player->m_movementInfo.SetMovementFlags(movementInfo.GetMovementFlags());
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -325,7 +325,7 @@ void Object::_BuildMovementUpdate(ByteBuffer * data, uint16 flags, uint32 flags2
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x02200000
|
// 0x02200000
|
||||||
if((flags2 & (MOVEMENTFLAG_SWIMMING | MOVEMENTFLAG_FLYING2)) || (unk_flags & 0x20))
|
if((flags2 & (MOVEMENTFLAG_SWIMMING | MOVEMENTFLAG_FLYING)) || (unk_flags & 0x20))
|
||||||
{
|
{
|
||||||
if(GetTypeId() == TYPEID_PLAYER)
|
if(GetTypeId() == TYPEID_PLAYER)
|
||||||
*data << (float)((Player*)this)->m_movementInfo.s_pitch;
|
*data << (float)((Player*)this)->m_movementInfo.s_pitch;
|
||||||
|
|
|
||||||
|
|
@ -1299,4 +1299,8 @@ OpcodeHandler opcodeTable[NUM_MSG_TYPES] =
|
||||||
/*0x4F6*/ { "CMSG_WORLD_STATE_UI_TIMER_UPDATE", STATUS_LOGGEDIN, &WorldSession::HandleWorldStateUITimerUpdate },
|
/*0x4F6*/ { "CMSG_WORLD_STATE_UI_TIMER_UPDATE", STATUS_LOGGEDIN, &WorldSession::HandleWorldStateUITimerUpdate },
|
||||||
/*0x4F7*/ { "SMSG_WORLD_STATE_UI_TIMER_UPDATE", STATUS_NEVER, &WorldSession::Handle_ServerSide },
|
/*0x4F7*/ { "SMSG_WORLD_STATE_UI_TIMER_UPDATE", STATUS_NEVER, &WorldSession::Handle_ServerSide },
|
||||||
/*0x4F8*/ { "CMSG_UNKNOWN_1272", STATUS_NEVER, &WorldSession::Handle_NULL },
|
/*0x4F8*/ { "CMSG_UNKNOWN_1272", STATUS_NEVER, &WorldSession::Handle_NULL },
|
||||||
|
/*0x4F9*/ { "UMSG_UNKNOWN_1273", STATUS_NEVER, &WorldSession::Handle_NULL },
|
||||||
|
/*0x4FA*/ { "SMSG_UNKNOWN_1274", STATUS_NEVER, &WorldSession::Handle_ServerSide },
|
||||||
|
/*0x4FB*/ { "UMSG_UNKNOWN_1275", STATUS_NEVER, &WorldSession::Handle_NULL },
|
||||||
|
/*0x4FC*/ { "SMSG_UNKNOWN_1276", STATUS_NEVER, &WorldSession::Handle_ServerSide },
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -1307,7 +1307,11 @@ enum Opcodes
|
||||||
CMSG_WORLD_STATE_UI_TIMER_UPDATE = 0x4F6,
|
CMSG_WORLD_STATE_UI_TIMER_UPDATE = 0x4F6,
|
||||||
SMSG_WORLD_STATE_UI_TIMER_UPDATE = 0x4F7,
|
SMSG_WORLD_STATE_UI_TIMER_UPDATE = 0x4F7,
|
||||||
CMSG_UNKNOWN_1272 = 0x4F8, // called from lua: CreateCharacter, paid race change
|
CMSG_UNKNOWN_1272 = 0x4F8, // called from lua: CreateCharacter, paid race change
|
||||||
NUM_MSG_TYPES = 0x4F9
|
UMSG_UNKNOWN_1273 = 0x4F9, // not found 10522
|
||||||
|
SMSG_UNKNOWN_1274 = 0x4FA, // uint8
|
||||||
|
UMSG_UNKNOWN_1275 = 0x4FB, // not found 10522
|
||||||
|
SMSG_UNKNOWN_1276 = 0x4FC, // does nothing in 10522
|
||||||
|
NUM_MSG_TYPES = 0x4FD
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Player state
|
/// Player state
|
||||||
|
|
|
||||||
|
|
@ -18268,7 +18268,7 @@ void Player::SendInitialPacketsBeforeAddToMap()
|
||||||
|
|
||||||
// set fly flag if in fly form or taxi flight to prevent visually drop at ground in showup moment
|
// set fly flag if in fly form or taxi flight to prevent visually drop at ground in showup moment
|
||||||
if(HasAuraType(SPELL_AURA_MOD_INCREASE_FLIGHT_SPEED) || HasAuraType(SPELL_AURA_FLY) || isInFlight())
|
if(HasAuraType(SPELL_AURA_MOD_INCREASE_FLIGHT_SPEED) || HasAuraType(SPELL_AURA_FLY) || isInFlight())
|
||||||
m_movementInfo.AddMovementFlag(MOVEMENTFLAG_FLYING2);
|
m_movementInfo.AddMovementFlag(MOVEMENTFLAG_FLYING);
|
||||||
|
|
||||||
m_mover = this;
|
m_mover = this;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -748,14 +748,14 @@ enum MovementFlags
|
||||||
MOVEMENTFLAG_LEVITATING = 0x00000400,
|
MOVEMENTFLAG_LEVITATING = 0x00000400,
|
||||||
MOVEMENTFLAG_FLY_UNK1 = 0x00000800,
|
MOVEMENTFLAG_FLY_UNK1 = 0x00000800,
|
||||||
MOVEMENTFLAG_JUMPING = 0x00001000,
|
MOVEMENTFLAG_JUMPING = 0x00001000,
|
||||||
MOVEMENTFLAG_UNK4 = 0x00002000,
|
MOVEMENTFLAG_FALLING = 0x00002000,
|
||||||
MOVEMENTFLAG_FALLING = 0x00004000,
|
MOVEMENTFLAG_UNK4 = 0x00004000,
|
||||||
// 0x8000, 0x10000, 0x20000, 0x40000, 0x80000, 0x100000
|
// 0x8000, 0x10000, 0x20000, 0x40000, 0x80000, 0x100000
|
||||||
MOVEMENTFLAG_SWIMMING = 0x00200000, // appears with fly flag also
|
MOVEMENTFLAG_SWIMMING = 0x00200000, // appears with fly flag also
|
||||||
MOVEMENTFLAG_FLY_UP = 0x00400000,
|
MOVEMENTFLAG_FLY_UP = 0x00400000, // swim up also
|
||||||
MOVEMENTFLAG_CAN_FLY = 0x00800000,
|
MOVEMENTFLAG_FLY_DOWN = 0x00800000, // swim down also
|
||||||
MOVEMENTFLAG_FLYING = 0x01000000,
|
MOVEMENTFLAG_CAN_FLY = 0x01000000, // can fly in 3.3?
|
||||||
MOVEMENTFLAG_FLYING2 = 0x02000000, // Actual flying mode
|
MOVEMENTFLAG_FLYING = 0x02000000, // Actual flying mode
|
||||||
MOVEMENTFLAG_SPLINE = 0x04000000, // used for flight paths
|
MOVEMENTFLAG_SPLINE = 0x04000000, // used for flight paths
|
||||||
MOVEMENTFLAG_SPLINE2 = 0x08000000, // used for flight paths
|
MOVEMENTFLAG_SPLINE2 = 0x08000000, // used for flight paths
|
||||||
MOVEMENTFLAG_WATERWALKING = 0x10000000, // prevent unit from falling through water
|
MOVEMENTFLAG_WATERWALKING = 0x10000000, // prevent unit from falling through water
|
||||||
|
|
@ -803,7 +803,7 @@ struct MovementInfo
|
||||||
|
|
||||||
// flags that use in movement check for example at spell casting
|
// flags that use in movement check for example at spell casting
|
||||||
MovementFlags const movementFlagsMask = MovementFlags(
|
MovementFlags const movementFlagsMask = MovementFlags(
|
||||||
MOVEMENTFLAG_FORWARD |MOVEMENTFLAG_BACKWARD |MOVEMENTFLAG_STRAFE_LEFT|MOVEMENTFLAG_STRAFE_RIGHT|
|
MOVEMENTFLAG_FORWARD |MOVEMENTFLAG_BACKWARD |MOVEMENTFLAG_STRAFE_LEFT |MOVEMENTFLAG_STRAFE_RIGHT|
|
||||||
MOVEMENTFLAG_PITCH_UP|MOVEMENTFLAG_PITCH_DOWN|MOVEMENTFLAG_FLY_UNK1 |
|
MOVEMENTFLAG_PITCH_UP|MOVEMENTFLAG_PITCH_DOWN|MOVEMENTFLAG_FLY_UNK1 |
|
||||||
MOVEMENTFLAG_JUMPING |MOVEMENTFLAG_FALLING |MOVEMENTFLAG_FLY_UP |
|
MOVEMENTFLAG_JUMPING |MOVEMENTFLAG_FALLING |MOVEMENTFLAG_FLY_UP |
|
||||||
MOVEMENTFLAG_FLYING |MOVEMENTFLAG_SPLINE
|
MOVEMENTFLAG_FLYING |MOVEMENTFLAG_SPLINE
|
||||||
|
|
|
||||||
|
|
@ -156,7 +156,6 @@ void WorldSession::HandleCreatureQueryOpcode( WorldPacket & recv_data )
|
||||||
CreatureInfo const *ci = objmgr.GetCreatureTemplate(entry);
|
CreatureInfo const *ci = objmgr.GetCreatureTemplate(entry);
|
||||||
if (ci)
|
if (ci)
|
||||||
{
|
{
|
||||||
|
|
||||||
std::string Name, SubName;
|
std::string Name, SubName;
|
||||||
Name = ci->Name;
|
Name = ci->Name;
|
||||||
SubName = ci->SubName;
|
SubName = ci->SubName;
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@
|
||||||
#ifndef _UPDATEFIELDS_AUTO_H
|
#ifndef _UPDATEFIELDS_AUTO_H
|
||||||
#define _UPDATEFIELDS_AUTO_H
|
#define _UPDATEFIELDS_AUTO_H
|
||||||
|
|
||||||
// Auto generated for version 3, 2, 2, 10505
|
// Auto generated for version 0, 3, 0, 10522
|
||||||
|
|
||||||
enum EObjectFields
|
enum EObjectFields
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -738,7 +738,7 @@ void WorldSession::ReadMovementInfo(WorldPacket &data, MovementInfo *mi)
|
||||||
data >> mi->t_seat;
|
data >> mi->t_seat;
|
||||||
}
|
}
|
||||||
|
|
||||||
if((mi->HasMovementFlag(MovementFlags(MOVEMENTFLAG_SWIMMING | MOVEMENTFLAG_FLYING2))) || (mi->unk1 & 0x20))
|
if((mi->HasMovementFlag(MovementFlags(MOVEMENTFLAG_SWIMMING | MOVEMENTFLAG_FLYING))) || (mi->unk1 & 0x20))
|
||||||
{
|
{
|
||||||
data >> mi->s_pitch;
|
data >> mi->s_pitch;
|
||||||
}
|
}
|
||||||
|
|
@ -783,7 +783,7 @@ void WorldSession::WriteMovementInfo(WorldPacket *data, MovementInfo *mi)
|
||||||
*data << mi->t_seat;
|
*data << mi->t_seat;
|
||||||
}
|
}
|
||||||
|
|
||||||
if((mi->HasMovementFlag(MovementFlags(MOVEMENTFLAG_SWIMMING | MOVEMENTFLAG_FLYING2))) || (mi->unk1 & 0x20))
|
if((mi->HasMovementFlag(MovementFlags(MOVEMENTFLAG_SWIMMING | MOVEMENTFLAG_FLYING))) || (mi->unk1 & 0x20))
|
||||||
{
|
{
|
||||||
*data << mi->s_pitch;
|
*data << mi->s_pitch;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -66,9 +66,9 @@ enum LoginResult
|
||||||
|
|
||||||
// we need to stick to 1 version or half of the stuff will work for someone
|
// we need to stick to 1 version or half of the stuff will work for someone
|
||||||
// others will not and opposite
|
// others will not and opposite
|
||||||
// will only support WoW, WoW:TBC and WoW:WotLK 3.2.2a client build 10505...
|
// will only support WoW, WoW:TBC and WoW:WotLK 3.3.0 client build 10522...
|
||||||
|
|
||||||
#define EXPECTED_MANGOS_CLIENT_BUILD {10505, 0}
|
#define EXPECTED_MANGOS_CLIENT_BUILD {10522, 0}
|
||||||
|
|
||||||
// At update excepted builds please update if need define DEFAULT_MAX_LEVEL
|
// At update excepted builds please update if need define DEFAULT_MAX_LEVEL
|
||||||
// in DBCEnum.h to default max player level expected by build
|
// in DBCEnum.h to default max player level expected by build
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue