mirror of
https://github.com/mangosfour/server.git
synced 2025-12-14 07:37:01 +00:00
Packet fixes
This commit is contained in:
parent
1c1bc92d54
commit
5114c17da2
8 changed files with 65 additions and 59 deletions
|
|
@ -375,8 +375,7 @@ void PlayerMenu::SendQuestGiverQuestList( QEmote eEmote, std::string Title, uint
|
||||||
data << title;
|
data << title;
|
||||||
}
|
}
|
||||||
pSession->SendPacket( &data );
|
pSession->SendPacket( &data );
|
||||||
//uint32 fqid=pQuestMenu->GetItem(0).m_qId;
|
sLog.outDebug("WORLD: Sent SMSG_QUESTGIVER_QUEST_LIST NPC Guid=%u", GUID_LOPART(npcGUID));
|
||||||
//sLog.outDebug( "WORLD: Sent SMSG_QUESTGIVER_QUEST_LIST NPC Guid=%u, questid-0=%u",npcGUID,fqid);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void PlayerMenu::SendQuestGiverStatus( uint8 questStatus, uint64 npcGUID )
|
void PlayerMenu::SendQuestGiverStatus( uint8 questStatus, uint64 npcGUID )
|
||||||
|
|
@ -386,7 +385,7 @@ void PlayerMenu::SendQuestGiverStatus( uint8 questStatus, uint64 npcGUID )
|
||||||
data << uint8(questStatus);
|
data << uint8(questStatus);
|
||||||
|
|
||||||
pSession->SendPacket( &data );
|
pSession->SendPacket( &data );
|
||||||
sLog.outDebug( "WORLD: Sent SMSG_QUESTGIVER_STATUS NPC Guid=%u, status=%u",GUID_LOPART(npcGUID),questStatus);
|
sLog.outDebug( "WORLD: Sent SMSG_QUESTGIVER_STATUS NPC Guid=%u, status=%u", GUID_LOPART(npcGUID), questStatus);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PlayerMenu::SendQuestGiverQuestDetails( Quest const *pQuest, uint64 npcGUID, bool ActivateAccept )
|
void PlayerMenu::SendQuestGiverQuestDetails( Quest const *pQuest, uint64 npcGUID, bool ActivateAccept )
|
||||||
|
|
@ -416,9 +415,11 @@ void PlayerMenu::SendQuestGiverQuestDetails( Quest const *pQuest, uint64 npcGUID
|
||||||
}
|
}
|
||||||
|
|
||||||
data << uint64(npcGUID);
|
data << uint64(npcGUID);
|
||||||
data << uint64(0); // wotlk
|
data << uint64(0); // wotlk, something todo with quest sharing?
|
||||||
data << uint32(pQuest->GetQuestId());
|
data << uint32(pQuest->GetQuestId());
|
||||||
data << Title << Details << Objectives;
|
data << Title;
|
||||||
|
data << Details;
|
||||||
|
data << Objectives;
|
||||||
data << uint32(ActivateAccept);
|
data << uint32(ActivateAccept);
|
||||||
data << uint32(pQuest->GetSuggestedPlayers());
|
data << uint32(pQuest->GetSuggestedPlayers());
|
||||||
data << uint8(0); // new wotlk
|
data << uint8(0); // new wotlk
|
||||||
|
|
@ -458,6 +459,7 @@ void PlayerMenu::SendQuestGiverQuestDetails( Quest const *pQuest, uint64 npcGUID
|
||||||
else
|
else
|
||||||
data << uint32(0);
|
data << uint32(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
data << uint32(pQuest->GetRewOrReqMoney());
|
data << uint32(pQuest->GetRewOrReqMoney());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -476,7 +478,7 @@ void PlayerMenu::SendQuestGiverQuestDetails( Quest const *pQuest, uint64 npcGUID
|
||||||
}
|
}
|
||||||
pSession->SendPacket( &data );
|
pSession->SendPacket( &data );
|
||||||
|
|
||||||
sLog.outDebug("WORLD: Sent SMSG_QUESTGIVER_QUEST_DETAILS NPCGuid=%u, questid=%u",GUID_LOPART(npcGUID),pQuest->GetQuestId());
|
sLog.outDebug("WORLD: Sent SMSG_QUESTGIVER_QUEST_DETAILS NPCGuid=%u, questid=%u", GUID_LOPART(npcGUID), pQuest->GetQuestId());
|
||||||
}
|
}
|
||||||
|
|
||||||
void PlayerMenu::SendQuestQueryResponse( Quest const *pQuest )
|
void PlayerMenu::SendQuestQueryResponse( Quest const *pQuest )
|
||||||
|
|
@ -600,7 +602,7 @@ void PlayerMenu::SendQuestQueryResponse( Quest const *pQuest )
|
||||||
data << ObjectiveText[iI];
|
data << ObjectiveText[iI];
|
||||||
|
|
||||||
pSession->SendPacket( &data );
|
pSession->SendPacket( &data );
|
||||||
sLog.outDebug( "WORLD: Sent SMSG_QUEST_QUERY_RESPONSE questid=%u",pQuest->GetQuestId() );
|
sLog.outDebug( "WORLD: Sent SMSG_QUEST_QUERY_RESPONSE questid=%u", pQuest->GetQuestId() );
|
||||||
}
|
}
|
||||||
|
|
||||||
void PlayerMenu::SendQuestGiverOfferReward( Quest const* pQuest, uint64 npcGUID, bool EnbleNext )
|
void PlayerMenu::SendQuestGiverOfferReward( Quest const* pQuest, uint64 npcGUID, bool EnbleNext )
|
||||||
|
|
@ -682,10 +684,10 @@ void PlayerMenu::SendQuestGiverOfferReward( Quest const* pQuest, uint64 npcGUID,
|
||||||
data << uint32(0x08); // unused by client?
|
data << uint32(0x08); // unused by client?
|
||||||
data << uint32(pQuest->GetRewSpell()); // reward spell, this spell will display (icon) (casted if RewSpellCast==0)
|
data << uint32(pQuest->GetRewSpell()); // reward spell, this spell will display (icon) (casted if RewSpellCast==0)
|
||||||
data << uint32(pQuest->GetRewSpellCast()); // casted spell
|
data << uint32(pQuest->GetRewSpellCast()); // casted spell
|
||||||
data << uint32(0); // Honor points reward, not implemented
|
data << uint32(0); // unknown
|
||||||
data << uint32(pQuest->GetBonusTalents()); // new wotlk
|
data << uint32(pQuest->GetBonusTalents()); // bonus talents
|
||||||
pSession->SendPacket( &data );
|
pSession->SendPacket( &data );
|
||||||
sLog.outDebug( "WORLD: Sent SMSG_QUESTGIVER_OFFER_REWARD NPCGuid=%u, questid=%u",GUID_LOPART(npcGUID),pQuest->GetQuestId() );
|
sLog.outDebug( "WORLD: Sent SMSG_QUESTGIVER_OFFER_REWARD NPCGuid=%u, questid=%u", GUID_LOPART(npcGUID), pQuest->GetQuestId() );
|
||||||
}
|
}
|
||||||
|
|
||||||
void PlayerMenu::SendQuestGiverRequestItems( Quest const *pQuest, uint64 npcGUID, bool Completable, bool CloseOnCancel )
|
void PlayerMenu::SendQuestGiverRequestItems( Quest const *pQuest, uint64 npcGUID, bool Completable, bool CloseOnCancel )
|
||||||
|
|
@ -761,8 +763,10 @@ void PlayerMenu::SendQuestGiverRequestItems( Quest const *pQuest, uint64 npcGUID
|
||||||
else
|
else
|
||||||
data << uint32(0x03);
|
data << uint32(0x03);
|
||||||
|
|
||||||
data << uint32(0x04) << uint32(0x08) << uint32(0x10);
|
data << uint32(0x04);
|
||||||
|
data << uint32(0x08);
|
||||||
|
data << uint32(0x10);
|
||||||
|
|
||||||
pSession->SendPacket( &data );
|
pSession->SendPacket( &data );
|
||||||
sLog.outDebug( "WORLD: Sent SMSG_QUESTGIVER_REQUEST_ITEMS NPCGuid=%u, questid=%u",GUID_LOPART(npcGUID),pQuest->GetQuestId() );
|
sLog.outDebug( "WORLD: Sent SMSG_QUESTGIVER_REQUEST_ITEMS NPCGuid=%u, questid=%u", GUID_LOPART(npcGUID), pQuest->GetQuestId() );
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -466,7 +466,7 @@ void WorldSession::HandleForceSpeedChangeAck(WorldPacket &recv_data)
|
||||||
UnitMoveType move_type;
|
UnitMoveType move_type;
|
||||||
UnitMoveType force_move_type;
|
UnitMoveType force_move_type;
|
||||||
|
|
||||||
static char const* move_type_name[MAX_MOVE_TYPE] = { "Walk", "Run", "Walkback", "Swim", "Swimback", "Turn", "Fly", "Flyback" };
|
static char const* move_type_name[MAX_MOVE_TYPE] = { "Walk", "Run", "Walkback", "Swim", "Swimback", "Turn", "Fly", "Flyback", "Pitch" };
|
||||||
|
|
||||||
uint16 opcode = recv_data.GetOpcode();
|
uint16 opcode = recv_data.GetOpcode();
|
||||||
switch(opcode)
|
switch(opcode)
|
||||||
|
|
|
||||||
|
|
@ -386,7 +386,7 @@ void Object::_BuildMovementUpdate(ByteBuffer * data, uint8 flags, uint32 flags2
|
||||||
*data << ((Unit*)this)->GetSpeed( MOVE_FLY );
|
*data << ((Unit*)this)->GetSpeed( MOVE_FLY );
|
||||||
*data << ((Unit*)this)->GetSpeed( MOVE_FLYBACK );
|
*data << ((Unit*)this)->GetSpeed( MOVE_FLYBACK );
|
||||||
*data << ((Unit*)this)->GetSpeed( MOVE_TURN );
|
*data << ((Unit*)this)->GetSpeed( MOVE_TURN );
|
||||||
*data << float(7);
|
*data << ((Unit*)this)->GetSpeed( MOVE_PITCH );
|
||||||
|
|
||||||
// 0x08000000
|
// 0x08000000
|
||||||
if(flags2 & MOVEMENTFLAG_SPLINE2)
|
if(flags2 & MOVEMENTFLAG_SPLINE2)
|
||||||
|
|
@ -539,10 +539,10 @@ void Object::_BuildMovementUpdate(ByteBuffer * data, uint8 flags, uint32 flags2
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x80
|
// 0x80
|
||||||
if(flags & UPDATEFLAG_WOTLK) // unused for now
|
if(flags & UPDATEFLAG_VEHICLE) // unused for now
|
||||||
{
|
{
|
||||||
|
*data << uint32(0); // vehicle id
|
||||||
*data << float(0);
|
*data << float(0);
|
||||||
*data << uint32(0);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -747,9 +747,8 @@ void Player::EnvironmentalDamage(uint64 guid, EnviromentalDamage type, uint32 da
|
||||||
data << (uint32)damage;
|
data << (uint32)damage;
|
||||||
data << (uint32)0;
|
data << (uint32)0;
|
||||||
data << (uint32)0;
|
data << (uint32)0;
|
||||||
//m_session->SendPacket(&data);
|
|
||||||
//Let other players see that you get damage
|
|
||||||
SendMessageToSet(&data, true);
|
SendMessageToSet(&data, true);
|
||||||
|
|
||||||
DealDamage(this, damage, NULL, SELF_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
DealDamage(this, damage, NULL, SELF_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
||||||
|
|
||||||
if(type==DAMAGE_FALL && !isAlive()) // DealDamage not apply item durability loss at self damage
|
if(type==DAMAGE_FALL && !isAlive()) // DealDamage not apply item durability loss at self damage
|
||||||
|
|
|
||||||
|
|
@ -2584,18 +2584,18 @@ void Spell::SendCastResult(uint8 result)
|
||||||
case SPELL_FAILED_EQUIPPED_ITEM_CLASS:
|
case SPELL_FAILED_EQUIPPED_ITEM_CLASS:
|
||||||
data << uint32(m_spellInfo->EquippedItemClass);
|
data << uint32(m_spellInfo->EquippedItemClass);
|
||||||
data << uint32(m_spellInfo->EquippedItemSubClassMask);
|
data << uint32(m_spellInfo->EquippedItemSubClassMask);
|
||||||
data << uint32(m_spellInfo->EquippedItemInventoryTypeMask);
|
//data << uint32(m_spellInfo->EquippedItemInventoryTypeMask);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
((Player*)m_caster)->GetSession()->SendPacket(&data);
|
((Player*)m_caster)->GetSession()->SendPacket(&data);
|
||||||
}
|
}
|
||||||
else
|
/*else
|
||||||
{
|
{
|
||||||
WorldPacket data(SMSG_CLEAR_EXTRA_AURA_INFO_OBSOLETE, (8+4));
|
WorldPacket data(SMSG_CLEAR_EXTRA_AURA_INFO_OBSOLETE, (8+4));
|
||||||
data.append(m_caster->GetPackGUID());
|
data.append(m_caster->GetPackGUID());
|
||||||
data << uint32(m_spellInfo->Id);
|
data << uint32(m_spellInfo->Id);
|
||||||
((Player*)m_caster)->GetSession()->SendPacket(&data);
|
((Player*)m_caster)->GetSession()->SendPacket(&data);
|
||||||
}
|
}*/
|
||||||
}
|
}
|
||||||
|
|
||||||
void Spell::SendSpellStart()
|
void Spell::SendSpellStart()
|
||||||
|
|
@ -2603,13 +2603,13 @@ void Spell::SendSpellStart()
|
||||||
if(!IsNeedSendToClient())
|
if(!IsNeedSendToClient())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
sLog.outDebug("Sending SMSG_SPELL_START id=%u",m_spellInfo->Id);
|
sLog.outDebug("Sending SMSG_SPELL_START id=%u", m_spellInfo->Id);
|
||||||
|
|
||||||
uint32 castFlags = CAST_FLAG_UNKNOWN1;
|
uint32 castFlags = CAST_FLAG_UNKNOWN1;
|
||||||
if(IsRangedSpell())
|
if(IsRangedSpell())
|
||||||
castFlags |= CAST_FLAG_AMMO;
|
castFlags |= CAST_FLAG_AMMO;
|
||||||
|
|
||||||
Unit * target;
|
Unit *target;
|
||||||
if(!m_targets.getUnitTarget())
|
if(!m_targets.getUnitTarget())
|
||||||
target = m_caster;
|
target = m_caster;
|
||||||
else
|
else
|
||||||
|
|
@ -2800,7 +2800,7 @@ void Spell::SendLogExecute()
|
||||||
data << uint32(count1); // count1 (effect count?)
|
data << uint32(count1); // count1 (effect count?)
|
||||||
for(uint32 i = 0; i < count1; ++i)
|
for(uint32 i = 0; i < count1; ++i)
|
||||||
{
|
{
|
||||||
data << uint32(m_spellInfo->Effect[0]); // spell effect?
|
data << uint32(m_spellInfo->Effect[0]); // spell effect
|
||||||
uint32 count2 = 1;
|
uint32 count2 = 1;
|
||||||
data << uint32(count2); // count2 (target count?)
|
data << uint32(count2); // count2 (target count?)
|
||||||
for(uint32 j = 0; j < count2; ++j)
|
for(uint32 j = 0; j < count2; ++j)
|
||||||
|
|
@ -2846,30 +2846,19 @@ void Spell::SendLogExecute()
|
||||||
data << uint8(0);
|
data << uint8(0);
|
||||||
break;
|
break;
|
||||||
case SPELL_EFFECT_CREATE_ITEM:
|
case SPELL_EFFECT_CREATE_ITEM:
|
||||||
|
case SPELL_EFFECT_157:
|
||||||
data << uint32(m_spellInfo->EffectItemType[0]);
|
data << uint32(m_spellInfo->EffectItemType[0]);
|
||||||
break;
|
break;
|
||||||
case SPELL_EFFECT_SUMMON:
|
case SPELL_EFFECT_SUMMON:
|
||||||
case SPELL_EFFECT_SUMMON_WILD:
|
|
||||||
case SPELL_EFFECT_SUMMON_GUARDIAN:
|
|
||||||
case SPELL_EFFECT_TRANS_DOOR:
|
case SPELL_EFFECT_TRANS_DOOR:
|
||||||
case SPELL_EFFECT_SUMMON_PET:
|
case SPELL_EFFECT_SUMMON_PET:
|
||||||
case SPELL_EFFECT_SUMMON_POSSESSED:
|
|
||||||
//case SPELL_EFFECT_SUMMON_TOTEM:
|
|
||||||
case SPELL_EFFECT_SUMMON_OBJECT_WILD:
|
case SPELL_EFFECT_SUMMON_OBJECT_WILD:
|
||||||
case SPELL_EFFECT_CREATE_HOUSE:
|
case SPELL_EFFECT_CREATE_HOUSE:
|
||||||
case SPELL_EFFECT_DUEL:
|
case SPELL_EFFECT_DUEL:
|
||||||
case SPELL_EFFECT_SUMMON_TOTEM_SLOT1:
|
|
||||||
case SPELL_EFFECT_SUMMON_TOTEM_SLOT2:
|
|
||||||
case SPELL_EFFECT_SUMMON_TOTEM_SLOT3:
|
|
||||||
case SPELL_EFFECT_SUMMON_TOTEM_SLOT4:
|
|
||||||
case SPELL_EFFECT_SUMMON_PHANTASM:
|
|
||||||
case SPELL_EFFECT_SUMMON_CRITTER:
|
|
||||||
case SPELL_EFFECT_SUMMON_OBJECT_SLOT1:
|
case SPELL_EFFECT_SUMMON_OBJECT_SLOT1:
|
||||||
case SPELL_EFFECT_SUMMON_OBJECT_SLOT2:
|
case SPELL_EFFECT_SUMMON_OBJECT_SLOT2:
|
||||||
case SPELL_EFFECT_SUMMON_OBJECT_SLOT3:
|
case SPELL_EFFECT_SUMMON_OBJECT_SLOT3:
|
||||||
case SPELL_EFFECT_SUMMON_OBJECT_SLOT4:
|
case SPELL_EFFECT_SUMMON_OBJECT_SLOT4:
|
||||||
case SPELL_EFFECT_SUMMON_DEMON:
|
|
||||||
case SPELL_EFFECT_150:
|
|
||||||
if(Unit *unit = m_targets.getUnitTarget())
|
if(Unit *unit = m_targets.getUnitTarget())
|
||||||
data.append(unit->GetPackGUID());
|
data.append(unit->GetPackGUID());
|
||||||
else if(m_targets.getItemTargetGUID())
|
else if(m_targets.getItemTargetGUID())
|
||||||
|
|
@ -2888,6 +2877,13 @@ void Spell::SendLogExecute()
|
||||||
else
|
else
|
||||||
data << uint8(0);
|
data << uint8(0);
|
||||||
break;
|
break;
|
||||||
|
case SPELL_EFFECT_RESURRECT:
|
||||||
|
case SPELL_EFFECT_RESURRECT_NEW:
|
||||||
|
if(Unit *unit = m_targets.getUnitTarget())
|
||||||
|
data.append(unit->GetPackGUID());
|
||||||
|
else
|
||||||
|
data << uint8(0);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -2927,7 +2923,7 @@ void Spell::SendChannelUpdate(uint32 time)
|
||||||
|
|
||||||
WorldPacket data( MSG_CHANNEL_UPDATE, 8+4 );
|
WorldPacket data( MSG_CHANNEL_UPDATE, 8+4 );
|
||||||
data.append(m_caster->GetPackGUID());
|
data.append(m_caster->GetPackGUID());
|
||||||
data << time;
|
data << uint32(time);
|
||||||
|
|
||||||
((Player*)m_caster)->GetSession()->SendPacket( &data );
|
((Player*)m_caster)->GetSession()->SendPacket( &data );
|
||||||
}
|
}
|
||||||
|
|
@ -2964,8 +2960,8 @@ void Spell::SendChannelStart(uint32 duration)
|
||||||
{
|
{
|
||||||
WorldPacket data( MSG_CHANNEL_START, (8+4+4) );
|
WorldPacket data( MSG_CHANNEL_START, (8+4+4) );
|
||||||
data.append(m_caster->GetPackGUID());
|
data.append(m_caster->GetPackGUID());
|
||||||
data << m_spellInfo->Id;
|
data << uint32(m_spellInfo->Id);
|
||||||
data << duration;
|
data << uint32(duration);
|
||||||
|
|
||||||
((Player*)m_caster)->GetSession()->SendPacket( &data );
|
((Player*)m_caster)->GetSession()->SendPacket( &data );
|
||||||
}
|
}
|
||||||
|
|
@ -2979,9 +2975,15 @@ void Spell::SendChannelStart(uint32 duration)
|
||||||
void Spell::SendResurrectRequest(Player* target)
|
void Spell::SendResurrectRequest(Player* target)
|
||||||
{
|
{
|
||||||
WorldPacket data(SMSG_RESURRECT_REQUEST, (8+4+2+4));
|
WorldPacket data(SMSG_RESURRECT_REQUEST, (8+4+2+4));
|
||||||
data << m_caster->GetGUID();
|
data << uint64(m_caster->GetGUID());
|
||||||
data << uint32(1) << uint16(0) << uint32(1);
|
uint32 count = 1;
|
||||||
|
data << uint32(count); // amount of bytes to read
|
||||||
|
|
||||||
|
for(uint32 i = 0; i < count; ++i)
|
||||||
|
data << uint8(0);
|
||||||
|
|
||||||
|
data << uint8(0);
|
||||||
|
data << uint8(0);
|
||||||
target->GetSession()->SendPacket(&data);
|
target->GetSession()->SendPacket(&data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2991,8 +2993,8 @@ void Spell::SendPlaySpellVisual(uint32 SpellID)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
WorldPacket data(SMSG_PLAY_SPELL_VISUAL, 12);
|
WorldPacket data(SMSG_PLAY_SPELL_VISUAL, 12);
|
||||||
data << m_caster->GetGUID();
|
data << uint64(m_caster->GetGUID());
|
||||||
data << SpellID;
|
data << uint32(SpellID); // spell visual id?
|
||||||
((Player*)m_caster)->GetSession()->SendPacket(&data);
|
((Player*)m_caster)->GetSession()->SendPacket(&data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -4163,7 +4165,7 @@ uint8 Spell::CheckCasterAuras() const
|
||||||
else if(m_caster->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PACIFIED) && m_spellInfo->PreventionType==SPELL_PREVENTION_TYPE_PACIFY)
|
else if(m_caster->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PACIFIED) && m_spellInfo->PreventionType==SPELL_PREVENTION_TYPE_PACIFY)
|
||||||
prevented_reason = SPELL_FAILED_PACIFIED;
|
prevented_reason = SPELL_FAILED_PACIFIED;
|
||||||
|
|
||||||
// Attr must make flag drop spell totally immuned from all effects
|
// Attr must make flag drop spell totally immune from all effects
|
||||||
if(prevented_reason)
|
if(prevented_reason)
|
||||||
{
|
{
|
||||||
if(school_immune || mechanic_immune || dispel_immune)
|
if(school_immune || mechanic_immune || dispel_immune)
|
||||||
|
|
@ -4630,7 +4632,7 @@ uint8 Spell::CheckItems()
|
||||||
return SPELL_FAILED_CANT_BE_DISENCHANTED;
|
return SPELL_FAILED_CANT_BE_DISENCHANTED;
|
||||||
|
|
||||||
uint32 item_quality = itemProto->Quality;
|
uint32 item_quality = itemProto->Quality;
|
||||||
// 2.0.x addon: Check player enchanting level agains the item desenchanting requirements
|
// 2.0.x addon: Check player enchanting level against the item desenchanting requirements
|
||||||
uint32 item_disenchantskilllevel = itemProto->RequiredDisenchantSkill;
|
uint32 item_disenchantskilllevel = itemProto->RequiredDisenchantSkill;
|
||||||
if (item_disenchantskilllevel == uint32(-1))
|
if (item_disenchantskilllevel == uint32(-1))
|
||||||
return SPELL_FAILED_CANT_BE_DISENCHANTED;
|
return SPELL_FAILED_CANT_BE_DISENCHANTED;
|
||||||
|
|
|
||||||
|
|
@ -56,6 +56,7 @@ float baseMoveSpeed[MAX_MOVE_TYPE] =
|
||||||
3.141594f, // MOVE_TURN
|
3.141594f, // MOVE_TURN
|
||||||
7.0f, // MOVE_FLY
|
7.0f, // MOVE_FLY
|
||||||
4.5f, // MOVE_FLYBACK
|
4.5f, // MOVE_FLYBACK
|
||||||
|
3.14f // MOVE_PITCH
|
||||||
};
|
};
|
||||||
|
|
||||||
// auraTypes contains attacker auras capable of proc'ing cast auras
|
// auraTypes contains attacker auras capable of proc'ing cast auras
|
||||||
|
|
@ -1470,9 +1471,8 @@ uint32 Unit::SpellNonMeleeDamageLog(Unit *pVictim, uint32 spellID, uint32 damage
|
||||||
void Unit::HandleEmoteCommand(uint32 anim_id)
|
void Unit::HandleEmoteCommand(uint32 anim_id)
|
||||||
{
|
{
|
||||||
WorldPacket data( SMSG_EMOTE, 12 );
|
WorldPacket data( SMSG_EMOTE, 12 );
|
||||||
data << anim_id << GetGUID();
|
data << uint32(anim_id);
|
||||||
WPAssert(data.size() == 12);
|
data << uint64(GetGUID());
|
||||||
|
|
||||||
SendMessageToSet(&data, true);
|
SendMessageToSet(&data, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1665,7 +1665,7 @@ void Unit::CalcAbsorbResist(Unit *pVictim,SpellSchoolMask schoolMask, DamageEffe
|
||||||
RemainingDamage -= currentAbsorb;
|
RemainingDamage -= currentAbsorb;
|
||||||
}
|
}
|
||||||
|
|
||||||
// only split damage if not damaing yourself
|
// only split damage if not damaging yourself
|
||||||
if(pVictim != this)
|
if(pVictim != this)
|
||||||
{
|
{
|
||||||
AuraList const& vSplitDamageFlat = pVictim->GetAurasByType(SPELL_AURA_SPLIT_DAMAGE_FLAT);
|
AuraList const& vSplitDamageFlat = pVictim->GetAurasByType(SPELL_AURA_SPLIT_DAMAGE_FLAT);
|
||||||
|
|
@ -2585,8 +2585,8 @@ float Unit::CalculateLevelPenalty(SpellEntry const* spellProto) const
|
||||||
void Unit::SendAttackStart(Unit* pVictim)
|
void Unit::SendAttackStart(Unit* pVictim)
|
||||||
{
|
{
|
||||||
WorldPacket data( SMSG_ATTACKSTART, 16 );
|
WorldPacket data( SMSG_ATTACKSTART, 16 );
|
||||||
data << GetGUID();
|
data << uint64(GetGUID());
|
||||||
data << pVictim->GetGUID();
|
data << uint64(pVictim->GetGUID());
|
||||||
|
|
||||||
SendMessageToSet(&data, true);
|
SendMessageToSet(&data, true);
|
||||||
DEBUG_LOG( "WORLD: Sent SMSG_ATTACKSTART" );
|
DEBUG_LOG( "WORLD: Sent SMSG_ATTACKSTART" );
|
||||||
|
|
@ -3847,7 +3847,7 @@ bool Unit::RemoveNoStackAurasDueToAura(Aura *Aur)
|
||||||
if(is_triggered_by_spell)
|
if(is_triggered_by_spell)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// prevent remove form main spell by triggred passive spells
|
// prevent remove form main spell by triggered passive spells
|
||||||
switch(i_spellProto->EffectApplyAuraName[j]) // main aura added before triggered spell
|
switch(i_spellProto->EffectApplyAuraName[j]) // main aura added before triggered spell
|
||||||
{
|
{
|
||||||
case SPELL_AURA_MOD_SHAPESHIFT:
|
case SPELL_AURA_MOD_SHAPESHIFT:
|
||||||
|
|
@ -6924,7 +6924,7 @@ bool Unit::Attack(Unit *victim, bool meleeAttack)
|
||||||
if(GetTypeId()==TYPEID_UNIT)
|
if(GetTypeId()==TYPEID_UNIT)
|
||||||
{
|
{
|
||||||
WorldPacket data(SMSG_AI_REACTION, 12);
|
WorldPacket data(SMSG_AI_REACTION, 12);
|
||||||
data << GetGUID();
|
data << uint64(GetGUID());
|
||||||
data << uint32(AI_REACTION_AGGRO); // Aggro sound
|
data << uint32(AI_REACTION_AGGRO); // Aggro sound
|
||||||
((WorldObject*)this)->SendMessageToSet(&data, true);
|
((WorldObject*)this)->SendMessageToSet(&data, true);
|
||||||
|
|
||||||
|
|
@ -7174,6 +7174,7 @@ void Unit::SendHealSpellLog(Unit *pVictim, uint32 SpellID, uint32 Damage, bool c
|
||||||
data.append(GetPackGUID());
|
data.append(GetPackGUID());
|
||||||
data << uint32(SpellID);
|
data << uint32(SpellID);
|
||||||
data << uint32(Damage);
|
data << uint32(Damage);
|
||||||
|
data << uint32(0); // over healing?
|
||||||
data << uint8(critical ? 1 : 0);
|
data << uint8(critical ? 1 : 0);
|
||||||
data << uint8(0); // unused in client?
|
data << uint8(0); // unused in client?
|
||||||
SendMessageToSet(&data, true);
|
SendMessageToSet(&data, true);
|
||||||
|
|
@ -7187,7 +7188,6 @@ void Unit::SendEnergizeSpellLog(Unit *pVictim, uint32 SpellID, uint32 Damage, Po
|
||||||
data << uint32(SpellID);
|
data << uint32(SpellID);
|
||||||
data << uint32(powertype);
|
data << uint32(powertype);
|
||||||
data << uint32(Damage);
|
data << uint32(Damage);
|
||||||
//data << uint8(critical ? 1 : 0); // removed in 2.4.0
|
|
||||||
SendMessageToSet(&data, true);
|
SendMessageToSet(&data, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -7644,7 +7644,7 @@ int32 Unit::SpellBaseDamageBonusForVictim(SpellSchoolMask schoolMask, Unit *pVic
|
||||||
|
|
||||||
bool Unit::isSpellCrit(Unit *pVictim, SpellEntry const *spellProto, SpellSchoolMask schoolMask, WeaponAttackType attackType)
|
bool Unit::isSpellCrit(Unit *pVictim, SpellEntry const *spellProto, SpellSchoolMask schoolMask, WeaponAttackType attackType)
|
||||||
{
|
{
|
||||||
// not criting spell
|
// not critting spell
|
||||||
if((spellProto->AttributesEx2 & SPELL_ATTR_EX2_CANT_CRIT))
|
if((spellProto->AttributesEx2 & SPELL_ATTR_EX2_CANT_CRIT))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
|
@ -8327,7 +8327,7 @@ void Unit::ApplySpellDispelImmunity(const SpellEntry * spellProto, DispelType ty
|
||||||
float Unit::GetWeaponProcChance() const
|
float Unit::GetWeaponProcChance() const
|
||||||
{
|
{
|
||||||
// normalized proc chance for weapon attack speed
|
// normalized proc chance for weapon attack speed
|
||||||
// (odd formulae...)
|
// (odd formula...)
|
||||||
if(isAttackReady(BASE_ATTACK))
|
if(isAttackReady(BASE_ATTACK))
|
||||||
return (GetAttackTime(BASE_ATTACK) * 1.8f / 1000.0f);
|
return (GetAttackTime(BASE_ATTACK) * 1.8f / 1000.0f);
|
||||||
else if (haveOffhandWeapon() && isAttackReady(OFF_ATTACK))
|
else if (haveOffhandWeapon() && isAttackReady(OFF_ATTACK))
|
||||||
|
|
|
||||||
|
|
@ -383,10 +383,11 @@ enum UnitMoveType
|
||||||
MOVE_SWIMBACK = 4,
|
MOVE_SWIMBACK = 4,
|
||||||
MOVE_TURN = 5,
|
MOVE_TURN = 5,
|
||||||
MOVE_FLY = 6,
|
MOVE_FLY = 6,
|
||||||
MOVE_FLYBACK = 7
|
MOVE_FLYBACK = 7,
|
||||||
|
MOVE_PITCH = 8
|
||||||
};
|
};
|
||||||
|
|
||||||
#define MAX_MOVE_TYPE 8
|
#define MAX_MOVE_TYPE 9
|
||||||
|
|
||||||
extern float baseMoveSpeed[MAX_MOVE_TYPE];
|
extern float baseMoveSpeed[MAX_MOVE_TYPE];
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,7 @@ enum OBJECT_UPDATE_FLAGS
|
||||||
UPDATEFLAG_HIGHGUID = 0x10,
|
UPDATEFLAG_HIGHGUID = 0x10,
|
||||||
UPDATEFLAG_LIVING = 0x20,
|
UPDATEFLAG_LIVING = 0x20,
|
||||||
UPDATEFLAG_HASPOSITION = 0x40,
|
UPDATEFLAG_HASPOSITION = 0x40,
|
||||||
UPDATEFLAG_WOTLK = 0x80
|
UPDATEFLAG_VEHICLE = 0x80
|
||||||
};
|
};
|
||||||
|
|
||||||
class UpdateData
|
class UpdateData
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue