fix(Core/Misc): fix some exploits (#2630)
This commit is contained in:
@@ -1012,7 +1012,7 @@ void WorldObject::setActive(bool on)
|
|||||||
|
|
||||||
m_isActive = on;
|
m_isActive = on;
|
||||||
|
|
||||||
if (!IsInWorld())
|
if (on && !IsInWorld())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Map* map = FindMap();
|
Map* map = FindMap();
|
||||||
|
|||||||
@@ -16760,6 +16760,9 @@ void Unit::SetStunned(bool apply)
|
|||||||
{
|
{
|
||||||
if (apply)
|
if (apply)
|
||||||
{
|
{
|
||||||
|
if (m_rootTimes > 0) // blizzard internal check?
|
||||||
|
m_rootTimes++;
|
||||||
|
|
||||||
SetTarget(0);
|
SetTarget(0);
|
||||||
SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED);
|
SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED);
|
||||||
|
|
||||||
@@ -16769,10 +16772,19 @@ void Unit::SetStunned(bool apply)
|
|||||||
RemoveUnitMovementFlag(MOVEMENTFLAG_MASK_MOVING);
|
RemoveUnitMovementFlag(MOVEMENTFLAG_MASK_MOVING);
|
||||||
AddUnitMovementFlag(MOVEMENTFLAG_ROOT);
|
AddUnitMovementFlag(MOVEMENTFLAG_ROOT);
|
||||||
|
|
||||||
WorldPacket data(SMSG_FORCE_MOVE_ROOT, 8);
|
if (GetTypeId() == TYPEID_PLAYER)
|
||||||
data.append(GetPackGUID());
|
{
|
||||||
data << uint32(0);
|
WorldPacket data(SMSG_FORCE_MOVE_ROOT, 10);
|
||||||
SendMessageToSet(&data, true);
|
data.append(GetPackGUID());
|
||||||
|
data << m_rootTimes;
|
||||||
|
SendMessageToSet(&data, true);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
WorldPacket data(SMSG_SPLINE_MOVE_ROOT, 8);
|
||||||
|
data.append(GetPackGUID());
|
||||||
|
SendMessageToSet(&data, true);
|
||||||
|
}
|
||||||
|
|
||||||
// xinef: inform client about our current orientation
|
// xinef: inform client about our current orientation
|
||||||
SendMovementFlagUpdate();
|
SendMovementFlagUpdate();
|
||||||
@@ -16807,10 +16819,19 @@ void Unit::SetStunned(bool apply)
|
|||||||
|
|
||||||
if (!HasUnitState(UNIT_STATE_ROOT)) // prevent moving if it also has root effect
|
if (!HasUnitState(UNIT_STATE_ROOT)) // prevent moving if it also has root effect
|
||||||
{
|
{
|
||||||
WorldPacket data(SMSG_FORCE_MOVE_UNROOT, 8+4);
|
if (GetTypeId() == TYPEID_PLAYER)
|
||||||
data.append(GetPackGUID());
|
{
|
||||||
data << uint32(0);
|
WorldPacket data(SMSG_FORCE_MOVE_UNROOT, 10);
|
||||||
SendMessageToSet(&data, true);
|
data.append(GetPackGUID());
|
||||||
|
data << ++m_rootTimes;
|
||||||
|
SendMessageToSet(&data, true);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
WorldPacket data(SMSG_SPLINE_MOVE_UNROOT, 8);
|
||||||
|
data.append(GetPackGUID());
|
||||||
|
SendMessageToSet(&data, true);
|
||||||
|
}
|
||||||
|
|
||||||
RemoveUnitMovementFlag(MOVEMENTFLAG_ROOT);
|
RemoveUnitMovementFlag(MOVEMENTFLAG_ROOT);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -72,7 +72,22 @@ public:
|
|||||||
if (target->GetGuildId())
|
if (target->GetGuildId())
|
||||||
{
|
{
|
||||||
handler->SendSysMessage(LANG_PLAYER_IN_GUILD);
|
handler->SendSysMessage(LANG_PLAYER_IN_GUILD);
|
||||||
return true;
|
handler->SetSentErrorMessage(true);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sGuildMgr->GetGuildByName(guildName))
|
||||||
|
{
|
||||||
|
handler->SendSysMessage(LANG_GUILD_RENAME_ALREADY_EXISTS);
|
||||||
|
handler->SetSentErrorMessage(true);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sObjectMgr->IsReservedName(guildName) || !sObjectMgr->IsValidCharterName(guildName))
|
||||||
|
{
|
||||||
|
handler->SendSysMessage(LANG_BAD_VALUE);
|
||||||
|
handler->SetSentErrorMessage(true);
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
Guild* guild = new Guild;
|
Guild* guild = new Guild;
|
||||||
|
|||||||
Reference in New Issue
Block a user