Index: AuraHandler.cpp =================================================================== --- AuraHandler.cpp (revision 40) +++ AuraHandler.cpp (working copy) @@ -624,31 +624,31 @@ switch(spellinfo.EffectMiscValue[Effect]) { case 0:{ -// index2 = (power > 0) ? PLAYER_FIELD_POSSTAT : PLAYER_FIELD_NEGSTAT; + index2 = (power > 0) ? UNIT_FIELD_POSSTAT : UNIT_FIELD_NEGSTAT; ((CPlayer*)pPlayer)->AddUpdateVal(index2,v); ((CPlayer*)pPlayer)->AddUpdateVal(UNIT_FIELD_STAT0,((CPlayer*)pPlayer)->Data.CurrentStats.Strength); ((CPlayer*)pPlayer)->UpdateObject(); break; } case 1:{ - // index2 = (power > 0) ? PLAYER_FIELD_POSSTAT+1 : PLAYER_FIELD_NEGSTAT+1; + index2 = (power > 0) ? UNIT_FIELD_POSSTAT+1 : UNIT_FIELD_NEGSTAT+1; ((CPlayer*)pPlayer)->AddUpdateVal(index2,v); ((CPlayer*)pPlayer)->AddUpdateVal(UNIT_FIELD_STAT1,((CPlayer*)pPlayer)->Data.CurrentStats.Agility); ((CPlayer*)pPlayer)->UpdateObject(); break; } case 2:{ - //index2 = (power > 0) ? PLAYER_FIELD_POSSTAT+2 : PLAYER_FIELD_NEGSTAT+2; + index2 = (power > 0) ? UNIT_FIELD_POSSTAT+2 : UNIT_FIELD_NEGSTAT+2; ((CPlayer*)pPlayer)->AddUpdateVal(index2,v); ((CPlayer*)pPlayer)->AddUpdateVal(UNIT_FIELD_STAT2,((CPlayer*)pPlayer)->Data.CurrentStats.Stamina); ((CPlayer*)pPlayer)->UpdateObject(); break; } case 3:{ - // index2 = (power > 0) ? PLAYER_FIELD_POSSTAT+3 : PLAYER_FIELD_NEGSTAT+3; + index2 = (power > 0) ? UNIT_FIELD_POSSTAT+3 : UNIT_FIELD_NEGSTAT+3; ((CPlayer*)pPlayer)->AddUpdateVal(index2,v); ((CPlayer*)pPlayer)->AddUpdateVal(UNIT_FIELD_STAT3,((CPlayer*)pPlayer)->Data.CurrentStats.Intellect); ((CPlayer*)pPlayer)->UpdateObject(); break; } case 4:{ - //index2 = (power > 0) ? PLAYER_FIELD_POSSTAT+4 : PLAYER_FIELD_NEGSTAT+4; + index2 = (power > 0) ? UNIT_FIELD_POSSTAT+4 : UNIT_FIELD_NEGSTAT+4; ((CPlayer*)pPlayer)->AddUpdateVal(index2,v); ((CPlayer*)pPlayer)->AddUpdateVal(UNIT_FIELD_STAT4,((CPlayer*)pPlayer)->Data.CurrentStats.Spirit); ((CPlayer*)pPlayer)->UpdateObject(); @@ -758,8 +758,7 @@ v = ModResist(pPlayer,-(long)power,spellinfo.EffectMiscValue[Effect],true); else v = ModResist(pPlayer,-(long)power,spellinfo.EffectMiscValue[Effect],false); } - //index2=((power>0)?PLAYER_FIELD_RESISTANCEBUFFMODSPOSITIVE:PLAYER_FIELD_RESISTANCEBUFFMODSNEGATIVE)+spellinfo.EffectMiscValue[Effect]; - // UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE + index2=((power>0)?UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE:UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE)+spellinfo.EffectMiscValue[Effect]; switch(spellinfo.EffectMiscValue[Effect]) { case DMG_PHYSICAL: { @@ -837,31 +836,31 @@ switch(spellinfo.EffectMiscValue[Effect]) { case 0:{ - //index2=((power > 0)?PLAYER_FIELD_POSSTAT0:PLAYER_FIELD_NEGSTAT0); + index2=((power > 0)?UNIT_FIELD_POSSTAT0:UNIT_FIELD_NEGSTAT0); ((CPlayer*)pPlayer)->AddUpdateVal(index2,v); ((CPlayer*)pPlayer)->AddUpdateVal(UNIT_FIELD_STAT0,((CPlayer*)pPlayer)->Data.CurrentStats.Strength); ((CPlayer*)pPlayer)->UpdateObject(); break; } case 1:{ - //index2=((power > 0)?PLAYER_FIELD_POSSTAT1:PLAYER_FIELD_NEGSTAT1); + index2=((power > 0)?UNIT_FIELD_POSSTAT1:UNIT_FIELD_NEGSTAT1); ((CPlayer*)pPlayer)->AddUpdateVal(index2,v); ((CPlayer*)pPlayer)->AddUpdateVal(UNIT_FIELD_STAT1,((CPlayer*)pPlayer)->Data.CurrentStats.Agility); ((CPlayer*)pPlayer)->UpdateObject(); break; } case 2:{ - //index2=((power > 0)?PLAYER_FIELD_POSSTAT2:PLAYER_FIELD_NEGSTAT2); + index2=((power > 0)?UNIT_FIELD_POSSTAT2:UNIT_FIELD_NEGSTAT2); ((CPlayer*)pPlayer)->AddUpdateVal(index2,v); ((CPlayer*)pPlayer)->AddUpdateVal(UNIT_FIELD_STAT2,((CPlayer*)pPlayer)->Data.CurrentStats.Stamina); ((CPlayer*)pPlayer)->UpdateObject(); break; } case 3:{ - //index2=((power > 0)?PLAYER_FIELD_POSSTAT3:PLAYER_FIELD_NEGSTAT3); + index2=((power > 0)?UNIT_FIELD_POSSTAT3:UNIT_FIELD_NEGSTAT3); ((CPlayer*)pPlayer)->AddUpdateVal(index2,v); ((CPlayer*)pPlayer)->AddUpdateVal(UNIT_FIELD_STAT3,((CPlayer*)pPlayer)->Data.CurrentStats.Intellect); ((CPlayer*)pPlayer)->UpdateObject(); break; } case 4:{ - //index2=((power > 0)?PLAYER_FIELD_POSSTAT4:PLAYER_FIELD_NEGSTAT4); + index2=((power > 0)?UNIT_FIELD_POSSTAT4:UNIT_FIELD_NEGSTAT4); ((CPlayer*)pPlayer)->AddUpdateVal(index2,v); ((CPlayer*)pPlayer)->AddUpdateVal(UNIT_FIELD_STAT4,((CPlayer*)pPlayer)->Data.CurrentStats.Spirit); ((CPlayer*)pPlayer)->UpdateObject(); @@ -1422,31 +1421,31 @@ switch(spellinfo.EffectMiscValue[Effect]) { case 0:{ - //index2=((power > 0)?PLAYER_FIELD_POSSTAT0:PLAYER_FIELD_NEGSTAT0); + index2=((power > 0)?UNIT_FIELD_POSSTAT0:UNIT_FIELD_NEGSTAT0); ((CPlayer*)pPlayer)->AddUpdateVal(index2,v); ((CPlayer*)pPlayer)->AddUpdateVal(UNIT_FIELD_STAT0,((CPlayer*)pPlayer)->Data.CurrentStats.Strength); ((CPlayer*)pPlayer)->UpdateObject(); break; } case 1:{ - //index2=((power > 0)?PLAYER_FIELD_POSSTAT1:PLAYER_FIELD_NEGSTAT1); + index2=((power > 0)?UNIT_FIELD_POSSTAT1:UNIT_FIELD_NEGSTAT1); ((CPlayer*)pPlayer)->AddUpdateVal(index2,v); ((CPlayer*)pPlayer)->AddUpdateVal(UNIT_FIELD_STAT1,((CPlayer*)pPlayer)->Data.CurrentStats.Agility); ((CPlayer*)pPlayer)->UpdateObject(); break; } case 2:{ - //index2=((power > 0)?PLAYER_FIELD_POSSTAT2:PLAYER_FIELD_NEGSTAT2); + index2=((power > 0)?UNIT_FIELD_POSSTAT2:UNIT_FIELD_NEGSTAT2); ((CPlayer*)pPlayer)->AddUpdateVal(index2,v); ((CPlayer*)pPlayer)->AddUpdateVal(UNIT_FIELD_STAT2,((CPlayer*)pPlayer)->Data.CurrentStats.Stamina); ((CPlayer*)pPlayer)->UpdateObject(); break; } case 3:{ - // index2=((power > 0)?PLAYER_FIELD_POSSTAT3:PLAYER_FIELD_NEGSTAT3); + index2=((power > 0)?UNIT_FIELD_POSSTAT3:UNIT_FIELD_NEGSTAT3); ((CPlayer*)pPlayer)->AddUpdateVal(index2,v); ((CPlayer*)pPlayer)->AddUpdateVal(UNIT_FIELD_STAT3,((CPlayer*)pPlayer)->Data.CurrentStats.Intellect); ((CPlayer*)pPlayer)->UpdateObject(); break; } case 4:{ - // index2=((power > 0)?PLAYER_FIELD_POSSTAT4:PLAYER_FIELD_NEGSTAT4); + index2=((power > 0)?UNIT_FIELD_POSSTAT4:UNIT_FIELD_NEGSTAT4); ((CPlayer*)pPlayer)->AddUpdateVal(index2,v); ((CPlayer*)pPlayer)->AddUpdateVal(UNIT_FIELD_STAT4,((CPlayer*)pPlayer)->Data.CurrentStats.Spirit); ((CPlayer*)pPlayer)->UpdateObject(); Index: Client.cpp =================================================================== --- Client.cpp (revision 40) +++ Client.cpp (working copy) @@ -466,6 +466,10 @@ pPlayer->LoadExploreSystem(); pPlayer->InitAEvents(); pPlayer->ClearNextAttackSpell(); + + CPacket pkg2(SMSG_MOVE_UNLOCK_MOVEMENT); + pkg2 << (uint32)0; + pPlayer->pClient->Send(&pkg2); } void CClient::LearnedSpell(uint32 ID) Index: MsgHandlers.cpp =================================================================== --- MsgHandlers.cpp (revision 40) +++ MsgHandlers.cpp (working copy) @@ -512,9 +512,10 @@ pkg << guid ; pkg << PLAYERGUID_HIGH; pkg << (i->first).c_str(); - pkg << (unsigned long)1; //we cannot tell, so this is Human - pkg << (unsigned long)0; //male - pkg << (unsigned long)1; //warrior + pkg << (uint8)0x00; //char + pkg << (uint32)1; //we cannot tell, so this is Human + pkg << (uint32)0; //male + pkg << (uint32)1; //warrior pClient->Send(&pkg); return; } @@ -525,10 +526,10 @@ pkg << guid ; pkg << PLAYERGUID_HIGH; pkg << pPlayer->Data.Name; - pkg << (char)0x00; - pkg << (unsigned long)pPlayer->Data.Race; - pkg << (unsigned long)pPlayer->Data.Female; - pkg << (unsigned long)pPlayer->Data.Class; + pkg << (uint8)0x00; //char + pkg << (uint32)pPlayer->Data.Race; + pkg << (uint32)pPlayer->Data.Female; + pkg << (uint32)pPlayer->Data.Class; pClient->Send(&pkg); } @@ -545,16 +546,20 @@ pkg << pCreatureTemplate->Data.Name; pkg << pCreatureTemplate->Data.Name; pkg << pCreatureTemplate->Data.Name; + pkg << pCreatureTemplate->Data.Guild; - // pkg << pCreatureTemplate->Data.Flags; // flags - pkg << (unsigned long)16; - pkg << pCreatureTemplate->Data.Type; // creature type - pkg << pCreatureTemplate->Data.Family; // family - pkg << pCreatureTemplate->Data.Elite; // elite mob? - pkg << (unsigned long)0; // unknown! - pkg << (unsigned long)0; // unknown2! // HACK - pkg << (unsigned long)pCreatureTemplate->Data.Model; // model obviously - pkg << (unsigned short)1; // civilian + pkg << pCreatureTemplate->Data.Flags; // flags + //pkg << (unsigned long)16; + pkg << pCreatureTemplate->Data.Type; // creature type + pkg << pCreatureTemplate->Data.Family; // family + pkg << pCreatureTemplate->Data.Elite; // elite mob? + pkg << (uint32)0; // unknown! + pkg << (uint32)0; // spelldataID + pkg << (uint32)pCreatureTemplate->Data.Model; // model obviously + pkg << (float)1; // unk + pkg << (float)1; // unk + pkg << (uint8)1; // civilian + pkg << (uint8)0; //Boss flag pClient->Send(&pkg); } @@ -581,8 +586,12 @@ pkg << (unsigned long)pTemplate->Data.Type; pkg << (unsigned long)pTemplate->Data.Model; pkg << pTemplate->Data.Name; - pkg << pTemplate->Data.Name << pTemplate->Data.Name << pTemplate->Data.Name; - pkg << (char)0; // new name? 1.12 + pkg << (uint8)0; //pTemplate->Data.Name NUll in opcode + pkg << (uint8)0; //pTemplate->Data.Name NUll in opcode + pkg << (uint8)0; //pTemplate->Data.Name NUll in opcode + pkg << (uint8)0; //new name? 1.12 //Not Name and not null in same packets + pkg << (uint8)0; //new name? 2.0.x //Not Name and not null in same packets + pkg << (uint8)0; //new name? 2.0.x //Not Name and not null in same packets pkg << (unsigned long)pTemplate->Data.Sound0; pkg << (unsigned long)pTemplate->Data.Sound1; pkg << (unsigned long)pTemplate->Data.Sound2; @@ -593,16 +602,20 @@ pkg << (unsigned long)pTemplate->Data.Sound7; pkg << (unsigned long)pTemplate->Data.Sound8; pkg << (unsigned long)pTemplate->Data.Sound9; - pkg << (unsigned long)pTemplate->Data.Sound10; - pkg << (unsigned long)0; - pkg << (unsigned long)0; - pkg << (unsigned long)0; - pkg << (unsigned long)0; - pkg << (unsigned long)0; -/* - pkg << (unsigned short)(0); - pkg << (unsigned char)0; -*/ + pkg << (unsigned long)pTemplate->Data.Sound10; + pkg << (unsigned long)0;//pTemplate->Data.Sound11; + pkg << (unsigned long)0;//pTemplate->Data.Sound12; + pkg << (unsigned long)0;//pTemplate->Data.Sound13; + pkg << (unsigned long)0;//pTemplate->Data.Sound14; + pkg << (unsigned long)0;//pTemplate->Data.Sound15; + pkg << (unsigned long)0;//pTemplate->Data.Sound16; + pkg << (unsigned long)0;//pTemplate->Data.Sound17; + pkg << (unsigned long)0;//pTemplate->Data.Sound18; + pkg << (unsigned long)0;//pTemplate->Data.Sound19; + pkg << (unsigned long)0;//pTemplate->Data.Sound20; + pkg << (unsigned long)0;//pTemplate->Data.Sound21; + pkg << (unsigned long)0;//pTemplate->Data.Sound22; + pkg << (unsigned long)0;//pTemplate->Data.Sound23; pClient->Send(&pkg); } @@ -4668,11 +4681,16 @@ pClient->Send(&pkg); } -void MsgRequestRaidInfo(CClient *pClient, unsigned int msgID, CDataBuffer &Data) +void MsgUnlockMovement(CClient *pClient, unsigned int msgID, CDataBuffer &Data) { Debug.Log("Unhandled CMSG_REQUEST_RAID_INFO"); } +void MsgRequestRaidInfo(CClient *pClient, unsigned int msgID, CDataBuffer &Data) +{ + Debug.Log("CMSG_MOVE_UNLOCK_MOVEMENT_ACK"); +} + // --- PET HANDLERS --- // void MsgPetAction(CClient *pClient, unsigned int msgID, CDataBuffer &Data) { @@ -5068,5 +5086,6 @@ AddMsgHandler(CMSG_CANCEL_AURA, MsgCancelAura); AddMsgHandler(CMSG_BATTLEFIELD_STATUS, MsgBattlefieldStatus); AddMsgHandler(CMSG_REQUEST_RAID_INFO, MsgRequestRaidInfo); + AddMsgHandler(CMSG_MOVE_UNLOCK_MOVEMENT_ACK, MsgUnlockMovement); } #undef AddMsgHandler Index: Player.cpp =================================================================== --- Player.cpp (revision 40) +++ Player.cpp (working copy) @@ -1340,7 +1340,7 @@ block.Add(PLAYER_FIELD_COINAGE, Data.Copper); // we'll send this later: quests show up then! } -// block.Add(PLAYER_FIELD_POSSTAT+4, 1); + block.Add(UNIT_FIELD_POSSTAT4, 1); block.Add(PLAYER_FIELD_MOD_DAMAGE_DONE_POS, 0); //these new additions ensure that the melee damage is sent correctly block.Add(PLAYER_FIELD_MOD_DAMAGE_DONE_NEG, 0); block.Add(PLAYER_FIELD_MOD_DAMAGE_DONE_PCT, 1.00f); @@ -4222,21 +4222,21 @@ OldAttribs=&Data.NormalStats.Strength; long diff; #define ADDPOSNEGSTAT(index) diff=NewAttribs[index] - OldAttribs[index];\ - /*if(diff > 0)\ + if(diff > 0)\ { - AddUpdateVal(PLAYER_FIELD_POSSTAT0+index,diff);\ - AddUpdateVal(PLAYER_FIELD_NEGSTAT0+index,0);\ + AddUpdateVal(UNIT_FIELD_POSSTAT0+index,diff);\ + AddUpdateVal(UNIT_FIELD_NEGSTAT0+index,0);\ }\ else if(diff < 0)\ {\ - AddUpdateVal(PLAYER_FIELD_POSSTAT+index,0);\ - AddUpdateVal(PLAYER_FIELD_NEGSTAT+index,diff);\ + AddUpdateVal(UNIT_FIELD_POSSTAT+index,0);\ + AddUpdateVal(UNIT_FIELD_NEGSTAT+index,diff);\ }\ else\ {\ - AddUpdateVal(PLAYER_FIELD_POSSTAT+index,0);\ - AddUpdateVal(PLAYER_FIELD_NEGSTAT+index,0);\ - }*/ + AddUpdateVal(UNIT_FIELD_POSSTAT+index,0);\ + AddUpdateVal(UNIT_FIELD_NEGSTAT+index,0);\ + } ADDPOSNEGSTAT(0); ADDPOSNEGSTAT(1); ADDPOSNEGSTAT(2);