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 */ /*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);
|
||||
/*[-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);
|
||||
/*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);
|
||||
@ -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);
|
||||
/*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);
|
||||
/*[-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);
|
||||
/*[-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);
|
||||
@ -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 */ /*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 */ /*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 */ /*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);
|
||||
|
@ -2632,7 +2632,7 @@ void Spell::cancel()
|
||||
//(no break)
|
||||
case SPELL_STATE_DELAYED:
|
||||
{
|
||||
SendInterrupted(0);
|
||||
SendInterrupted(SPELL_FAILED_INTERRUPTED);
|
||||
|
||||
if (sendInterrupt)
|
||||
{ SendCastResult(SPELL_FAILED_INTERRUPTED); }
|
||||
@ -2651,7 +2651,7 @@ void Spell::cancel()
|
||||
}
|
||||
|
||||
SendChannelUpdate(0);
|
||||
SendInterrupted(0);
|
||||
SendInterrupted(SPELL_FAILED_INTERRUPTED);
|
||||
|
||||
if (sendInterrupt)
|
||||
{ SendCastResult(SPELL_FAILED_INTERRUPTED); }
|
||||
@ -3274,10 +3274,9 @@ void Spell::SendCastResult(SpellCastResult result)
|
||||
// Reseting emote state for case not handled by the client.
|
||||
if (result == SPELL_FAILED_CHEST_IN_USE)
|
||||
{
|
||||
SendInterrupted(0);
|
||||
SendInterrupted(result);
|
||||
}
|
||||
|
||||
|
||||
SendCastResult((Player*)m_caster, m_spellInfo, result);
|
||||
}
|
||||
|
||||
@ -3587,17 +3586,25 @@ void Spell::SendLogExecute()
|
||||
m_caster->SendMessageToSet(&data, true);
|
||||
}
|
||||
|
||||
void Spell::SendInterrupted(uint8 result)
|
||||
void Spell::SendInterrupted(SpellCastResult result)
|
||||
{
|
||||
Player *casterPlayer = m_caster->ToPlayer();
|
||||
|
||||
if (casterPlayer)
|
||||
{
|
||||
WorldPacket data(SMSG_SPELL_FAILURE, (8 + 4 + 1));
|
||||
data << m_caster->GetPackGUID();
|
||||
data << m_spellInfo->Id;
|
||||
data << result;
|
||||
m_caster->SendMessageToSet(&data, true);
|
||||
|
||||
data.Initialize(SMSG_SPELL_FAILED_OTHER, (8 + 4));
|
||||
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_spellInfo->Id;
|
||||
if (casterPlayer)
|
||||
casterPlayer->SendMessageToSetExcept(&data, casterPlayer);
|
||||
else
|
||||
m_caster->SendMessageToSet(&data, true);
|
||||
}
|
||||
|
||||
@ -4458,14 +4465,14 @@ SpellCastResult Spell::CheckCast(bool strict)
|
||||
// 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))
|
||||
{
|
||||
SendInterrupted(2);
|
||||
SendInterrupted(SPELL_FAILED_NOT_BEHIND);
|
||||
return SPELL_FAILED_NOT_BEHIND;
|
||||
}
|
||||
|
||||
// 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))
|
||||
{
|
||||
SendInterrupted(2);
|
||||
SendInterrupted(SPELL_FAILED_NOT_INFRONT);
|
||||
return SPELL_FAILED_NOT_INFRONT;
|
||||
}
|
||||
|
||||
|
@ -367,7 +367,7 @@ class Spell
|
||||
void SendSpellGo();
|
||||
void SendSpellCooldown();
|
||||
void SendLogExecute();
|
||||
void SendInterrupted(uint8 result);
|
||||
void SendInterrupted(SpellCastResult result);
|
||||
void SendChannelUpdate(uint32 time);
|
||||
void SendChannelStart(uint32 duration);
|
||||
void SendResurrectRequest(Player* target);
|
||||
|
Loading…
x
Reference in New Issue
Block a user