diff options
| author | Shauren <shauren.trinity@gmail.com> | 2017-11-12 02:42:06 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2017-11-12 02:42:06 +0100 |
| commit | 331c70e695c6eef085be03a4f149158b68470035 (patch) | |
| tree | 57c9ef3800b6fe544198d0070c55aeb615656b64 /src/server/game/Entities/Object | |
| parent | bf0ae32d189d4579920e027f9d2dbfacc5552df3 (diff) | |
Core/Players: Fixed DK runes and runic power
Closes #19595
Diffstat (limited to 'src/server/game/Entities/Object')
| -rw-r--r-- | src/server/game/Entities/Object/Object.cpp | 51 |
1 files changed, 29 insertions, 22 deletions
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 7c8e163d170..9079a426f4f 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -350,11 +350,11 @@ void Object::BuildMovementUpdate(ByteBuffer* data, uint32 flags) const bool AnimKitCreate = (flags & UPDATEFLAG_ANIMKITS) != 0; bool Rotation = (flags & UPDATEFLAG_ROTATION) != 0; bool HasAreaTrigger = (flags & UPDATEFLAG_AREATRIGGER) != 0; - bool HasGameObject = (flags & UPDATEFLAG_GAMEOBJECT) != 0;; + bool HasGameObject = (flags & UPDATEFLAG_GAMEOBJECT) != 0; bool ThisIsYou = (flags & UPDATEFLAG_SELF) != 0; bool SmoothPhasing = false; bool SceneObjCreate = false; - bool PlayerCreateData = false; + bool PlayerCreateData = GetTypeId() == TYPEID_PLAYER && ToUnit()->GetPowerIndex(POWER_RUNES) != MAX_POWERS; std::vector<uint32> const* PauseTimes = nullptr; uint32 PauseTimesCount = 0; if (GameObject const* go = ToGameObject()) @@ -801,26 +801,33 @@ void Object::BuildMovementUpdate(ByteBuffer* data, uint32 flags) const // } //} - //if (PlayerCreateData) - //{ - // data->WriteBit(HasSceneInstanceIDs); - // data->WriteBit(HasRuneState); - // data->FlushBits(); - // if (HasSceneInstanceIDs) - // { - // *data << uint32(SceneInstanceIDs.size()); - // for (std::size_t i = 0; i < SceneInstanceIDs.size(); ++i) - // *data << uint32(SceneInstanceIDs[i]); - // } - // if (HasRuneState) - // { - // *data << uint8(RechargingRuneMask); - // *data << uint8(UsableRuneMask); - // *data << uint32(ToUnit()->GetMaxPower(POWER_RUNES)); - // for (uint32 i = 0; i < ToUnit()->GetMaxPower(POWER_RUNES); ++i) - // *data << uint8(255 - (ToUnit()->ToPlayer()->GetRuneCooldown(i) * 51)); - // } - //} + if (PlayerCreateData) + { + bool HasSceneInstanceIDs = false; + bool HasRuneState = ToUnit()->GetPowerIndex(POWER_RUNES) != MAX_POWERS; + + data->WriteBit(HasSceneInstanceIDs); + data->WriteBit(HasRuneState); + data->FlushBits(); + //if (HasSceneInstanceIDs) + //{ + // *data << uint32(SceneInstanceIDs.size()); + // for (std::size_t i = 0; i < SceneInstanceIDs.size(); ++i) + // *data << uint32(SceneInstanceIDs[i]); + //} + if (HasRuneState) + { + Player const* player = ToPlayer(); + float baseCd = float(player->GetRuneBaseCooldown()); + uint32 maxRunes = uint32(player->GetMaxPower(POWER_RUNES)); + + *data << uint8((1 << maxRunes) - 1); + *data << uint8(player->GetRunesState()); + *data << uint32(maxRunes); + for (uint32 i = 0; i < maxRunes; ++i) + *data << uint8((baseCd - float(player->GetRuneCooldown(i))) / baseCd * 255); + } + } } void Object::BuildValuesUpdate(uint8 updateType, ByteBuffer* data, Player* target) const |
