aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Conditions/ConditionMgr.cpp2
-rw-r--r--src/server/game/Entities/Object/ObjectGuid.cpp2
-rw-r--r--src/server/game/Entities/Object/ObjectGuid.h3
-rw-r--r--src/server/game/Entities/Player/Player.cpp2
-rw-r--r--src/server/game/Entities/Player/Player.h2
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp35
-rw-r--r--src/server/game/Entities/Unit/Unit.h16
-rw-r--r--src/server/game/Handlers/PetHandler.cpp2
-rw-r--r--src/server/game/Server/Packets/CombatPackets.h2
-rw-r--r--src/server/game/Server/Packets/MovementPackets.cpp13
-rw-r--r--src/server/game/Server/Packets/SpellPackets.cpp11
-rw-r--r--src/server/game/Server/Packets/SpellPackets.h25
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp4
-rw-r--r--src/server/game/Spells/Spell.cpp6
-rw-r--r--src/server/game/Spells/Spell.h4
15 files changed, 73 insertions, 56 deletions
diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp
index a1ca9bd5f73..79d05ecb2bb 100644
--- a/src/server/game/Conditions/ConditionMgr.cpp
+++ b/src/server/game/Conditions/ConditionMgr.cpp
@@ -381,7 +381,7 @@ bool Condition::Meets(ConditionSourceInfo& sourceInfo) const
case CONDITION_HP_VAL:
{
if (Unit* unit = object->ToUnit())
- condMeets = CompareValues(static_cast<ComparisionType>(ConditionValue2), unit->GetHealth(), static_cast<uint32>(ConditionValue1));
+ condMeets = CompareValues(static_cast<ComparisionType>(ConditionValue2), unit->GetHealth(), static_cast<uint64>(ConditionValue1));
break;
}
case CONDITION_HP_PCT:
diff --git a/src/server/game/Entities/Object/ObjectGuid.cpp b/src/server/game/Entities/Object/ObjectGuid.cpp
index 55151f576dd..830307e931b 100644
--- a/src/server/game/Entities/Object/ObjectGuid.cpp
+++ b/src/server/game/Entities/Object/ObjectGuid.cpp
@@ -82,6 +82,7 @@ namespace
SET_GUID_NAME(BattlePet);
SET_GUID_NAME(CommerceObj);
SET_GUID_NAME(ClientSession);
+ SET_GUID_NAME(Cast);
#undef SET_GUID_NAME
}
@@ -221,3 +222,4 @@ GUID_TRAIT_INSTANTIATE_GUID(HighGuid::CallForHelp)
GUID_TRAIT_INSTANTIATE_GUID(HighGuid::AIResource)
GUID_TRAIT_INSTANTIATE_GUID(HighGuid::AILock)
GUID_TRAIT_INSTANTIATE_GUID(HighGuid::AILockTicket)
+GUID_TRAIT_INSTANTIATE_GUID(HighGuid::Cast)
diff --git a/src/server/game/Entities/Object/ObjectGuid.h b/src/server/game/Entities/Object/ObjectGuid.h
index 505170a2663..e770a8b34a3 100644
--- a/src/server/game/Entities/Object/ObjectGuid.h
+++ b/src/server/game/Entities/Object/ObjectGuid.h
@@ -106,6 +106,7 @@ enum class HighGuid
BattlePet = 44,
CommerceObj = 45,
ClientSession = 46,
+ Cast = 47,
Count,
};
@@ -180,6 +181,7 @@ GUID_TRAIT_MAP_SPECIFIC(HighGuid::CallForHelp)
GUID_TRAIT_MAP_SPECIFIC(HighGuid::AIResource)
GUID_TRAIT_MAP_SPECIFIC(HighGuid::AILock)
GUID_TRAIT_MAP_SPECIFIC(HighGuid::AILockTicket)
+GUID_TRAIT_MAP_SPECIFIC(HighGuid::Cast) // Guessed
class ObjectGuid;
class PackedGuid;
@@ -259,6 +261,7 @@ class TC_GAME_API ObjectGuid
bool IsGuild() const { return GetHigh() == HighGuid::Guild; }
bool IsSceneObject() const { return GetHigh() == HighGuid::SceneObject; }
bool IsConversation() const { return GetHigh() == HighGuid::Conversation; }
+ bool IsCast() const { return GetHigh() == HighGuid::Cast; }
static TypeID GetTypeId(HighGuid high)
{
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index e42b4cdb26b..b0b661b1393 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -7770,7 +7770,7 @@ void Player::CastItemCombatSpell(Unit* target, WeaponAttackType attType, uint32
}
}
-void Player::CastItemUseSpell(Item* item, SpellCastTargets const& targets, uint8 castCount, int32* misc)
+void Player::CastItemUseSpell(Item* item, SpellCastTargets const& targets, ObjectGuid castCount, int32* misc)
{
ItemTemplate const* proto = item->GetTemplate();
// special learning case
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index a038d00f939..5bee6c6c117 100644
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -2143,7 +2143,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
void UpdateItemSetAuras(bool formChange = false);
void CastItemCombatSpell(Unit* target, WeaponAttackType attType, uint32 procVictim, uint32 procEx);
- void CastItemUseSpell(Item* item, SpellCastTargets const& targets, uint8 castCount, int32* misc);
+ void CastItemUseSpell(Item* item, SpellCastTargets const& targets, ObjectGuid castCount, int32* misc);
void CastItemCombatSpell(Unit* target, WeaponAttackType attType, uint32 procVictim, uint32 procEx, Item* item, ItemTemplate const* proto);
void SendEquipmentSetList();
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index f42be192a3f..6a886ef3f62 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -3308,7 +3308,7 @@ void Unit::_RemoveNoStackAurasDueToAura(Aura* aura)
{
Unit* caster = aura->GetCaster();
if (caster && caster->GetTypeId() == TYPEID_PLAYER)
- Spell::SendCastResult(caster->ToPlayer(), aura->GetSpellInfo(), 1, SPELL_FAILED_AURA_BOUNCED);
+ Spell::SendCastResult(caster->ToPlayer(), aura->GetSpellInfo(), ObjectGuid::Create<HighGuid::Cast>(GetMapId(), 0, 1), SPELL_FAILED_AURA_BOUNCED);
}
aura->Remove();
@@ -9595,23 +9595,23 @@ bool Unit::_IsValidAssistTarget(Unit const* target, SpellInfo const* bySpell) co
return true;
}
-int32 Unit::ModifyHealth(int32 dVal)
+int64 Unit::ModifyHealth(int64 dVal)
{
- int32 gain = 0;
+ int64 gain = 0;
if (dVal == 0)
return 0;
- int32 curHealth = (int32)GetHealth();
+ int64 curHealth = (int64)GetHealth();
- int32 val = dVal + curHealth;
+ int64 val = dVal + curHealth;
if (val <= 0)
{
SetHealth(0);
return -curHealth;
}
- int32 maxHealth = (int32)GetMaxHealth();
+ int64 maxHealth = (int64)GetMaxHealth();
if (val < maxHealth)
{
@@ -9632,28 +9632,27 @@ int32 Unit::ModifyHealth(int32 dVal)
if (Player* player = GetCharmerOrOwnerPlayerOrPlayerItself())
player->GetSession()->SendPacket(packet.Write());
-
}
return gain;
}
-int32 Unit::GetHealthGain(int32 dVal)
+int64 Unit::GetHealthGain(int64 dVal)
{
- int32 gain = 0;
+ int64 gain = 0;
if (dVal == 0)
return 0;
- int32 curHealth = (int32)GetHealth();
+ int64 curHealth = (int64)GetHealth();
- int32 val = dVal + curHealth;
+ int64 val = dVal + curHealth;
if (val <= 0)
{
return -curHealth;
}
- int32 maxHealth = (int32)GetMaxHealth();
+ int64 maxHealth = (int64)GetMaxHealth();
if (val < maxHealth)
gain = dVal;
@@ -10918,7 +10917,7 @@ void Unit::SetLevel(uint8 lvl)
}
}
-void Unit::SetHealth(uint32 val)
+void Unit::SetHealth(uint64 val)
{
if (getDeathState() == JUST_DIED)
val = 0;
@@ -10926,12 +10925,12 @@ void Unit::SetHealth(uint32 val)
val = 1;
else
{
- uint32 maxHealth = GetMaxHealth();
+ uint64 maxHealth = GetMaxHealth();
if (maxHealth < val)
val = maxHealth;
}
- SetUInt32Value(UNIT_FIELD_HEALTH, val);
+ SetUInt64Value(UNIT_FIELD_HEALTH, val);
// group update
if (Player* player = ToPlayer())
@@ -10946,13 +10945,13 @@ void Unit::SetHealth(uint32 val)
}
}
-void Unit::SetMaxHealth(uint32 val)
+void Unit::SetMaxHealth(uint64 val)
{
if (!val)
val = 1;
- uint32 health = GetHealth();
- SetUInt32Value(UNIT_FIELD_MAXHEALTH, val);
+ uint64 health = GetHealth();
+ SetUInt64Value(UNIT_FIELD_MAXHEALTH, val);
// group update
if (GetTypeId() == TYPEID_PLAYER)
diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h
index bf766267fee..2032b8210d3 100644
--- a/src/server/game/Entities/Unit/Unit.h
+++ b/src/server/game/Entities/Unit/Unit.h
@@ -1433,8 +1433,8 @@ class TC_GAME_API Unit : public WorldObject
uint32 GetResistance(SpellSchoolMask mask) const;
void SetResistance(SpellSchools school, int32 val) { SetStatInt32Value(UNIT_FIELD_RESISTANCES+school, val); }
- uint32 GetHealth() const { return GetUInt32Value(UNIT_FIELD_HEALTH); }
- uint32 GetMaxHealth() const { return GetUInt32Value(UNIT_FIELD_MAXHEALTH); }
+ uint64 GetHealth() const { return GetUInt64Value(UNIT_FIELD_HEALTH); }
+ uint64 GetMaxHealth() const { return GetUInt64Value(UNIT_FIELD_MAXHEALTH); }
bool IsFullHealth() const { return GetHealth() == GetMaxHealth(); }
bool HealthBelowPct(int32 pct) const { return GetHealth() < CountPctFromMaxHealth(pct); }
@@ -1442,14 +1442,14 @@ class TC_GAME_API Unit : public WorldObject
bool HealthAbovePct(int32 pct) const { return GetHealth() > CountPctFromMaxHealth(pct); }
bool HealthAbovePctHealed(int32 pct, uint32 heal) const { return uint64(GetHealth()) + uint64(heal) > CountPctFromMaxHealth(pct); }
float GetHealthPct() const { return GetMaxHealth() ? 100.f * GetHealth() / GetMaxHealth() : 0.0f; }
- uint32 CountPctFromMaxHealth(int32 pct) const { return CalculatePct(GetMaxHealth(), pct); }
- uint32 CountPctFromCurHealth(int32 pct) const { return CalculatePct(GetHealth(), pct); }
+ uint64 CountPctFromMaxHealth(int32 pct) const { return CalculatePct(GetMaxHealth(), pct); }
+ uint64 CountPctFromCurHealth(int32 pct) const { return CalculatePct(GetHealth(), pct); }
- void SetHealth(uint32 val);
- void SetMaxHealth(uint32 val);
+ void SetHealth(uint64 val);
+ void SetMaxHealth(uint64 val);
inline void SetFullHealth() { SetHealth(GetMaxHealth()); }
- int32 ModifyHealth(int32 val);
- int32 GetHealthGain(int32 dVal);
+ int64 ModifyHealth(int64 val);
+ int64 GetHealthGain(int64 dVal);
Powers getPowerType() const { return Powers(GetUInt32Value(UNIT_FIELD_DISPLAY_POWER)); }
void setPowerType(Powers power);
diff --git a/src/server/game/Handlers/PetHandler.cpp b/src/server/game/Handlers/PetHandler.cpp
index a1e57ff087a..c3a57893bfc 100644
--- a/src/server/game/Handlers/PetHandler.cpp
+++ b/src/server/game/Handlers/PetHandler.cpp
@@ -380,7 +380,7 @@ void WorldSession::HandlePetActionHelper(Unit* pet, ObjectGuid guid1, uint32 spe
else
{
if (pet->isPossessed() || pet->IsVehicle()) /// @todo: confirm this check
- Spell::SendCastResult(GetPlayer(), spellInfo, 0, result);
+ Spell::SendCastResult(GetPlayer(), spellInfo, ObjectGuid::Create<HighGuid::Cast>(GetPlayer()->GetMapId(), 0, 0), result);
else
spell->SendPetCastResult(result);
diff --git a/src/server/game/Server/Packets/CombatPackets.h b/src/server/game/Server/Packets/CombatPackets.h
index 5554ac9b0b5..4a8eddc2562 100644
--- a/src/server/game/Server/Packets/CombatPackets.h
+++ b/src/server/game/Server/Packets/CombatPackets.h
@@ -186,7 +186,7 @@ namespace WorldPackets
WorldPacket const* Write() override;
ObjectGuid Guid;
- int32 Health = 0;
+ int64 Health = 0;
};
class ThreatClear final : public ServerPacket
diff --git a/src/server/game/Server/Packets/MovementPackets.cpp b/src/server/game/Server/Packets/MovementPackets.cpp
index 8795042bf86..209aab0af00 100644
--- a/src/server/game/Server/Packets/MovementPackets.cpp
+++ b/src/server/game/Server/Packets/MovementPackets.cpp
@@ -516,6 +516,10 @@ WorldPacket const* WorldPackets::Movement::NewWorld::Write()
_worldPacket << MapID;
_worldPacket << Pos.PositionXYZOStream();
_worldPacket << Reason;
+ // New in 7.x - Does something movement-related (velocities ???)
+ _worldPacket << float(0.0f);
+ _worldPacket << float(0.0f);
+ _worldPacket << float(0.0f);
return &_worldPacket;
}
@@ -692,7 +696,14 @@ WorldPacket const* WorldPackets::Movement::MoveUpdateRemoveMovementForce::Write(
WorldPacket const* WorldPackets::Movement::MoveUpdateApplyMovementForce::Write()
{
_worldPacket << *movementInfo;
- _worldPacket << Force;
+ _worldPacket << Force.ID;
+ _worldPacket << Force.Origin;
+ _worldPacket << Force.Direction;
+ _worldPacket << Force.TransportPosition;
+ _worldPacket << Force.TransportID;
+ _worldPacket << Force.Magnitude;
+ _worldPacket.WriteBits(Force.Type, 2);
+ _worldPacket.FlushBits();
return &_worldPacket;
}
diff --git a/src/server/game/Server/Packets/SpellPackets.cpp b/src/server/game/Server/Packets/SpellPackets.cpp
index 53800dbb726..72a38fa42b5 100644
--- a/src/server/game/Server/Packets/SpellPackets.cpp
+++ b/src/server/game/Server/Packets/SpellPackets.cpp
@@ -354,7 +354,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SpellCastData con
{
data << spellCastData.CasterGUID;
data << spellCastData.CasterUnit;
- data << uint8(spellCastData.CastID);
+ data << spellCastData.CastID;
data << int32(spellCastData.SpellID);
data << uint32(spellCastData.SpellXSpellVisualID);
data << uint32(spellCastData.CastFlags);
@@ -431,7 +431,7 @@ WorldPacket const* WorldPackets::Spells::LearnedSpells::Write()
WorldPacket const* WorldPackets::Spells::SpellFailure::Write()
{
_worldPacket << CasterUnit;
- _worldPacket << uint8(CastID);
+ _worldPacket << CastID;
_worldPacket << int32(SpellID);
_worldPacket << uint32(SpelXSpellVisualID);
_worldPacket << uint16(Reason);
@@ -442,7 +442,7 @@ WorldPacket const* WorldPackets::Spells::SpellFailure::Write()
WorldPacket const* WorldPackets::Spells::SpellFailedOther::Write()
{
_worldPacket << CasterUnit;
- _worldPacket << uint8(CastID);
+ _worldPacket << CastID;
_worldPacket << uint32(SpellID);
_worldPacket << uint8(Reason);
@@ -451,11 +451,12 @@ WorldPacket const* WorldPackets::Spells::SpellFailedOther::Write()
WorldPacket const* WorldPackets::Spells::CastFailed::Write()
{
+ _worldPacket << CastID;
_worldPacket << int32(SpellID);
+ _worldPacket << int32(SpellXSpellVisualID);
_worldPacket << int32(Reason);
_worldPacket << int32(FailedArg1);
_worldPacket << int32(FailedArg2);
- _worldPacket << uint8(CastID);
return &_worldPacket;
}
@@ -800,7 +801,7 @@ void WorldPackets::Spells::MissileTrajectoryCollision::Read()
WorldPacket const* WorldPackets::Spells::NotifyMissileTrajectoryCollision::Write()
{
_worldPacket << Caster;
- _worldPacket << uint8(CastID);
+ _worldPacket << CastID;
_worldPacket << CollisionPos;
return &_worldPacket;
diff --git a/src/server/game/Server/Packets/SpellPackets.h b/src/server/game/Server/Packets/SpellPackets.h
index 0680405eeb2..45e586353fe 100644
--- a/src/server/game/Server/Packets/SpellPackets.h
+++ b/src/server/game/Server/Packets/SpellPackets.h
@@ -246,7 +246,7 @@ namespace WorldPackets
struct SpellCastRequest
{
- uint8 CastID = 0;
+ ObjectGuid CastID;
int32 SpellID = 0;
uint32 SpellXSpellVisualID = 0;
uint8 SendCastFlags = 0;
@@ -340,7 +340,7 @@ namespace WorldPackets
{
ObjectGuid CasterGUID;
ObjectGuid CasterUnit;
- uint8 CastID = 0;
+ ObjectGuid CastID;
int32 SpellID = 0;
uint32 SpellXSpellVisualID = 0;
uint32 CastFlags = 0;
@@ -403,7 +403,7 @@ namespace WorldPackets
uint32 SpellID = 0;
uint32 SpelXSpellVisualID = 0;
uint16 Reason = 0;
- uint8 CastID = 0;
+ ObjectGuid CastID;
};
class SpellFailedOther final : public ServerPacket
@@ -416,7 +416,7 @@ namespace WorldPackets
ObjectGuid CasterUnit;
uint32 SpellID = 0;
uint8 Reason = 0;
- uint8 CastID = 0;
+ ObjectGuid CastID;
};
class TC_GAME_API CastFailed final : public ServerPacket
@@ -426,11 +426,12 @@ namespace WorldPackets
WorldPacket const* Write() override;
- int32 Reason = 0;
- int32 FailedArg1 = -1;
- int32 FailedArg2 = -1;
- int32 SpellID = 0;
- uint8 CastID = 0;
+ ObjectGuid CastID;
+ int32 Reason = 0;
+ int32 SpellXSpellVisualID = 0;
+ int32 FailedArg1 = -1;
+ int32 FailedArg2 = -1;
+ int32 SpellID = 0;
};
struct SpellModifierData
@@ -659,7 +660,7 @@ namespace WorldPackets
void Read() override;
uint32 SpellID = 0;
- uint8 CastID = 0;
+ ObjectGuid CastID;
};
class OpenItem final : public ClientPacket
@@ -818,7 +819,7 @@ namespace WorldPackets
ObjectGuid Target;
int32 SpellID = 0;
- uint8 CastID = 0;
+ ObjectGuid CastID;
G3D::Vector3 CollisionPos;
};
@@ -830,7 +831,7 @@ namespace WorldPackets
WorldPacket const* Write() override;
ObjectGuid Caster;
- uint8 CastID = 0;
+ ObjectGuid CastID;
G3D::Vector3 CollisionPos;
};
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index f4cf3eb99bc..ed3293cf027 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -1193,7 +1193,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_ROSTER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_ROSTER_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_SEND_RANK_CHANGE, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_HEALTH_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_HEALTH_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_HIGHEST_THREAT_UPDATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_HOTFIX_NOTIFY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_HOTFIX_NOTIFY_BLOB, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1388,7 +1388,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MULTIPLE_PACKETS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_NEUTRAL_PLAYER_FACTION_SELECT_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_NEW_TAXI_PATH, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_NEW_WORLD, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_NEW_WORLD, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_NOTIFY_DEST_LOC_SPELL_CAST, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_NOTIFY_MISSILE_TRAJECTORY_COLLISION, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_NOTIFY_MONEY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index 4a166351fe5..84cfabf4e8f 100644
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -589,7 +589,7 @@ m_spellValue(new SpellValue(caster->GetMap()->GetDifficultyID(), m_spellInfo)),
m_procVictim = 0;
m_procEx = 0;
focusObject = NULL;
- m_cast_count = 0;
+ m_cast_count = ObjectGuid::Empty;
memset(m_misc.Raw.Data, 0, sizeof(m_misc.Raw.Data));
m_SpellVisual = m_spellInfo->GetSpellXSpellVisualId(caster->GetMap()->GetDifficultyID());
m_preCastSpell = 0;
@@ -2925,7 +2925,7 @@ void Spell::prepare(SpellCastTargets const* targets, AuraEffect const* triggered
m_caster->m_Events.AddEvent(Event, m_caster->m_Events.CalculateTime(1));
//Prevent casting at cast another spell (ServerSide check)
- if (!(_triggeredCastFlags & TRIGGERED_IGNORE_CAST_IN_PROGRESS) && m_caster->IsNonMeleeSpellCast(false, true, true) && m_cast_count)
+ if (!(_triggeredCastFlags & TRIGGERED_IGNORE_CAST_IN_PROGRESS) && m_caster->IsNonMeleeSpellCast(false, true, true) && !m_cast_count.IsEmpty())
{
SendCastResult(SPELL_FAILED_SPELL_IN_PROGRESS);
finish(false);
@@ -3742,7 +3742,7 @@ void Spell::SendPetCastResult(SpellCastResult result)
SendCastResult(owner->ToPlayer(), m_spellInfo, m_cast_count, result, SPELL_CUSTOM_ERROR_NONE, SMSG_PET_CAST_FAILED, m_misc.Raw.Data);
}
-void Spell::SendCastResult(Player* caster, SpellInfo const* spellInfo, uint8 cast_count, SpellCastResult result, SpellCustomErrors customError /*= SPELL_CUSTOM_ERROR_NONE*/, OpcodeServer opcode /*= SMSG_CAST_FAILED*/, uint32* misc /*= nullptr*/)
+void Spell::SendCastResult(Player* caster, SpellInfo const* spellInfo, ObjectGuid cast_count, SpellCastResult result, SpellCustomErrors customError /*= SPELL_CUSTOM_ERROR_NONE*/, OpcodeServer opcode /*= SMSG_CAST_FAILED*/, uint32* misc /*= nullptr*/)
{
if (result == SPELL_CAST_OK)
return;
diff --git a/src/server/game/Spells/Spell.h b/src/server/game/Spells/Spell.h
index 2be8c001ae7..7dda7451e48 100644
--- a/src/server/game/Spells/Spell.h
+++ b/src/server/game/Spells/Spell.h
@@ -522,7 +522,7 @@ class TC_GAME_API Spell
void CheckSrc() { if (!m_targets.HasSrc()) m_targets.SetSrc(*m_caster); }
void CheckDst() { if (!m_targets.HasDst()) m_targets.SetDst(*m_caster); }
- static void SendCastResult(Player* caster, SpellInfo const* spellInfo, uint8 cast_count, SpellCastResult result, SpellCustomErrors customError = SPELL_CUSTOM_ERROR_NONE, OpcodeServer opcode = SMSG_CAST_FAILED, uint32* misc = nullptr);
+ static void SendCastResult(Player* caster, SpellInfo const* spellInfo, ObjectGuid cast_count, SpellCastResult result, SpellCustomErrors customError = SPELL_CUSTOM_ERROR_NONE, OpcodeServer opcode = SMSG_CAST_FAILED, uint32* misc = nullptr);
void SendCastResult(SpellCastResult result);
void SendPetCastResult(SpellCastResult result);
void SendSpellStart();
@@ -553,7 +553,7 @@ class TC_GAME_API Spell
ObjectGuid m_castItemGUID;
uint32 m_castItemEntry;
int32 m_castItemLevel;
- uint8 m_cast_count;
+ ObjectGuid m_cast_count;
uint32 m_castFlagsEx;
union
{