diff --git a/src/game/GossipDef.cpp b/src/game/GossipDef.cpp index 04d13158d..06e51aee0 100644 --- a/src/game/GossipDef.cpp +++ b/src/game/GossipDef.cpp @@ -375,8 +375,7 @@ void PlayerMenu::SendQuestGiverQuestList( QEmote eEmote, std::string Title, uint data << title; } pSession->SendPacket( &data ); - //uint32 fqid=pQuestMenu->GetItem(0).m_qId; - //sLog.outDebug( "WORLD: Sent SMSG_QUESTGIVER_QUEST_LIST NPC Guid=%u, questid-0=%u",npcGUID,fqid); + sLog.outDebug("WORLD: Sent SMSG_QUESTGIVER_QUEST_LIST NPC Guid=%u", GUID_LOPART(npcGUID)); } void PlayerMenu::SendQuestGiverStatus( uint8 questStatus, uint64 npcGUID ) @@ -386,7 +385,7 @@ void PlayerMenu::SendQuestGiverStatus( uint8 questStatus, uint64 npcGUID ) data << uint8(questStatus); 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 ) @@ -416,9 +415,11 @@ void PlayerMenu::SendQuestGiverQuestDetails( Quest const *pQuest, uint64 npcGUID } data << uint64(npcGUID); - data << uint64(0); // wotlk + data << uint64(0); // wotlk, something todo with quest sharing? data << uint32(pQuest->GetQuestId()); - data << Title << Details << Objectives; + data << Title; + data << Details; + data << Objectives; data << uint32(ActivateAccept); data << uint32(pQuest->GetSuggestedPlayers()); data << uint8(0); // new wotlk @@ -458,6 +459,7 @@ void PlayerMenu::SendQuestGiverQuestDetails( Quest const *pQuest, uint64 npcGUID else data << uint32(0); } + data << uint32(pQuest->GetRewOrReqMoney()); } @@ -476,7 +478,7 @@ void PlayerMenu::SendQuestGiverQuestDetails( Quest const *pQuest, uint64 npcGUID } 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 ) @@ -600,7 +602,7 @@ void PlayerMenu::SendQuestQueryResponse( Quest const *pQuest ) data << ObjectiveText[iI]; 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 ) @@ -682,10 +684,10 @@ void PlayerMenu::SendQuestGiverOfferReward( Quest const* pQuest, uint64 npcGUID, data << uint32(0x08); // unused by client? data << uint32(pQuest->GetRewSpell()); // reward spell, this spell will display (icon) (casted if RewSpellCast==0) data << uint32(pQuest->GetRewSpellCast()); // casted spell - data << uint32(0); // Honor points reward, not implemented - data << uint32(pQuest->GetBonusTalents()); // new wotlk + data << uint32(0); // unknown + data << uint32(pQuest->GetBonusTalents()); // bonus talents 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 ) @@ -761,8 +763,10 @@ void PlayerMenu::SendQuestGiverRequestItems( Quest const *pQuest, uint64 npcGUID else data << uint32(0x03); - data << uint32(0x04) << uint32(0x08) << uint32(0x10); + data << uint32(0x04); + data << uint32(0x08); + data << uint32(0x10); 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() ); } diff --git a/src/game/MovementHandler.cpp b/src/game/MovementHandler.cpp index d1cf3a9ed..d88b35222 100644 --- a/src/game/MovementHandler.cpp +++ b/src/game/MovementHandler.cpp @@ -466,7 +466,7 @@ void WorldSession::HandleForceSpeedChangeAck(WorldPacket &recv_data) UnitMoveType 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(); switch(opcode) diff --git a/src/game/Object.cpp b/src/game/Object.cpp index 67b5d7782..f2c9e168a 100644 --- a/src/game/Object.cpp +++ b/src/game/Object.cpp @@ -386,7 +386,7 @@ void Object::_BuildMovementUpdate(ByteBuffer * data, uint8 flags, uint32 flags2 *data << ((Unit*)this)->GetSpeed( MOVE_FLY ); *data << ((Unit*)this)->GetSpeed( MOVE_FLYBACK ); *data << ((Unit*)this)->GetSpeed( MOVE_TURN ); - *data << float(7); + *data << ((Unit*)this)->GetSpeed( MOVE_PITCH ); // 0x08000000 if(flags2 & MOVEMENTFLAG_SPLINE2) @@ -539,10 +539,10 @@ void Object::_BuildMovementUpdate(ByteBuffer * data, uint8 flags, uint32 flags2 } // 0x80 - if(flags & UPDATEFLAG_WOTLK) // unused for now + if(flags & UPDATEFLAG_VEHICLE) // unused for now { + *data << uint32(0); // vehicle id *data << float(0); - *data << uint32(0); } } diff --git a/src/game/Player.cpp b/src/game/Player.cpp index 082069e0e..4ee84ebc9 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -747,9 +747,8 @@ void Player::EnvironmentalDamage(uint64 guid, EnviromentalDamage type, uint32 da data << (uint32)damage; data << (uint32)0; data << (uint32)0; - //m_session->SendPacket(&data); - //Let other players see that you get damage SendMessageToSet(&data, true); + 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 diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index e0bdcc001..c41bc519c 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -2584,18 +2584,18 @@ void Spell::SendCastResult(uint8 result) case SPELL_FAILED_EQUIPPED_ITEM_CLASS: data << uint32(m_spellInfo->EquippedItemClass); data << uint32(m_spellInfo->EquippedItemSubClassMask); - data << uint32(m_spellInfo->EquippedItemInventoryTypeMask); + //data << uint32(m_spellInfo->EquippedItemInventoryTypeMask); break; } ((Player*)m_caster)->GetSession()->SendPacket(&data); } - else + /*else { WorldPacket data(SMSG_CLEAR_EXTRA_AURA_INFO_OBSOLETE, (8+4)); data.append(m_caster->GetPackGUID()); data << uint32(m_spellInfo->Id); ((Player*)m_caster)->GetSession()->SendPacket(&data); - } + }*/ } void Spell::SendSpellStart() @@ -2603,13 +2603,13 @@ void Spell::SendSpellStart() if(!IsNeedSendToClient()) 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; if(IsRangedSpell()) castFlags |= CAST_FLAG_AMMO; - Unit * target; + Unit *target; if(!m_targets.getUnitTarget()) target = m_caster; else @@ -2800,7 +2800,7 @@ void Spell::SendLogExecute() data << uint32(count1); // count1 (effect count?) 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; data << uint32(count2); // count2 (target count?) for(uint32 j = 0; j < count2; ++j) @@ -2846,30 +2846,19 @@ void Spell::SendLogExecute() data << uint8(0); break; case SPELL_EFFECT_CREATE_ITEM: + case SPELL_EFFECT_157: data << uint32(m_spellInfo->EffectItemType[0]); break; case SPELL_EFFECT_SUMMON: - case SPELL_EFFECT_SUMMON_WILD: - case SPELL_EFFECT_SUMMON_GUARDIAN: case SPELL_EFFECT_TRANS_DOOR: case SPELL_EFFECT_SUMMON_PET: - case SPELL_EFFECT_SUMMON_POSSESSED: - //case SPELL_EFFECT_SUMMON_TOTEM: case SPELL_EFFECT_SUMMON_OBJECT_WILD: case SPELL_EFFECT_CREATE_HOUSE: 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_SLOT2: case SPELL_EFFECT_SUMMON_OBJECT_SLOT3: case SPELL_EFFECT_SUMMON_OBJECT_SLOT4: - case SPELL_EFFECT_SUMMON_DEMON: - case SPELL_EFFECT_150: if(Unit *unit = m_targets.getUnitTarget()) data.append(unit->GetPackGUID()); else if(m_targets.getItemTargetGUID()) @@ -2888,6 +2877,13 @@ void Spell::SendLogExecute() else data << uint8(0); 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: return; } @@ -2927,7 +2923,7 @@ void Spell::SendChannelUpdate(uint32 time) WorldPacket data( MSG_CHANNEL_UPDATE, 8+4 ); data.append(m_caster->GetPackGUID()); - data << time; + data << uint32(time); ((Player*)m_caster)->GetSession()->SendPacket( &data ); } @@ -2964,8 +2960,8 @@ void Spell::SendChannelStart(uint32 duration) { WorldPacket data( MSG_CHANNEL_START, (8+4+4) ); data.append(m_caster->GetPackGUID()); - data << m_spellInfo->Id; - data << duration; + data << uint32(m_spellInfo->Id); + data << uint32(duration); ((Player*)m_caster)->GetSession()->SendPacket( &data ); } @@ -2979,9 +2975,15 @@ void Spell::SendChannelStart(uint32 duration) void Spell::SendResurrectRequest(Player* target) { WorldPacket data(SMSG_RESURRECT_REQUEST, (8+4+2+4)); - data << m_caster->GetGUID(); - data << uint32(1) << uint16(0) << uint32(1); + data << uint64(m_caster->GetGUID()); + 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); } @@ -2991,8 +2993,8 @@ void Spell::SendPlaySpellVisual(uint32 SpellID) return; WorldPacket data(SMSG_PLAY_SPELL_VISUAL, 12); - data << m_caster->GetGUID(); - data << SpellID; + data << uint64(m_caster->GetGUID()); + data << uint32(SpellID); // spell visual id? ((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) 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(school_immune || mechanic_immune || dispel_immune) @@ -4630,7 +4632,7 @@ uint8 Spell::CheckItems() return SPELL_FAILED_CANT_BE_DISENCHANTED; 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; if (item_disenchantskilllevel == uint32(-1)) return SPELL_FAILED_CANT_BE_DISENCHANTED; diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index d4590628d..95ac8ffc1 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -56,6 +56,7 @@ float baseMoveSpeed[MAX_MOVE_TYPE] = 3.141594f, // MOVE_TURN 7.0f, // MOVE_FLY 4.5f, // MOVE_FLYBACK + 3.14f // MOVE_PITCH }; // 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) { WorldPacket data( SMSG_EMOTE, 12 ); - data << anim_id << GetGUID(); - WPAssert(data.size() == 12); - + data << uint32(anim_id); + data << uint64(GetGUID()); SendMessageToSet(&data, true); } @@ -1665,7 +1665,7 @@ void Unit::CalcAbsorbResist(Unit *pVictim,SpellSchoolMask schoolMask, DamageEffe RemainingDamage -= currentAbsorb; } - // only split damage if not damaing yourself + // only split damage if not damaging yourself if(pVictim != this) { 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) { WorldPacket data( SMSG_ATTACKSTART, 16 ); - data << GetGUID(); - data << pVictim->GetGUID(); + data << uint64(GetGUID()); + data << uint64(pVictim->GetGUID()); SendMessageToSet(&data, true); DEBUG_LOG( "WORLD: Sent SMSG_ATTACKSTART" ); @@ -3847,7 +3847,7 @@ bool Unit::RemoveNoStackAurasDueToAura(Aura *Aur) if(is_triggered_by_spell) 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 { case SPELL_AURA_MOD_SHAPESHIFT: @@ -6924,7 +6924,7 @@ bool Unit::Attack(Unit *victim, bool meleeAttack) if(GetTypeId()==TYPEID_UNIT) { WorldPacket data(SMSG_AI_REACTION, 12); - data << GetGUID(); + data << uint64(GetGUID()); data << uint32(AI_REACTION_AGGRO); // Aggro sound ((WorldObject*)this)->SendMessageToSet(&data, true); @@ -7174,6 +7174,7 @@ void Unit::SendHealSpellLog(Unit *pVictim, uint32 SpellID, uint32 Damage, bool c data.append(GetPackGUID()); data << uint32(SpellID); data << uint32(Damage); + data << uint32(0); // over healing? data << uint8(critical ? 1 : 0); data << uint8(0); // unused in client? SendMessageToSet(&data, true); @@ -7187,7 +7188,6 @@ void Unit::SendEnergizeSpellLog(Unit *pVictim, uint32 SpellID, uint32 Damage, Po data << uint32(SpellID); data << uint32(powertype); data << uint32(Damage); - //data << uint8(critical ? 1 : 0); // removed in 2.4.0 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) { - // not criting spell + // not critting spell if((spellProto->AttributesEx2 & SPELL_ATTR_EX2_CANT_CRIT)) return false; @@ -8327,7 +8327,7 @@ void Unit::ApplySpellDispelImmunity(const SpellEntry * spellProto, DispelType ty float Unit::GetWeaponProcChance() const { // normalized proc chance for weapon attack speed - // (odd formulae...) + // (odd formula...) if(isAttackReady(BASE_ATTACK)) return (GetAttackTime(BASE_ATTACK) * 1.8f / 1000.0f); else if (haveOffhandWeapon() && isAttackReady(OFF_ATTACK)) diff --git a/src/game/Unit.h b/src/game/Unit.h index 5e4306656..e3ef72b73 100644 --- a/src/game/Unit.h +++ b/src/game/Unit.h @@ -383,10 +383,11 @@ enum UnitMoveType MOVE_SWIMBACK = 4, MOVE_TURN = 5, 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]; diff --git a/src/game/UpdateData.h b/src/game/UpdateData.h index 0f55971b6..b4ddc1c9b 100644 --- a/src/game/UpdateData.h +++ b/src/game/UpdateData.h @@ -41,7 +41,7 @@ enum OBJECT_UPDATE_FLAGS UPDATEFLAG_HIGHGUID = 0x10, UPDATEFLAG_LIVING = 0x20, UPDATEFLAG_HASPOSITION = 0x40, - UPDATEFLAG_WOTLK = 0x80 + UPDATEFLAG_VEHICLE = 0x80 }; class UpdateData