aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities/Object
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2017-11-12 02:42:06 +0100
committerShauren <shauren.trinity@gmail.com>2017-11-12 02:42:06 +0100
commit331c70e695c6eef085be03a4f149158b68470035 (patch)
tree57c9ef3800b6fe544198d0070c55aeb615656b64 /src/server/game/Entities/Object
parentbf0ae32d189d4579920e027f9d2dbfacc5552df3 (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.cpp51
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