rendered paste bodyIndex: sql/mangos.sql===================================================================--- sql/mangos.sql (revision 3628)+++ sql/mangos.sql (working copy)@@ -1372,6 +1372,20 @@ `sound7` int(11) unsigned NOT NULL default '0', `sound8` int(11) unsigned NOT NULL default '0', `sound9` int(11) unsigned NOT NULL default '0',+ `sound10` int(11) unsigned NOT NULL default '0',+ `sound11` int(11) unsigned NOT NULL default '0',+ `sound12` int(11) unsigned NOT NULL default '0',+ `sound13` int(11) unsigned NOT NULL default '0',+ `sound14` int(11) unsigned NOT NULL default '0',+ `sound15` int(11) unsigned NOT NULL default '0',+ `sound16` int(11) unsigned NOT NULL default '0',+ `sound17` int(11) unsigned NOT NULL default '0',+ `sound18` int(11) unsigned NOT NULL default '0',+ `sound19` int(11) unsigned NOT NULL default '0',+ `sound20` int(11) unsigned NOT NULL default '0',+ `sound21` int(11) unsigned NOT NULL default '0',+ `sound22` int(11) unsigned NOT NULL default '0',+ `sound23` int(11) unsigned NOT NULL default '0', `ScriptName` varchar(100) NOT NULL default '', PRIMARY KEY (`entry`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Gameobject System';Index: sql/updates/3629_gameobject_template.sql===================================================================--- sql/updates/3629_gameobject_template.sql (revision 0)+++ sql/updates/3629_gameobject_template.sql (revision 0)@@ -0,0 +1,15 @@+ALTER TABLE `gameobject_template`+ADD COLUMN `sound10` int(11) unsigned NOT NULL default '0' AFTER `sound9`,+ADD COLUMN `sound11` int(11) unsigned NOT NULL default '0' AFTER `sound10`,+ADD COLUMN `sound12` int(11) unsigned NOT NULL default '0' AFTER `sound11`,+ADD COLUMN `sound13` int(11) unsigned NOT NULL default '0' AFTER `sound12`,+ADD COLUMN `sound14` int(11) unsigned NOT NULL default '0' AFTER `sound13`,+ADD COLUMN `sound15` int(11) unsigned NOT NULL default '0' AFTER `sound14`,+ADD COLUMN `sound16` int(11) unsigned NOT NULL default '0' AFTER `sound15`,+ADD COLUMN `sound17` int(11) unsigned NOT NULL default '0' AFTER `sound16`,+ADD COLUMN `sound18` int(11) unsigned NOT NULL default '0' AFTER `sound17`,+ADD COLUMN `sound19` int(11) unsigned NOT NULL default '0' AFTER `sound18`,+ADD COLUMN `sound20` int(11) unsigned NOT NULL default '0' AFTER `sound19`,+ADD COLUMN `sound21` int(11) unsigned NOT NULL default '0' AFTER `sound20`,+ADD COLUMN `sound22` int(11) unsigned NOT NULL default '0' AFTER `sound21`,+ADD COLUMN `sound23` int(11) unsigned NOT NULL default '0' AFTER `sound22`;Index: src/game/BattleGround.cpp===================================================================--- src/game/BattleGround.cpp (revision 3628)+++ src/game/BattleGround.cpp (working copy)@@ -709,10 +709,10 @@ bool BattleGround::CanStartBattleGround() {- if(GetStatus() >= STATUS_WAIT_JOIN) // already started or ended+ if(GetStatus() >= STATUS_WAIT_JOIN) // already started or ended return false; - if(GetQueuedPlayersSize() < GetMaxPlayers())+ if(GetQueuedPlayersSize() < GetMinPlayers()) // queue is not ready yet return false; uint8 hordes = 0;Index: src/game/BattleGroundMgr.cpp===================================================================--- src/game/BattleGroundMgr.cpp (revision 3628)+++ src/game/BattleGroundMgr.cpp (working copy)@@ -206,15 +206,17 @@ (*data) << plr->GetGUID(); } -uint32 BattleGroundMgr::CreateBattleGround(uint32 bg_ID, uint32 MinPlayersPerTeam, uint32 MaxPlayersPerTeam, uint32 LevelMin, uint32 LevelMax, char* BattleGroundName, uint32 MapID, float Team1StartLocX, float Team1StartLocY, float Team1StartLocZ, float Team1StartLocO, float Team2StartLocX, float Team2StartLocY, float Team2StartLocZ, float Team2StartLocO)+uint32 BattleGroundMgr::CreateBattleGround(uint32 bg_ID, uint32 MaxPlayersPerTeam, uint32 LevelMin, uint32 LevelMax, char* BattleGroundName, uint32 MapID, float Team1StartLocX, float Team1StartLocY, float Team1StartLocZ, float Team1StartLocO, float Team2StartLocX, float Team2StartLocY, float Team2StartLocZ, float Team2StartLocO) { // Create the BG BattleGround *bg = new BattleGround; - bg->SetInstanceID(bg_ID); // temporary+ bg->SetID(bg_ID);+ bg->SetInstanceID(bg_ID); // temporary bg->SetMapId(MapID);- bg->SetMinPlayersPerTeam(MinPlayersPerTeam);+ bg->SetMinPlayersPerTeam(MaxPlayersPerTeam/2); bg->SetMaxPlayersPerTeam(MaxPlayersPerTeam);+ bg->SetMinPlayers(MaxPlayersPerTeam); bg->SetMaxPlayers(MaxPlayersPerTeam*2); bg->SetName(BattleGroundName); bg->SetTeamStartLoc(ALLIANCE, Team1StartLocX, Team1StartLocY, Team1StartLocZ, Team1StartLocO);@@ -251,8 +253,6 @@ bg->BerserkBonus2 = BerserkBonus2; } - bg->SetID(bg_ID);- AddBattleGround(bg_ID, bg); sLog.outDetail("BattleGroundMgr: Created new battleground: %u %s (Map %u, %u players per team, Levels %u-%u)", bg_ID, bg->m_Name, bg->m_MapId, bg->m_MaxPlayersPerTeam, bg->m_LevelMin, bg->m_LevelMax); return bg_ID;@@ -279,7 +279,7 @@ HStartLoc[3] = 2.27452f; // todo: find correct coords sLog.outDetail("Creating battleground %s, %u-%u", bl->name, bl->minlvl, bl->maxlvl);- CreateBattleGround(bg_ID, bl->minplayers, bl->maxplayers, bl->minlvl, bl->maxlvl, bl->name, bl->mapid1, AStartLoc[0], AStartLoc[1], AStartLoc[2], AStartLoc[3], HStartLoc[0], HStartLoc[1], HStartLoc[2], HStartLoc[3]);+ CreateBattleGround(bg_ID, bl->maxplayersperteam, bl->minlvl, bl->maxlvl, bl->name, bl->mapid1, AStartLoc[0], AStartLoc[1], AStartLoc[2], AStartLoc[3], HStartLoc[0], HStartLoc[1], HStartLoc[2], HStartLoc[3]); // Create BG, WSG bg_ID = 2;@@ -295,7 +295,7 @@ HStartLoc[3] = 3.141593f; sLog.outDetail("Creating battleground %s, %u-%u", bl->name, bl->minlvl, bl->maxlvl);- CreateBattleGround(bg_ID, bl->minplayers, bl->maxplayers, bl->minlvl, bl->maxlvl, bl->name, bl->mapid1, AStartLoc[0], AStartLoc[1], AStartLoc[2], AStartLoc[3], HStartLoc[0], HStartLoc[1], HStartLoc[2], HStartLoc[3]);+ CreateBattleGround(bg_ID, bl->maxplayersperteam, bl->minlvl, bl->maxlvl, bl->name, bl->mapid1, AStartLoc[0], AStartLoc[1], AStartLoc[2], AStartLoc[3], HStartLoc[0], HStartLoc[1], HStartLoc[2], HStartLoc[3]); // Create BG, AB bg_ID = 3;@@ -311,7 +311,7 @@ HStartLoc[3] = 0.263892f; // todo: find correct coords sLog.outDetail("Creating battleground %s, %u-%u", bl->name, bl->minlvl, bl->maxlvl);- CreateBattleGround(bg_ID, bl->minplayers, bl->maxplayers, bl->minlvl, bl->maxlvl, bl->name, bl->mapid1, AStartLoc[0], AStartLoc[1], AStartLoc[2], AStartLoc[3], HStartLoc[0], HStartLoc[1], HStartLoc[2], HStartLoc[3]);+ CreateBattleGround(bg_ID, bl->maxplayersperteam, bl->minlvl, bl->maxlvl, bl->name, bl->mapid1, AStartLoc[0], AStartLoc[1], AStartLoc[2], AStartLoc[3], HStartLoc[0], HStartLoc[1], HStartLoc[2], HStartLoc[3]); // Create BG, EotS bg_ID = 7;@@ -327,7 +327,7 @@ HStartLoc[3] = 0.263892f; // todo: find coords sLog.outDetail("Creating battleground %s, %u-%u", bl->name, bl->minlvl, bl->maxlvl);- CreateBattleGround(bg_ID, bl->minplayers, bl->maxplayers, bl->minlvl, bl->maxlvl, bl->name, bl->mapid1, AStartLoc[0], AStartLoc[1], AStartLoc[2], AStartLoc[3], HStartLoc[0], HStartLoc[1], HStartLoc[2], HStartLoc[3]);+ CreateBattleGround(bg_ID, bl->maxplayersperteam, bl->minlvl, bl->maxlvl, bl->name, bl->mapid1, AStartLoc[0], AStartLoc[1], AStartLoc[2], AStartLoc[3], HStartLoc[0], HStartLoc[1], HStartLoc[2], HStartLoc[3]); sLog.outDetail("Created initial battlegrounds."); }Index: src/game/BattleGroundMgr.h===================================================================--- src/game/BattleGroundMgr.h (revision 3628)+++ src/game/BattleGroundMgr.h (working copy)@@ -53,7 +53,7 @@ return NULL; }; - uint32 CreateBattleGround(uint32 bg_ID, uint32 MinPlayersPerTeam, uint32 MaxPlayersPerTeam, uint32 LevelMin, uint32 LevelMax, char* BattleGroundName, uint32 MapID, float Team1StartLocX, float Team1StartLocY, float Team1StartLocZ, float Team1StartLocO, float Team2StartLocX, float Team2StartLocY, float Team2StartLocZ, float Team2StartLocO);+ uint32 CreateBattleGround(uint32 bg_ID, uint32 MaxPlayersPerTeam, uint32 LevelMin, uint32 LevelMax, char* BattleGroundName, uint32 MapID, float Team1StartLocX, float Team1StartLocY, float Team1StartLocZ, float Team1StartLocO, float Team2StartLocX, float Team2StartLocY, float Team2StartLocZ, float Team2StartLocO); inline void AddBattleGround(uint32 ID, BattleGround* BG) { m_BattleGrounds[ID] = BG; }; Index: src/game/GameObject.h===================================================================--- src/game/GameObject.h (revision 3628)+++ src/game/GameObject.h (working copy)@@ -51,6 +51,20 @@ uint32 sound7; uint32 sound8; uint32 sound9;+ uint32 sound10;+ uint32 sound11;+ uint32 sound12;+ uint32 sound13;+ uint32 sound14;+ uint32 sound15;+ uint32 sound16;+ uint32 sound17;+ uint32 sound18;+ uint32 sound19;+ uint32 sound20;+ uint32 sound21;+ uint32 sound22;+ uint32 sound23; char *ScriptName; }; Index: src/game/Level3.cpp===================================================================--- src/game/Level3.cpp (revision 3628)+++ src/game/Level3.cpp (working copy)@@ -3104,7 +3104,7 @@ player->SetUInt32Value(UNIT_FIELD_BYTES_1, player->m_form<<16 | unitfield ); player->SetUInt32Value(UNIT_FIELD_BYTES_2, 0x2800 ); // 0x2800, 0x2801 2.0.8...- player->SetUInt32Value(UNIT_FIELD_FLAGS , UNIT_FLAG_NONE | UNIT_FLAG_UNKNOWN1 );+ player->SetUInt32Value(UNIT_FIELD_FLAGS , UNIT_FLAG_UNKNOWN1 ); //-1 is default value player->SetUInt32Value(PLAYER_FIELD_WATCHED_FACTION_INDEX, uint32(-1));Index: src/game/Opcodes.h===================================================================--- src/game/Opcodes.h (revision 3628)+++ src/game/Opcodes.h (working copy)@@ -854,7 +854,7 @@ // 807 SMSG_GM_SURVEY_REQUEST = 808, // uint32, 1 - causes client get ticket request, 2 - hide, 3 - show MSG_SET_DUNGEON_DIFFICULTY = 809, // uint32+uint32+uint32- CMSG_GM_SURVEY_RESULTS = 810,+ CMSG_GM_SURVEY_RESULTS = 810, // script function named GMSurveySubmit() SMSG_UNKNOWN_811 = 811, // uint32, 0x0, SMSG_INSTANCE_RESET_ACTIVATE ? // 812 // 813Index: src/game/Player.h===================================================================--- src/game/Player.h (revision 3628)+++ src/game/Player.h (working copy)@@ -290,15 +290,15 @@ PLAYER_FLAGS_GHOST = 0x00000010, PLAYER_FLAGS_RESTING = 0x00000020, PLAYER_FLAGS_FFA_PVP = 0x00000080,- PLAYER_FLAGS_UNK = 0x00000100, // 2.0.8, bg related?+ PLAYER_FLAGS_UNK = 0x00000100, // show PvP in tooltip PLAYER_FLAGS_IN_PVP = 0x00000200, PLAYER_FLAGS_HIDE_HELM = 0x00000400, PLAYER_FLAGS_HIDE_CLOAK = 0x00000800,- PLAYER_FLAGS_UNK1 = 0x00001000, //played long time- PLAYER_FLAGS_UNK2 = 0x00002000, //played too long time- PLAYER_FLAGS_UNK3 = 0x00008000, //strange visual effect (2.0.1)- PLAYER_FLAGS_UNK4 = 0x00020000, //taxi benchmark mode (on/off) (2.0.1)- PLAYER_UNK = 0x00040000, //2.0.8...+ PLAYER_FLAGS_UNK1 = 0x00001000, // played long time+ PLAYER_FLAGS_UNK2 = 0x00002000, // played too long time+ PLAYER_FLAGS_UNK3 = 0x00008000, // strange visual effect (2.0.1), looks like PLAYER_FLAGS_GHOST flag+ PLAYER_FLAGS_UNK4 = 0x00020000, // taxi benchmark mode (on/off) (2.0.1)+ PLAYER_UNK = 0x00040000, // 2.0.8... }; enum PlayerKnownTitlesIndex: src/game/QueryHandler.cpp===================================================================--- src/game/QueryHandler.cpp (revision 3628)+++ src/game/QueryHandler.cpp (working copy)@@ -131,24 +131,24 @@ data << (uint32)entry; // creature entry data << (unit ? unit->GetName() : ci->Name); // creature name - data << uint8(0) << uint8(0) << uint8(0); // unk 3 x uint8+ data << uint8(0) << uint8(0) << uint8(0); // name2, name3, name4, always empty if (unit) data << ((unit->isPet()) ? "Pet" : ci->SubName); // subname else- data << ci->Name;+ data << ci->Name; // may be it's typo? must be subname I think... - data << ci->flag1; //flags wdbFeild7=wad flags1+ data << ci->flag1; // flags wdbFeild7=wad flags1 if (unit)- data << (uint32)((unit->isPet()) ? 0 : ci->type); //creatureType wdbFeild8+ data << (uint32)((unit->isPet()) ? 0 : ci->type); // creatureType wdbFeild8 else data << (uint32) ci->type; - data << (uint32)ci->family; //family wdbFeild9- data << (uint32)(unit && unit->isPet() ? 0 : ci->rank); //rank wdbFeild10- data << uint32(0); //unknow wdbFeild11- data << uint32(0); //unknow wdbFeild12+ data << (uint32)ci->family; // family wdbFeild9+ data << (uint32)(unit && unit->isPet() ? 0 : ci->rank); // rank wdbFeild10+ data << uint32(0); // unknown wdbFeild11+ data << uint32(0); // unknown wdbFeild12 if (unit) data << unit->GetUInt32Value(UNIT_FIELD_DISPLAYID); //DisplayID wdbFeild13@@ -175,60 +175,47 @@ const GameObjectInfo *info = objmgr.GetGameObjectInfo(entryID); // guess size WorldPacket data ( SMSG_GAMEOBJECT_QUERY_RESPONSE, 150 );- data << entryID;-- if( !info )+ if(!info) { sLog.outDebug( "WORLD: CMSG_GAMEOBJECT_QUERY - Missing game object info for entry %u", entryID);-- data << uint64(0);- data << uint64(0);- data << uint64(0);- data << uint64(0);- data << uint64(0);- data << uint64(0);- data << uint64(0);- data << uint64(0);- data << uint64(0);- data << uint32(0);- data << uint16(0);- data << uint8(0);-- data << uint64(0); // Added in 1.12.x client branch- data << uint64(0); // Added in 1.12.x client branch- data << uint64(0); // Added in 1.12.x client branch- data << uint64(0); // Added in 1.12.x client branch- data << uint8(0); // Added in 1.12.x client branch- SendPacket( &data );- return;+ data << uint32(entryID | 0x80000000); }-- sLog.outDetail("WORLD: CMSG_GAMEOBJECT_QUERY '%s' - Entry: %u - GUID: %u.", info->name, entryID, guid);- - data << (uint32)info->type;- data << (uint32)info->displayId;- data << info->name;- data << uint32(0); // 2.0.3- data << uint16(0); // 2.0.3- data << uint32(info->sound0);- data << uint32(info->sound1);- data << uint32(info->sound2);- data << uint32(info->sound3);- data << uint32(info->sound4);- data << uint32(info->sound5);- data << uint32(info->sound6);- data << uint32(info->sound7);- data << uint32(info->sound8);- data << uint32(info->sound9);-- data << uint64(0);- data << uint64(0);- data << uint64(0);-- data << uint64(0); // Added in 1.12.x client branch- data << uint64(0); // Added in 1.12.x client branch- data << uint64(0); // Added in 1.12.x client branch- data << uint64(0); // Added in 1.12.x client branch+ else+ {+ sLog.outDetail("WORLD: CMSG_GAMEOBJECT_QUERY '%s' - Entry: %u - GUID: %u.", info->name, entryID, guid);+ data << entryID;+ data << (uint32)info->type;+ data << (uint32)info->displayId;+ data << info->name;+ data << uint8(0) << uint8(0) << uint8(0); // name2, name3, name4+ data << uint8(0); // 2.0.3, string+ data << uint8(0); // 2.0.3, string+ data << uint8(0); // 2.0.3, probably string+ data << uint32(info->sound0);+ data << uint32(info->sound1);+ data << uint32(info->sound2);+ data << uint32(info->sound3);+ data << uint32(info->sound4);+ data << uint32(info->sound5);+ data << uint32(info->sound6);+ data << uint32(info->sound7);+ data << uint32(info->sound8);+ data << uint32(info->sound9);+ data << uint32(info->sound10);+ data << uint32(info->sound11);+ data << uint32(info->sound12);+ data << uint32(info->sound13);+ data << uint32(info->sound14);+ data << uint32(info->sound15);+ data << uint32(info->sound16);+ data << uint32(info->sound17);+ data << uint32(info->sound18);+ data << uint32(info->sound19);+ data << uint32(info->sound20);+ data << uint32(info->sound21);+ data << uint32(info->sound22);+ data << uint32(info->sound23);+ } SendPacket( &data ); } @@ -255,16 +242,15 @@ CHECK_PACKET_SIZE(recv_data,4+4+4); uint32 textID;- uint32 uField0, uField1;+ uint64 guid; GossipText *pGossip; std::string GossipStr; recv_data >> textID;- sLog.outDetail("WORLD: CMSG_NPC_TEXT_QUERY ID '%u'", textID );+ sLog.outDetail("WORLD: CMSG_NPC_TEXT_QUERY ID '%u'", textID); - recv_data >> uField0 >> uField1;- GetPlayer()->SetUInt32Value(UNIT_FIELD_TARGET, uField0);- GetPlayer()->SetUInt32Value(UNIT_FIELD_TARGET + 1, uField1);+ recv_data >> guid;+ GetPlayer()->SetUInt64Value(UNIT_FIELD_TARGET, guid); pGossip = objmgr.GetGossipText(textID); Index: src/game/SharedDefines.h===================================================================--- src/game/SharedDefines.h (revision 3628)+++ src/game/SharedDefines.h (working copy)@@ -395,9 +395,7 @@ GAMEOBJECT_TYPE_LOTTERY_KIOSK = 28, GAMEOBJECT_TYPE_CAPTURE_POINT = 29, GAMEOBJECT_TYPE_AURA_GENERATOR = 30,- GAMEOBJECT_TYPE_DUNGEON_DIFFICULTY = 31,- // Custom gametypes, can create problems at sending to client,- GAMEOBJECT_TYPE_CUSTOM_TELEPORTER = 32,+ GAMEOBJECT_TYPE_DUNGEON_DIFFICULTY = 31 }; enum TextEmoteIndex: src/game/SpellHandler.cpp===================================================================--- src/game/SpellHandler.cpp (revision 3628)+++ src/game/SpellHandler.cpp (working copy)@@ -449,23 +449,6 @@ obj->Delete(); } break;- case GAMEOBJECT_TYPE_CUSTOM_TELEPORTER:- info = obj->GetGOInfo();- if(info)- {- AreaTrigger const *at = objmgr.GetAreaTrigger( info->sound0 );- if(at && at->IsTeleport())- {- sLog.outDebug( "Teleporting player %u with coordinates X: %f Y: %f Z: %f Orientation: %f Map: %u\n",- _player->GetGUIDLow(), at->target_X,at->target_Y,at->target_Z,at->target_Orientation,at->target_mapId);- _player->TeleportTo(at->target_mapId, at->target_X,at->target_Y,at->target_Z,at->target_Orientation);- sLog.outDebug( "Player %u teleported by %u\n", _player->GetGUIDLow(), info->sound0);- }- else- sLog.outDebug( "Gameobject template %u (type: GAMEOBJECT_TYPE_CUSTOM_TELEPORTER(27)) have wrong areatrigger_template id %u (sound0 field) for teleportation", info->id,info->sound0);- return;- }- break; default: sLog.outDebug( "Unknown Object Type %u\n", obj->GetUInt32Value(GAMEOBJECT_TYPE_ID)); break;Index: src/game/Unit.h===================================================================--- src/game/Unit.h (revision 3628)+++ src/game/Unit.h (working copy)@@ -239,25 +239,35 @@ // Value masks for UNIT_FIELD_FLAGS enum UnitFlags {- UNIT_FLAG_NONE = 0x00000000,+ UNIT_FLAG_UNKNOWN7 = 0x00000001,+ UNIT_FLAG_UNKNOWN8 = 0x00000002, // not attackable UNIT_FLAG_DISABLE_MOVE = 0x00000004,- UNIT_FLAG_UNKNOWN1 = 0x00000008, // essential for all units..- UNIT_FLAG_RENAME = 0x00000010, // rename creature, not working in 2.0.8+ UNIT_FLAG_UNKNOWN1 = 0x00000008, // for all units, make unit attackable even it's friendly in some cases...+ UNIT_FLAG_RENAME = 0x00000010, UNIT_FLAG_RESTING = 0x00000020,+ UNIT_FLAG_UNKNOWN9 = 0x00000040,+ UNIT_FLAG_UNKNOWN10 = 0x00000080, UNIT_FLAG_UNKNOWN2 = 0x00000100, // 2.0.8- UNIT_FLAG_UNKNOWN3 = 0x00000800, // in combat ?2.0.8- UNIT_FLAG_PVP = 0x00001000,- UNIT_FLAG_MOUNT = 0x00002000,+ UNIT_FLAG_UNKNOWN11 = 0x00000200,+ UNIT_FLAG_UNKNOWN12 = 0x00000400, // loot animation+ UNIT_FLAG_UNKNOWN3 = 0x00000800, // in combat?, 2.0.8+ UNIT_FLAG_PVP = 0x00001000, // ok+ UNIT_FLAG_MOUNT = 0x00002000, // silenced, 2.0.12 UNIT_FLAG_UNKNOWN4 = 0x00004000, // 2.0.8+ UNIT_FLAG_UNKNOWN13 = 0x00008000,+ UNIT_FLAG_UNKNOWN14 = 0x00010000, UNIT_FLAG_PACIFIED = 0x00020000, UNIT_FLAG_DISABLE_ROTATE = 0x00040000, // may be it's stunned flag? UNIT_FLAG_IN_COMBAT = 0x00080000,+ UNIT_FLAG_UNKNOWN15 = 0x00100000, UNIT_FLAG_DISARMED = 0x00200000, // disable melee spells casting..., "Required melee weapon" added to melee spells tooltip. UNIT_FLAG_CONFUSED = 0x00400000, UNIT_FLAG_FLEEING = 0x00800000, UNIT_FLAG_UNKNOWN5 = 0x01000000, // used in spell Eyes of the Beast for pet...- UNIT_FLAG_NOT_SELECTABLE = 0x02000000,+ UNIT_FLAG_NOT_SELECTABLE = 0x02000000, // ok UNIT_FLAG_SKINNABLE = 0x04000000,+ UNIT_FLAG_UNKNOWN16 = 0x08000000,+ UNIT_FLAG_UNKNOWN17 = 0x10000000, UNIT_FLAG_UNKNOWN6 = 0x20000000, // used in Feing Death spell UNIT_FLAG_SHEATHE = 0x40000000 };Index: src/shared/Database/DBCfmt.cpp===================================================================--- src/shared/Database/DBCfmt.cpp (revision 3628)+++ src/shared/Database/DBCfmt.cpp (working copy)@@ -18,7 +18,7 @@ const char AreaTableEntryfmt[]="iiinixxxxxixxxxxxxxxixxxxxx"; const char BankBagSlotPricesEntryfmt[]="ni";-const char BattlemasterListEntryfmt[]="niixxxxxxiiiiixsxxxxxxxx";+const char BattlemasterListEntryfmt[]="niixxxxxxiiiixxsxxxxxxxx"; const char ChatChannelsEntryfmt[]="iixsxxxxxxxxsxxxxxxxx"; // data not sorted (more compact store) const char ChrClassesEntryfmt[]="nxxixsxxxxxxxxxxxx"; const char ChrRacesEntryfmt[]="nxixiixxixxxxisxxxxxxxxxxxx";Index: src/shared/Database/DBCStructure.h===================================================================--- src/shared/Database/DBCStructure.h (revision 3628)+++ src/shared/Database/DBCStructure.h (working copy)@@ -57,8 +57,7 @@ uint32 type; // 3 - BG, 4 - arena uint32 minlvl; uint32 maxlvl;- uint32 maxplayers;- uint32 minplayers; // ???+ uint32 maxplayersperteam; char* name; }; Index: src/shared/Database/SQLStorage.cpp===================================================================--- src/shared/Database/SQLStorage.cpp (revision 3628)+++ src/shared/Database/SQLStorage.cpp (working copy)@@ -25,7 +25,7 @@ const char CreatureInfofmt[]="iiissiiiiiiiiififfiiiiififiiiiffifiiiiiiiiiiiiiiiiiiiiiiiiiiisiis"; const char CreatureDataAddonInfofmt[]="iiiiiiiiiiii";-const char GameObjectInfofmt[]="iiisiifiiiiiiiiiis";+const char GameObjectInfofmt[]="iiisiifiiiiiiiiiiiiiiiiiiiiiiiis"; const char ItemPrototypefmt[]="iiiissssiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiffiffiffiffiffiiiiiiiiiifiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiisiiiiiiiiiiiiiiiiiiiiiiiiiisi"; const char PageTextfmt[]="isi"; const char SpellProcEventfmt[]="iiiiiif";