aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Battlegrounds/ArenaTeamMgr.cpp4
-rwxr-xr-xsrc/server/game/Battlegrounds/BattlegroundMgr.cpp7
-rwxr-xr-xsrc/server/game/DataStores/DBCStores.cpp8
-rwxr-xr-xsrc/server/game/DataStores/DBCStores.h2
-rwxr-xr-xsrc/server/game/DataStores/DBCStructure.h34
-rwxr-xr-xsrc/server/game/DataStores/DBCfmt.h4
-rwxr-xr-xsrc/server/game/Entities/Creature/Creature.cpp4
-rwxr-xr-xsrc/server/game/Entities/Pet/Pet.cpp2
-rwxr-xr-xsrc/server/game/Entities/Player/Player.cpp23
-rwxr-xr-xsrc/server/game/Entities/Unit/Unit.cpp14
-rwxr-xr-xsrc/server/game/Handlers/LFGHandler.cpp2
-rwxr-xr-xsrc/server/game/Handlers/MiscHandler.cpp2
-rwxr-xr-xsrc/server/game/Handlers/MovementHandler.cpp4
-rwxr-xr-xsrc/server/game/Handlers/QuestHandler.cpp2
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp1
-rwxr-xr-xsrc/server/game/Server/Protocol/Opcodes.h24
-rwxr-xr-xsrc/server/game/Server/WorldSocket.cpp13
-rwxr-xr-xsrc/server/game/Spells/Auras/SpellAuraEffects.cpp13
-rwxr-xr-xsrc/server/game/Spells/Spell.cpp17
-rwxr-xr-xsrc/server/game/Spells/SpellEffects.cpp4
-rw-r--r--src/server/scripts/Commands/cs_misc.cpp3
-rwxr-xr-xsrc/server/shared/Packets/ByteBuffer.h4
22 files changed, 101 insertions, 90 deletions
diff --git a/src/server/game/Battlegrounds/ArenaTeamMgr.cpp b/src/server/game/Battlegrounds/ArenaTeamMgr.cpp
index 47282be3a8e..c964f47f495 100644
--- a/src/server/game/Battlegrounds/ArenaTeamMgr.cpp
+++ b/src/server/game/Battlegrounds/ArenaTeamMgr.cpp
@@ -153,10 +153,10 @@ void ArenaTeamMgr::DistributeArenaPoints()
SQLTransaction trans = CharacterDatabase.BeginTransaction();
- PreparedStatement* stmt;
-
// Cycle that gives points to all players
/*
+ PreparedStatement* stmt;
+
for (std::map<uint32, uint32>::iterator playerItr = PlayerPoints.begin(); playerItr != PlayerPoints.end(); ++playerItr)
{
// Add points to player if online
diff --git a/src/server/game/Battlegrounds/BattlegroundMgr.cpp b/src/server/game/Battlegrounds/BattlegroundMgr.cpp
index 167933b9c0c..eae84c9c7b3 100755
--- a/src/server/game/Battlegrounds/BattlegroundMgr.cpp
+++ b/src/server/game/Battlegrounds/BattlegroundMgr.cpp
@@ -771,10 +771,11 @@ void BattlegroundMgr::CreateInitialBattlegrounds()
continue;
}
- data.StartMaxDist = fields[9].GetFloat();
-
- //data.BattlegroundName = bl->name[sWorld->GetDefaultDbcLocale()];
+ selectionWeight = fields[9].GetUInt8();
+ // data.StartMaxDist = fields[9].GetFloat(); ?
data.scriptId = sObjectMgr->GetScriptId(fields[10].GetCString());
+
+ //data.BattlegroundName = bl->name[sWorld->GetDefaultDbcLocale()];
data.MapID = bl->mapid[0];
if (!CreateBattleground(data))
diff --git a/src/server/game/DataStores/DBCStores.cpp b/src/server/game/DataStores/DBCStores.cpp
index e8087753efd..973421bc2e3 100755
--- a/src/server/game/DataStores/DBCStores.cpp
+++ b/src/server/game/DataStores/DBCStores.cpp
@@ -1006,6 +1006,14 @@ std::vector<uint32> const* GetTalentTreePrimarySpells(uint32 talentTree)
return &itr->second;
}
+uint32 GetLiquidFlags(uint32 liquidType)
+{
+ if (LiquidTypeEntry const* liq = sLiquidTypeStore.LookupEntry(liquidType))
+ return 1 << liq->Type;
+
+ return 0;
+}
+
uint32 ScalingStatValuesEntry::GetStatMultiplier(uint32 inventoryType) const
{
if (inventoryType < MAX_INVTYPE)
diff --git a/src/server/game/DataStores/DBCStores.h b/src/server/game/DataStores/DBCStores.h
index d04dc4ff131..c22f2ccd625 100755
--- a/src/server/game/DataStores/DBCStores.h
+++ b/src/server/game/DataStores/DBCStores.h
@@ -67,6 +67,8 @@ MapDifficulty const* GetDownscaledMapDifficultyData(uint32 mapId, Difficulty &di
uint32 const* /*[MAX_TALENT_TABS]*/ GetTalentTabPages(uint8 cls);
std::vector<uint32> const* GetTalentTreePrimarySpells(uint32 talentTree);
+uint32 GetLiquidFlags(uint32 liquidType);
+
PvPDifficultyEntry const* GetBattlegroundBracketByLevel(uint32 mapid, uint32 level);
PvPDifficultyEntry const* GetBattlegroundBracketById(uint32 mapid, BattlegroundBracketId id);
diff --git a/src/server/game/DataStores/DBCStructure.h b/src/server/game/DataStores/DBCStructure.h
index f0b462e827c..54e961eaf84 100755
--- a/src/server/game/DataStores/DBCStructure.h
+++ b/src/server/game/DataStores/DBCStructure.h
@@ -543,10 +543,9 @@ struct AreaTableEntry
//uint32 unk8; // 8,
//uint32 unk9; // 9,
int32 area_level; // 10
+ char* area_name; // 11
uint32 team; // 12
- //uint32 unk14; // 14, All zeros (4.2.2)
- //uint32 unk15; // 15,
- //uint32 unk16; // 16, Only Naxxramas has value (21)
+ uint32 LiquidTypeOverride[4]; // 13-16 liquid override by type
//float unk13; // 17,
//float unk13; // 18,
//uint32 unk19; // 19, All zeros (4.2.2)
@@ -1134,21 +1133,24 @@ struct HolidayNamesEntry
};
*/
+#define MAX_HOLIDAY_DURATIONS 10
+#define MAX_HOLIDAY_DATES 26
+#define MAX_HOLIDAY_FLAGS 10
+
struct HolidaysEntry
{
- uint32 ID; // 0, holiday id
- //uint32 unk1; // 1
- //uint32 unk2; // 2
- //uint32 unk3[8] // 3-10, empty fields
- //uint32 unk11[13] // 11-23, some unknown data (bit strings?)
- //uint32 unk11[13] // 24-36, some empty fields (continue prev?)
- //uint32 unk11[12] // 37-48, counters?
- //uint32 holidayNameId; // 49, id for HolidayNames.dbc
- //uint32 holidayDescriptionId; // 50, id for HolidayDescriptions.dbc
- //uint32 unk51; // 51
- //uint32 unk52; // 52
- //uint32 unk53; // 53
- //uint32 unk54; // 54
+ uint32 Id; // 0 m_ID
+ uint32 Duration[MAX_HOLIDAY_DURATIONS]; // 1-10 m_duration
+ uint32 Date[MAX_HOLIDAY_DATES]; // 11-36 m_date (dates in unix time starting at January, 1, 2000)
+ uint32 Region; // 37 m_region (wow region)
+ uint32 Looping; // 38 m_looping
+ uint32 CalendarFlags[MAX_HOLIDAY_FLAGS]; // 39-48 m_calendarFlags
+ //uint32 holidayNameId; // 49 m_holidayNameID (HolidayNames.dbc)
+ //uint32 holidayDescriptionId; // 50 m_holidayDescriptionID (HolidayDescriptions.dbc)
+ char* TextureFilename; // 51 m_textureFilename
+ uint32 Priority; // 52 m_priority
+ uint32 CalendarFilterType; // 53 m_calendarFilterType (-1 = Fishing Contest, 0 = Unk, 1 = Darkmoon Festival, 2 = Yearly holiday)
+ //uint32 flags; // 54 m_flags (0 = Darkmoon Faire, Fishing Contest and Wotlk Launch, rest is 1)
};
// common struct for:
diff --git a/src/server/game/DataStores/DBCfmt.h b/src/server/game/DataStores/DBCfmt.h
index df5e1ce5035..50af8928e6b 100755
--- a/src/server/game/DataStores/DBCfmt.h
+++ b/src/server/game/DataStores/DBCfmt.h
@@ -23,7 +23,7 @@ const char Achievementfmt[]="niixsxiixixxii";
//const std::string CustomAchievementfmt="pppaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapapaaaaaaaaaaaaaaaaaapp";
//const std::string CustomAchievementIndex = "ID";
const char AchievementCriteriafmt[]="niiiiiiiisiiiiixxiiiiii";
-const char AreaTableEntryfmt[]="iiinixxxxxisixxxxxxxxxxxxx";
+const char AreaTableEntryfmt[]="iiinixxxxxisiiiiixxxxxxxxx";
const char AreaGroupEntryfmt[]="niiiiiii";
const char AreaPOIEntryfmt[]="niiiiiiiiiiiffixixxixx";
const char AreaTriggerEntryfmt[]="nifffxxxfffff";
@@ -75,7 +75,7 @@ const char GtOCTRegenHPfmt[]="f";
const char GtRegenHPPerSptfmt[]="f";
const char GtRegenMPPerSptfmt[]="xf";
-const char Holidaysfmt[]="nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
+const char Holidaysfmt[]="niiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiixxsiix";
const char ItemBagFamilyfmt[]="nx";
const char ItemArmorQualityfmt[]="nfffffffi";
const char ItemArmorShieldfmt[]="nifffffff";
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp
index ca075703277..bbce6cf56c1 100755
--- a/src/server/game/Entities/Creature/Creature.cpp
+++ b/src/server/game/Entities/Creature/Creature.cpp
@@ -2474,7 +2474,7 @@ bool Creature::SetDisableGravity(bool disable, bool packetOnly/*=false*/)
if (!movespline->Initialized())
return true;
- WorldPacket data(disable ? SMSG_SPLINE_MOVE_GRAVITY_DISABLE : SMSG_SPLINE_MOVE_GRAVITY_ENABLE, 9);
+ WorldPacket data(disable ? SMSG_MOVE_SPLINE_DISABLE_GRAVITY : SMSG_MOVE_SPLINE_ENABLE_GRAVITY, 9);
data.append(GetPackGUID());
SendMessageToSet(&data, false);
return true;
@@ -2495,7 +2495,7 @@ bool Creature::SetHover(bool enable)
return true;
//! Not always a packet is sent
- WorldPacket data(enable ? SMSG_SPLINE_MOVE_SET_HOVER : SMSG_SPLINE_MOVE_UNSET_HOVER, 9);
+ WorldPacket data(enable ? SMSG_MOVE_SPLINE_SET_HOVER : SMSG_MOVE_SPLINE_UNSET_HOVER, 9);
data.append(GetPackGUID());
SendMessageToSet(&data, false);
return true;
diff --git a/src/server/game/Entities/Pet/Pet.cpp b/src/server/game/Entities/Pet/Pet.cpp
index 414792c8d5c..efd5e577f9e 100755
--- a/src/server/game/Entities/Pet/Pet.cpp
+++ b/src/server/game/Entities/Pet/Pet.cpp
@@ -1850,7 +1850,7 @@ bool Pet::IsPermanentPetFor(Player* owner)
case CLASS_DEATH_KNIGHT:
return GetCreatureTemplate()->type == CREATURE_TYPE_UNDEAD;
case CLASS_MAGE:
- return GetCreatureInfo()->type == CREATURE_TYPE_ELEMENTAL;
+ return GetCreatureTemplate()->type == CREATURE_TYPE_ELEMENTAL;
default:
return false;
}
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index d62e0ccfd53..890ceb72c3e 100755
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -19081,7 +19081,7 @@ void Player::_SaveActions(SQLTransaction& trans)
case ACTIONBUTTON_NEW:
stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHAR_ACTION);
stmt->setUInt32(0, GetGUIDLow());
- stmt->setUInt8(1, m_activeSpec);
+ stmt->setUInt8(1, GetActiveSpec());
stmt->setUInt8(2, itr->first);
stmt->setUInt32(3, itr->second.GetAction());
stmt->setUInt8(4, uint8(itr->second.GetType()));
@@ -19096,7 +19096,7 @@ void Player::_SaveActions(SQLTransaction& trans)
stmt->setUInt8(1, uint8(itr->second.GetType()));
stmt->setUInt32(2, GetGUIDLow());
stmt->setUInt8(3, itr->first);
- stmt->setUInt8(4, m_activeSpec);
+ stmt->setUInt8(4, GetActiveSpec());
trans->Append(stmt);
itr->second.uState = ACTIONBUTTON_UNCHANGED;
@@ -19106,7 +19106,7 @@ void Player::_SaveActions(SQLTransaction& trans)
stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_ACTION_BY_BUTTON_SPEC);
stmt->setUInt32(0, GetGUIDLow());
stmt->setUInt8(1, itr->first);
- stmt->setUInt8(2, m_activeSpec);
+ stmt->setUInt8(2, GetActiveSpec());
trans->Append(stmt);
m_actionButtons.erase(itr++);
@@ -19646,6 +19646,7 @@ void Player::_SaveStats(SQLTransaction& trans)
stmt->setUInt32(index++, GetGUIDLow());
stmt->setUInt32(index++, GetMaxHealth());
+ for (uint8 i = 0; i < MAX_STORED_POWERS; ++i)
stmt->setUInt32(index++, GetMaxPower(Powers(i)));
for (uint8 i = 0; i < MAX_STATS; ++i)
@@ -25093,7 +25094,7 @@ void Player::_SaveGlyphs(SQLTransaction& trans)
trans->Append(stmt);
- for (uint8 spec = 0; spec < m_specsCount; ++spec)
+ for (uint8 spec = 0; spec < GetSpecsCount(); ++spec)
{
uint8 index = 0;
@@ -25103,7 +25104,7 @@ void Player::_SaveGlyphs(SQLTransaction& trans)
stmt->setUInt8(index++, spec);
for (uint8 i = 0; i < MAX_GLYPH_SLOT_INDEX; ++i)
- stmt->setUInt16(index++, uint16(m_Glyphs[spec][i]));
+ stmt->setUInt16(index++, uint16(GetGlyph(spec, i)));
trans->Append(stmt);
}
@@ -25193,7 +25194,7 @@ void Player::UpdateSpecCount(uint8 count)
_SaveActions(trans);
stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_ACTION_EXCEPT_SPEC);
- stmt->setUInt8(0, m_activeSpec);
+ stmt->setUInt8(0, GetActiveSpec());
stmt->setUInt32(1, GetGUIDLow());
trans->Append(stmt);
@@ -25688,8 +25689,8 @@ void Player::SendMovementSetCanFly(bool apply)
void Player::SendMovementSetCanTransitionBetweenSwimAndFly(bool apply)
{
WorldPacket data(apply ?
- SMSG_MOVE_SET_CAN_TRANSITION_BETWEEN_SWIM_AND_FLY :
- SMSG_MOVE_UNSET_CAN_TRANSITION_BETWEEN_SWIM_AND_FLY, 12);
+ SMSG_MOVE_ENABLE_TRANSITION_BETWEEN_SWIM_AND_FLY :
+ SMSG_MOVE_DISABLE_TRANSITION_BETWEEN_SWIM_AND_FLY, 12);
data.append(GetPackGUID());
data << uint32(0); //! movement counter
SendDirectMessage(&data);
@@ -25697,7 +25698,7 @@ void Player::SendMovementSetCanTransitionBetweenSwimAndFly(bool apply)
void Player::SendMovementSetHover(bool apply)
{
- WorldPacket data(apply ? SMSG_MOVE_SET_HOVER : SMSG_MOVE_UNSET_HOVER, 12);
+ WorldPacket data(apply ? SMSG_MOVE_SET_HOVERING : SMSG_MOVE_SPLINE_UNSET_HOVER, 12);
data.append(GetPackGUID());
data << uint32(0); //! movement counter
SendDirectMessage(&data);
@@ -25705,7 +25706,7 @@ void Player::SendMovementSetHover(bool apply)
void Player::SendMovementSetWaterWalking(bool apply)
{
- WorldPacket data(apply ? SMSG_MOVE_WATER_WALK : SMSG_MOVE_LAND_WALK, 12);
+ WorldPacket data(apply ? SMSG_MOVE_SET_WATER_WALK : SMSG_MOVE_SET_LAND_WALK, 12);
data.append(GetPackGUID());
data << uint32(0); //! movement counter
SendDirectMessage(&data);
@@ -25713,7 +25714,7 @@ void Player::SendMovementSetWaterWalking(bool apply)
void Player::SendMovementSetFeatherFall(bool apply)
{
- WorldPacket data(apply ? SMSG_MOVE_FEATHER_FALL : SMSG_MOVE_NORMAL_FALL, 12);
+ WorldPacket data(apply ? SMSG_MOVE_SET_FEATHER_FALL : SMSG_MOVE_SET_NORMAL_FALL, 12);
data.append(GetPackGUID());
data << uint32(0); //! movement counter
SendDirectMessage(&data);
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 6ae8e0b7caf..347a51a67d9 100755
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -10828,7 +10828,7 @@ uint32 Unit::SpellDamageBonusTaken(Unit* caster, SpellInfo const* spellProto, ui
// From caster spells
AuraEffectList const& mOwnerTaken = GetAuraEffectsByType(SPELL_AURA_MOD_DAMAGE_FROM_CASTER);
for (AuraEffectList::const_iterator i = mOwnerTaken.begin(); i != mOwnerTaken.end(); ++i)
- if ((*i)->GetCasterGUID() == caster->GetGUID() && (*i)->IsAffectedOnSpell(spellProto))
+ if ((*i)->GetCasterGUID() == caster->GetGUID() && (*i)->IsAffectingSpell(spellProto))
AddPctN(TakenTotalMod, (*i)->GetAmount());
// Mod damage from spell mechanic
@@ -11431,7 +11431,7 @@ uint32 Unit::SpellHealingBonusTaken(Unit* caster, SpellInfo const* spellProto, u
AuraEffectList const& mHealingGet= GetAuraEffectsByType(SPELL_AURA_MOD_HEALING_RECEIVED);
for (AuraEffectList::const_iterator i = mHealingGet.begin(); i != mHealingGet.end(); ++i)
- if (caster->GetGUID() == (*i)->GetCasterGUID() && (*i)->IsAffectedOnSpell(spellProto))
+ if (caster->GetGUID() == (*i)->GetCasterGUID() && (*i)->IsAffectingSpell(spellProto))
AddPctN(TakenTotalMod, (*i)->GetAmount());
for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i)
@@ -11844,7 +11844,7 @@ uint32 Unit::MeleeDamageBonusTaken(Unit* attacker, uint32 pdamage, WeaponAttackT
// From caster spells
AuraEffectList const& mOwnerTaken = GetAuraEffectsByType(SPELL_AURA_MOD_DAMAGE_FROM_CASTER);
for (AuraEffectList::const_iterator i = mOwnerTaken.begin(); i != mOwnerTaken.end(); ++i)
- if ((*i)->GetCasterGUID() == attacker->GetGUID() && (*i)->IsAffectedOnSpell(spellProto))
+ if ((*i)->GetCasterGUID() == attacker->GetGUID() && (*i)->IsAffectingSpell(spellProto))
AddPctN(TakenTotalMod, (*i)->GetAmount());
// Mod damage from spell mechanic
@@ -17696,8 +17696,8 @@ void Unit::BuildMovementPacket(ByteBuffer *data) const
switch (GetTypeId())
{
case TYPEID_UNIT:
- if (canFly())
- const_cast<Unit*>(this)->AddUnitMovementFlag(MOVEMENTFLAG_LEVITATING);
+ if (CanFly())
+ const_cast<Unit*>(this)->AddUnitMovementFlag(MOVEMENTFLAG_DISABLE_GRAVITY);
break;
case TYPEID_PLAYER:
// remove unknown, unused etc flags for now
@@ -17718,7 +17718,7 @@ void Unit::BuildMovementPacket(ByteBuffer *data) const
bool swimming = ((GetUnitMovementFlags() & (MOVEMENTFLAG_SWIMMING | MOVEMENTFLAG_FLYING))
|| (m_movementInfo.flags2 & MOVEMENTFLAG2_ALWAYS_ALLOW_PITCHING));
bool interPolatedTurning = m_movementInfo.flags2 & MOVEMENTFLAG2_INTERPOLATED_TURNING;
- bool jumping = GetUnitMovementFlags() & MOVEMENTFLAG_JUMPING;
+ bool jumping = GetUnitMovementFlags() & MOVEMENTFLAG_FALLING;
bool splineElevation = GetUnitMovementFlags() & MOVEMENTFLAG_SPLINE_ELEVATION;
bool splineData = false;
@@ -18187,7 +18187,7 @@ void Unit::SendMovementHover()
if (GetTypeId() == TYPEID_PLAYER)
ToPlayer()->SendMovementSetHover(HasUnitMovementFlag(MOVEMENTFLAG_HOVER));
- WorldPacket data(MSG_MOVE_HOVER, 64);
+ WorldPacket data(MSG_MOVE_HOVER, 64); // SMSG_MOVE_SET_HOVERING?
data.append(GetPackGUID());
BuildMovementPacket(&data);
SendMessageToSet(&data, false);
diff --git a/src/server/game/Handlers/LFGHandler.cpp b/src/server/game/Handlers/LFGHandler.cpp
index 9c66ca44383..82afdfb9044 100755
--- a/src/server/game/Handlers/LFGHandler.cpp
+++ b/src/server/game/Handlers/LFGHandler.cpp
@@ -529,7 +529,7 @@ void WorldSession::SendLfgBootPlayer(const LfgPlayerBoot* pBoot)
}
sLog->outDebug(LOG_FILTER_NETWORKIO, "SMSG_LFG_BOOT_PROPOSAL_UPDATE [" UI64FMTD "] inProgress: %u - didVote: %u - agree: %u - victim: [" UI64FMTD "] votes: %u - agrees: %u - left: %u - needed: %u - reason %s",
guid, uint8(pBoot->inProgress), uint8(playerVote != LFG_ANSWER_PENDING), uint8(playerVote == LFG_ANSWER_AGREE), pBoot->victim, votesNum, agreeNum, secsleft, pBoot->votedNeeded, pBoot->reason.c_str());
- WorldPacket data(SMSG_LFG_BOOT_PROPOSAL_UPDATE, 1 + 1 + 1 + 8 + 4 + 4 + 4 + 4 + pBoot->reason.length());
+ WorldPacket data(SMSG_LFG_BOOT_PLAYER, 1 + 1 + 1 + 8 + 4 + 4 + 4 + 4 + pBoot->reason.length());
data << uint8(pBoot->inProgress); // Vote in progress
data << uint8(playerVote != LFG_ANSWER_PENDING); // Did Vote
data << uint8(playerVote == LFG_ANSWER_AGREE); // Agree
diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp
index 7cea7b2ea8e..247db1975a4 100755
--- a/src/server/game/Handlers/MiscHandler.cpp
+++ b/src/server/game/Handlers/MiscHandler.cpp
@@ -1829,7 +1829,7 @@ void WorldSession::HandleUpdateMissileTrajectory(WorldPacket& recvPacket)
{
uint32 opcode;
recvPacket >> opcode;
- recvPacket.SetOpcode(opcode);
+ recvPacket.SetOpcode(MSG_MOVE_STOP); // always set to MSG_MOVE_STOP in client SetOpcode
HandleMovementOpcodes(recvPacket);
}
}
diff --git a/src/server/game/Handlers/MovementHandler.cpp b/src/server/game/Handlers/MovementHandler.cpp
index 3d9968d9a9d..592b2cbeff6 100755
--- a/src/server/game/Handlers/MovementHandler.cpp
+++ b/src/server/game/Handlers/MovementHandler.cpp
@@ -345,7 +345,7 @@ void WorldSession::HandleMovementOpcodes(WorldPacket & recvData)
/*----------------------*/
/* process position-change */
- WorldPacket data(SMSG_PLAYER_MOVE, recv_data.size());
+ WorldPacket data(SMSG_PLAYER_MOVE, recvData.size());
movementInfo.time = getMSTime();
movementInfo.guid = mover->GetGUID();
WriteMovementInfo(data, &movementInfo);
@@ -824,7 +824,7 @@ void WorldSession::WriteMovementInfo(WorldPacket &data, MovementInfo* mi)
HavePitch = (mi->HasMovementFlag(MovementFlags(MOVEMENTFLAG_SWIMMING | MOVEMENTFLAG_FLYING)))
|| (mi->flags2 & MOVEMENTFLAG2_ALWAYS_ALLOW_PITCHING),
HaveFallData = mi->HasExtraMovementFlag(MOVEMENTFLAG2_INTERPOLATED_TURNING),
- HaveFallDirection = mi->HasMovementFlag(MOVEMENTFLAG_JUMPING),
+ HaveFallDirection = mi->HasMovementFlag(MOVEMENTFLAG_FALLING),
HaveSplineElevation = mi->HasMovementFlag(MOVEMENTFLAG_SPLINE_ELEVATION),
HaveSpline = false;
diff --git a/src/server/game/Handlers/QuestHandler.cpp b/src/server/game/Handlers/QuestHandler.cpp
index 62372004f03..ccd2e178f88 100755
--- a/src/server/game/Handlers/QuestHandler.cpp
+++ b/src/server/game/Handlers/QuestHandler.cpp
@@ -490,8 +490,6 @@ void WorldSession::HandleQuestgiverCompleteQuest(WorldPacket& recv_data)
Object* object = ObjectAccessor::GetObjectByTypeMask(*_player, playerGuid, TYPEMASK_UNIT|TYPEMASK_GAMEOBJECT);
if (!object || !object->hasInvolvedQuest(questId))
- Object* object = ObjectAccessor::GetObjectByTypeMask(*_player, guid, TYPEMASK_UNIT|TYPEMASK_GAMEOBJECT);
- if (!object || !object->hasInvolvedQuest(questId))
return;
// some kind of WPE protection
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index dc9dcad3d17..51760b3323e 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -835,7 +835,6 @@ void InitOpcodes()
//DEFINE_OPCODE_HANDLER(SMSG_MOVE_SPLINE_UNROOT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//DEFINE_OPCODE_HANDLER(SMSG_SPLINE_MOVE_FEATHER_FALL, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//DEFINE_OPCODE_HANDLER(SMSG_SPLINE_MOVE_NORMAL_FALL, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
- //DEFINE_OPCODE_HANDLER(SMSG_SPLINE_MOVE_SET_HOVER, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//DEFINE_OPCODE_HANDLER(SMSG_SPLINE_MOVE_UNSET_HOVER, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//DEFINE_OPCODE_HANDLER(SMSG_SPLINE_MOVE_WATER_WALK, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//DEFINE_OPCODE_HANDLER(SMSG_SPLINE_MOVE_LAND_WALK, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h
index 0920da2543e..dfcf56c388b 100755
--- a/src/server/game/Server/Protocol/Opcodes.h
+++ b/src/server/game/Server/Protocol/Opcodes.h
@@ -483,7 +483,10 @@ enum Opcodes
MSG_LIST_STABLED_PETS = 0x88CA,
MSG_MINIMAP_PING = 0x00,
MSG_MOVE_FALL_LAND = 0x00A5,
+ MSG_MOVE_FEATHER_FALL = 0x00,
+ MSG_MOVE_GRAVITY_CHNG = 0x00,
MSG_MOVE_HEARTBEAT = 0xB024,
+ MSG_MOVE_HOVER = 0x00,
MSG_MOVE_JUMP = 0x9225,
MSG_MOVE_SET_ALL_SPEED_CHEAT = 0x00,
MSG_MOVE_SET_FACING = 0x02A4,
@@ -517,6 +520,8 @@ enum Opcodes
MSG_MOVE_TOGGLE_COLLISION_CHEAT = 0x00,
MSG_MOVE_TOGGLE_FALL_LOGGING = 0x00,
MSG_MOVE_TOGGLE_LOGGING = 0x00,
+ MSG_MOVE_WATER_WALK = 0x00,
+ MSG_MOVE_UPDATE_CAN_FLY = 0x00,
MSG_NOTIFY_PARTY_SQUELCH = 0x00,
MSG_PARTY_ASSIGNMENT = 0x00,
MSG_PETITION_DECLINE = 0x98E7,
@@ -603,9 +608,28 @@ enum Opcodes
SMSG_BUY_BANK_SLOT_RESULT = 0x00,
SMSG_BUY_FAILED = 0x4A7F,
SMSG_BUY_ITEM = 0xCA67,
+ SMSG_CALENDAR_ACTION_PENDING = 0x00,
+ SMSG_CALENDAR_ARENA_TEAM = 0x00,
+ SMSG_CALENDAR_CLEAR_PENDING_ACTION = 0x00,
SMSG_CALENDAR_COMMAND_RESULT = 0x9A4E,
+ SMSG_CALENDAR_EVENT_INVITE = 0x00,
+ SMSG_CALENDAR_EVENT_INVITE_ALERT = 0x00,
+ SMSG_CALENDAR_EVENT_INVITE_NOTES = 0x00,
+ SMSG_CALENDAR_EVENT_INVITE_NOTES_ALERT = 0x00,
+ SMSG_CALENDAR_EVENT_INVITE_REMOVED = 0x00,
+ SMSG_CALENDAR_EVENT_INVITE_REMOVED_ALERT = 0x00,
+ SMSG_CALENDAR_EVENT_INVITE_STATUS_ALERT = 0x00,
+ SMSG_CALENDAR_EVENT_MODERATOR_STATUS_ALERT = 0x00,
+ SMSG_CALENDAR_EVENT_REMOVED_ALERT = 0x5C72,
+ SMSG_CALENDAR_EVENT_STATUS = 0x00,
+ SMSG_CALENDAR_EVENT_UPDATED_ALERT = 0x5CFA,
+ SMSG_CALENDAR_RAID_LOCKOUT_ADDED = 0x9AC2,
+ SMSG_CALENDAR_RAID_LOCKOUT_REMOVED = 0x985B,
+ SMSG_CALENDAR_RAID_LOCKOUT_UPDATED = 0xDCDF,
SMSG_CALENDAR_SEND_CALENDAR = 0x08FB,
+ SMSG_CALENDAR_SEND_EVENT = 0x00,
SMSG_CALENDAR_SEND_NUM_PENDING = 0x00,
+ SMSG_CALENDAR_UPDATE_INVITE_LIST = 0x00,
SMSG_CAMERA_SHAKE = 0x5CFB,
SMSG_CANCEL_AUTO_REPEAT = 0x5ACB,
SMSG_CANCEL_COMBAT = 0x4AC7,
diff --git a/src/server/game/Server/WorldSocket.cpp b/src/server/game/Server/WorldSocket.cpp
index 3e4a38ba6b1..11837b0cbab 100755
--- a/src/server/game/Server/WorldSocket.cpp
+++ b/src/server/game/Server/WorldSocket.cpp
@@ -858,19 +858,6 @@ int WorldSocket::HandleAuthSession(WorldPacket& recvPacket)
stmt->setString(0, account);
PreparedQueryResult result = LoginDatabase.Query(stmt);
- "sessionkey, " //1
- "last_ip, " //2
- "locked, " //3
- "v, " //4
- "s, " //5
- "expansion, " //6
- "mutetime, " //7
- "locale, " //8
- "recruiter, " //9
- "os "
- "FROM account "
- "WHERE username = '%s'",
- safe_account.c_str());
// Stop if the account is not found
if (!result)
diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
index 200007c3190..7cff80cf6a0 100755
--- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp
+++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
@@ -1516,7 +1516,9 @@ void AuraEffect::HandleShapeshiftBoosts(Unit* target, bool apply) const
if (target->GetTypeId() == TYPEID_PLAYER)
{
- const PlayerSpellMap& sp_list = target->ToPlayer()->GetSpellMap();
+ Player* plrTarget = target->ToPlayer();
+
+ PlayerSpellMap const& sp_list = plrTarget->GetSpellMap();
for (PlayerSpellMap::const_iterator itr = sp_list.begin(); itr != sp_list.end(); ++itr)
{
if (itr->second->state == PLAYERSPELL_REMOVED || itr->second->disabled)
@@ -1536,13 +1538,14 @@ void AuraEffect::HandleShapeshiftBoosts(Unit* target, bool apply) const
// Also do it for Glyphs
for (uint32 i = 0; i < MAX_GLYPH_SLOT_INDEX; ++i)
{
- if (uint32 glyphId = target->ToPlayer()->GetGlyph(i))
+ if (uint32 glyphId = plrTarget->GetGlyph(plrTarget->GetActiveSpec(), i))
{
if (GlyphPropertiesEntry const* glyph = sGlyphPropertiesStore.LookupEntry(glyphId))
{
SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(glyph->SpellId);
if (!spellInfo || !(spellInfo->Attributes & (SPELL_ATTR0_PASSIVE | SPELL_ATTR0_HIDDEN_CLIENTSIDE)))
continue;
+
if (spellInfo->Stances & (1<<(GetMiscValue()-1)))
target->CastSpell(target, glyph->SpellId, true, NULL, this);
}
@@ -1550,19 +1553,21 @@ void AuraEffect::HandleShapeshiftBoosts(Unit* target, bool apply) const
}
// Leader of the Pack
- if (target->ToPlayer()->HasSpell(17007))
+ if (plrTarget->HasSpell(17007))
{
SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(24932);
if (spellInfo && spellInfo->Stances & (1<<(GetMiscValue()-1)))
target->CastSpell(target, 24932, true, NULL, this);
}
+
// Improved Barkskin - apply/remove armor bonus due to shapeshift
- if (target->ToPlayer()->HasSpell(63410) || target->ToPlayer()->HasSpell(63411))
+ if (plrTarget->HasSpell(63410) || target->ToPlayer()->HasSpell(63411))
{
target->RemoveAurasDueToSpell(66530);
if (GetMiscValue() == FORM_TRAVEL || GetMiscValue() == FORM_NONE) // "while in Travel Form or while not shapeshifted"
target->CastSpell(target, 66530, true);
}
+
// Heart of the Wild
if (HotWSpellId)
{ // hacky, but the only way as spell family is not SPELLFAMILY_DRUID
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index fd0530e171f..d833782bc76 100755
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -3800,23 +3800,6 @@ void Spell::SendCastResult(Player* caster, SpellInfo const* spellInfo, uint8 cas
data << uint32(missingItem); // first missing item
break;
}
- case SPELL_FAILED_PREVENTED_BY_MECHANIC:
- data << uint32(spellInfo->Mechanic);
- break;
- case SPELL_FAILED_NEED_EXOTIC_AMMO:
- data << uint32(spellInfo->EquippedItemSubClassMask);
- break;
- case SPELL_FAILED_NEED_MORE_ITEMS:
- data << uint32(0); // Item entry
- data << uint32(0); // Count
- break;
- case SPELL_FAILED_MIN_SKILL:
- data << uint32(0); // SkillLine.dbc Id
- data << uint32(0); // Amount
- break;
- case SPELL_FAILED_FISHING_TOO_LOW:
- data << uint32(0); // Skill level
- break;
default:
break;
}
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index 4069cd5271a..8c95bc054d9 100755
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -670,8 +670,8 @@ void Spell::EffectSchoolDMG(SpellEffIndex effIndex)
if (Item* item = caster->GetWeaponForAttack(RANGED_ATTACK))
{
ItemTemplate const* weaponTemplate = item->GetTemplate();
- float dmg_min = weaponTemplate->Damage[0].DamageMin;
- float dmg_max = weaponTemplate->Damage[0].DamageMax;
+ float dmg_min = weaponTemplate->DamageMin;
+ float dmg_max = weaponTemplate->DamageMax;
if (dmg_max == 0.0f && dmg_min > dmg_max)
damage += int32(dmg_min);
else
diff --git a/src/server/scripts/Commands/cs_misc.cpp b/src/server/scripts/Commands/cs_misc.cpp
index 7c431566f52..2deac95d287 100644
--- a/src/server/scripts/Commands/cs_misc.cpp
+++ b/src/server/scripts/Commands/cs_misc.cpp
@@ -135,7 +135,7 @@ public:
else
handler->PSendSysMessage("no VMAP available for area info");
- handler->PSendSysMessage(LANG_MAP_POSITION,
+ /*handler->PSendSysMessage(LANG_MAP_POSITION,
object->GetMapId(), (mapEntry ? mapEntry->name[handler->GetSessionDbcLocale()] : "<unknown>"),
zoneId, (zoneEntry ? zoneEntry->area_name[handler->GetSessionDbcLocale()] : "<unknown>"),
areaId, (areaEntry ? areaEntry->area_name[handler->GetSessionDbcLocale()] : "<unknown>"),
@@ -143,6 +143,7 @@ public:
object->GetPositionX(), object->GetPositionY(), object->GetPositionZ(), object->GetOrientation(),
cell.GridX(), cell.GridY(), cell.CellX(), cell.CellY(), object->GetInstanceId(),
zoneX, zoneY, groundZ, floorZ, haveMap, haveVMap);
+ */
LiquidData liquidStatus;
ZLiquidStatus status = map->getLiquidStatus(object->GetPositionX(), object->GetPositionY(), object->GetPositionZ(), MAP_ALL_LIQUIDS, &liquidStatus);
diff --git a/src/server/shared/Packets/ByteBuffer.h b/src/server/shared/Packets/ByteBuffer.h
index 24ca412d6f2..1e346760e30 100755
--- a/src/server/shared/Packets/ByteBuffer.h
+++ b/src/server/shared/Packets/ByteBuffer.h
@@ -416,14 +416,14 @@ class ByteBuffer
uint8& operator[](size_t const pos)
{
if (pos >= size())
- throw ByteBufferException(false, pos, 1, size());
+ throw ByteBufferPositionException(false, pos, 1, size());
return _storage[pos];
}
uint8 const& operator[](size_t const pos) const
{
if (pos >= size())
- throw ByteBufferException(false, pos, 1, size());
+ throw ByteBufferPositionException(false, pos, 1, size());
return _storage[pos];
}