diff options
27 files changed, 602 insertions, 449 deletions
diff --git a/sql/updates/world/2012_08_11_00_world_creature_template.sql b/sql/updates/world/2012_08_11_00_world_creature_template.sql new file mode 100644 index 00000000000..972b125d247 --- /dev/null +++ b/sql/updates/world/2012_08_11_00_world_creature_template.sql @@ -0,0 +1 @@ +UPDATE `creature_template` SET `lootid`=`entry` WHERE `entry` IN (17465,20583); diff --git a/sql/updates/world/2012_08_11_01_world_quest_poi.sql b/sql/updates/world/2012_08_11_01_world_quest_poi.sql new file mode 100644 index 00000000000..6672df2bc98 --- /dev/null +++ b/sql/updates/world/2012_08_11_01_world_quest_poi.sql @@ -0,0 +1,60 @@ +-- PK and new index for quest_poi +ALTER TABLE `quest_poi` DROP INDEX `questId`; +ALTER TABLE `quest_poi` DROP INDEX `id`; +ALTER TABLE `quest_poi` ADD PRIMARY KEY (`questId`, `id`); +ALTER TABLE `quest_poi` ADD INDEX `idx` (`questId`, `id`); + +-- Correct data for quest_poi_points that violate the PK +UPDATE `quest_poi_points` SET `idx`=0 WHERE `questId`=25446 AND `id`=0 AND `x`=-1041 AND `y`=-5585; +UPDATE `quest_poi_points` SET `idx`=1 WHERE `questId`=25446 AND `id`=0 AND `x`=-1062 AND `y`=-5631; +UPDATE `quest_poi_points` SET `idx`=2 WHERE `questId`=25446 AND `id`=0 AND `x`=-1066 AND `y`=-5375; +UPDATE `quest_poi_points` SET `idx`=3 WHERE `questId`=25446 AND `id`=0 AND `x`=-1189 AND `y`=-5343; +UPDATE `quest_poi_points` SET `idx`=4 WHERE `questId`=25446 AND `id`=0 AND `x`=-1195 AND `y`=-5618; +UPDATE `quest_poi_points` SET `idx`=5 WHERE `questId`=25446 AND `id`=0 AND `x`=-1269 AND `y`=-5386; +UPDATE `quest_poi_points` SET `idx`=6 WHERE `questId`=25446 AND `id`=0 AND `x`=-1289 AND `y`=-5571; +UPDATE `quest_poi_points` SET `idx`=7 WHERE `questId`=25446 AND `id`=0 AND `x`=-1320 AND `y`=-5477; +UPDATE `quest_poi_points` SET `idx`=8 WHERE `questId`=25446 AND `id`=0 AND `x`=-1322 AND `y`=-5527; +UPDATE `quest_poi_points` SET `idx`=0 WHERE `questId`=25446 AND `id`=1 AND `x`=-1502 AND `y`=-5263; +UPDATE `quest_poi_points` SET `idx`=1 WHERE `questId`=25446 AND `id`=1 AND `x`=-1532 AND `y`=-5341; +UPDATE `quest_poi_points` SET `idx`=2 WHERE `questId`=25446 AND `id`=1 AND `x`=-1589 AND `y`=-5340; +UPDATE `quest_poi_points` SET `idx`=3 WHERE `questId`=25446 AND `id`=1 AND `x`=-1611 AND `y`=-5276; +UPDATE `quest_poi_points` SET `idx`=4 WHERE `questId`=25446 AND `id`=2 AND `x`=-1020 AND `y`=-5153; +UPDATE `quest_poi_points` SET `idx`=5 WHERE `questId`=25446 AND `id`=2 AND `x`=-1089 AND `y`=-5174; +UPDATE `quest_poi_points` SET `idx`=6 WHERE `questId`=25446 AND `id`=2 AND `x`=-1128 AND `y`=-5131; +UPDATE `quest_poi_points` SET `idx`=7 WHERE `questId`=25446 AND `id`=2 AND `x`=-0955 AND `y`=-5186; +UPDATE `quest_poi_points` SET `idx`=0 WHERE `questId`=25446 AND `id`=3 AND `x`=-0654 AND `y`=-5627; +UPDATE `quest_poi_points` SET `idx`=1 WHERE `questId`=25446 AND `id`=3 AND `x`=-0688 AND `y`=-5518; +UPDATE `quest_poi_points` SET `idx`=2 WHERE `questId`=25446 AND `id`=3 AND `x`=-0730 AND `y`=-5656; +UPDATE `quest_poi_points` SET `idx`=3 WHERE `questId`=25446 AND `id`=3 AND `x`=-0732 AND `y`=-5499; +UPDATE `quest_poi_points` SET `idx`=4 WHERE `questId`=25446 AND `id`=3 AND `x`=-0795 AND `y`=-5544; +UPDATE `quest_poi_points` SET `idx`=5 WHERE `questId`=25446 AND `id`=3 AND `x`=-0806 AND `y`=-5674; +UPDATE `quest_poi_points` SET `idx`=6 WHERE `questId`=25446 AND `id`=3 AND `x`=-0835 AND `y`=-5606; +UPDATE `quest_poi_points` SET `idx`=0 WHERE `questId`=25446 AND `id`=4 AND `x`=-0747 AND `y`=-5004; + +UPDATE `quest_poi_points` SET `idx`=0 WHERE `questId`=25461 AND `x`=246 AND `y`=-4715; +UPDATE `quest_poi_points` SET `idx`=1 WHERE `questId`=25461 AND `x`=247 AND `y`=-4675; +UPDATE `quest_poi_points` SET `idx`=2 WHERE `questId`=25461 AND `x`=248 AND `y`=-4673; +UPDATE `quest_poi_points` SET `idx`=3 WHERE `questId`=25461 AND `x`=266 AND `y`=-4830; +UPDATE `quest_poi_points` SET `idx`=4 WHERE `questId`=25461 AND `x`=284 AND `y`=-4628; +UPDATE `quest_poi_points` SET `idx`=5 WHERE `questId`=25461 AND `x`=302 AND `y`=-4612; +UPDATE `quest_poi_points` SET `idx`=6 WHERE `questId`=25461 AND `x`=343 AND `y`=-4831; +UPDATE `quest_poi_points` SET `idx`=7 WHERE `questId`=25461 AND `x`=345 AND `y`=-4831; +UPDATE `quest_poi_points` SET `idx`=8 WHERE `questId`=25461 AND `x`=376 AND `y`=-4778; +UPDATE `quest_poi_points` SET `idx`=9 WHERE `questId`=25461 AND `x`=380 AND `y`=-4661; +UPDATE `quest_poi_points` SET `idx`=10 WHERE `questId`=25461 AND `x`=411 AND `y`=-4704; + +UPDATE `quest_poi_points` SET `idx`=0 WHERE `questId`=25444 AND `x`=-1014 AND `y`=-4911; +UPDATE `quest_poi_points` SET `idx`=1 WHERE `questId`=25444 AND `x`=-0644 AND `y`=-4999; +UPDATE `quest_poi_points` SET `idx`=2 WHERE `questId`=25444 AND `x`=-0673 AND `y`=-4932; +UPDATE `quest_poi_points` SET `idx`=3 WHERE `questId`=25444 AND `x`=-0673 AND `y`=-5062; +UPDATE `quest_poi_points` SET `idx`=4 WHERE `questId`=25444 AND `x`=-0736 AND `y`=-5100; +UPDATE `quest_poi_points` SET `idx`=5 WHERE `questId`=25444 AND `x`=-0740 AND `y`=-4873; +UPDATE `quest_poi_points` SET `idx`=6 WHERE `questId`=25444 AND `x`=-0808 AND `y`=-4831; +UPDATE `quest_poi_points` SET `idx`=7 WHERE `questId`=25444 AND `x`=-0808 AND `y`=-5100; +UPDATE `quest_poi_points` SET `idx`=8 WHERE `questId`=25444 AND `x`=-0887 AND `y`=-5062; +UPDATE `quest_poi_points` SET `idx`=9 WHERE `questId`=25444 AND `x`=-0892 AND `y`=-4776; +UPDATE `quest_poi_points` SET `idx`=10 WHERE `questId`=25444 AND `x`=-0959 AND `y`=-4995; +UPDATE `quest_poi_points` SET `idx`=11 WHERE `questId`=25444 AND `x`=-0984 AND `y`=-4785; + +-- PK for quest_poi_points +ALTER TABLE `quest_poi_points` ADD PRIMARY KEY (`questId`, `id`, `idx`); diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp index 68467fe4423..723e8b1dbbc 100644 --- a/src/server/game/Achievements/AchievementMgr.cpp +++ b/src/server/game/Achievements/AchievementMgr.cpp @@ -1065,7 +1065,7 @@ static const uint32 achievIdForDungeon[][4] = // Helper function to avoid having to specialize template for a 800 line long function template <typename T> static bool IsGuild() { return false; } -template<> static bool IsGuild<Guild>() { return true; } +template<> bool IsGuild<Guild>() { return true; } /** * this function will be called whenever the user might have done a criteria relevant action diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 37612880f39..fb26bbc7b37 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -7206,9 +7206,9 @@ bool Player::RewardHonor(Unit* victim, uint32 groupsize, int32 honor, bool pvpto // victim_rank [5..19] HK: <alliance\horde rank> // victim_rank [0, 20+] HK: <> WorldPacket data(SMSG_PVP_CREDIT, 4+8+4); - data << honor; - data << victim_guid; - data << victim_rank; + data << uint32(honor); + data << uint64(victim_guid); + data << uint32(victim_rank); GetSession()->SendPacket(&data); diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 984c1899564..06b082de155 100755 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -376,12 +376,13 @@ void Unit::MonsterMoveWithSpeed(float x, float y, float z, float speed) init.Launch(); } -void Unit::UpdateSplineMovement(uint32 t_diff) +enum MovementIntervals { - enum{ - POSITION_UPDATE_DELAY = 400, - }; + POSITION_UPDATE_DELAY = 400, +}; +void Unit::UpdateSplineMovement(uint32 t_diff) +{ if (movespline->Finalized()) return; @@ -393,30 +394,32 @@ void Unit::UpdateSplineMovement(uint32 t_diff) m_movesplineTimer.Update(t_diff); if (m_movesplineTimer.Passed() || arrived) - { - m_movesplineTimer.Reset(POSITION_UPDATE_DELAY); - Movement::Location loc = movespline->ComputePosition(); + UpdateSplinePosition(); +} - if (GetTransGUID()) +void Unit::UpdateSplinePosition() +{ + m_movesplineTimer.Reset(POSITION_UPDATE_DELAY); + Movement::Location loc = movespline->ComputePosition(); + if (GetTransGUID()) + { + Position& pos = m_movementInfo.t_pos; + pos.m_positionX = loc.x; + pos.m_positionY = loc.y; + pos.m_positionZ = loc.z; + pos.m_orientation = loc.orientation; + if (Unit* vehicle = GetVehicleBase()) { - Position& pos = m_movementInfo.t_pos; - pos.m_positionX = loc.x; - pos.m_positionY = loc.y; - pos.m_positionZ = loc.z; - pos.m_orientation = loc.orientation; - if (Unit* vehicle = GetVehicleBase()) - { - loc.x += vehicle->GetPositionX(); - loc.y += vehicle->GetPositionY(); - loc.z += vehicle->GetPositionZMinusOffset(); - loc.orientation = vehicle->GetOrientation(); - } - else if (Transport* trans = GetTransport()) - trans->CalculatePassengerPosition(loc.x, loc.y, loc.z, loc.orientation); + loc.x += vehicle->GetPositionX(); + loc.y += vehicle->GetPositionY(); + loc.z += vehicle->GetPositionZMinusOffset(); + loc.orientation = vehicle->GetOrientation(); } - - UpdatePosition(loc.x, loc.y, loc.z, loc.orientation); + else if (Transport* trans = GetTransport()) + trans->CalculatePassengerPosition(loc.x, loc.y, loc.z, loc.orientation); } + + UpdatePosition(loc.x, loc.y, loc.z, loc.orientation); } void Unit::DisableSpline() @@ -12745,200 +12748,199 @@ void Unit::SetSpeed(UnitMoveType mtype, float rate, bool forced) propagateSpeedChange(); WorldPacket data; - uint64 guid = GetGUID(); - uint8* bytes = (uint8*)&guid; + ObjectGuid guid = GetGUID(); if (!forced) { switch (mtype) { case MOVE_WALK: data.Initialize(SMSG_SPLINE_MOVE_SET_WALK_SPEED, 8+4+2+4+4+4+4+4+4+4); - data.WriteBit(bytes[0]); - data.WriteBit(bytes[6]); - data.WriteBit(bytes[7]); - data.WriteBit(bytes[3]); - data.WriteBit(bytes[5]); - data.WriteBit(bytes[1]); - data.WriteBit(bytes[2]); - data.WriteBit(bytes[4]); + data.WriteBit(guid[0]); + data.WriteBit(guid[6]); + data.WriteBit(guid[7]); + data.WriteBit(guid[3]); + data.WriteBit(guid[5]); + data.WriteBit(guid[1]); + data.WriteBit(guid[2]); + data.WriteBit(guid[4]); data.FlushBits(); - data.WriteByteSeq(bytes[0]); - data.WriteByteSeq(bytes[4]); - data.WriteByteSeq(bytes[7]); - data.WriteByteSeq(bytes[1]); - data.WriteByteSeq(bytes[5]); - data.WriteByteSeq(bytes[3]); + data.WriteByteSeq(guid[0]); + data.WriteByteSeq(guid[4]); + data.WriteByteSeq(guid[7]); + data.WriteByteSeq(guid[1]); + data.WriteByteSeq(guid[5]); + data.WriteByteSeq(guid[3]); data << float(GetSpeed(mtype)); - data.WriteByteSeq(bytes[9]); - data.WriteByteSeq(bytes[5]); + data.WriteByteSeq(guid[2]); + data.WriteByteSeq(guid[5]); break; case MOVE_RUN: data.Initialize(SMSG_SPLINE_MOVE_SET_RUN_SPEED, 1 + 8 + 4); - data.WriteBit(bytes[4]); - data.WriteBit(bytes[0]); - data.WriteBit(bytes[5]); - data.WriteBit(bytes[7]); - data.WriteBit(bytes[6]); - data.WriteBit(bytes[3]); - data.WriteBit(bytes[1]); - data.WriteBit(bytes[2]); + data.WriteBit(guid[4]); + data.WriteBit(guid[0]); + data.WriteBit(guid[5]); + data.WriteBit(guid[7]); + data.WriteBit(guid[6]); + data.WriteBit(guid[3]); + data.WriteBit(guid[1]); + data.WriteBit(guid[2]); data.FlushBits(); - data.WriteByteSeq(bytes[0]); - data.WriteByteSeq(bytes[7]); - data.WriteByteSeq(bytes[6]); - data.WriteByteSeq(bytes[5]); - data.WriteByteSeq(bytes[3]); - data.WriteByteSeq(bytes[4]); + data.WriteByteSeq(guid[0]); + data.WriteByteSeq(guid[7]); + data.WriteByteSeq(guid[6]); + data.WriteByteSeq(guid[5]); + data.WriteByteSeq(guid[3]); + data.WriteByteSeq(guid[4]); data << float(GetSpeed(mtype)); - data.WriteByteSeq(bytes[2]); - data.WriteByteSeq(bytes[1]); + data.WriteByteSeq(guid[2]); + data.WriteByteSeq(guid[1]); break; case MOVE_RUN_BACK: data.Initialize(SMSG_SPLINE_MOVE_SET_RUN_BACK_SPEED, 1 + 8 + 4); - data.WriteBit(bytes[1]); - data.WriteBit(bytes[2]); - data.WriteBit(bytes[6]); - data.WriteBit(bytes[0]); - data.WriteBit(bytes[3]); - data.WriteBit(bytes[7]); - data.WriteBit(bytes[5]); - data.WriteBit(bytes[4]); + data.WriteBit(guid[1]); + data.WriteBit(guid[2]); + data.WriteBit(guid[6]); + data.WriteBit(guid[0]); + data.WriteBit(guid[3]); + data.WriteBit(guid[7]); + data.WriteBit(guid[5]); + data.WriteBit(guid[4]); data.FlushBits(); - data.WriteByteSeq(bytes[1]); + data.WriteByteSeq(guid[1]); data << float(GetSpeed(mtype)); - data.WriteByteSeq(bytes[2]); - data.WriteByteSeq(bytes[4]); - data.WriteByteSeq(bytes[0]); - data.WriteByteSeq(bytes[3]); - data.WriteByteSeq(bytes[6]); - data.WriteByteSeq(bytes[5]); - data.WriteByteSeq(bytes[7]); + data.WriteByteSeq(guid[2]); + data.WriteByteSeq(guid[4]); + data.WriteByteSeq(guid[0]); + data.WriteByteSeq(guid[3]); + data.WriteByteSeq(guid[6]); + data.WriteByteSeq(guid[5]); + data.WriteByteSeq(guid[7]); break; case MOVE_SWIM: data.Initialize(SMSG_SPLINE_MOVE_SET_SWIM_SPEED, 1 + 8 + 4); - data.WriteBit(bytes[4]); - data.WriteBit(bytes[2]); - data.WriteBit(bytes[5]); - data.WriteBit(bytes[0]); - data.WriteBit(bytes[7]); - data.WriteBit(bytes[6]); - data.WriteBit(bytes[3]); - data.WriteBit(bytes[1]); + data.WriteBit(guid[4]); + data.WriteBit(guid[2]); + data.WriteBit(guid[5]); + data.WriteBit(guid[0]); + data.WriteBit(guid[7]); + data.WriteBit(guid[6]); + data.WriteBit(guid[3]); + data.WriteBit(guid[1]); data.FlushBits(); - data.WriteByteSeq(bytes[5]); - data.WriteByteSeq(bytes[6]); - data.WriteByteSeq(bytes[1]); - data.WriteByteSeq(bytes[0]); - data.WriteByteSeq(bytes[2]); - data.WriteByteSeq(bytes[4]); + data.WriteByteSeq(guid[5]); + data.WriteByteSeq(guid[6]); + data.WriteByteSeq(guid[1]); + data.WriteByteSeq(guid[0]); + data.WriteByteSeq(guid[2]); + data.WriteByteSeq(guid[4]); data << float(GetSpeed(mtype)); - data.WriteByteSeq(bytes[7]); - data.WriteByteSeq(bytes[3]); + data.WriteByteSeq(guid[7]); + data.WriteByteSeq(guid[3]); break; case MOVE_SWIM_BACK: data.Initialize(SMSG_SPLINE_MOVE_SET_SWIM_BACK_SPEED, 1 + 8 + 4); - data.WriteBit(bytes[0]); - data.WriteBit(bytes[1]); - data.WriteBit(bytes[3]); - data.WriteBit(bytes[6]); - data.WriteBit(bytes[4]); - data.WriteBit(bytes[5]); - data.WriteBit(bytes[7]); - data.WriteBit(bytes[2]); + data.WriteBit(guid[0]); + data.WriteBit(guid[1]); + data.WriteBit(guid[3]); + data.WriteBit(guid[6]); + data.WriteBit(guid[4]); + data.WriteBit(guid[5]); + data.WriteBit(guid[7]); + data.WriteBit(guid[2]); data.FlushBits(); - data.WriteByteSeq(bytes[5]); - data.WriteByteSeq(bytes[3]); - data.WriteByteSeq(bytes[1]); - data.WriteByteSeq(bytes[0]); - data.WriteByteSeq(bytes[7]); - data.WriteByteSeq(bytes[6]); + data.WriteByteSeq(guid[5]); + data.WriteByteSeq(guid[3]); + data.WriteByteSeq(guid[1]); + data.WriteByteSeq(guid[0]); + data.WriteByteSeq(guid[7]); + data.WriteByteSeq(guid[6]); data << float(GetSpeed(mtype)); - data.WriteByteSeq(bytes[4]); - data.WriteByteSeq(bytes[2]); + data.WriteByteSeq(guid[4]); + data.WriteByteSeq(guid[2]); break; case MOVE_TURN_RATE: data.Initialize(SMSG_SPLINE_MOVE_SET_TURN_RATE, 1 + 8 + 4); - data.WriteBit(bytes[2]); - data.WriteBit(bytes[4]); - data.WriteBit(bytes[6]); - data.WriteBit(bytes[1]); - data.WriteBit(bytes[3]); - data.WriteBit(bytes[5]); - data.WriteBit(bytes[7]); - data.WriteBit(bytes[0]); + data.WriteBit(guid[2]); + data.WriteBit(guid[4]); + data.WriteBit(guid[6]); + data.WriteBit(guid[1]); + data.WriteBit(guid[3]); + data.WriteBit(guid[5]); + data.WriteBit(guid[7]); + data.WriteBit(guid[0]); data.FlushBits(); data << float(GetSpeed(mtype)); - data.WriteByteSeq(bytes[1]); - data.WriteByteSeq(bytes[5]); - data.WriteByteSeq(bytes[3]); - data.WriteByteSeq(bytes[2]); - data.WriteByteSeq(bytes[7]); - data.WriteByteSeq(bytes[4]); - data.WriteByteSeq(bytes[6]); - data.WriteByteSeq(bytes[0]); + data.WriteByteSeq(guid[1]); + data.WriteByteSeq(guid[5]); + data.WriteByteSeq(guid[3]); + data.WriteByteSeq(guid[2]); + data.WriteByteSeq(guid[7]); + data.WriteByteSeq(guid[4]); + data.WriteByteSeq(guid[6]); + data.WriteByteSeq(guid[0]); break; case MOVE_FLIGHT: data.Initialize(SMSG_SPLINE_MOVE_SET_FLIGHT_SPEED, 1 + 8 + 4); - data.WriteBit(bytes[7]); - data.WriteBit(bytes[4]); - data.WriteBit(bytes[0]); - data.WriteBit(bytes[1]); - data.WriteBit(bytes[3]); - data.WriteBit(bytes[6]); - data.WriteBit(bytes[5]); - data.WriteBit(bytes[2]); + data.WriteBit(guid[7]); + data.WriteBit(guid[4]); + data.WriteBit(guid[0]); + data.WriteBit(guid[1]); + data.WriteBit(guid[3]); + data.WriteBit(guid[6]); + data.WriteBit(guid[5]); + data.WriteBit(guid[2]); data.FlushBits(); - data.WriteByteSeq(bytes[0]); - data.WriteByteSeq(bytes[5]); - data.WriteByteSeq(bytes[4]); - data.WriteByteSeq(bytes[7]); - data.WriteByteSeq(bytes[3]); - data.WriteByteSeq(bytes[2]); - data.WriteByteSeq(bytes[1]); - data.WriteByteSeq(bytes[6]); + data.WriteByteSeq(guid[0]); + data.WriteByteSeq(guid[5]); + data.WriteByteSeq(guid[4]); + data.WriteByteSeq(guid[7]); + data.WriteByteSeq(guid[3]); + data.WriteByteSeq(guid[2]); + data.WriteByteSeq(guid[1]); + data.WriteByteSeq(guid[6]); data << float(GetSpeed(mtype)); break; case MOVE_FLIGHT_BACK: data.Initialize(SMSG_SPLINE_MOVE_SET_FLIGHT_BACK_SPEED, 1 + 8 + 4); - data.WriteBit(bytes[2]); - data.WriteBit(bytes[1]); - data.WriteBit(bytes[6]); - data.WriteBit(bytes[5]); - data.WriteBit(bytes[0]); - data.WriteBit(bytes[3]); - data.WriteBit(bytes[4]); - data.WriteBit(bytes[7]); + data.WriteBit(guid[2]); + data.WriteBit(guid[1]); + data.WriteBit(guid[6]); + data.WriteBit(guid[5]); + data.WriteBit(guid[0]); + data.WriteBit(guid[3]); + data.WriteBit(guid[4]); + data.WriteBit(guid[7]); data.FlushBits(); - data.WriteByteSeq(bytes[5]); + data.WriteByteSeq(guid[5]); data << float(GetSpeed(mtype)); - data.WriteByteSeq(bytes[6]); - data.WriteByteSeq(bytes[1]); - data.WriteByteSeq(bytes[0]); - data.WriteByteSeq(bytes[2]); - data.WriteByteSeq(bytes[3]); - data.WriteByteSeq(bytes[7]); - data.WriteByteSeq(bytes[4]); + data.WriteByteSeq(guid[6]); + data.WriteByteSeq(guid[1]); + data.WriteByteSeq(guid[0]); + data.WriteByteSeq(guid[2]); + data.WriteByteSeq(guid[3]); + data.WriteByteSeq(guid[7]); + data.WriteByteSeq(guid[4]); break; case MOVE_PITCH_RATE: data.Initialize(SMSG_SPLINE_MOVE_SET_PITCH_RATE, 1 + 8 + 4); - data.WriteBit(bytes[3]); - data.WriteBit(bytes[5]); - data.WriteBit(bytes[6]); - data.WriteBit(bytes[1]); - data.WriteBit(bytes[0]); - data.WriteBit(bytes[4]); - data.WriteBit(bytes[7]); - data.WriteBit(bytes[2]); + data.WriteBit(guid[3]); + data.WriteBit(guid[5]); + data.WriteBit(guid[6]); + data.WriteBit(guid[1]); + data.WriteBit(guid[0]); + data.WriteBit(guid[4]); + data.WriteBit(guid[7]); + data.WriteBit(guid[2]); data.FlushBits(); - data.WriteByteSeq(bytes[1]); - data.WriteByteSeq(bytes[5]); - data.WriteByteSeq(bytes[7]); - data.WriteByteSeq(bytes[0]); - data.WriteByteSeq(bytes[6]); - data.WriteByteSeq(bytes[3]); - data.WriteByteSeq(bytes[2]); + data.WriteByteSeq(guid[1]); + data.WriteByteSeq(guid[5]); + data.WriteByteSeq(guid[7]); + data.WriteByteSeq(guid[0]); + data.WriteByteSeq(guid[6]); + data.WriteByteSeq(guid[3]); + data.WriteByteSeq(guid[2]); data << float(GetSpeed(mtype)); - data.WriteByteSeq(bytes[4]); + data.WriteByteSeq(guid[4]); break; default: sLog->outError(LOG_FILTER_UNITS, "Unit::SetSpeed: Unsupported move type (%d), data not sent to client.", mtype); @@ -12964,203 +12966,192 @@ void Unit::SetSpeed(UnitMoveType mtype, float rate, bool forced) { case MOVE_WALK: data.Initialize(SMSG_MOVE_SET_WALK_SPEED, 1 + 8 + 4 + 4); - data.WriteBit(bytes[6]); - data.WriteBit(bytes[5]); - data.WriteBit(bytes[7]); - data.WriteBit(bytes[0]); - data.WriteBit(bytes[2]); - data.WriteBit(bytes[4]); - data.WriteBit(bytes[1]); - data.WriteBit(bytes[3]); - - data.WriteByteSeq(bytes[3]); - data.WriteByteSeq(bytes[1]); + data.WriteBit(guid[0]); + data.WriteBit(guid[4]); + data.WriteBit(guid[5]); + data.WriteBit(guid[2]); + data.WriteBit(guid[3]); + data.WriteBit(guid[1]); + data.WriteBit(guid[6]); + data.WriteBit(guid[7]); + data.WriteByteSeq(guid[6]); + data.WriteByteSeq(guid[1]); + data.WriteByteSeq(guid[5]); data << float(GetSpeed(mtype)); - data.WriteByteSeq(bytes[6]); - data.WriteByteSeq(bytes[4]); - data.WriteByteSeq(bytes[7]); - data.WriteByteSeq(bytes[2]); - data.WriteByteSeq(bytes[5]); + data.WriteByteSeq(guid[2]); data << uint32(0); - data.WriteByteSeq(bytes[0]); + data.WriteByteSeq(guid[4]); + data.WriteByteSeq(guid[0]); + data.WriteByteSeq(guid[7]); + data.WriteByteSeq(guid[3]); break; case MOVE_RUN: data.Initialize(SMSG_MOVE_SET_RUN_SPEED, 1 + 8 + 4 + 4); - data.WriteBit(bytes[6]); - data.WriteBit(bytes[1]); - data.WriteBit(bytes[5]); - data.WriteBit(bytes[2]); - data.WriteBit(bytes[7]); - data.WriteBit(bytes[0]); - data.WriteBit(bytes[3]); - data.WriteBit(bytes[4]); - - data.WriteByteSeq(bytes[5]); - data.WriteByteSeq(bytes[3]); - data.WriteByteSeq(bytes[1]); - data.WriteByteSeq(bytes[4]); - + data.WriteBit(guid[6]); + data.WriteBit(guid[1]); + data.WriteBit(guid[5]); + data.WriteBit(guid[2]); + data.WriteBit(guid[7]); + data.WriteBit(guid[0]); + data.WriteBit(guid[3]); + data.WriteBit(guid[4]); + data.WriteByteSeq(guid[5]); + data.WriteByteSeq(guid[3]); + data.WriteByteSeq(guid[1]); + data.WriteByteSeq(guid[4]); data << uint32(0); data << float(GetSpeed(mtype)); - - data.WriteByteSeq(bytes[6]); - data.WriteByteSeq(bytes[0]); - data.WriteByteSeq(bytes[7]); - data.WriteByteSeq(bytes[2]); + data.WriteByteSeq(guid[6]); + data.WriteByteSeq(guid[0]); + data.WriteByteSeq(guid[7]); + data.WriteByteSeq(guid[2]); break; case MOVE_RUN_BACK: data.Initialize(SMSG_MOVE_SET_RUN_BACK_SPEED, 1 + 8 + 4 + 4); - data.WriteBit(bytes[0]); - data.WriteBit(bytes[6]); - data.WriteBit(bytes[2]); - data.WriteBit(bytes[1]); - data.WriteBit(bytes[3]); - data.WriteBit(bytes[4]); - data.WriteBit(bytes[5]); - data.WriteBit(bytes[7]); - - data.WriteByteSeq(bytes[5]); + data.WriteBit(guid[0]); + data.WriteBit(guid[6]); + data.WriteBit(guid[2]); + data.WriteBit(guid[1]); + data.WriteBit(guid[3]); + data.WriteBit(guid[4]); + data.WriteBit(guid[5]); + data.WriteBit(guid[7]); + data.WriteByteSeq(guid[5]); data << uint32(0); data << float(GetSpeed(mtype)); - data.WriteByteSeq(bytes[0]); - data.WriteByteSeq(bytes[4]); - data.WriteByteSeq(bytes[7]); - data.WriteByteSeq(bytes[3]); - data.WriteByteSeq(bytes[1]); - data.WriteByteSeq(bytes[2]); - data.WriteByteSeq(bytes[6]); + data.WriteByteSeq(guid[0]); + data.WriteByteSeq(guid[4]); + data.WriteByteSeq(guid[7]); + data.WriteByteSeq(guid[3]); + data.WriteByteSeq(guid[1]); + data.WriteByteSeq(guid[2]); + data.WriteByteSeq(guid[6]); break; case MOVE_SWIM: data.Initialize(SMSG_MOVE_SET_SWIM_SPEED, 1 + 8 + 4 + 4); - data.WriteBit(bytes[5]); - data.WriteBit(bytes[4]); - data.WriteBit(bytes[7]); - data.WriteBit(bytes[3]); - data.WriteBit(bytes[2]); - data.WriteBit(bytes[0]); - data.WriteBit(bytes[1]); - data.WriteBit(bytes[6]); - - data.WriteByteSeq(bytes[0]); + data.WriteBit(guid[5]); + data.WriteBit(guid[4]); + data.WriteBit(guid[7]); + data.WriteBit(guid[3]); + data.WriteBit(guid[2]); + data.WriteBit(guid[0]); + data.WriteBit(guid[1]); + data.WriteBit(guid[6]); + data.WriteByteSeq(guid[0]); data << uint32(0); - data.WriteByteSeq(bytes[6]); - data.WriteByteSeq(bytes[3]); - data.WriteByteSeq(bytes[5]); - data.WriteByteSeq(bytes[2]); + data.WriteByteSeq(guid[6]); + data.WriteByteSeq(guid[3]); + data.WriteByteSeq(guid[5]); + data.WriteByteSeq(guid[2]); data << float(GetSpeed(mtype)); - data.WriteByteSeq(bytes[1]); - data.WriteByteSeq(bytes[7]); - data.WriteByteSeq(bytes[4]); + data.WriteByteSeq(guid[1]); + data.WriteByteSeq(guid[7]); + data.WriteByteSeq(guid[4]); break; case MOVE_SWIM_BACK: data.Initialize(SMSG_MOVE_SET_SWIM_BACK_SPEED, 1 + 8 + 4 + 4); - data.WriteBit(bytes[4]); - data.WriteBit(bytes[2]); - data.WriteBit(bytes[3]); - data.WriteBit(bytes[6]); - data.WriteBit(bytes[5]); - data.WriteBit(bytes[1]); - data.WriteBit(bytes[0]); - data.WriteBit(bytes[7]); - + data.WriteBit(guid[4]); + data.WriteBit(guid[2]); + data.WriteBit(guid[3]); + data.WriteBit(guid[6]); + data.WriteBit(guid[5]); + data.WriteBit(guid[1]); + data.WriteBit(guid[0]); + data.WriteBit(guid[7]); data << uint32(0); - data.WriteByteSeq(bytes[0]); - data.WriteByteSeq(bytes[3]); - data.WriteByteSeq(bytes[4]); - data.WriteByteSeq(bytes[6]); - data.WriteByteSeq(bytes[5]); - data.WriteByteSeq(bytes[1]); + data.WriteByteSeq(guid[0]); + data.WriteByteSeq(guid[3]); + data.WriteByteSeq(guid[4]); + data.WriteByteSeq(guid[6]); + data.WriteByteSeq(guid[5]); + data.WriteByteSeq(guid[1]); data << float(GetSpeed(mtype)); - data.WriteByteSeq(bytes[0]); - data.WriteByteSeq(bytes[7]); + data.WriteByteSeq(guid[7]); + data.WriteByteSeq(guid[2]); break; case MOVE_TURN_RATE: data.Initialize(SMSG_MOVE_SET_TURN_RATE, 1 + 8 + 4 + 4); - data.WriteBit(bytes[7]); - data.WriteBit(bytes[2]); - data.WriteBit(bytes[1]); - data.WriteBit(bytes[0]); - data.WriteBit(bytes[4]); - data.WriteBit(bytes[5]); - data.WriteBit(bytes[6]); - data.WriteBit(bytes[3]); - - data.WriteByteSeq(bytes[5]); - data.WriteByteSeq(bytes[7]); - data.WriteByteSeq(bytes[2]); + data.WriteBit(guid[7]); + data.WriteBit(guid[2]); + data.WriteBit(guid[1]); + data.WriteBit(guid[0]); + data.WriteBit(guid[4]); + data.WriteBit(guid[5]); + data.WriteBit(guid[6]); + data.WriteBit(guid[3]); + data.WriteByteSeq(guid[5]); + data.WriteByteSeq(guid[7]); + data.WriteByteSeq(guid[2]); data << float(GetSpeed(mtype)); - data.WriteByteSeq(bytes[3]); - data.WriteByteSeq(bytes[1]); - data.WriteByteSeq(bytes[0]); + data.WriteByteSeq(guid[3]); + data.WriteByteSeq(guid[1]); + data.WriteByteSeq(guid[0]); data << uint32(0); - data.WriteByteSeq(bytes[6]); - data.WriteByteSeq(bytes[4]); + data.WriteByteSeq(guid[6]); + data.WriteByteSeq(guid[4]); break; case MOVE_FLIGHT: data.Initialize(SMSG_MOVE_SET_FLIGHT_SPEED, 1 + 8 + 4 + 4); - data.WriteBit(bytes[1]); - data.WriteBit(bytes[2]); - data.WriteBit(bytes[6]); - data.WriteBit(bytes[4]); - data.WriteBit(bytes[7]); - data.WriteBit(bytes[3]); - data.WriteBit(bytes[0]); - data.WriteBit(bytes[5]); - - data.WriteByteSeq(bytes[3]); - data << uint32(0); - data.WriteByteSeq(bytes[6]); + data.WriteBit(guid[0]); + data.WriteBit(guid[5]); + data.WriteBit(guid[1]); + data.WriteBit(guid[6]); + data.WriteBit(guid[3]); + data.WriteBit(guid[2]); + data.WriteBit(guid[7]); + data.WriteBit(guid[4]); + data.WriteByteSeq(guid[0]); + data.WriteByteSeq(guid[1]); + data.WriteByteSeq(guid[7]); + data.WriteByteSeq(guid[5]); data << float(GetSpeed(mtype)); - data.WriteByteSeq(bytes[1]); - data.WriteByteSeq(bytes[2]); - data.WriteByteSeq(bytes[4]); - data.WriteByteSeq(bytes[0]); - data.WriteByteSeq(bytes[5]); - data.WriteByteSeq(bytes[7]); + data << uint32(0); + data.WriteByteSeq(guid[2]); + data.WriteByteSeq(guid[6]); + data.WriteByteSeq(guid[3]); + data.WriteByteSeq(guid[4]); break; case MOVE_FLIGHT_BACK: data.Initialize(SMSG_MOVE_SET_FLIGHT_BACK_SPEED, 1 + 8 + 4 + 4); - data.WriteBit(bytes[3]); - data.WriteBit(bytes[4]); - data.WriteBit(bytes[5]); - data.WriteBit(bytes[6]); - data.WriteBit(bytes[1]); - data.WriteBit(bytes[0]); - data.WriteBit(bytes[2]); - data.WriteBit(bytes[7]); - - data.WriteByteSeq(bytes[0]); - data << float(GetSpeed(mtype)); - data.WriteByteSeq(bytes[2]); - data.WriteByteSeq(bytes[7]); + data.WriteBit(guid[1]); + data.WriteBit(guid[2]); + data.WriteBit(guid[6]); + data.WriteBit(guid[4]); + data.WriteBit(guid[7]); + data.WriteBit(guid[3]); + data.WriteBit(guid[0]); + data.WriteBit(guid[5]); + data.WriteByteSeq(guid[3]); data << uint32(0); - data.WriteByteSeq(bytes[1]); - data.WriteByteSeq(bytes[3]); - data.WriteByteSeq(bytes[6]); - data.WriteByteSeq(bytes[4]); - data.WriteByteSeq(bytes[5]); + data.WriteByteSeq(guid[6]); + data << float(GetSpeed(mtype)); + data.WriteByteSeq(guid[1]); + data.WriteByteSeq(guid[2]); + data.WriteByteSeq(guid[4]); + data.WriteByteSeq(guid[0]); + data.WriteByteSeq(guid[5]); + data.WriteByteSeq(guid[7]); break; case MOVE_PITCH_RATE: data.Initialize(SMSG_MOVE_SET_PITCH_RATE, 1 + 8 + 4 + 4); - data.WriteBit(bytes[1]); - data.WriteBit(bytes[2]); - data.WriteBit(bytes[6]); - data.WriteBit(bytes[7]); - data.WriteBit(bytes[0]); - data.WriteBit(bytes[3]); - data.WriteBit(bytes[5]); - data.WriteBit(bytes[4]); - + data.WriteBit(guid[1]); + data.WriteBit(guid[2]); + data.WriteBit(guid[6]); + data.WriteBit(guid[7]); + data.WriteBit(guid[0]); + data.WriteBit(guid[3]); + data.WriteBit(guid[5]); + data.WriteBit(guid[4]); data << float(GetSpeed(mtype)); - data.WriteByteSeq(bytes[6]); - data.WriteByteSeq(bytes[4]); - data.WriteByteSeq(bytes[0]); + data.WriteByteSeq(guid[6]); + data.WriteByteSeq(guid[4]); + data.WriteByteSeq(guid[0]); data << uint32(0); - data.WriteByteSeq(bytes[1]); - data.WriteByteSeq(bytes[2]); - data.WriteByteSeq(bytes[7]); - data.WriteByteSeq(bytes[3]); - data.WriteByteSeq(bytes[5]); + data.WriteByteSeq(guid[1]); + data.WriteByteSeq(guid[2]); + data.WriteByteSeq(guid[7]); + data.WriteByteSeq(guid[3]); + data.WriteByteSeq(guid[5]); break; default: sLog->outError(LOG_FILTER_UNITS, "Unit::SetSpeed: Unsupported move type (%d), data not sent to client.", mtype); @@ -15192,14 +15183,13 @@ void Unit::StopMoving() { ClearUnitState(UNIT_STATE_MOVING); - // not need send any packets if not in world - if (!IsInWorld()) + // not need send any packets if not in world or not moving + if (!IsInWorld() || movespline->Finalized()) return; - Movement::MoveSplineInit init(*this); - init.MoveTo(GetPositionX(), GetPositionY(), GetPositionZMinusOffset()); - init.SetFacing(GetOrientation()); - init.Launch(); + // Update position using old spline + UpdateSplinePosition(); + Movement::MoveSplineInit(*this).Stop(); } void Unit::SendMovementFlagUpdate() diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 7a0b97b90ef..96ee32274ef 100755 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -2326,6 +2326,7 @@ class Unit : public WorldObject bool HandleAuraRaidProcFromCharge(AuraEffect* triggeredByAura); void UpdateSplineMovement(uint32 t_diff); + void UpdateSplinePosition(); // player or player's pet float GetCombatRatingReduction(CombatRating cr) const; diff --git a/src/server/game/Handlers/ChannelHandler.cpp b/src/server/game/Handlers/ChannelHandler.cpp index 21f455c4fc8..1fb0f8a2f32 100755 --- a/src/server/game/Handlers/ChannelHandler.cpp +++ b/src/server/game/Handlers/ChannelHandler.cpp @@ -315,7 +315,7 @@ void WorldSession::HandleGetChannelMemberCount(WorldPacket &recvPacket) } } -void WorldSession::HandleSetChannelWatch(WorldPacket &recvPacket) +void WorldSession::HandleSetChannelWatch(WorldPacket& recvPacket) { sLog->outDebug(LOG_FILTER_NETWORKIO, "Opcode %u", recvPacket.GetOpcode()); std::string channelname; diff --git a/src/server/game/Handlers/ItemHandler.cpp b/src/server/game/Handlers/ItemHandler.cpp index b25acee1589..616309c49a0 100644 --- a/src/server/game/Handlers/ItemHandler.cpp +++ b/src/server/game/Handlers/ItemHandler.cpp @@ -29,7 +29,7 @@ #include "SpellInfo.h" #include <vector> -void WorldSession::HandleSplitItemOpcode(WorldPacket & recvData) +void WorldSession::HandleSplitItemOpcode(WorldPacket& recvData) { //sLog->outDebug(LOG_FILTER_PACKETIO, "WORLD: CMSG_SPLIT_ITEM"); uint8 srcbag, srcslot, dstbag, dstslot; @@ -1008,12 +1008,11 @@ void WorldSession::HandleAutoStoreBankItemOpcode(WorldPacket& recvPacket) void WorldSession::SendEnchantmentLog(uint64 Target, uint64 Caster, uint32 ItemID, uint32 SpellID) { - WorldPacket data(SMSG_ENCHANTMENTLOG, (8+8+4+4+1)); // last check 2.0.10 - data << uint64(Target); - data << uint64(Caster); + WorldPacket data(SMSG_ENCHANTMENTLOG, (8+8+4+4+1)); // last check 4.3.4 + data.appendPackGUID(Target); + data.appendPackGUID(Caster); data << uint32(ItemID); data << uint32(SpellID); - data << uint8(0); SendPacket(&data); } diff --git a/src/server/game/Handlers/MovementHandler.cpp b/src/server/game/Handlers/MovementHandler.cpp index da2e7e5bfd2..dbdc4ac04fe 100644 --- a/src/server/game/Handlers/MovementHandler.cpp +++ b/src/server/game/Handlers/MovementHandler.cpp @@ -525,7 +525,7 @@ void WorldSession::HandleSetActiveMoverOpcode(WorldPacket& recvPacket) if (GetPlayer()->IsInWorld()) { if (_player->m_mover->GetGUID() != guid) - sLog->outError(LOG_FILTER_NETWORKIO, "HandleSetActiveMoverOpcode: incorrect mover guid: mover is " UI64FMTD " (%s - Entry: %u) and should be " UI64FMTD, guid, GetLogNameForGuid(guid), GUID_ENPART(guid), _player->m_mover->GetGUID()); + sLog->outError(LOG_FILTER_NETWORKIO, "HandleSetActiveMoverOpcode: incorrect mover guid: mover is " UI64FMTD " (%s - Entry: %u) and should be " UI64FMTD, uint64(guid), GetLogNameForGuid(guid), GUID_ENPART(guid), _player->m_mover->GetGUID()); } } diff --git a/src/server/game/Handlers/NPCHandler.cpp b/src/server/game/Handlers/NPCHandler.cpp index 651d616a15f..32636d51f49 100755 --- a/src/server/game/Handlers/NPCHandler.cpp +++ b/src/server/game/Handlers/NPCHandler.cpp @@ -322,9 +322,7 @@ void WorldSession::HandleGossipHelloOpcode(WorldPacket & recvData) // GetPlayer()->RemoveAurasByType(SPELL_AURA_FEIGN_DEATH); if (unit->isArmorer() || unit->isCivilian() || unit->isQuestGiver() || unit->isServiceProvider() || unit->isGuard()) - { unit->StopMoving(); - } // If spiritguide, no need for gossip menu, just put player into resurrect queue if (unit->isSpiritGuide()) diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index a41070fa1e1..cd44c362258 100755 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -563,6 +563,42 @@ enum SpellAttr7 SPELL_ATTR7_UNK31 = 0x80000000 // 31 only 70769 }; +enum SpellAttr8 +{ + SPELL_ATTR8_UNK0 = 0x00000001, // 0 + SPELL_ATTR8_UNK1 = 0x00000002, // 1 + SPELL_ATTR8_UNK2 = 0x00000004, // 2 + SPELL_ATTR8_UNK3 = 0x00000008, // 3 + SPELL_ATTR8_UNK4 = 0x00000010, // 4 + SPELL_ATTR8_UNK5 = 0x00000020, // 5 + SPELL_ATTR8_UNK6 = 0x00000040, // 6 + SPELL_ATTR8_UNK7 = 0x00000080, // 7 + SPELL_ATTR8_UNK8 = 0x00000100, // 8 + SPELL_ATTR8_UNK9 = 0x00000200, // 9 + SPELL_ATTR8_UNK10 = 0x00000400, // 10 + SPELL_ATTR8_UNK11 = 0x00000800, // 11 + SPELL_ATTR8_AURA_SEND_AMOUNT = 0x00001000, // 12 Aura must have flag AFLAG_ANY_EFFECT_AMOUNT_SENT to send amount + SPELL_ATTR8_UNK13 = 0x00002000, // 13 + SPELL_ATTR8_UNK14 = 0x00004000, // 14 + SPELL_ATTR8_UNK15 = 0x00008000, // 15 + SPELL_ATTR8_UNK16 = 0x00010000, // 16 + SPELL_ATTR8_UNK17 = 0x00020000, // 17 + SPELL_ATTR8_UNK18 = 0x00040000, // 18 + SPELL_ATTR8_UNK19 = 0x00080000, // 19 + SPELL_ATTR8_ARMOR_SPECIALIZATION = 0x00100000, // 20 + SPELL_ATTR8_UNK21 = 0x00200000, // 21 + SPELL_ATTR8_UNK22 = 0x00400000, // 22 + SPELL_ATTR8_UNK23 = 0x00800000, // 23 + SPELL_ATTR8_UNK24 = 0x01000000, // 24 + SPELL_ATTR8_UNK25 = 0x02000000, // 25 + SPELL_ATTR8_RAID_MARKER = 0x04000000, // 26 probably spell no need learn to cast + SPELL_ATTR8_UNK27 = 0x08000000, // 27 + SPELL_ATTR8_GUILD_PERKS = 0x10000000, // 28 + SPELL_ATTR8_MASTERY = 0x20000000, // 29 + SPELL_ATTR8_UNK30 = 0x40000000, // 30 + SPELL_ATTR8_UNK31 = 0x80000000 // 31 +}; + #define MIN_TALENT_SPEC 0 #define MAX_TALENT_SPEC 1 #define MIN_TALENT_SPECS 1 @@ -850,7 +886,12 @@ enum SpellEffects SPELL_EFFECT_175 = 175, // Unused (4.2.2) SPELL_EFFECT_176 = 176, // Some kind of sanctuary effect (Vanish) SPELL_EFFECT_177 = 177, - TOTAL_SPELL_EFFECTS = 178, + SPELL_EFFECT_178 = 178, + SPELL_EFFECT_179 = 179, + SPELL_EFFECT_180 = 180, + SPELL_EFFECT_181 = 181, + SPELL_EFFECT_182 = 182, + TOTAL_SPELL_EFFECTS = 183, }; enum SpellCastResult diff --git a/src/server/game/Movement/Spline/MoveSpline.cpp b/src/server/game/Movement/Spline/MoveSpline.cpp index c020dc2a653..164b65c067d 100644 --- a/src/server/game/Movement/Spline/MoveSpline.cpp +++ b/src/server/game/Movement/Spline/MoveSpline.cpp @@ -171,6 +171,13 @@ void MoveSpline::Initialize(const MoveSplineInitArgs& args) vertical_acceleration = 0.f; effect_start_time = 0; + // Check if its a stop spline + if (args.flags.done) + { + spline.clear(); + return; + } + init_spline(args); // init parabolic / animation @@ -264,7 +271,7 @@ MoveSpline::UpdateResult MoveSpline::_updateState(int32& ms_time_diff) { point_Idx = spline.first(); time_passed = time_passed % Duration(); - result = Result_NextSegment; + result = Result_NextCycle; } else { diff --git a/src/server/game/Movement/Spline/MoveSpline.h b/src/server/game/Movement/Spline/MoveSpline.h index d4b19b21634..56f2670a04b 100644 --- a/src/server/game/Movement/Spline/MoveSpline.h +++ b/src/server/game/Movement/Spline/MoveSpline.h @@ -41,7 +41,8 @@ namespace Movement { public: typedef Spline<int32> MySpline; - enum UpdateResult{ + enum UpdateResult + { Result_None = 0x01, Result_Arrived = 0x02, Result_NextCycle = 0x04, @@ -70,27 +71,27 @@ namespace Movement void init_spline(const MoveSplineInitArgs& args); protected: - const MySpline::ControlArray& getPath() const { return spline.getPoints();} + const MySpline::ControlArray& getPath() const { return spline.getPoints(); } void computeParabolicElevation(float& el) const; void computeFallElevation(float& el) const; UpdateResult _updateState(int32& ms_time_diff); - int32 next_timestamp() const { return spline.length(point_Idx+1);} - int32 segment_time_elapsed() const { return next_timestamp()-time_passed;} - int32 Duration() const { return spline.length();} - int32 timeElapsed() const { return Duration() - time_passed;} - int32 timePassed() const { return time_passed;} + int32 next_timestamp() const { return spline.length(point_Idx+1); } + int32 segment_time_elapsed() const { return next_timestamp()-time_passed; } + int32 Duration() const { return spline.length(); } + int32 timeElapsed() const { return Duration() - time_passed; } + int32 timePassed() const { return time_passed; } public: - const MySpline& _Spline() const { return spline;} - int32 _currentSplineIdx() const { return point_Idx;} + const MySpline& _Spline() const { return spline; } + int32 _currentSplineIdx() const { return point_Idx; } void _Finalize(); void _Interrupt() { splineflags.done = true;} public: void Initialize(const MoveSplineInitArgs&); - bool Initialized() const { return !spline.empty();} + bool Initialized() const { return !spline.empty(); } explicit MoveSpline(); @@ -112,11 +113,11 @@ namespace Movement Location ComputePosition() const; - uint32 GetId() const { return m_Id;} + uint32 GetId() const { return m_Id; } bool Finalized() const { return splineflags.done; } - bool isCyclic() const { return splineflags.cyclic;} - const Vector3 FinalDestination() const { return Initialized() ? spline.getPoint(spline.last()) : Vector3();} - const Vector3 CurrentDestination() const { return Initialized() ? spline.getPoint(point_Idx+1) : Vector3();} + bool isCyclic() const { return splineflags.cyclic; } + const Vector3 FinalDestination() const { return Initialized() ? spline.getPoint(spline.last()) : Vector3(); } + const Vector3 CurrentDestination() const { return Initialized() ? spline.getPoint(point_Idx+1) : Vector3(); } int32 currentPathIdx() const; std::string ToString() const; diff --git a/src/server/game/Movement/Spline/MoveSplineFlag.h b/src/server/game/Movement/Spline/MoveSplineFlag.h index 40c07f14440..89e76faeea3 100644 --- a/src/server/game/Movement/Spline/MoveSplineFlag.h +++ b/src/server/game/Movement/Spline/MoveSplineFlag.h @@ -33,7 +33,8 @@ namespace Movement class MoveSplineFlag { public: - enum eFlags{ + enum eFlags + { None = 0x00000000, // x00-x07 used as animation Ids storage in pair with Animation flag Unknown0 = 0x00000008, // NOT VERIFIED @@ -73,7 +74,7 @@ namespace Movement // flags that shouldn't be appended into SMSG_MONSTER_MOVE\SMSG_MONSTER_MOVE_TRANSPORT packet, should be more probably Mask_No_Monster_Move = Mask_Final_Facing | Mask_Animations | Done, // Unused, not suported flags - Mask_Unused = No_Spline|Enter_Cycle|Frozen|Unknown0|FallingSlow|Unknown2|Unknown3|Unknown4|SmoothGroundPath|Unknown6|Unknown7|Unknown8|Unknown9, + Mask_Unused = No_Spline|Enter_Cycle|Frozen|Unknown0|Unknown2|Unknown3|Unknown4|Unknown6|Unknown7|Unknown8|Unknown9, }; inline uint32& raw() { return (uint32&)*this; } diff --git a/src/server/game/Movement/Spline/MoveSplineInit.cpp b/src/server/game/Movement/Spline/MoveSplineInit.cpp index 96b925928a4..7d91e82096e 100644 --- a/src/server/game/Movement/Spline/MoveSplineInit.cpp +++ b/src/server/game/Movement/Spline/MoveSplineInit.cpp @@ -60,12 +60,10 @@ namespace Movement { MoveSpline& move_spline = *unit.movespline; - bool transport = false; Location real_position(unit.GetPositionX(), unit.GetPositionY(), unit.GetPositionZMinusOffset(), unit.GetOrientation()); // Elevators also use MOVEMENTFLAG_ONTRANSPORT but we do not keep track of their position changes if (unit.GetTransGUID()) { - transport = true; real_position.x = unit.GetTransOffsetX(); real_position.y = unit.GetTransOffsetY(); real_position.z = unit.GetTransOffsetZ(); @@ -102,13 +100,14 @@ namespace Movement if (moveFlags & MOVEMENTFLAG_ROOT) moveFlags &= ~MOVEMENTFLAG_MASK_MOVING; - unit.m_movementInfo.SetMovementFlags((MovementFlags)moveFlags); + unit.m_movementInfo.SetMovementFlags(moveFlags); move_spline.Initialize(args); - WorldPacket data(!transport ? SMSG_MONSTER_MOVE : SMSG_MONSTER_MOVE_TRANSPORT, 64); + WorldPacket data(SMSG_MONSTER_MOVE, 64); data.append(unit.GetPackGUID()); - if (transport) + if (unit.GetTransGUID()) { + data.SetOpcode(SMSG_MONSTER_MOVE_TRANSPORT); data.appendPackGUID(unit.GetTransGUID()); data << int8(unit.GetTransSeat()); } @@ -117,8 +116,35 @@ namespace Movement unit.SendMessageToSet(&data, true); } + void MoveSplineInit::Stop() + { + MoveSpline& move_spline = *unit.movespline; + + // No need to stop if we are not moving + if (move_spline.Finalized()) + return; + + Location loc = move_spline.ComputePosition(); + args.flags = MoveSplineFlag::Done; + unit.m_movementInfo.RemoveMovementFlag(MOVEMENTFLAG_FORWARD); + move_spline.Initialize(args); + + WorldPacket data(SMSG_MONSTER_MOVE, 64); + data.append(unit.GetPackGUID()); + if (unit.GetTransGUID()) + { + data.SetOpcode(SMSG_MONSTER_MOVE_TRANSPORT); + data.appendPackGUID(unit.GetTransGUID()); + data << int8(unit.GetTransSeat()); + } + + PacketBuilder::WriteStopMovement(loc, args.splineId, data); + unit.SendMessageToSet(&data, true); + } + MoveSplineInit::MoveSplineInit(Unit& m) : unit(m) { + args.splineId = splineIdGen.NewId(); // Elevators also use MOVEMENTFLAG_ONTRANSPORT but we do not keep track of their position changes args.TransformForTransport = unit.GetTransGUID(); // mix existing state into new diff --git a/src/server/game/Movement/Spline/MoveSplineInit.h b/src/server/game/Movement/Spline/MoveSplineInit.h index 053be4e334a..77e34c22b5b 100644 --- a/src/server/game/Movement/Spline/MoveSplineInit.h +++ b/src/server/game/Movement/Spline/MoveSplineInit.h @@ -58,6 +58,10 @@ namespace Movement */ void Launch(); + /* Final pass of initialization that stops movement. + */ + void Stop(); + /* Adds movement by parabolic trajectory * @param amplitude - the maximum height of parabola, value could be negative and positive * @param start_time - delay between movement starting time and beginning to move by parabolic trajectory diff --git a/src/server/game/Movement/Spline/MovementPacketBuilder.cpp b/src/server/game/Movement/Spline/MovementPacketBuilder.cpp index aab96a630fa..4e16b2a6801 100644 --- a/src/server/game/Movement/Spline/MovementPacketBuilder.cpp +++ b/src/server/game/Movement/Spline/MovementPacketBuilder.cpp @@ -88,6 +88,14 @@ namespace Movement } } + void PacketBuilder::WriteStopMovement(Vector3 const& pos, uint32 splineId, ByteBuffer& data) + { + data << uint8(0); // sets/unsets MOVEMENTFLAG2_UNK7 (0x40) + data << pos; + data << splineId; + data << uint8(MonsterMoveStop); + } + void WriteLinearPath(const Spline<int32>& spline, ByteBuffer& data) { uint32 last_idx = spline.getPointCount() - 3; diff --git a/src/server/game/Movement/Spline/MovementPacketBuilder.h b/src/server/game/Movement/Spline/MovementPacketBuilder.h index a6e4e4d5d04..87a25dd0fdf 100644 --- a/src/server/game/Movement/Spline/MovementPacketBuilder.h +++ b/src/server/game/Movement/Spline/MovementPacketBuilder.h @@ -31,6 +31,7 @@ namespace Movement public: static void WriteMonsterMove(const MoveSpline& mov, WorldPacket& data); + static void WriteStopMovement(Vector3 const& loc, uint32 splineId, ByteBuffer& data); static void WriteCreateBits(MoveSpline const& moveSpline, ByteBuffer& data); static void WriteCreateData(MoveSpline const& moveSpline, ByteBuffer& data); }; diff --git a/src/server/game/Movement/Spline/MovementTypedefs.h b/src/server/game/Movement/Spline/MovementTypedefs.h index 01c8a5b7e7b..51679260ebb 100644 --- a/src/server/game/Movement/Spline/MovementTypedefs.h +++ b/src/server/game/Movement/Spline/MovementTypedefs.h @@ -54,7 +54,7 @@ namespace Movement class counter { public: - counter() { init();} + counter() { init(); } void Increase() { @@ -64,8 +64,8 @@ namespace Movement ++m_counter; } - T NewId() { Increase(); return m_counter;} - T getCurrent() const { return m_counter;} + T NewId() { Increase(); return m_counter; } + T getCurrent() const { return m_counter; } private: void init() { m_counter = 0; } @@ -76,6 +76,7 @@ namespace Movement extern double gravity; extern float computeFallElevation(float t_passed, bool isSafeFall, float start_velocity); + extern UInt32Counter splineIdGen; } #endif // TRINITYSERVER_TYPEDEFS_H diff --git a/src/server/game/Movement/Spline/MovementUtil.cpp b/src/server/game/Movement/Spline/MovementUtil.cpp index d0582baa7f9..86fcd26fad7 100644 --- a/src/server/game/Movement/Spline/MovementUtil.cpp +++ b/src/server/game/Movement/Spline/MovementUtil.cpp @@ -23,34 +23,35 @@ namespace Movement { double gravity = 19.29110527038574; + UInt32Counter splineIdGen; /// Velocity bounds that makes fall speed limited float terminalVelocity = 60.148003f; - float terminalSavefallVelocity = 7.f; + float terminalSafefallVelocity = 7.f; - const float terminal_length = float(terminalVelocity * terminalVelocity) / (2.f * gravity); - const float terminal_savefall_length = (terminalSavefallVelocity * terminalSavefallVelocity) / (2.f * gravity); - const float terminalFallTime = float(terminalVelocity/gravity); // the time that needed to reach terminalVelocity + const float terminal_length = float(terminalVelocity * terminalVelocity) / (2.0f * gravity); + const float terminal_safefall_length = (terminalSafefallVelocity * terminalSafefallVelocity) / (2.0f * gravity); + const float terminalFallTime = float(terminalVelocity / gravity); // the time that needed to reach terminalVelocity float computeFallTime(float path_length, bool isSafeFall) { - if (path_length < 0.f) - return 0.f; + if (path_length < 0.0f) + return 0.0f; float time; - if ( isSafeFall ) + if (isSafeFall) { - if (path_length >= terminal_savefall_length) - time = (path_length - terminal_savefall_length)/terminalSavefallVelocity + terminalSavefallVelocity/gravity; + if (path_length >= terminal_safefall_length) + time = (path_length - terminal_safefall_length) / terminalSafefallVelocity + terminalSafefallVelocity / gravity; else - time = sqrtf(2.f * path_length/gravity); + time = sqrtf(2.0f * path_length / gravity); } else { if (path_length >= terminal_length) - time = (path_length - terminal_length)/terminalVelocity + terminalFallTime; + time = (path_length - terminal_length) / terminalVelocity + terminalFallTime; else - time = sqrtf(2.f * path_length/gravity); + time = sqrtf(2.0f * path_length / gravity); } return time; @@ -61,20 +62,21 @@ namespace Movement float termVel; float result; - if ( isSafeFall ) - termVel = terminalSavefallVelocity; + if (isSafeFall) + termVel = terminalSafefallVelocity; else termVel = terminalVelocity; - if ( start_velocity > termVel ) + if (start_velocity > termVel) start_velocity = termVel; float terminal_time = terminalFallTime - start_velocity / gravity; // the time that needed to reach terminalVelocity - if ( t_passed > terminal_time ) + if (t_passed > terminal_time) { - result = terminalVelocity*(t_passed - terminal_time) + - start_velocity*terminal_time + gravity*terminal_time*terminal_time*0.5f; + result = terminalVelocity * (t_passed - terminal_time) + + start_velocity * terminal_time + + gravity * terminal_time * terminal_time*0.5f; } else result = t_passed * (start_velocity + t_passed * gravity * 0.5f); @@ -100,7 +102,7 @@ namespace Movement #define STR(x) #x - const char* g_MovementFlag_names[]= + char const* g_MovementFlag_names[] = { STR(Forward ),// 0x00000001, STR(Backward ),// 0x00000002, @@ -135,25 +137,25 @@ namespace Movement STR(Local_Dirty ),// 0x20000000 STR(None31 ),// 0x40000000 STR(None32 ),// 0x80000000 - STR(Unk1 ), - STR(Unk2 ), - STR(Unk3 ), - STR(Fullspeedturning ), - STR(Fullspeedpitching ), - STR(Allow_Pitching ), - STR(Unk4 ), - STR(Unk5 ), - STR(Unk6 ), - STR(Unk7 ), - STR(Interp_Move ), - STR(Interp_Turning ), - STR(Interp_Pitching ), - STR(Unk8 ), - STR(Unk9 ), - STR(Unk10 ), + STR(Unk1 ), + STR(Unk2 ), + STR(Unk3 ), + STR(Fullspeedturning ), + STR(Fullspeedpitching ), + STR(Allow_Pitching ), + STR(Unk4 ), + STR(Unk5 ), + STR(Unk6 ), + STR(Unk7 ), + STR(Interp_Move ), + STR(Interp_Turning ), + STR(Interp_Pitching ), + STR(None8 ), + STR(None9 ), + STR(None10 ), }; - const char * g_SplineFlag_names[32]= + char const* g_SplineFlag_names[32] = { STR(AnimBit1 ),// 0x00000001, STR(AnimBit2 ),// 0x00000002, @@ -190,11 +192,11 @@ namespace Movement }; template<class Flags, int N> - void print_flags(Flags t, const char* (&names)[N], std::string& str) + void print_flags(Flags t, char const* (&names)[N], std::string& str) { for (int i = 0; i < N; ++i) { - if ((t & (Flags)(1 << i)) && names[i] != NULL) + if ((t & Flags(1 << i)) && names[i] != NULL) str.append(" ").append(names[i]); } } diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index d26389249c6..a9a45a21e9d 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -30,11 +30,11 @@ void InitOpcodes() { #define DEFINE_OPCODE_HANDLER(opcode, status, processing, handler) \ if (opcode == 0) \ - sLog->outError(LOG_FILTER_NETWORKIO, "Opcode %s got value 0", #opcode); \ + sLog->outError(LOG_FILTER_NETWORKIO, "Opcode %s got value 0", #opcode); \ if (opcode < NUM_OPCODE_HANDLERS) { \ if (opcodeTable[opcode] != NULL) \ { \ - sLog->outError(LOG_FILTER_NETWORKIO, "Tried to override handler of %s with %s (opcode %u)", \ + sLog->outError(LOG_FILTER_NETWORKIO, "Tried to override handler of %s with %s (opcode %u)", \ opcodeTable[opcode]->name, #opcode, opcode); \ } \ else opcodeTable[opcode] = new OpcodeHandler(#opcode, #opcode##"_COMPRESSED", status, processing, handler); \ @@ -446,7 +446,7 @@ void InitOpcodes() //DEFINE_OPCODE_HANDLER(CMSG_REQUEST_RATED_BG_INFO, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL ); //DEFINE_OPCODE_HANDLER(CMSG_REQUEST_RATED_BG_STATS, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL ); //DEFINE_OPCODE_HANDLER(CMSG_REQUEST_RESEARCH_HISTORY, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL ); - //DEFINE_OPCODE_HANDLER(CMSG_REQUEST_VEHICLE_EXIT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestVehicleExit ); + DEFINE_OPCODE_HANDLER(CMSG_REQUEST_VEHICLE_EXIT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestVehicleExit ); DEFINE_OPCODE_HANDLER(CMSG_REQUEST_VEHICLE_NEXT_SEAT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChangeSeatsOnControlledVehicle); DEFINE_OPCODE_HANDLER(CMSG_REQUEST_VEHICLE_PREV_SEAT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChangeSeatsOnControlledVehicle); //DEFINE_OPCODE_HANDLER(CMSG_REQUEST_VEHICLE_SWITCH_SEAT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChangeSeatsOnControlledVehicle); @@ -468,7 +468,7 @@ void InitOpcodes() //DEFINE_OPCODE_HANDLER(CMSG_SET_ACTIVE_VOICE_CHANNEL, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleSetActiveVoiceChannel ); //DEFINE_OPCODE_HANDLER(CMSG_SET_ALLOW_LOW_LEVEL_RAID1, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL ); //DEFINE_OPCODE_HANDLER(CMSG_SET_ALLOW_LOW_LEVEL_RAID2, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL ); - //DEFINE_OPCODE_HANDLER(CMSG_SET_CHANNEL_WATCH, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetChannelWatch ); + DEFINE_OPCODE_HANDLER(CMSG_SET_CHANNEL_WATCH, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetChannelWatch ); DEFINE_OPCODE_HANDLER(CMSG_SET_CONTACT_NOTES, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetContactNotesOpcode ); //DEFINE_OPCODE_HANDLER(CMSG_SET_CURRENCY_FLAGS, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL ); //DEFINE_OPCODE_HANDLER(CMSG_SET_EVERYONE_IS_ASSISTANT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL ); @@ -493,7 +493,7 @@ void InitOpcodes() DEFINE_OPCODE_HANDLER(CMSG_SOCKET_GEMS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSocketOpcode ); DEFINE_OPCODE_HANDLER(CMSG_SPELLCLICK, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSpellClick ); DEFINE_OPCODE_HANDLER(CMSG_SPIRIT_HEALER_ACTIVATE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSpiritHealerActivateOpcode); - //DEFINE_OPCODE_HANDLER(CMSG_SPLIT_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSplitItemOpcode ); + DEFINE_OPCODE_HANDLER(CMSG_SPLIT_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSplitItemOpcode ); DEFINE_OPCODE_HANDLER(CMSG_STANDSTATECHANGE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleStandStateChangeOpcode ); //DEFINE_OPCODE_HANDLER(CMSG_STOP_DANCE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL ); //DEFINE_OPCODE_HANDLER(CMSG_SUBMIT_BUG, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL ); @@ -521,7 +521,7 @@ void InitOpcodes() DEFINE_OPCODE_HANDLER(CMSG_TUTORIAL_FLAG, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleTutorialFlag ); DEFINE_OPCODE_HANDLER(CMSG_TUTORIAL_RESET, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleTutorialReset ); DEFINE_OPCODE_HANDLER(CMSG_UNACCEPT_TRADE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleUnacceptTradeOpcode ); - //DEFINE_OPCODE_HANDLER(CMSG_UNLEARN_SKILL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleUnlearnSkillOpcode ); + DEFINE_OPCODE_HANDLER(CMSG_UNLEARN_SKILL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleUnlearnSkillOpcode ); //DEFINE_OPCODE_HANDLER(CMSG_UNLEARN_SPECIALIZATION, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER(CMSG_UNREGISTER_ALL_ADDON_PREFIXES, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleUnregisterAddonPrefixesOpcode); DEFINE_OPCODE_HANDLER(CMSG_UPDATE_ACCOUNT_DATA, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleUpdateAccountData ); @@ -595,7 +595,7 @@ void InitOpcodes() //DEFINE_OPCODE_HANDLER(MSG_RAID_READY_CHECK_CONFIRM, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER(MSG_RAID_READY_CHECK_FINISHED, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRaidReadyCheckFinishedOpcode); DEFINE_OPCODE_HANDLER(MSG_RAID_TARGET_UPDATE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRaidTargetUpdateOpcode ); - //DEFINE_OPCODE_HANDLER(MSG_RANDOM_ROLL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRandomRollOpcode ); + DEFINE_OPCODE_HANDLER(MSG_RANDOM_ROLL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRandomRollOpcode ); DEFINE_OPCODE_HANDLER(MSG_SAVE_GUILD_EMBLEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSaveGuildEmblemOpcode ); DEFINE_OPCODE_HANDLER(MSG_SET_DUNGEON_DIFFICULTY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetDungeonDifficultyOpcode); DEFINE_OPCODE_HANDLER(MSG_SET_RAID_DIFFICULTY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetRaidDifficultyOpcode ); @@ -712,14 +712,14 @@ void InitOpcodes() //DEFINE_OPCODE_HANDLER(SMSG_CHAT_NOT_IN_PARTY, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); //DEFINE_OPCODE_HANDLER(SMSG_CHAT_PLAYER_AMBIGUOUS, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); DEFINE_OPCODE_HANDLER(SMSG_CHAT_PLAYER_NOT_FOUND, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); - //DEFINE_OPCODE_HANDLER(SMSG_CHAT_RESTRICTED, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); + DEFINE_OPCODE_HANDLER(SMSG_CHAT_RESTRICTED, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); //DEFINE_OPCODE_HANDLER(SMSG_CHAT_SERVER_DISCONNECTED, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); //DEFINE_OPCODE_HANDLER(SMSG_CHAT_SERVER_RECONNECTED, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); - //DEFINE_OPCODE_HANDLER(SMSG_CHAT_WRONG_FACTION, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); + DEFINE_OPCODE_HANDLER(SMSG_CHAT_WRONG_FACTION, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); //DEFINE_OPCODE_HANDLER(SMSG_CLEAR_BOSS_EMOTES, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); //DEFINE_OPCODE_HANDLER(SMSG_CLEAR_COOLDOWNS, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); //DEFINE_OPCODE_HANDLER(SMSG_CLEAR_FAR_SIGHT_IMMEDIATE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); - //DEFINE_OPCODE_HANDLER(SMSG_CLEAR_TARGET, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); + DEFINE_OPCODE_HANDLER(SMSG_CLEAR_TARGET, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); DEFINE_OPCODE_HANDLER(SMSG_CLIENTCACHE_VERSION, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); DEFINE_OPCODE_HANDLER(SMSG_CLIENT_CONTROL_UPDATE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); DEFINE_OPCODE_HANDLER(SMSG_COMBAT_EVENT_FAILED, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); @@ -729,23 +729,23 @@ void InitOpcodes() //DEFINE_OPCODE_HANDLER(SMSG_COMMENTATOR_SKIRMISH_QUEUE_RESULT1, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); //DEFINE_OPCODE_HANDLER(SMSG_COMMENTATOR_SKIRMISH_QUEUE_RESULT2, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); //DEFINE_OPCODE_HANDLER(SMSG_COMMENTATOR_STATE_CHANGED, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); - //DEFINE_OPCODE_HANDLER(SMSG_COMPLAIN_RESULT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); + DEFINE_OPCODE_HANDLER(SMSG_COMPLAIN_RESULT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); //DEFINE_OPCODE_HANDLER(SMSG_COMPLETION_NPC_RESPONSE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); //DEFINE_OPCODE_HANDLER(SMSG_COMPRESSED_MOVES, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); //DEFINE_OPCODE_HANDLER(SMSG_COMSAT_CONNECT_FAIL, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); //DEFINE_OPCODE_HANDLER(SMSG_COMSAT_DISCONNECT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); //DEFINE_OPCODE_HANDLER(SMSG_COMSAT_RECONNECT_TRY, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); DEFINE_OPCODE_HANDLER(SMSG_CONTACT_LIST, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); - //DEFINE_OPCODE_HANDLER(SMSG_CONVERT_RUNE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); + DEFINE_OPCODE_HANDLER(SMSG_CONVERT_RUNE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); //DEFINE_OPCODE_HANDLER(SMSG_COOLDOWN_CHEAT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); - //DEFINE_OPCODE_HANDLER(SMSG_COOLDOWN_EVENT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); + DEFINE_OPCODE_HANDLER(SMSG_COOLDOWN_EVENT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); //DEFINE_OPCODE_HANDLER(SMSG_CORPSE_MAP_POSITION_QUERY_RESPONSE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); //DEFINE_OPCODE_HANDLER(SMSG_CORPSE_NOT_IN_INSTANCE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); DEFINE_OPCODE_HANDLER(SMSG_CORPSE_RECLAIM_DELAY, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); DEFINE_OPCODE_HANDLER(SMSG_CREATURE_QUERY_RESPONSE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); DEFINE_OPCODE_HANDLER(SMSG_CRITERIA_DELETED, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); DEFINE_OPCODE_HANDLER(SMSG_CRITERIA_UPDATE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); - //DEFINE_OPCODE_HANDLER(SMSG_CROSSED_INEBRIATION_THRESHOLD, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); + DEFINE_OPCODE_HANDLER(SMSG_CROSSED_INEBRIATION_THRESHOLD, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); //DEFINE_OPCODE_HANDLER(SMSG_CURRENCY_LOOT_REMOVED, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); //DEFINE_OPCODE_HANDLER(SMSG_CURRENCY_LOOT_RESTORED, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); //DEFINE_OPCODE_HANDLER(SMSG_CUSTOM_LOAD_SCREEN, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); @@ -761,7 +761,7 @@ void InitOpcodes() //DEFINE_OPCODE_HANDLER(SMSG_DISENCHANT_CREDIT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); DEFINE_OPCODE_HANDLER(SMSG_DISMOUNT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); DEFINE_OPCODE_HANDLER(SMSG_DISMOUNTRESULT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); - //DEFINE_OPCODE_HANDLER(SMSG_DISPEL_FAILED, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); + DEFINE_OPCODE_HANDLER(SMSG_DISPEL_FAILED, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); //DEFINE_OPCODE_HANDLER(SMSG_DISPLAY_GAME_ERROR, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); //DEFINE_OPCODE_HANDLER(SMSG_DONT_AUTO_PUSH_SPELLS_TO_ACTION_BAR, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); //DEFINE_OPCODE_HANDLER(SMSG_DROP_NEW_CONNECTION, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); @@ -775,12 +775,12 @@ void InitOpcodes() DEFINE_OPCODE_HANDLER(SMSG_DURABILITY_DAMAGE_DEATH, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); //DEFINE_OPCODE_HANDLER(SMSG_ECHO_PARTY_SQUELCH, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); DEFINE_OPCODE_HANDLER(SMSG_EMOTE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); - //DEFINE_OPCODE_HANDLER(SMSG_ENABLE_BARBER_SHOP, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); - //DEFINE_OPCODE_HANDLER(SMSG_ENCHANTMENTLOG, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); + DEFINE_OPCODE_HANDLER(SMSG_ENABLE_BARBER_SHOP, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); + DEFINE_OPCODE_HANDLER(SMSG_ENCHANTMENTLOG, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); DEFINE_OPCODE_HANDLER(SMSG_ENVIRONMENTALDAMAGELOG, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); DEFINE_OPCODE_HANDLER(SMSG_EQUIPMENT_SET_LIST, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); - //DEFINE_OPCODE_HANDLER(SMSG_EQUIPMENT_SET_SAVED, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); - //DEFINE_OPCODE_HANDLER(SMSG_EQUIPMENT_SET_USE_RESULT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); + DEFINE_OPCODE_HANDLER(SMSG_EQUIPMENT_SET_SAVED, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); + DEFINE_OPCODE_HANDLER(SMSG_EQUIPMENT_SET_USE_RESULT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); //DEFINE_OPCODE_HANDLER(SMSG_EXPECTED_SPAM_RECORDS, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); DEFINE_OPCODE_HANDLER(SMSG_EXPLORATION_EXPERIENCE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); //DEFINE_OPCODE_HANDLER(SMSG_FAILED_PLAYER_CONDITION, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); @@ -822,12 +822,12 @@ void InitOpcodes() DEFINE_OPCODE_HANDLER(SMSG_GOSSIP_POI, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); //DEFINE_OPCODE_HANDLER(SMSG_GROUPACTION_THROTTLED, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); //DEFINE_OPCODE_HANDLER(SMSG_GROUP_CANCEL, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); - //DEFINE_OPCODE_HANDLER(SMSG_GROUP_DECLINE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); + DEFINE_OPCODE_HANDLER(SMSG_GROUP_DECLINE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); //DEFINE_OPCODE_HANDLER(SMSG_GROUP_DESTROYED, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); DEFINE_OPCODE_HANDLER(SMSG_GROUP_INVITE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); //DEFINE_OPCODE_HANDLER(SMSG_GROUP_JOINED_BATTLEGROUND, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); //DEFINE_OPCODE_HANDLER(SMSG_GROUP_LIST, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); - //DEFINE_OPCODE_HANDLER(SMSG_GROUP_SET_LEADER, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); + DEFINE_OPCODE_HANDLER(SMSG_GROUP_SET_LEADER, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); //DEFINE_OPCODE_HANDLER(SMSG_GROUP_SET_ROLE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); //DEFINE_OPCODE_HANDLER(SMSG_GROUP_UNINVITE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); DEFINE_OPCODE_HANDLER(SMSG_GUILD_ACHIEVEMENT_DATA, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); @@ -964,7 +964,7 @@ void InitOpcodes() //DEFINE_OPCODE_HANDLER(SMSG_MINIGAME_STATE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); DEFINE_OPCODE_HANDLER(SMSG_MIRRORIMAGE_DATA, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); //DEFINE_OPCODE_HANDLER(SMSG_MISSILE_CANCEL, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); - //DEFINE_OPCODE_HANDLER(SMSG_MODIFY_COOLDOWN, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); + DEFINE_OPCODE_HANDLER(SMSG_MODIFY_COOLDOWN, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); //DEFINE_OPCODE_HANDLER(SMSG_MONEY_NOTIFY, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); DEFINE_OPCODE_HANDLER(SMSG_MONSTER_MOVE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); DEFINE_OPCODE_HANDLER(SMSG_MONSTER_MOVE_TRANSPORT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); @@ -985,7 +985,7 @@ void InitOpcodes() //DEFINE_OPCODE_HANDLER(SMSG_MOVE_SET_CAN_TRANSITION_BETWEEN_SWIM_AND_FLY, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); DEFINE_OPCODE_HANDLER(SMSG_MOVE_SET_COLLISION_HEIGHT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); //DEFINE_OPCODE_HANDLER(SMSG_MOVE_SET_COMPOUND_STATE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); - //DEFINE_OPCODE_HANDLER(SMSG_MOVE_SET_FLIGHT_BACK_SPEED, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); + DEFINE_OPCODE_HANDLER(SMSG_MOVE_SET_FLIGHT_BACK_SPEED, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); DEFINE_OPCODE_HANDLER(SMSG_MOVE_SET_FLIGHT_SPEED, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); //DEFINE_OPCODE_HANDLER(SMSG_MOVE_SET_HOVER, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); DEFINE_OPCODE_HANDLER(SMSG_MOVE_SET_PITCH_RATE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); @@ -994,7 +994,7 @@ void InitOpcodes() DEFINE_OPCODE_HANDLER(SMSG_MOVE_SET_SWIM_BACK_SPEED, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); DEFINE_OPCODE_HANDLER(SMSG_MOVE_SET_SWIM_SPEED, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); DEFINE_OPCODE_HANDLER(SMSG_MOVE_SET_TURN_RATE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); - //DEFINE_OPCODE_HANDLER(SMSG_MOVE_SET_WALK_SPEED, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); + DEFINE_OPCODE_HANDLER(SMSG_MOVE_SET_WALK_SPEED, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); DEFINE_OPCODE_HANDLER(SMSG_MOVE_UNROOT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); DEFINE_OPCODE_HANDLER(SMSG_MOVE_UNSET_CAN_FLY, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); //DEFINE_OPCODE_HANDLER(SMSG_MOVE_UNSET_CAN_TRANSITION_BETWEEN_SWIM_AND_FLY, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); @@ -1072,7 +1072,7 @@ void InitOpcodes() DEFINE_OPCODE_HANDLER(SMSG_PRE_RESURRECT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); DEFINE_OPCODE_HANDLER(SMSG_PROCRESIST, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); DEFINE_OPCODE_HANDLER(SMSG_PROPOSE_LEVEL_GRANT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); - //DEFINE_OPCODE_HANDLER(SMSG_PVP_CREDIT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); + DEFINE_OPCODE_HANDLER(SMSG_PVP_CREDIT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); //DEFINE_OPCODE_HANDLER(SMSG_PVP_LOG_DATA, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); //DEFINE_OPCODE_HANDLER(SMSG_PVP_OPTIONS_ENABLED, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); DEFINE_OPCODE_HANDLER(SMSG_QUERY_QUESTS_COMPLETED_RESPONSE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); diff --git a/src/server/game/Spells/Auras/SpellAuraDefines.h b/src/server/game/Spells/Auras/SpellAuraDefines.h index c8e41d1fcfa..04809277eb4 100755 --- a/src/server/game/Spells/Auras/SpellAuraDefines.h +++ b/src/server/game/Spells/Auras/SpellAuraDefines.h @@ -422,7 +422,15 @@ enum AuraType SPELL_AURA_360 = 360, SPELL_AURA_361 = 361, SPELL_AURA_362 = 362, - TOTAL_AURAS = 363 // 4.2.2 + SPELL_AURA_363 = 363, + SPELL_AURA_364 = 364, + SPELL_AURA_365 = 365, + SPELL_AURA_366 = 366, + SPELL_AURA_367 = 367, + SPELL_AURA_368 = 368, + SPELL_AURA_369 = 369, + SPELL_AURA_370 = 370, + TOTAL_AURAS = 371 // 4.3.4 }; enum AuraObjectType diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index c2b74a6efad..097ec0b2e8e 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -416,6 +416,14 @@ pAuraEffectHandler AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleNULL, //360 SPELL_AURA_360 &AuraEffect::HandleNULL, //361 SPELL_AURA_361 &AuraEffect::HandleNULL, //362 SPELL_AURA_362 + &AuraEffect::HandleNULL, //363 SPELL_AURA_363 + &AuraEffect::HandleNULL, //364 SPELL_AURA_364 + &AuraEffect::HandleNULL, //365 SPELL_AURA_365 + &AuraEffect::HandleNULL, //366 SPELL_AURA_366 + &AuraEffect::HandleNULL, //367 SPELL_AURA_367 + &AuraEffect::HandleNULL, //368 SPELL_AURA_368 + &AuraEffect::HandleNULL, //369 SPELL_AURA_369 + &AuraEffect::HandleNULL, //370 SPELL_AURA_370 }; AuraEffect::AuraEffect(Aura* base, uint8 effIndex, int32 *baseAmount, Unit* caster): @@ -2467,9 +2475,7 @@ void AuraEffect::HandleFeignDeath(AuraApplication const* aurApp, uint8 mode, boo if (apply) { /* - WorldPacket data(SMSG_FEIGN_DEATH_RESISTED, 9); - data<<target->GetGUID(); - data<<uint8(0); + WorldPacket data(SMSG_FEIGN_DEATH_RESISTED, 0); target->SendMessageToSet(&data, true); */ @@ -2515,9 +2521,7 @@ void AuraEffect::HandleFeignDeath(AuraApplication const* aurApp, uint8 mode, boo else { /* - WorldPacket data(SMSG_FEIGN_DEATH_RESISTED, 9); - data<<target->GetGUID(); - data<<uint8(1); + WorldPacket data(SMSG_FEIGN_DEATH_RESISTED, 0); target->SendMessageToSet(&data, true); */ // blizz like 2.0.x diff --git a/src/server/game/Spells/Auras/SpellAuras.cpp b/src/server/game/Spells/Auras/SpellAuras.cpp index be3f33bb5f1..f5b9c5b2cf2 100755 --- a/src/server/game/Spells/Auras/SpellAuras.cpp +++ b/src/server/game/Spells/Auras/SpellAuras.cpp @@ -148,7 +148,7 @@ void AuraApplication::_InitFlags(Unit* caster, uint8 effMask) _flags |= positiveFound ? AFLAG_POSITIVE : AFLAG_NEGATIVE; } - if (GetBase()->GetSpellInfo()->AttributesCu & SPELL_ATTR0_CU_SCALABLE) + if (GetBase()->GetSpellInfo()->AttributesEx8 & SPELL_ATTR8_AURA_SEND_AMOUNT) _flags |= AFLAG_ANY_EFFECT_AMOUNT_SENT; } diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 8b620e1e9ea..909d47c4b92 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -244,6 +244,11 @@ pEffect SpellEffects[TOTAL_SPELL_EFFECTS]= &Spell::EffectUnused, //175 SPELL_EFFECT_175 unused &Spell::EffectNULL, //176 SPELL_EFFECT_176 &Spell::EffectNULL, //177 SPELL_EFFECT_177 + &Spell::EffectNULL, //178 SPELL_EFFECT_178 + &Spell::EffectNULL, //179 SPELL_EFFECT_179 + &Spell::EffectNULL, //180 SPELL_EFFECT_180 + &Spell::EffectNULL, //181 SPELL_EFFECT_181 + &Spell::EffectNULL, //182 SPELL_EFFECT_182 }; void Spell::EffectNULL(SpellEffIndex /*effIndex*/) diff --git a/src/server/game/Spells/SpellInfo.h b/src/server/game/Spells/SpellInfo.h index 46f9906c4de..a338b8d627f 100644 --- a/src/server/game/Spells/SpellInfo.h +++ b/src/server/game/Spells/SpellInfo.h @@ -175,7 +175,7 @@ enum SpellCustomAttributes SPELL_ATTR0_CU_CONE_LINE = 0x00000004, SPELL_ATTR0_CU_SHARE_DAMAGE = 0x00000008, SPELL_ATTR0_CU_NO_INITIAL_THREAT = 0x00000010, - SPELL_ATTR0_CU_SCALABLE = 0x00000020, + SPELL_ATTR0_CU_NONE2 = 0x00000020, // UNUSED SPELL_ATTR0_CU_AURA_CC = 0x00000040, SPELL_ATTR0_CU_DIRECT_DAMAGE = 0x00000100, SPELL_ATTR0_CU_CHARGE = 0x00000200, diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index a1df9b997ef..fda59f27e0e 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -2670,11 +2670,6 @@ void SpellMgr::LoadSpellCustomAttr() case SPELL_AURA_POWER_BURN: spellInfo->AttributesCu |= SPELL_ATTR0_CU_NO_INITIAL_THREAT; break; - case SPELL_AURA_MOUNTED: - case SPELL_AURA_OVERRIDE_ACTIONBAR_SPELLS: - case SPELL_AURA_OVERRIDE_ACTIONBAR_SPELLS_2: - spellInfo->AttributesCu |= SPELL_ATTR0_CU_SCALABLE; - break; } switch (spellInfo->Effects[j].Effect) |