SMSG_SPELL_FAILURE: a more correct usage
This commit is contained in:
parent
901bdcad53
commit
351b6f2349
@ -349,7 +349,7 @@ void Opcodes::BuildOpcodeList()
|
|||||||
/*[-ZERO] Need check */ /*0x11E*/ StoreOpcode(CMSG_CLEAR_TRADE_ITEM, "CMSG_CLEAR_TRADE_ITEM", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleClearTradeItemOpcode);
|
/*[-ZERO] Need check */ /*0x11E*/ StoreOpcode(CMSG_CLEAR_TRADE_ITEM, "CMSG_CLEAR_TRADE_ITEM", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleClearTradeItemOpcode);
|
||||||
/*[-ZERO] Need check */ /*0x11F*/ StoreOpcode(CMSG_SET_TRADE_GOLD, "CMSG_SET_TRADE_GOLD", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetTradeGoldOpcode);
|
/*[-ZERO] Need check */ /*0x11F*/ StoreOpcode(CMSG_SET_TRADE_GOLD, "CMSG_SET_TRADE_GOLD", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetTradeGoldOpcode);
|
||||||
/*0x120*/ StoreOpcode(SMSG_TRADE_STATUS, "SMSG_TRADE_STATUS", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
|
/*0x120*/ StoreOpcode(SMSG_TRADE_STATUS, "SMSG_TRADE_STATUS", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
|
||||||
/*[-ZERO] Need check */ /*0x121*/ StoreOpcode(SMSG_TRADE_STATUS_EXTENDED, "SMSG_TRADE_STATUS_EXTENDED", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
|
/*0x121*/ StoreOpcode(SMSG_TRADE_STATUS_EXTENDED, "SMSG_TRADE_STATUS_EXTENDED", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
|
||||||
/*0x122*/ StoreOpcode(SMSG_INITIALIZE_FACTIONS, "SMSG_INITIALIZE_FACTIONS", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
|
/*0x122*/ StoreOpcode(SMSG_INITIALIZE_FACTIONS, "SMSG_INITIALIZE_FACTIONS", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
|
||||||
/*0x123*/ StoreOpcode(SMSG_SET_FACTION_VISIBLE, "SMSG_SET_FACTION_VISIBLE", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
|
/*0x123*/ StoreOpcode(SMSG_SET_FACTION_VISIBLE, "SMSG_SET_FACTION_VISIBLE", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
|
||||||
/*0x124*/ StoreOpcode(SMSG_SET_FACTION_STANDING, "SMSG_SET_FACTION_STANDING", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
|
/*0x124*/ StoreOpcode(SMSG_SET_FACTION_STANDING, "SMSG_SET_FACTION_STANDING", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
|
||||||
@ -367,7 +367,7 @@ void Opcodes::BuildOpcodeList()
|
|||||||
/*[-ZERO] Need check */ /*0x130*/ StoreOpcode(SMSG_CAST_FAILED, "SMSG_CAST_FAILED", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
|
/*[-ZERO] Need check */ /*0x130*/ StoreOpcode(SMSG_CAST_FAILED, "SMSG_CAST_FAILED", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
|
||||||
/*0x131*/ StoreOpcode(SMSG_SPELL_START, "SMSG_SPELL_START", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
|
/*0x131*/ StoreOpcode(SMSG_SPELL_START, "SMSG_SPELL_START", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
|
||||||
/*0x132*/ StoreOpcode(SMSG_SPELL_GO, "SMSG_SPELL_GO", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
|
/*0x132*/ StoreOpcode(SMSG_SPELL_GO, "SMSG_SPELL_GO", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
|
||||||
/*[-ZERO] Need check */ /*0x133*/ StoreOpcode(SMSG_SPELL_FAILURE, "SMSG_SPELL_FAILURE", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
|
/*0x133*/ StoreOpcode(SMSG_SPELL_FAILURE, "SMSG_SPELL_FAILURE", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
|
||||||
/*0x134*/ StoreOpcode(SMSG_SPELL_COOLDOWN, "SMSG_SPELL_COOLDOWN", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
|
/*0x134*/ StoreOpcode(SMSG_SPELL_COOLDOWN, "SMSG_SPELL_COOLDOWN", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
|
||||||
/*[-ZERO] Need check */ /*0x135*/ StoreOpcode(SMSG_COOLDOWN_EVENT, "SMSG_COOLDOWN_EVENT", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
|
/*[-ZERO] Need check */ /*0x135*/ StoreOpcode(SMSG_COOLDOWN_EVENT, "SMSG_COOLDOWN_EVENT", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
|
||||||
/*[-ZERO] Need check */ /*0x136*/ StoreOpcode(CMSG_CANCEL_AURA, "CMSG_CANCEL_AURA", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCancelAuraOpcode);
|
/*[-ZERO] Need check */ /*0x136*/ StoreOpcode(CMSG_CANCEL_AURA, "CMSG_CANCEL_AURA", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCancelAuraOpcode);
|
||||||
@ -736,7 +736,7 @@ void Opcodes::BuildOpcodeList()
|
|||||||
/*[-ZERO] Need check */ /*0x2A3*/ StoreOpcode(CMSG_LOOT_MASTER_GIVE, "CMSG_LOOT_MASTER_GIVE", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleLootMasterGiveOpcode);
|
/*[-ZERO] Need check */ /*0x2A3*/ StoreOpcode(CMSG_LOOT_MASTER_GIVE, "CMSG_LOOT_MASTER_GIVE", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleLootMasterGiveOpcode);
|
||||||
/*[-ZERO] Need check */ /*0x2A4*/ StoreOpcode(SMSG_LOOT_MASTER_LIST, "SMSG_LOOT_MASTER_LIST", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
|
/*[-ZERO] Need check */ /*0x2A4*/ StoreOpcode(SMSG_LOOT_MASTER_LIST, "SMSG_LOOT_MASTER_LIST", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
|
||||||
/*[-ZERO] Need check */ /*0x2A5*/ StoreOpcode(SMSG_SET_FORCED_REACTIONS, "SMSG_SET_FORCED_REACTIONS", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
|
/*[-ZERO] Need check */ /*0x2A5*/ StoreOpcode(SMSG_SET_FORCED_REACTIONS, "SMSG_SET_FORCED_REACTIONS", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
|
||||||
/*[-ZERO] Need check */ /*0x2A6*/ StoreOpcode(SMSG_SPELL_FAILED_OTHER, "SMSG_SPELL_FAILED_OTHER", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
|
/*0x2A6*/ StoreOpcode(SMSG_SPELL_FAILED_OTHER, "SMSG_SPELL_FAILED_OTHER", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
|
||||||
/*[-ZERO] Need check */ /*0x2A7*/ StoreOpcode(SMSG_GAMEOBJECT_RESET_STATE, "SMSG_GAMEOBJECT_RESET_STATE", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
|
/*[-ZERO] Need check */ /*0x2A7*/ StoreOpcode(SMSG_GAMEOBJECT_RESET_STATE, "SMSG_GAMEOBJECT_RESET_STATE", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
|
||||||
/*[-ZERO] Need check */ /*0x2A8*/ StoreOpcode(CMSG_REPAIR_ITEM, "CMSG_REPAIR_ITEM", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRepairItemOpcode);
|
/*[-ZERO] Need check */ /*0x2A8*/ StoreOpcode(CMSG_REPAIR_ITEM, "CMSG_REPAIR_ITEM", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRepairItemOpcode);
|
||||||
/*[-ZERO] Need check */ /*0x2A9*/ StoreOpcode(SMSG_CHAT_PLAYER_NOT_FOUND, "SMSG_CHAT_PLAYER_NOT_FOUND", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
|
/*[-ZERO] Need check */ /*0x2A9*/ StoreOpcode(SMSG_CHAT_PLAYER_NOT_FOUND, "SMSG_CHAT_PLAYER_NOT_FOUND", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
|
||||||
|
@ -2632,7 +2632,7 @@ void Spell::cancel()
|
|||||||
//(no break)
|
//(no break)
|
||||||
case SPELL_STATE_DELAYED:
|
case SPELL_STATE_DELAYED:
|
||||||
{
|
{
|
||||||
SendInterrupted(0);
|
SendInterrupted(SPELL_FAILED_INTERRUPTED);
|
||||||
|
|
||||||
if (sendInterrupt)
|
if (sendInterrupt)
|
||||||
{ SendCastResult(SPELL_FAILED_INTERRUPTED); }
|
{ SendCastResult(SPELL_FAILED_INTERRUPTED); }
|
||||||
@ -2651,7 +2651,7 @@ void Spell::cancel()
|
|||||||
}
|
}
|
||||||
|
|
||||||
SendChannelUpdate(0);
|
SendChannelUpdate(0);
|
||||||
SendInterrupted(0);
|
SendInterrupted(SPELL_FAILED_INTERRUPTED);
|
||||||
|
|
||||||
if (sendInterrupt)
|
if (sendInterrupt)
|
||||||
{ SendCastResult(SPELL_FAILED_INTERRUPTED); }
|
{ SendCastResult(SPELL_FAILED_INTERRUPTED); }
|
||||||
@ -3274,10 +3274,9 @@ void Spell::SendCastResult(SpellCastResult result)
|
|||||||
// Reseting emote state for case not handled by the client.
|
// Reseting emote state for case not handled by the client.
|
||||||
if (result == SPELL_FAILED_CHEST_IN_USE)
|
if (result == SPELL_FAILED_CHEST_IN_USE)
|
||||||
{
|
{
|
||||||
SendInterrupted(0);
|
SendInterrupted(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SendCastResult((Player*)m_caster, m_spellInfo, result);
|
SendCastResult((Player*)m_caster, m_spellInfo, result);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3587,18 +3586,26 @@ void Spell::SendLogExecute()
|
|||||||
m_caster->SendMessageToSet(&data, true);
|
m_caster->SendMessageToSet(&data, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Spell::SendInterrupted(uint8 result)
|
void Spell::SendInterrupted(SpellCastResult result)
|
||||||
{
|
{
|
||||||
WorldPacket data(SMSG_SPELL_FAILURE, (8 + 4 + 1));
|
Player *casterPlayer = m_caster->ToPlayer();
|
||||||
data << m_caster->GetPackGUID();
|
|
||||||
data << m_spellInfo->Id;
|
|
||||||
data << result;
|
|
||||||
m_caster->SendMessageToSet(&data, true);
|
|
||||||
|
|
||||||
data.Initialize(SMSG_SPELL_FAILED_OTHER, (8 + 4));
|
if (casterPlayer)
|
||||||
|
{
|
||||||
|
WorldPacket data(SMSG_SPELL_FAILURE, (8 + 4 + 1));
|
||||||
|
data << m_caster->GetObjectGuid();
|
||||||
|
data << m_spellInfo->Id;
|
||||||
|
data << uint8(result);
|
||||||
|
casterPlayer->SendDirectMessage(&data);
|
||||||
|
}
|
||||||
|
|
||||||
|
WorldPacket data(SMSG_SPELL_FAILED_OTHER, (8 + 4));
|
||||||
data << m_caster->GetObjectGuid();
|
data << m_caster->GetObjectGuid();
|
||||||
data << m_spellInfo->Id;
|
data << m_spellInfo->Id;
|
||||||
m_caster->SendMessageToSet(&data, true);
|
if (casterPlayer)
|
||||||
|
casterPlayer->SendMessageToSetExcept(&data, casterPlayer);
|
||||||
|
else
|
||||||
|
m_caster->SendMessageToSet(&data, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Spell::SendChannelUpdate(uint32 time)
|
void Spell::SendChannelUpdate(uint32 time)
|
||||||
@ -4458,14 +4465,14 @@ SpellCastResult Spell::CheckCast(bool strict)
|
|||||||
// Must be behind the target.
|
// Must be behind the target.
|
||||||
if (m_spellInfo->AttributesEx2 == SPELL_ATTR_EX2_UNK20 && m_spellInfo->HasAttribute(SPELL_ATTR_EX_UNK9) && target->HasInArc(M_PI_F, m_caster))
|
if (m_spellInfo->AttributesEx2 == SPELL_ATTR_EX2_UNK20 && m_spellInfo->HasAttribute(SPELL_ATTR_EX_UNK9) && target->HasInArc(M_PI_F, m_caster))
|
||||||
{
|
{
|
||||||
SendInterrupted(2);
|
SendInterrupted(SPELL_FAILED_NOT_BEHIND);
|
||||||
return SPELL_FAILED_NOT_BEHIND;
|
return SPELL_FAILED_NOT_BEHIND;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Target must be facing you.
|
// Target must be facing you.
|
||||||
if ((m_spellInfo->Attributes == (SPELL_ATTR_UNK4 | SPELL_ATTR_NOT_SHAPESHIFT | SPELL_ATTR_UNK18 | SPELL_ATTR_STOP_ATTACK_TARGET)) && !target->HasInArc(M_PI_F, m_caster))
|
if ((m_spellInfo->Attributes == (SPELL_ATTR_UNK4 | SPELL_ATTR_NOT_SHAPESHIFT | SPELL_ATTR_UNK18 | SPELL_ATTR_STOP_ATTACK_TARGET)) && !target->HasInArc(M_PI_F, m_caster))
|
||||||
{
|
{
|
||||||
SendInterrupted(2);
|
SendInterrupted(SPELL_FAILED_NOT_INFRONT);
|
||||||
return SPELL_FAILED_NOT_INFRONT;
|
return SPELL_FAILED_NOT_INFRONT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -367,7 +367,7 @@ class Spell
|
|||||||
void SendSpellGo();
|
void SendSpellGo();
|
||||||
void SendSpellCooldown();
|
void SendSpellCooldown();
|
||||||
void SendLogExecute();
|
void SendLogExecute();
|
||||||
void SendInterrupted(uint8 result);
|
void SendInterrupted(SpellCastResult result);
|
||||||
void SendChannelUpdate(uint32 time);
|
void SendChannelUpdate(uint32 time);
|
||||||
void SendChannelStart(uint32 duration);
|
void SendChannelStart(uint32 duration);
|
||||||
void SendResurrectRequest(Player* target);
|
void SendResurrectRequest(Player* target);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user