diff --git a/src/server/game/Entities/Player/PlayerMovement.cpp b/src/server/game/Entities/Player/PlayerMovement.cpp index dc84bb72..dcab014a 100644 --- a/src/server/game/Entities/Player/PlayerMovement.cpp +++ b/src/server/game/Entities/Player/PlayerMovement.cpp @@ -155,7 +155,8 @@ void Player::ReadMovementInfo(WorldPacket& data, MovementInfo* mi, ExtraMovement bitcounterLoop = data.ReadBits(22); break; case MSEUnkUIntLoop: - data.read_skip(bitcounterLoop * sizeof(uint32)); + for (int i = 0; i != bitcounterLoop; i++) + data.read_skip(); break; case MSEFlushBits: data.FlushBits(); diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index c27dfee9..592b32c7 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -21421,96 +21421,6 @@ void Unit::_ExitVehicle(Position const* exitPosition) } } -void Unit::BuildMovementPacket(ByteBuffer *data) const -{ - *data << uint32(GetUnitMovementFlags()); // movement flags - *data << uint16(GetExtraUnitMovementFlags()); // 2.3.0 - *data << uint32(getMSTime()); // time / counter - *data << GetPositionX(); - *data << GetPositionY(); - *data << GetPositionZMinusOffset(); - *data << GetOrientation(); - - bool onTransport = m_movementInfo.t_guid != 0; - bool hasInterpolatedMovement = m_movementInfo.flags2 & MOVEMENTFLAG2_INTERPOLATED_MOVEMENT; - bool time3 = false; - 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_FALLING; - bool splineElevation = m_movementInfo.HaveSplineElevation; - bool hasSpline = IsSplineEnabled(); - - // Fix player movement visibility during being CC-ed. - if (GetTypeId() == TYPEID_PLAYER && IsInCC() && !hasSpline) - hasSpline = true; - - data->WriteBits(GetUnitMovementFlags(), 30); - data->WriteBits(m_movementInfo.flags2, 12); - data->WriteBit(onTransport); - if (onTransport) - { - data->WriteBit(hasInterpolatedMovement); - data->WriteBit(time3); - } - - data->WriteBit(swimming); - data->WriteBit(interPolatedTurning); - if (interPolatedTurning) - data->WriteBit(jumping); - - data->WriteBit(splineElevation); - data->WriteBit(hasSpline); - - data->FlushBits(); // reset bit stream - - *data << uint64(GetGUID()); - *data << uint32(getMSTime()); - *data << float(GetPositionX()); - *data << float(GetPositionY()); - *data << float(GetPositionZ()); - *data << float(GetOrientation()); - - if (onTransport) - { - if (m_vehicle) - *data << uint64(m_vehicle->GetBase()->GetGUID()); - else if (GetTransport()) - *data << uint64(GetTransport()->GetGUID()); - else // probably should never happen - *data << (uint64)0; - - *data << float (GetTransOffsetX()); - *data << float (GetTransOffsetY()); - *data << float (GetTransOffsetZ()); - *data << float (GetTransOffsetO()); - *data << uint8 (GetTransSeat()); - *data << uint32(GetTransTime()); - if (hasInterpolatedMovement) - *data << int32(0); // Transport Time 2 - if (time3) - *data << int32(0); // Transport Time 3 - } - - if (swimming) - *data << (float)m_movementInfo.pitch; - - if (interPolatedTurning) - { - *data << (uint32)m_movementInfo.fallTime; - *data << (float)m_movementInfo.j_zspeed; - if (jumping) - { - *data << (float)m_movementInfo.j_sinAngle; - *data << (float)m_movementInfo.j_cosAngle; - *data << (float)m_movementInfo.j_xyspeed; - } - } - - if (splineElevation) - *data << (float)m_movementInfo.splineElevation; -} - void Unit::NearTeleportTo(float x, float y, float z, float orientation, bool casting /*= false*/) { DisableSpline(); diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 3616c07d..29f02cb1 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -2271,8 +2271,6 @@ class Unit : public WorldObject void _ExitVehicle(Position const* exitPosition = NULL); void _EnterVehicle(Vehicle* vehicle, int8 seatId, AuraApplication const* aurApp = NULL); - void BuildMovementPacket(ByteBuffer *data) const; - void RewardRage(uint32 baseRage, bool attacker, bool useBonus = true); virtual float GetFollowAngle() const { return static_cast(M_PI/2); } diff --git a/src/server/game/Entities/Unit/UnitMovement.cpp b/src/server/game/Entities/Unit/UnitMovement.cpp index d913b2b3..5bdb4eb5 100644 --- a/src/server/game/Entities/Unit/UnitMovement.cpp +++ b/src/server/game/Entities/Unit/UnitMovement.cpp @@ -915,14 +915,6 @@ void Unit::SendMovementHover(bool apply) { if (GetTypeId() == TYPEID_PLAYER) ToPlayer()->SendMovementSetHover(HasUnitMovementFlag(MOVEMENTFLAG_HOVER)); - - if (apply) - { - /*WorldPacket data(MSG_MOVE_HOVER, 64); - data.append(GetPackGUID()); - BuildMovementPacket(&data); - SendMessageToSet(&data, false);*/ - } } void Unit::SetFeared(bool apply) diff --git a/src/server/game/Movement/Spline/MovementPacketBuilder.cpp b/src/server/game/Movement/Spline/MovementPacketBuilder.cpp index c2efcba5..1148587e 100644 --- a/src/server/game/Movement/Spline/MovementPacketBuilder.cpp +++ b/src/server/game/Movement/Spline/MovementPacketBuilder.cpp @@ -398,7 +398,6 @@ namespace Movement void PacketBuilder::WriteCreateData(MoveSpline const& moveSpline, ByteBuffer& data) { bool isSplineEnabled = moveSpline.Initialized() && !moveSpline.Finalized(); - ASSERT(isSplineEnabled); if (isSplineEnabled) { diff --git a/src/server/scripts/Pandaria/GateSettingSun/gate_setting_sun.h b/src/server/scripts/Pandaria/GateSettingSun/gate_setting_sun.h index 04931dd0..afc1deee 100644 --- a/src/server/scripts/Pandaria/GateSettingSun/gate_setting_sun.h +++ b/src/server/scripts/Pandaria/GateSettingSun/gate_setting_sun.h @@ -1,19 +1,34 @@ /* - Dungeon : Gate of the Setting Sun 90-90 - Instance General Script -*/ - -#ifndef STORMSTOUT_BREWERY_H_ -#define STORMSTOUT_BREWERY_H_ + * Copyright (C) 2011-2015 SkyMist Gaming + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + * + * Dungeon: Dungeon : Gate of the Setting Sun. + * Description: Header Script. + */ + +#ifndef DEF_GATE_SETTING_SUN_H_ +#define DEF_GATE_SETTING_SUN_H_ #include "SpellScript.h" #include "Map.h" #include "Creature.h" #include "CreatureAIImpl.h" -uint32 const EncounterCount = 4; +#define MAX_ENCOUNTERS 4 -enum DataTypes +enum DataTypes // Events / Encounters. { DATA_KIPTILAK = 0, DATA_GADOK = 1, @@ -26,6 +41,7 @@ enum DataTypes DATA_BRASIER_CLICKED = 6, DATA_RANDOM_BOMBARDER = 7, DATA_RANDOM_BOMB_STALKER = 8, + MAX_DATA }; @@ -104,4 +120,4 @@ enum eSettingSun CINEMATIC_SETTING_SUN = 265 }; -#endif // STORMSTOUT_BREWERY_H_ +#endif // DEF_GATE_SETTING_SUN_H_ diff --git a/src/server/scripts/Pandaria/GateSettingSun/instance_gate_setting_sun.cpp b/src/server/scripts/Pandaria/GateSettingSun/instance_gate_setting_sun.cpp index 69cc1d8a..7c86afe9 100644 --- a/src/server/scripts/Pandaria/GateSettingSun/instance_gate_setting_sun.cpp +++ b/src/server/scripts/Pandaria/GateSettingSun/instance_gate_setting_sun.cpp @@ -1,11 +1,30 @@ /* - Dungeon : Gate of the Setting Sun 90-90 - Instance General Script -*/ + * Copyright (C) 2011-2015 SkyMist Gaming + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + * + * Dungeon: Gate of the Setting Sun. + * Description: Instance Script. + */ #include "ScriptMgr.h" #include "InstanceScript.h" -#include "ScriptedCreature.h" +#include "Player.h" +#include "Unit.h" +#include "ObjectAccessor.h" +#include "Group.h" + #include "gate_setting_sun.h" DoorData const doorData[] = @@ -18,51 +37,50 @@ DoorData const doorData[] = {GO_RIMAK_AFTER_DOOR, DATA_RIMOK, DOOR_TYPE_ROOM, BOUNDARY_S }, {GO_RAIGONN_DOOR, DATA_RAIGONN, DOOR_TYPE_ROOM, BOUNDARY_NE }, {GO_RAIGONN_AFTER_DOOR, DATA_RAIGONN, DOOR_TYPE_PASSAGE, BOUNDARY_E }, - {0, 0, DOOR_TYPE_ROOM, BOUNDARY_NONE},// END + + {0, 0, DOOR_TYPE_ROOM, BOUNDARY_NONE}, // END }; class instance_gate_setting_sun : public InstanceMapScript { -public: - instance_gate_setting_sun() : InstanceMapScript("instance_gate_setting_sun", 962) { } - - InstanceScript* GetInstanceScript(InstanceMap* map) const - { - return new instance_gate_setting_sun_InstanceMapScript(map); - } + public: + instance_gate_setting_sun() : InstanceMapScript("instance_gate_setting_sun", 962) { } - struct instance_gate_setting_sun_InstanceMapScript : public InstanceScript - { - uint64 kiptilakGuid; - uint64 gadokGuid; - uint64 rimokGuid; - uint64 raigonnGuid; - uint64 raigonWeakGuid; + struct instance_gate_setting_sun_InstanceMapScript : public InstanceScript + { + instance_gate_setting_sun_InstanceMapScript(Map* map) : InstanceScript(map) + { + Initialize(); + } - uint64 firstDoorGuid; - uint64 fireSignalGuid; + // Bosses. + uint64 kiptilakGuid; + uint64 gadokGuid; + uint64 rimokGuid; + uint64 raigonnGuid; - uint64 wallCGuid; - uint64 portalTempGadokGuid; + uint64 raigonWeakGuid; - uint32 cinematicTimer; - uint8 cinematicEventProgress; + uint64 firstDoorGuid; + uint64 fireSignalGuid; + uint64 wallCGuid; + uint64 portalTempGadokGuid; - std::list bombarderGuids; - std::list bombStalkerGuids; - std::list mantidBombsGUIDs; - std::list rimokAddGenetarorsGUIDs; - std::list artilleryGUIDs; - std::list secondaryDoorGUIDs; + uint32 cinematicTimer; + uint8 cinematicEventProgress; - uint32 dataStorage[MAX_DATA]; + std::list bombarderGuids; + std::list bombStalkerGuids; + std::list mantidBombsGUIDs; + std::list rimokAddGeneratorsGUIDs; + std::list artilleryGUIDs; + std::list secondaryDoorGUIDs; - instance_gate_setting_sun_InstanceMapScript(Map* map) : InstanceScript(map) - {} + uint32 dataStorage[MAX_DATA]; void Initialize() { - SetBossNumber(EncounterCount); + SetBossNumber(MAX_ENCOUNTERS); LoadDoorData(doorData); kiptilakGuid = 0; @@ -84,7 +102,7 @@ class instance_gate_setting_sun : public InstanceMapScript bombarderGuids.clear(); bombStalkerGuids.clear(); mantidBombsGUIDs.clear(); - rimokAddGenetarorsGUIDs.clear(); + rimokAddGeneratorsGUIDs.clear(); artilleryGUIDs.clear(); secondaryDoorGUIDs.clear(); } @@ -118,7 +136,7 @@ class instance_gate_setting_sun : public InstanceMapScript case NPC_RAIGONN: raigonnGuid = creature->GetGUID(); return; case NPC_KRITHUK_BOMBARDER: bombarderGuids.push_back(creature->GetGUID()); return; case NPC_BOMB_STALKER: bombStalkerGuids.push_back(creature->GetGUID()); return; - case NPC_ADD_GENERATOR: rimokAddGenetarorsGUIDs.push_back(creature->GetGUID()); return; + case NPC_ADD_GENERATOR: rimokAddGeneratorsGUIDs.push_back(creature->GetGUID()); return; case NPC_ARTILLERY: artilleryGUIDs.push_back(creature->GetGUID()); return; default: return; } @@ -204,7 +222,7 @@ class instance_gate_setting_sun : public InstanceMapScript for (auto itr: secondaryDoorGUIDs) HandleGameObject(itr, state != DONE); - for (auto itr: rimokAddGenetarorsGUIDs) + for (auto itr: rimokAddGeneratorsGUIDs) { if (Creature* generator = instance->GetCreature(itr)) { @@ -379,6 +397,10 @@ class instance_gate_setting_sun : public InstanceMapScript } }; + InstanceScript* GetInstanceScript(InstanceMap* map) const + { + return new instance_gate_setting_sun_InstanceMapScript(map); + } }; void AddSC_instance_gate_setting_sun()