fix(Core/Misc): fix some exploits (#2630)

This commit is contained in:
Viste
2020-02-18 10:26:12 +03:00
committed by GitHub
parent 3b5b7a506f
commit 38e8503d21
3 changed files with 46 additions and 10 deletions
+1 -1
View File
@@ -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();
+29 -8
View File
@@ -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);
} }
+16 -1
View File
@@ -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;