Changeset 2860
- Timestamp:
- 08/31/2009 05:27:10 PM (12 months ago)
- Location:
- trunk
- Files:
-
- 4 added
- 48 modified
-
configs/logon.conf (modified) (1 diff)
-
sql/character_updates/2860_groups.sql (added)
-
sql/utilities/ArcEmu DB Updater.bat (modified) (4 diffs)
-
sql/world_updates/2801_items.sql (modified) (1 diff)
-
sql/world_updates/2817_recallorientation.sql (modified) (1 diff)
-
sql/world_updates/2860_gameobject_overrides.sql (added)
-
sql/world_updates/2860_items.sql (added)
-
sql/world_updates/2860_mail_sending.sql (added)
-
src/arcemu-shared/AuthCodes.h (modified) (8 diffs)
-
src/arcemu-shared/Database/DBCStores.cpp (modified) (5 diffs)
-
src/arcemu-shared/Database/DBCStores.h (modified) (2 diffs)
-
src/arcemu-world/ArenaTeam.cpp (modified) (3 diffs)
-
src/arcemu-world/BattlegroundHandler.cpp (modified) (1 diff)
-
src/arcemu-world/BattlegroundMgr.cpp (modified) (3 diffs)
-
src/arcemu-world/BattlegroundMgr.h (modified) (2 diffs)
-
src/arcemu-world/CharacterHandler.cpp (modified) (3 diffs)
-
src/arcemu-world/Creature.h (modified) (1 diff)
-
src/arcemu-world/DynamicObject.cpp (modified) (1 diff)
-
src/arcemu-world/GameObject.cpp (modified) (7 diffs)
-
src/arcemu-world/GameObject.h (modified) (5 diffs)
-
src/arcemu-world/Group.cpp (modified) (5 diffs)
-
src/arcemu-world/Group.h (modified) (1 diff)
-
src/arcemu-world/ItemHandler.cpp (modified) (2 diffs)
-
src/arcemu-world/ItemInterface.cpp (modified) (2 diffs)
-
src/arcemu-world/ItemPrototype.h (modified) (2 diffs)
-
src/arcemu-world/LfgMgr.h (modified) (1 diff)
-
src/arcemu-world/MailSystem.cpp (modified) (2 diffs)
-
src/arcemu-world/Map.cpp (modified) (3 diffs)
-
src/arcemu-world/Map.h (modified) (1 diff)
-
src/arcemu-world/MapMgr.cpp (modified) (6 diffs)
-
src/arcemu-world/Master.h (modified) (1 diff)
-
src/arcemu-world/MiscHandler.cpp (modified) (4 diffs)
-
src/arcemu-world/MovementHandler.cpp (modified) (4 diffs)
-
src/arcemu-world/Object.cpp (modified) (15 diffs)
-
src/arcemu-world/ObjectMgr.cpp (modified) (1 diff)
-
src/arcemu-world/ObjectStorage.cpp (modified) (1 diff)
-
src/arcemu-world/Opcodes.cpp (modified) (2 diffs)
-
src/arcemu-world/Opcodes.h (modified) (1 diff)
-
src/arcemu-world/Player.cpp (modified) (6 diffs)
-
src/arcemu-world/Player.h (modified) (1 diff)
-
src/arcemu-world/QueryHandler.cpp (modified) (2 diffs)
-
src/arcemu-world/QuestMgr.cpp (modified) (1 diff)
-
src/arcemu-world/Spell.cpp (modified) (1 diff)
-
src/arcemu-world/SpellAuras.cpp (modified) (1 diff)
-
src/arcemu-world/SpellAuras.h (modified) (1 diff)
-
src/arcemu-world/SpellEffects.cpp (modified) (2 diffs)
-
src/arcemu-world/TaxiHandler.cpp (modified) (3 diffs)
-
src/arcemu-world/TaxiMgr.cpp (modified) (1 diff)
-
src/arcemu-world/TransporterHandler.cpp (modified) (1 diff)
-
src/arcemu-world/UpdateFields.h (modified) (5 diffs)
-
src/arcemu-world/WorldSession.cpp (modified) (2 diffs)
-
src/arcemu-world/WorldSession.h (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/configs/logon.conf
r2759 r2860 69 69 */ 70 70 71 <Client MinBuild = " 9947"72 MaxBuild = " 9947">71 <Client MinBuild = "10192" 72 MaxBuild = "10314"> 73 73 74 74 /* WorldServer Setup -
trunk/sql/utilities/ArcEmu DB Updater.bat
r2845 r2860 255 255 mysql -h %server% --user=%user% --password=%pass% --port=%port% %wdb% --force < ..\world_updates\2840_guardtype.sql 256 256 257 ECHO [Importing] 2860_gameobject_overrides.sql 258 mysql -h %server% --user=%user% --password=%pass% --port=%port% %wdb% --force < ..\world_updates\2860_gameobject_overrides.sql 259 260 ECHO [Importing] 2860_items.sql 261 mysql -h %server% --user=%user% --password=%pass% --port=%port% %wdb% --force < ..\world_updates\2860_items.sql 262 263 ECHO [Importing] 2860_mail_sending.sql 264 mysql -h %server% --user=%user% --password=%pass% --port=%port% %wdb% --force < ..\world_updates\2860_mail_sending.sql 265 257 266 258 267 ECHO [Importing] ArcScript_full.sql … … 350 359 mysql -h %server% --user=%user% --password=%pass% --port=%port% %chr% < ..\character_updates\2845_refund.sql 351 360 361 ECHO [Importing] 2860_groups.sql 362 mysql -h %server% --user=%user% --password=%pass% --port=%port% %chr% < ..\character_updates\2860_groups.sql 363 352 364 ECHO [Importing] Finished 353 365 ECHO Update Success. … … 540 552 ECHO [Importing] 2840_guardtype.sql 541 553 mysql -h %server% --user=%user% --password=%pass% --port=%port% %wdb% --force < ..\world_updates\2840_guardtype.sql 554 555 ECHO [Importing] 2860_gameobject_overrides.sql 556 mysql -h %server% --user=%user% --password=%pass% --port=%port% %wdb% --force < ..\world_updates\2860_gameobject_overrides.sql 557 558 ECHO [Importing] 2860_items.sql 559 mysql -h %server% --user=%user% --password=%pass% --port=%port% %wdb% --force < ..\world_updates\2860_items.sql 560 561 ECHO [Importing] 2860_mail_sending.sql 562 mysql -h %server% --user=%user% --password=%pass% --port=%port% %wdb% --force < ..\world_updates\2860_mail_sending.sql 542 563 543 564 … … 631 652 ECHO [Importing] 2845_refund.sql 632 653 mysql -h %server% --user=%user% --password=%pass% --port=%port% %chr% < ..\character_updates\2845_refund.sql 654 655 ECHO [Importing] 2860_groups.sql 656 mysql -h %server% --user=%user% --password=%pass% --port=%port% %chr% < ..\character_updates\2860_groups.sql 633 657 634 658 -
trunk/sql/world_updates/2801_items.sql
r2801 r2860 12 12 13 13 /* there is HolidayId column added in 3.1 */ 14 ALTER TABLE `items` ADD `HolidayId` INT( 32 ) UNSIGNED NOT NULL DEFAULT '0' ;14 ALTER TABLE `items` ADD `HolidayId` INT( 32 ) UNSIGNED NOT NULL DEFAULT '0' after `ItemLimitCategoryId`; 15 15 16 16 /* Cosmetic changes */ -
trunk/sql/world_updates/2817_recallorientation.sql
r2817 r2860 1 ALTER TABLE recall ADD `Orientation` float unsigned NOT NULL DEFAULT '0' ;1 ALTER TABLE recall ADD `Orientation` float unsigned NOT NULL DEFAULT '0' after `positionZ`; -
trunk/src/arcemu-shared/AuthCodes.h
r2213 r2860 21 21 #define _AUTHCODES_H 22 22 23 // client 3. 0.3, 2008/11/1323 // client 3.2.0, 2009/08/16 24 24 enum LoginErrorCode 25 25 { … … 31 31 E_RESPONSE_CONNECTED = 0x05, 32 32 E_RESPONSE_VERSION_MISMATCH = 0x06, 33 33 34 34 E_CSTATUS_CONNECTING = 0x07, 35 35 E_CSTATUS_NEGOTIATING_SECURITY = 0x08, … … 37 37 E_CSTATUS_NEGOTIATION_FAILED = 0x0A, 38 38 E_CSTATUS_AUTHENTICATING = 0x0B, 39 39 40 40 E_AUTH_OK = 0x0C, 41 41 E_AUTH_FAILED = 0x0D, … … 61 61 E_AUTH_PARENTAL_CONTROL = 0x21, 62 62 E_AUTH_LOCKED_ENFORCED = 0x22, 63 63 64 64 E_REALM_LIST_IN_PROGRESS = 0x23, 65 65 E_REALM_LIST_SUCCESS = 0x24, … … 67 67 E_REALM_LIST_INVALID = 0x26, 68 68 E_REALM_LIST_REALM_NOT_FOUND = 0x27, 69 69 70 70 E_ACCOUNT_CREATE_IN_PROGRESS = 0x28, 71 71 E_ACCOUNT_CREATE_SUCCESS = 0x29, 72 72 E_ACCOUNT_CREATE_FAILED = 0x2A, 73 73 74 74 E_CHAR_LIST_RETRIEVING = 0x2B, 75 75 E_CHAR_LIST_RETRIEVED = 0x2C, 76 76 E_CHAR_LIST_FAILED = 0x2D, 77 77 78 78 E_CHAR_CREATE_IN_PROGRESS = 0x2E, 79 79 E_CHAR_CREATE_SUCCESS = 0x2F, … … 89 89 E_CHAR_CREATE_EXPANSION = 0x39, 90 90 E_CHAR_CREATE_EXPANSION_CLASS = 0x3A, 91 E_CHAR_CREATE_ERROR_NEED_LVL_55_CHAR = 0x3B, 92 E_CHAR_CREATE_ERROR_HERO_CLASS_LIMIT = 0x3C, 93 94 E_CHAR_DELETE_IN_PROGRESS = 0x3D, 95 E_CHAR_DELETE_SUCCESS = 0x3E, 96 E_CHAR_DELETE_FAILED = 0x3F, 97 E_CHAR_DELETE_FAILED_LOCKED_FOR_TRANSFER = 0x40, 98 E_CHAR_DELETE_FAILED_GUILD_LEADER = 0x41, 99 E_CHAR_DELETE_FAILED_ARENA_CAPTAIN = 0x42, 100 101 E_CHAR_LOGIN_IN_PROGRESS = 0x43, 102 E_CHAR_LOGIN_SUCCESS = 0x44, 103 E_CHAR_LOGIN_NO_WORLD = 0x45, 104 E_CHAR_LOGIN_DUPLICATE_CHARACTER = 0x46, 105 E_CHAR_LOGIN_NO_INSTANCES = 0x47, 106 E_CHAR_LOGIN_FAILED = 0x48, 107 E_CHAR_LOGIN_DISABLED = 0x49, 108 E_CHAR_LOGIN_NO_CHARACTER = 0x4A, 109 E_CHAR_LOGIN_LOCKED_FOR_TRANSFER = 0x4B, 110 E_CHAR_LOGIN_LOCKED_BY_BILLING = 0x4C, 111 112 E_CHAR_NAME_SUCCESS = 0x4D, 113 E_CHAR_NAME_FAILURE = 0x4E, 114 E_CHAR_NAME_NO_NAME = 0x4F, 115 E_CHAR_NAME_TOO_SHORT = 0x50, 116 E_CHAR_NAME_TOO_LONG = 0x51, 117 E_CHAR_NAME_INVALID_CHARACTER = 0x52, 118 E_CHAR_NAME_MIXED_LANGUAGES = 0x53, 119 E_CHAR_NAME_PROFANE = 0x54, 120 E_CHAR_NAME_RESERVED = 0x55, 121 E_CHAR_NAME_INVALID_APOSTROPHE = 0x56, 122 E_CHAR_NAME_MULTIPLE_APOSTROPHES = 0x57, 123 E_CHAR_NAME_THREE_CONSECUTIVE = 0x58, 124 E_CHAR_NAME_INVALID_SPACE = 0x59, 125 E_CHAR_NAME_CONSECUTIVE_SPACES = 0x5A, 126 E_CHAR_NAME_RUSSIAN_CONSECUTIVE_SILENT_CHARACTERS = 0x5B, 127 E_CHAR_NAME_RUSSIAN_SILENT_CHARACTER_AT_BEGINNING_OR_END = 0x5C, 128 E_CHAR_NAME_DECLENSION_DOESNT_MATCH_BASE_NAME = 0x5D, 129 91 E_CHAR_CREATE_LEVEL_REQUIREMENT = 0x3B, 92 E_CHAR_CREATE_UNIQUE_CLASS_LIMIT = 0x3C, 93 E_CHAR_CREATE_CHARACTER_IN_GUILD = 0x3D, 94 E_CHAR_CREATE_RESTRICTED_RACECLASS = 0x3E, 95 E_CHAR_CREATE_CHARACTER_CHOOSE_RACE = 0x3F, 96 E_CHAR_CREATE_CHARACTER_ARENA_LEADER = 0x40, 97 E_CHAR_CREATE_CHARACTER_DELETE_MAIL = 0x41, 98 99 E_CHAR_DELETE_IN_PROGRESS = 0x42, 100 E_CHAR_DELETE_SUCCESS = 0x43, 101 E_CHAR_DELETE_FAILED = 0x44, 102 E_CHAR_DELETE_FAILED_LOCKED_FOR_TRANSFER = 0x45, 103 E_CHAR_DELETE_FAILED_GUILD_LEADER = 0x46, 104 E_CHAR_DELETE_FAILED_ARENA_CAPTAIN = 0x47, 105 106 E_CHAR_LOGIN_IN_PROGRESS = 0x48, 107 E_CHAR_LOGIN_SUCCESS = 0x49, 108 E_CHAR_LOGIN_NO_WORLD = 0x4A, 109 E_CHAR_LOGIN_DUPLICATE_CHARACTER = 0x4B, 110 E_CHAR_LOGIN_NO_INSTANCES = 0x4C, 111 E_CHAR_LOGIN_FAILED = 0x4D, 112 E_CHAR_LOGIN_DISABLED = 0x4E, 113 E_CHAR_LOGIN_NO_CHARACTER = 0x4F, 114 E_CHAR_LOGIN_LOCKED_FOR_TRANSFER = 0x50, 115 E_CHAR_LOGIN_LOCKED_BY_BILLING = 0x51, 116 117 E_CHAR_NAME_SUCCESS = 0x52, 118 E_CHAR_NAME_FAILURE = 0x53, 119 E_CHAR_NAME_NO_NAME = 0x54, 120 E_CHAR_NAME_TOO_SHORT = 0x55, 121 E_CHAR_NAME_TOO_LONG = 0x56, 122 E_CHAR_NAME_INVALID_CHARACTER = 0x57, 123 E_CHAR_NAME_MIXED_LANGUAGES = 0x58, 124 E_CHAR_NAME_PROFANE = 0x59, 125 E_CHAR_NAME_RESERVED = 0x5A, 126 E_CHAR_NAME_INVALID_APOSTROPHE = 0x5B, 127 E_CHAR_NAME_MULTIPLE_APOSTROPHES = 0x5C, 128 E_CHAR_NAME_THREE_CONSECUTIVE = 0x5D, 129 E_CHAR_NAME_INVALID_SPACE = 0x5E, 130 E_CHAR_NAME_CONSECUTIVE_SPACES = 0x5F, 131 E_CHAR_NAME_RUSSIAN_CONSECUTIVE_SILENT_CHARACTERS = 0x60, 132 E_CHAR_NAME_RUSSIAN_SILENT_CHARACTER_AT_BEGINNING_OR_END = 0x61, 133 E_CHAR_NAME_DECLENSION_DOESNT_MATCH_BASE_NAME = 0x62, 130 134 }; 135 131 136 //These defines are for use with OutPacket 132 137 #define RESPONSE_SUCCESS "\x0" … … 168 173 #define AUTH_LOCKED_ENFORCED "\x22" 169 174 170 #define REALM_LIST_ RECIEVING"\x23"175 #define REALM_LIST_IN_PROGRESS "\x23" 171 176 #define REALM_LIST_SUCCESS "\x24" 172 177 #define REALM_LIST_FAILED "\x25" … … 195 200 #define CHAR_CREATE_EXPANSION "\x39" 196 201 #define CHAR_CREATE_EXPANSION_CLASS "\x3A" 197 #define CHAR_CREATE_ERROR_NEED_LVL_55_CHAR "\x3B" 198 #define CHAR_CREATE_ERROR_HERO_CLASS_LIMIT "\x3C" 199 200 #define CHAR_DELETE_IN_PROGRESS "\x3D" 201 #define CHAR_DELETE_SUCCESS "\x3E" 202 #define CHAR_DELETE_FAILED "\x3F" 203 #define CHAR_DELETE_FAILED_LOCKED_FOR_TRANSFER "\x40" 204 #define CHAR_DELETE_FAILED_GUILD_LEADER "\x41" 205 #define CHAR_DELETE_FAILED_ARENA_CAPTAIN "\x42" 206 207 #define CHAR_LOGIN_IN_PROGRESS "\x43" 208 #define CHAR_LOGIN_SUCCESS "\x44" 209 #define CHAR_LOGIN_NO_WORLD "\x45" 210 #define CHAR_LOGIN_DUPLICATE_CHARACTER "\x46" 211 #define CHAR_LOGIN_NO_INSTANCES "\x47" 212 #define CHAR_LOGIN_FAILED "\x48" 213 #define CHAR_LOGIN_DISABLED "\x49" 214 #define CHAR_LOGIN_NO_CHARACTER "\x4A" 215 #define CHAR_LOGIN_LOCKED_FOR_TRANSFER "\x4B" 216 #define CHAR_LOGIN_LOCKED_BY_BILLING "\x4C" 217 218 #define CHAR_NAME_SUCCESS "\x4D" 219 #define CHAR_NAME_FAILURE "\x4E" 220 #define CHAR_NAME_NO_NAME "\x4F" 221 #define CHAR_NAME_TOO_SHORT "\x50" 222 #define CHAR_NAME_TOO_LONG "\x51" 223 #define CHAR_NAME_INVALID_CHARACTER "\x52" 224 #define CHAR_NAME_MIXED_LANGUAGES "\x53" 225 #define CHAR_NAME_PROFANE "\x54" 226 #define CHAR_NAME_RESERVED "\x55" 227 #define CHAR_NAME_INVALID_APOSTROPHE "\x56" 228 #define CHAR_NAME_MULTIPLE_APOSTROPHES "\x57" 229 #define CHAR_NAME_THREE_CONSECUTIVE "\x58" 230 #define CHAR_NAME_INVALID_SPACE "\x59" 231 #define CHAR_NAME_CONSECUTIVE_SPACES "\x5A" 232 #define CHAR_NAME_RUSSIAN_CONSECUTIVE_SILENT_CHARACTERS "\x5B" 233 #define CHAR_NAME_RUSSIAN_SILENT_CHARACTER_AT_BEGINNING_OR_END "\x5C" 234 #define CHAR_NAME_DECLENSION_DOESNT_MATCH_BASE_NAME "\x5D" 202 #define CHAR_CREATE_LEVEL_REQUIREMENT "\x3B" 203 #define CHAR_CREATE_UNIQUE_CLASS_LIMIT "\x3C" 204 #define CHAR_CREATE_CHARACTER_IN_GUILD "\x3D" 205 #define CHAR_CREATE_RESTRICTED_RACECLASS "\x3E" 206 #define CHAR_CREATE_CHARACTER_CHOOSE_RACE "\x3F" 207 #define CHAR_CREATE_CHARACTER_ARENA_LEADER "\x40" 208 #define CHAR_CREATE_CHARACTER_DELETE_MAIL "\x41" 209 210 #define CHAR_DELETE_IN_PROGRESS "\x42" 211 #define CHAR_DELETE_SUCCESS "\x43" 212 #define CHAR_DELETE_FAILED "\x44" 213 #define CHAR_DELETE_FAILED_LOCKED_FOR_TRANSFER "\x45" 214 #define CHAR_DELETE_FAILED_GUILD_LEADER "\x46" 215 #define CHAR_DELETE_FAILED_ARENA_CAPTAIN "\x47" 216 217 #define CHAR_LOGIN_IN_PROGRESS "\x48" 218 #define CHAR_LOGIN_SUCCESS "\x49" 219 #define CHAR_LOGIN_NO_WORLD "\x4A" 220 #define CHAR_LOGIN_DUPLICATE_CHARACTER "\x4B" 221 #define CHAR_LOGIN_NO_INSTANCES "\x4C" 222 #define CHAR_LOGIN_FAILED "\x4D" 223 #define CHAR_LOGIN_DISABLED "\x4E" 224 #define CHAR_LOGIN_NO_CHARACTER "\x4F" 225 #define CHAR_LOGIN_LOCKED_FOR_TRANSFER "\x50" 226 #define CHAR_LOGIN_LOCKED_BY_BILLING "\x51" 227 228 #define CHAR_NAME_SUCCESS "\x52" 229 #define CHAR_NAME_FAILURE "\x53" 230 #define CHAR_NAME_NO_NAME "\x54" 231 #define CHAR_NAME_TOO_SHORT "\x55" 232 #define CHAR_NAME_TOO_LONG "\x56" 233 #define CHAR_NAME_INVALID_CHARACTER "\x57" 234 #define CHAR_NAME_MIXED_LANGUAGES "\x58" 235 #define CHAR_NAME_PROFANE "\x59" 236 #define CHAR_NAME_RESERVED "\x5A" 237 #define CHAR_NAME_INVALID_APOSTROPHE "\x5B" 238 #define CHAR_NAME_MULTIPLE_APOSTROPHES "\x5C" 239 #define CHAR_NAME_THREE_CONSECUTIVE "\x5D" 240 #define CHAR_NAME_INVALID_SPACE "\x5E" 241 #define CHAR_NAME_CONSECUTIVE_SPACES "\x5F" 242 #define CHAR_NAME_RUSSIAN_CONSECUTIVE_SILENT_CHARACTERS "\x60" 243 #define CHAR_NAME_RUSSIAN_SILENT_CHARACTER_AT_BEGINNING_OR_END "\x61" 244 #define CHAR_NAME_DECLENSION_DOESNT_MATCH_BASE_NAME "\x62" 235 245 236 246 #endif -
trunk/src/arcemu-shared/Database/DBCStores.cpp
r2784 r2860 172 172 "u" // AttributesExE 173 173 "u" // AttributesExF 174 "x" // unk 3.2.0 174 175 "u" // RequiredShapeShift 176 "x" // unk 3.2.0 175 177 "u" // ShapeshiftExclude 178 "x" // unk 3.2.0 176 179 "u" // Targets 177 180 "u" // TargetCreatureType … … 265 268 "ux" 266 269 "x" //Added in 3.1 270 "xxx" // unk 3.2.0, float! 271 "x" // unk 3.2.0 267 272 ; 268 273 269 274 270 const char* itemextendedcostFormat = "uuu uuuuuuuuuuux";275 const char* itemextendedcostFormat = "uuuxuuuuuuuuuuux"; 271 276 const char* talententryFormat = "uuuuuuuuuxxxxuxxuxxxxxx"; 272 277 const char* talenttabentryFormat = "uxxxxxxxxxxxxxxxxxxxuuux"; … … 286 291 const char* dbctaxipathnodeFormat = "uuuufffuuxx"; 287 292 const char* creaturespelldataFormat = "uuuuuuuuu"; 288 const char* charraceFormat = "uxxxxxx xuxxxxulxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";293 const char* charraceFormat = "uxxxxxxuxxxxulxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; 289 294 const char* charclassFormat = "uxuxlxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; 290 295 const char* creaturefamilyFormat = "ufufuuuuuxlxxxxxxxxxxxxxxxxx"; … … 300 305 "u" // 56 multimap_id 301 306 "x" // 57 unk_float (all 1 but arathi 1.25) 302 "xxxxxxxxxxxxxxxxx" // 58-74 normalReqText 303 "xxxxxxxxxxxxxxxxx" // 75-91 heroicReqText 304 "xxxxxxxxxxxxxxxxx" // 92-108 emptyText 305 "u" // 109 parent_map 306 "u" // 110 start_x 307 "u" // 111 start_y 308 "u" // 112 resetTimeRaid 309 "u" // 113 resetTimeHeroic 310 "x" // 114 unk 311 "x" // 115 unk 312 "u" // 116 addon 313 "x"; // 117 unk 307 "u" // 58 parent_map 308 "u" // 59 start_x 309 "u" // 60 start_y 310 "x" // 61 unk 311 "u" // 62 addon 312 "x" // 63 unk 313 "x"; // 64 unk, but as it is always one of the following ones, it could be a max. player count: 0, 5, 10, 20, 25, 40 314 314 315 315 const char* itemrandomsuffixformat = "uxxxxxxxxxxxxxxxxxxuuuxxuuuxx";//19, 20, 21, 24, 25, 26 … … 322 322 const char* areatriggerformat = "uuffffffff"; 323 323 const char* scalingstatdistributionformat = "uiiiiiiiiiiuuuuuuuuuuu"; 324 const char* scalingstatvaluesformat = "uuuuuuuuuuuuuuuuuu u";324 const char* scalingstatvaluesformat = "uuuuuuuuuuuuuuuuuuxxxxxx"; 325 325 const char* itemlimitcategoryformat = "usxxxxxxxxxxxxxxxxuu"; 326 326 -
trunk/src/arcemu-shared/Database/DBCStores.h
r2830 r2860 1301 1301 float start_x; // enter x coordinate (if exist single entry) 1302 1302 float start_y; // enter y coordinate (if exist single entry) 1303 uint32 resetTimeRaid;1304 uint32 resetTimeHeroic;1303 //uint32 resetTimeRaid; // REMOVED IN 3.2.0 1304 //uint32 resetTimeHeroic; // REMOVED IN 3.2.0 1305 1305 uint32 addon; // 0-original maps, 1-tbc addon, 2-wotlk addon 1306 1306 }; … … 1435 1435 uint32 id; 1436 1436 uint32 level; 1437 uint32 multiplier[1 7];1437 uint32 multiplier[16]; 1438 1438 }; 1439 1439 -
trunk/src/arcemu-world/ArenaTeam.cpp
r2808 r2860 156 156 if(plr) 157 157 { 158 base_field = (m_type* 6) + PLAYER_FIELD_ARENA_TEAM_INFO_1_1;158 base_field = (m_type*7) + PLAYER_FIELD_ARENA_TEAM_INFO_1_1; 159 159 plr->SetUInt32Value(base_field, m_id); 160 160 plr->SetUInt32Value(base_field+1,m_leader); … … 181 181 if(info->m_loggedInPlayer) 182 182 { 183 info->m_loggedInPlayer->SetUInt32Value(PLAYER_FIELD_ARENA_TEAM_INFO_1_1 + (m_type* 6), 0);183 info->m_loggedInPlayer->SetUInt32Value(PLAYER_FIELD_ARENA_TEAM_INFO_1_1 + (m_type*7), 0); 184 184 info->m_loggedInPlayer->m_arenaTeams[m_type]=0; 185 185 } … … 315 315 { 316 316 if(m_members[i].Info->m_loggedInPlayer) 317 m_members[i].Info->m_loggedInPlayer->SetUInt32Value(PLAYER_FIELD_ARENA_TEAM_INFO_1_1 + (m_type* 6) + 1, 0);317 m_members[i].Info->m_loggedInPlayer->SetUInt32Value(PLAYER_FIELD_ARENA_TEAM_INFO_1_1 + (m_type*7) + 1, 0); 318 318 } 319 319 else if(m_members[i].Info->guid == old_leader) 320 320 { 321 321 if(m_members[i].Info->m_loggedInPlayer) 322 m_members[i].Info->m_loggedInPlayer->SetUInt32Value(PLAYER_FIELD_ARENA_TEAM_INFO_1_1 + (m_type* 6) + 1, 1);322 m_members[i].Info->m_loggedInPlayer->SetUInt32Value(PLAYER_FIELD_ARENA_TEAM_INFO_1_1 + (m_type*7) + 1, 1); 323 323 } 324 324 } -
trunk/src/arcemu-world/BattlegroundHandler.cpp
r2790 r2860 347 347 for( uint8 i = 0; i < 3; i++ ) 348 348 { 349 id = player->GetUInt32Value( PLAYER_FIELD_ARENA_TEAM_INFO_1_1 + ( i * 6) );349 id = player->GetUInt32Value( PLAYER_FIELD_ARENA_TEAM_INFO_1_1 + ( i * 7 ) ); 350 350 if( id > 0 ) 351 351 { -
trunk/src/arcemu-world/BattlegroundMgr.cpp
r2773 r2860 26 26 const static uint32 BGMapIds[ BATTLEGROUND_NUM_TYPES ] = 27 27 { 28 0, // 029 30, // AV28 0, // 0 29 30, // AV 30 30 489, // WSG 31 31 529, // AB 32 0, // 2v233 0, // 3v334 0, // 5v532 0, // 2v2 33 0, // 3v3 34 0, // 5v5 35 35 566, // EOTS 36 36 0, … … 41 41 42 42 const static CreateBattlegroundFunc BGCFuncs[BATTLEGROUND_NUM_TYPES] = { 43 NULL, // 044 &AlteracValley::Create, // AV45 &WarsongGulch::Create, // WSG46 &ArathiBasin::Create, // AB47 NULL, // 2v248 NULL, // 3v349 NULL, // 5v550 &EyeOfTheStorm::Create, // EotS43 NULL, // 0 44 &AlteracValley::Create, // AV 45 &WarsongGulch::Create, // WSG 46 &ArathiBasin::Create, // AB 47 NULL, // 2v2 48 NULL, // 3v3 49 NULL, // 5v5 50 &EyeOfTheStorm::Create, // EotS 51 51 NULL, 52 &StrandOfTheAncient::Create, // SOTA52 &StrandOfTheAncient::Create, // SOTA 53 53 NULL, 54 54 NULL, … … 84 84 return; 85 85 } 86 87 if( BattlegroundType >= BATTLEGROUND_NUM_TYPES ) return; //VLack: Nasty hackers might try to abuse this packet to crash us... 86 88 87 89 uint32 Count = 0; -
trunk/src/arcemu-world/BattlegroundMgr.h
r2773 r2860 35 35 enum BattlegroundDbcIndex 36 36 { 37 BGDBC_ALTERAC_VALLEY = 1,37 BGDBC_ALTERAC_VALLEY = 1, 38 38 BGDBC_WARSONG_GULCH = 2, 39 39 BGDBC_ARATHI_BASIN = 3, 40 40 BGDBC_ARENA_NAGRAND = 4, 41 BGDBC_ARENA_BLADES_EDGE = 5,41 BGDBC_ARENA_BLADES_EDGE = 5, 42 42 BGDBC_ARENA_ALLMAPS = 6, 43 BGDBC_EYE_OF_THE_STORM = 7,44 BGDBC_RUINS_OF_LORDAERON = 8,45 BGDBC_STRAND_OF_THE_ANCIENT = 9,46 BGDBC_DALARAN_SEWERS = 10,43 BGDBC_EYE_OF_THE_STORM = 7, 44 BGDBC_RUINS_OF_LORDAERON = 8, 45 BGDBC_STRAND_OF_THE_ANCIENT = 9, 46 BGDBC_DALARAN_SEWERS = 10, 47 47 BGDBC_RING_OF_VALOR = 11, 48 BGDBC_ROWS = 11,48 BGDBC_ROWS = 11, 49 49 }; 50 50 51 51 enum BattleGroundTypes 52 52 { 53 BATTLEGROUND_ALTERAC_VALLEY = 1,54 BATTLEGROUND_WARSONG_GULCH = 2,55 BATTLEGROUND_ARATHI_BASIN = 3,56 BATTLEGROUND_ARENA_2V2 = 4,57 BATTLEGROUND_ARENA_3V3 = 5,58 BATTLEGROUND_ARENA_5V5 = 6,53 BATTLEGROUND_ALTERAC_VALLEY = 1, 54 BATTLEGROUND_WARSONG_GULCH = 2, 55 BATTLEGROUND_ARATHI_BASIN = 3, 56 BATTLEGROUND_ARENA_2V2 = 4, 57 BATTLEGROUND_ARENA_3V3 = 5, 58 BATTLEGROUND_ARENA_5V5 = 6, 59 59 BATTLEGROUND_EYE_OF_THE_STORM = 7, 60 60 BATTLEGROUND_STRAND_OF_THE_ANCIENT = 9, 61 BATTLEGROUND_NUM_TYPES = 12,61 BATTLEGROUND_NUM_TYPES = 33, //Based on BattlemasterList.dbc, make the storage arrays big enough! On 3.1.3 the last one was 11 The Ring of Valor, so 12 was enough here, but on 3.2.0 there is 32 All Battlegrounds! 62 62 }; 63 63 … … 87 87 88 88 #define SOUND_BATTLEGROUND_BEGIN 0xD6F 89 #define SOUND_HORDE_SCORES 821389 #define SOUND_HORDE_SCORES 8213 90 90 #define SOUND_ALLIANCE_SCORES 8173 91 91 #define SOUND_ALLIANCE_CAPTURE 8174 92 #define SOUND_HORDE_CAPTURE 821292 #define SOUND_HORDE_CAPTURE 8212 93 93 #define SOUND_ALLIANCE_RETURNED 8192 94 94 #define SOUND_HORDE_RETURNED 8192 // huh? 95 #define SOUND_HORDEWINS 845496 #define SOUND_ALLIANCEWINS 845597 #define SOUND_HORDE_BGALMOSTEND 0x210898 #define SOUND_ALLIANCE_BGALMOSTEND 0x210999 100 #define AB_ALLIANCE_RESOURCES 0x6F0101 #define AB_HORDE_RESOURCES 0x6F195 #define SOUND_HORDEWINS 8454 96 #define SOUND_ALLIANCEWINS 8455 97 #define SOUND_HORDE_BGALMOSTEND 0x2108 98 #define SOUND_ALLIANCE_BGALMOSTEND 0x2109 99 100 #define AB_ALLIANCE_RESOURCES 0x6F0 101 #define AB_HORDE_RESOURCES 0x6F1 102 102 #define AB_HORDE_CAPTUREBASE 0x6F2 103 #define AB_ALLIANCE_CAPTUREBASE 0x6F3104 #define AB_MAX_SCORE 0x6F4105 106 #define BG_PREPARATION 44521107 #define BG_REVIVE_PREPARATION 44535108 #define RESURRECT_SPELL 21074// Spirit Healer Res109 #define BG_DESERTER 26013103 #define AB_ALLIANCE_CAPTUREBASE 0x6F3 104 #define AB_MAX_SCORE 0x6F4 105 106 #define BG_PREPARATION 44521 107 #define BG_REVIVE_PREPARATION 44535 108 #define RESURRECT_SPELL 21074 // Spirit Healer Res 109 #define BG_DESERTER 26013 110 110 111 111 // WSG define's 112 #define WSG_ALLIANCE_FLAG_CAPTURED 0x922113 #define WSG_HORDE_FLAG_CAPTURED 0x923114 #define WSG_CURRENT_HORDE_SCORE 0x62E115 #define WSG_CURRENT_ALLIANCE_SCORE 0x62D116 #define WSG_MAX_SCORE 0x641112 #define WSG_ALLIANCE_FLAG_CAPTURED 0x922 113 #define WSG_HORDE_FLAG_CAPTURED 0x923 114 #define WSG_CURRENT_HORDE_SCORE 0x62E 115 #define WSG_CURRENT_ALLIANCE_SCORE 0x62D 116 #define WSG_MAX_SCORE 0x641 117 117 118 118 // AV define's 119 #define AV_UNCONTROLED_SNOWFALL_GRAVE 0x7AE //1 -> show uncontrolled120 121 #define AV_CONTROLED_ICEBLOOD_TOWER_HORDE 0x569 //1 -> horde controlled122 #define AV_CONTROLED_TOWER_POINT_HORDE 0x568 //1 -> horde controlled123 #define AV_CONTROLED_FROSTWOLF_RELIFHUNT_HORDE 0x532 //1 -> horde controlled124 #define AV_CONTROLED_EAST_FROSTWOLF_TOWER_HORDE 0x567 //1 -> horde controlled125 #define AV_CONTROLED_WEST_FROSTWOLF_TOWER_HORDE 0x566 //1 -> horde controlled126 #define AV_CONTROLED_ICEBLOOD_GRAVE_HORDE 0x543 //1 -> horde controlled127 #define AV_CONTROLED_FROSTWOLF_GRAVE_HORDE 0x53A //1 -> horde controlled128 129 #define AV_CONTROLED_IRONDEEP_MINE_TROGG 0x550 //1 -> trogg controlled130 #define AV_CONTROLED_COLDTHOOT_MINE_KOBOLT 0x54D //1 -> kobolt controlled131 132 #define AV_CONTROLED_STORMPIKE_GRAVE_ALLIANCE 0x535 //1 -> alliance controlled133 #define AV_CONTROLED_STONEHEART_BUNKER_ALLIANCE 0x554 //1 -> alliance controlled134 #define AV_CONTROLED_ICEWING_BUNKER_ALLIANCE 0x553 //1 -> alliance controlled135 #define AV_CONTROLED_DUBALDER_NORTH_BUNKER_ALLIANCE 0x552 //1 -> alliance controlled136 #define AV_CONTROLED_DUBALDER_SOUTH_BUNKER_ALLIANCE 0x551 //1 -> alliance controlled137 #define AV_CONTROLED_STORMPIKE_AID_STATION_ALLIANCE 0x52D //1 -> alliance controlled138 #define AV_CONTROLED_STONEHEART_GRAVE_ALLIANCE 0x516 //1 -> alliance controlled119 #define AV_UNCONTROLED_SNOWFALL_GRAVE 0x7AE //1 -> show uncontrolled 120 121 #define AV_CONTROLED_ICEBLOOD_TOWER_HORDE 0x569 //1 -> horde controlled 122 #define AV_CONTROLED_TOWER_POINT_HORDE 0x568 //1 -> horde controlled 123 #define AV_CONTROLED_FROSTWOLF_RELIFHUNT_HORDE 0x532 //1 -> horde controlled 124 #define AV_CONTROLED_EAST_FROSTWOLF_TOWER_HORDE 0x567 //1 -> horde controlled 125 #define AV_CONTROLED_WEST_FROSTWOLF_TOWER_HORDE 0x566 //1 -> horde controlled 126 #define AV_CONTROLED_ICEBLOOD_GRAVE_HORDE 0x543 //1 -> horde controlled 127 #define AV_CONTROLED_FROSTWOLF_GRAVE_HORDE 0x53A //1 -> horde controlled 128 129 #define AV_CONTROLED_IRONDEEP_MINE_TROGG 0x550 //1 -> trogg controlled 130 #define AV_CONTROLED_COLDTHOOT_MINE_KOBOLT 0x54D //1 -> kobolt controlled 131 132 #define AV_CONTROLED_STORMPIKE_GRAVE_ALLIANCE 0x535 //1 -> alliance controlled 133 #define AV_CONTROLED_STONEHEART_BUNKER_ALLIANCE 0x554 //1 -> alliance controlled 134 #define AV_CONTROLED_ICEWING_BUNKER_ALLIANCE 0x553 //1 -> alliance controlled 135 #define AV_CONTROLED_DUBALDER_NORTH_BUNKER_ALLIANCE 0x552 //1 -> alliance controlled 136 #define AV_CONTROLED_DUBALDER_SOUTH_BUNKER_ALLIANCE 0x551 //1 -> alliance controlled 137 #define AV_CONTROLED_STORMPIKE_AID_STATION_ALLIANCE 0x52D //1 -> alliance controlled 138 #define AV_CONTROLED_STONEHEART_GRAVE_ALLIANCE 0x516 //1 -> alliance controlled 139 139 140 140 /* get level grouping for player */ -
trunk/src/arcemu-world/CharacterHandler.cpp
r2831 r2860 197 197 data << uint32(1); // alive 198 198 } 199 data << uint32(0); //Added in 3.0.2 200 199 200 data << uint32(0); //Added in 3.0.2 - if 1, faction change at logon... 201 201 202 data << fields[14].GetUInt8(); // Rest State 203 204 data << uint8(0); //3.2.0 202 205 203 206 if( Class == WARLOCK || Class == HUNTER ) … … 368 371 && ( class_ == DEATHKNIGHT ) ) 369 372 { 370 OutPacket(SMSG_CHAR_CREATE, 1, CHAR_CREATE_ ERROR_HERO_CLASS_LIMIT);373 OutPacket(SMSG_CHAR_CREATE, 1, CHAR_CREATE_UNIQUE_CLASS_LIMIT); 371 374 return; 372 375 } … … 427 430 SendPacket( &data ); 428 431 */ 429 OutPacket( SMSG_CHAR_CREATE, 1, CHAR_CREATE_ ERROR_NEED_LVL_55_CHAR);432 OutPacket( SMSG_CHAR_CREATE, 1, CHAR_CREATE_LEVEL_REQUIREMENT); 430 433 return; 431 434 } -
trunk/src/arcemu-world/Creature.h
r2850 r2860 65 65 char * SubName; 66 66 char * info_str; 67 uint32 QuestItems[6]; 67 68 uint32 Flags1; 68 69 uint32 Type; -
trunk/src/arcemu-world/DynamicObject.cpp
r2802 r2860 72 72 73 73 m_floatValues[DYNAMICOBJECT_RADIUS] = radius; 74 m_floatValues[DYNAMICOBJECT_POS_X] = x; 75 m_floatValues[DYNAMICOBJECT_POS_Y] = y; 76 m_floatValues[DYNAMICOBJECT_POS_Z] = z; 74 m_position.x = x; //m_floatValues[DYNAMICOBJECT_POS_X] = x; 75 m_position.y = y; //m_floatValues[DYNAMICOBJECT_POS_Y] = y; 76 m_position.z = z; //m_floatValues[DYNAMICOBJECT_POS_Z] = z; 77 77 78 78 79 m_aliveDuration = duration; -
trunk/src/arcemu-world/GameObject.cpp
r2828 r2860 60 60 m_battleground = NULL; 61 61 m_rotation = 0; 62 63 m_overrides = 0; 62 64 } 63 65 … … 99 101 } 100 102 101 bool GameObject::CreateFromProto(uint32 entry,uint32 mapid, float x, float y, float z, float ang, float r0, float r1, float r2, float r3 )103 bool GameObject::CreateFromProto(uint32 entry,uint32 mapid, float x, float y, float z, float ang, float r0, float r1, float r2, float r3, uint32 overrides) 102 104 { 103 105 pInfo= GameObjectNameStorage.LookupEntry(entry); … … 107 109 SetUInt32Value( OBJECT_FIELD_ENTRY, entry ); 108 110 111 m_overrides=overrides; 109 112 // SetFloatValue( GAMEOBJECT_POS_X, x ); 110 113 // SetFloatValue( GAMEOBJECT_POS_Y, y ); … … 322 325 << GetFloatValue(OBJECT_FIELD_SCALE_X) << "," 323 326 << "0," 324 << m_phase << ")"; 327 << m_phase << "," 328 << m_overrides << ")"; 325 329 WorldDatabase.Execute(ss.str().c_str()); 326 330 … … 374 378 << GetFloatValue(OBJECT_FIELD_SCALE_X) << "," 375 379 << "0," 376 << m_phase << ")"; 380 << m_phase << "," 381 << m_overrides << ")"; 377 382 378 383 FILE * OutFile; … … 497 502 bool GameObject::Load(GOSpawn *spawn) 498 503 { 499 if(!CreateFromProto(spawn->entry,0,spawn->x,spawn->y,spawn->z,spawn->facing ))504 if(!CreateFromProto(spawn->entry,0,spawn->x,spawn->y,spawn->z,spawn->facing,spawn->o,spawn->o1,spawn->o2,spawn->o3,spawn->overrides)) 500 505 return false; 501 506 … … 840 845 float r2=GetFloatValue(GAMEOBJECT_PARENTROTATION_02); 841 846 float r3=GetFloatValue(GAMEOBJECT_PARENTROTATION_03); 842 if(r2==0.0f && r3==0.0f )847 if(r2==0.0f && r3==0.0f && !(m_overrides & GAMEOBJECT_OVERRIDE_PARENTROT) ) 843 848 { 844 849 r2 = (float)f_rot1; -
trunk/src/arcemu-world/GameObject.h
r2788 r2860 44 44 }; 45 45 46 enum GAMEOBJECT_OVERRIDES //by VLack 47 { 48 GAMEOBJECT_INFVIS = 0x01, //Makes the gameobject forever visible on the map after you saw it at least once - for various transports; actually it just doesn't erase it while you're on the same map. 49 GAMEOBJECT_MAPWIDE = 0x02, //When you enter its map, the gameobject gets pushed to you no matter how far it is (but only for players), especially for Deeprun and Ulduar Trams. 50 GAMEOBJECT_AREAWIDE = 0x04, //UNIMPLEMENTED, but will work like this: the Map will get marked that it contains an object like this, and on player movement these objects will get distance-checked to spawn them from a greater distance than normal if needed - for few objects on smaller maps, like on battlegrounds; maybe they'll get area-triggered, haven't decided yet. 51 GAMEOBJECT_ONMOVEWIDE = 0x08, //When this gameobject moves and sends updates about it's position, do so in the second range - MapMgr::ChangeObjectLocation, +/- 6 units wide instead of +/- 1. 52 GAMEOBJECT_OVERRIDE_FLAGS = 0x10, //UNIMPLEMENTED, Let the core decide about the flags sent in the A9 - example: 252 instead of 352 for Deeprun Tram. 53 GAMEOBJECT_OVERRIDE_BYTES1 = 0x20, //UNIMPLEMENTED, Let the core use the full field instead an uint8 in GAMEOBJECT_BYTES_1, if the database creator knows what to do with it. 54 GAMEOBJECT_OVERRIDE_PARENTROT = 0x40, //Makes it possible for the core to skip calculating these fields and use whatever was specified in the spawn. 55 //Later other types might folow, or the upper bytes might get used for the AREAWIDE option in the overrides variable... 56 }; 57 46 58 #if ENABLE_SHITTY_STL_HACKS == 1 47 59 typedef HM_NAMESPACE::hash_map<Quest*, uint32 > GameObjectGOMap; … … 86 98 char * Unkstr; 87 99 float Size; 88 uint32 QuestItems[ 4];100 uint32 QuestItems[6]; 89 101 uint32 SpellFocus; 90 102 uint32 sound1; … … 188 200 //void Create ( uint32 display_id, uint8 state, uint32 obj_field_entry, float scale, uint16 type, uint16 faction, uint32 mapid, float x, float y, float z, float ang ); 189 201 // void Create ( uint32 mapid, float x, float y, float z, float ang); 190 bool CreateFromProto(uint32 entry,uint32 mapid, float x, float y, float z, float ang, float r0=0.0f, float r1=0.0f, float r2=0.0f, float r3=0.0f );202 bool CreateFromProto(uint32 entry,uint32 mapid, float x, float y, float z, float ang, float r0=0.0f, float r1=0.0f, float r2=0.0f, float r3=0.0f, uint32 overrides=0); 191 203 192 204 bool Load(GOSpawn *spawn); … … 303 315 uint8 GetState(); 304 316 317 ARCEMU_INLINE uint32 GetOverrides() { return m_overrides; } 318 305 319 protected: 306 320 … … 312 326 uint32 usage_remaining; //used for mining to mark times it can be mined 313 327 328 uint32 m_overrides; //See enum GAMEOBJECT_OVERRIDES! 314 329 }; 315 330 -
trunk/src/arcemu-world/Group.cpp
r2773 r2860 82 82 m_isqueued=false; 83 83 m_difficulty=0; 84 m_raiddifficulty=0; 84 85 m_assistantLeader=m_mainAssist=m_mainTank=NULL; 85 86 #ifdef VOICE_CHAT … … 285 286 data.Initialize(SMSG_GROUP_LIST); 286 287 data << uint8(m_GroupType); //0=party,1=raid 287 data << uint8(0); // unk288 data << uint8(0); // 1 if battleground group 288 289 data << uint8(sg1->GetID()); 289 290 data << uint8(0); // unk2 … … 344 345 data << uint8( m_LootThreshold ); 345 346 data << uint8( m_difficulty ); 347 data << uint8( m_raiddifficulty ); 346 348 347 349 if( !(*itr1)->m_loggedInPlayer->IsInWorld() ) … … 776 778 m_LootThreshold = fields[4].GetUInt8(); 777 779 m_difficulty = fields[5].GetUInt8(); 780 m_raiddifficulty = fields[6].GetUInt8(); 778 781 779 782 LOAD_ASSISTANT(6, m_assistantLeader); … … 849 852 << uint32(m_LootMethod) << "," 850 853 << uint32(m_LootThreshold) << "," 851 << uint32(m_difficulty) << ","; 854 << uint32(m_difficulty) << "," 855 << uint32(m_raiddifficulty) << ","; 852 856 853 857 if(m_assistantLeader) -
trunk/src/arcemu-world/Group.h
r2773 r2860 237 237 public: 238 238 uint8 m_difficulty; 239 uint8 m_raiddifficulty; 239 240 }; 240 241 -
trunk/src/arcemu-world/ItemHandler.cpp
r2847 r2860 429 429 int8 error=0; 430 430 431 recv_data >> srcslot >> dstslot;431 recv_data >> dstslot >> srcslot; 432 432 433 433 sLog.outDetail("ITEM: swap, src slot: %u dst slot: %u", (uint32)srcslot, (uint32)dstslot); … … 943 943 data << itemProto->Flags; 944 944 data << itemProto->BuyPrice; 945 data << itemProto->Faction; 945 946 data << itemProto->SellPrice; 946 947 data << itemProto->InventoryType; -
trunk/src/arcemu-world/ItemInterface.cpp
r2852 r2860 414 414 m_pOwner->ApplyItemMods( pItem, slot, false ); 415 415 int VisibleBase = PLAYER_VISIBLE_ITEM_1_ENTRYID + (slot * PLAYER_VISIBLE_ITEM_LENGTH); 416 for (int i = VisibleBase; i < VisibleBase + 17; ++i)416 for (int i = VisibleBase; i < VisibleBase + PLAYER_VISIBLE_ITEM_LENGTH; ++i) 417 417 { 418 418 m_pOwner->SetUInt32Value(i, 0); … … 585 585 m_pOwner->ApplyItemMods(pItem, slot, false ); 586 586 int VisibleBase = PLAYER_VISIBLE_ITEM_1_ENTRYID + (slot * PLAYER_VISIBLE_ITEM_LENGTH); 587 for (int i = VisibleBase; i < VisibleBase + 17; ++i)587 for (int i = VisibleBase; i < VisibleBase + PLAYER_VISIBLE_ITEM_LENGTH; ++i) 588 588 { 589 589 m_pOwner->SetUInt32Value(i, 0); -
trunk/src/arcemu-world/ItemPrototype.h
r2801 r2860 319 319 ARMOR_PENETRATION_RATING = 44, 320 320 SPELL_POWER = 45, 321 HEALTH_REGEN = 46, 322 SPELL_PENETRATION = 47, 323 BLOCK_VALUE = 48, 321 324 }; 322 325 … … 586 589 uint32 Quality; 587 590 uint32 Flags; 591 uint32 Faction; 588 592 uint32 BuyPrice; 589 593 uint32 SellPrice; -
trunk/src/arcemu-world/LfgMgr.h
r2773 r2860 27 27 LFG_ZONE = 4, 28 28 LFG_HEROIC_DUNGEON = 5, // from client 29 LFG_ANY_DUNGEON = 6, 30 LFG_ANY_HEROIC_DUNGEON = 7, 31 LFG_DAILY_DUNGEON = 8, 32 LFG_DAILY_HEROIC_DUNGEON = 9, 29 33 }; 30 34 31 #define MAX_DUNGEONS 2 44+1 // check max entry's +1 on lfgdungeons.dbc35 #define MAX_DUNGEONS 250+1 // check max entry's +1 on lfgdungeons.dbc 32 36 #define MAX_LFG_QUEUE_ID 3 33 37 #define LFG_MATCH_TIMEOUT 30 // in seconds -
trunk/src/arcemu-world/MailSystem.cpp
r2808 r2860 63 63 WorldPacket * data = new WorldPacket(SMSG_MAIL_LIST_RESULT, 500); 64 64 MessageMap::iterator itr; 65 uint32 realcount = 0; 65 66 uint32 count = 0; 66 67 uint32 t = (uint32)UNIXTIME; 68 *data << uint32(0); // realcount - this can be used to tell the client we have more mail than that fits into this packet 67 69 *data << uint8(0); // size placeholder 68 70 … … 74 76 if((uint32)UNIXTIME < itr->second.delivery_time) 75 77 continue; // undelivered 76 78 79 if(count >= 50) //VLack: We could calculate message sizes instead of this, but the original code did a break at 50, so I won't fix this up if no one felt the need to do so before ;-) 80 { 81 ++realcount; 82 continue; 83 } 84 77 85 if(itr->second.AddMessageDataToPacket(*data)) 86 { 78 87 ++count; 79 80 if(count == 50)81 break;82 } 83 84 const_cast<uint8*>(data->contents())[0] = static_cast<uint8>( count );88 ++realcount; 89 } 90 } 91 92 data->put<uint32>(0, realcount); 93 data->put<uint8>(4, count); 85 94 86 95 // do cleanup on request mail -
trunk/src/arcemu-world/Map.cpp
r2828 r2860 26 26 27 27 #define CREATURESPAWNSFIELDCOUNT 26 28 #define GOSPAWNSFIELDCOUNT 1 728 #define GOSPAWNSFIELDCOUNT 18 29 29 30 30 Map::Map(uint32 mapid, MapInfo * inf) … … 274 274 gspawn->phase = fields[16].GetUInt32(); 275 275 if( gspawn->phase == 0 ) gspawn->phase=0xFFFFFFFF; 276 gspawn->overrides = fields[17].GetUInt32(); 276 277 staticSpawns.GOSpawns.push_back(gspawn); 277 278 ++GameObjectSpawnCount; … … 309 310 gspawn->phase = fields[16].GetUInt32(); 310 311 if( gspawn->phase == 0 ) gspawn->phase=0xFFFFFFFF; 311 312 //uint32 cellx=float2int32(((_maxX-gspawn->x)/_cellSize)); 313 //uint32 celly=float2int32(((_maxY-gspawn->y)/_cellSize)); 314 uint32 cellx=CellHandler<MapMgr>::GetPosX(gspawn->x); 315 uint32 celly=CellHandler<MapMgr>::GetPosY(gspawn->y); 316 if(spawns[cellx]==NULL) 312 gspawn->overrides = fields[17].GetUInt32(); 313 314 if( gspawn->overrides & GAMEOBJECT_MAPWIDE ) 317 315 { 318 s pawns[cellx]=new CellSpawns*[_sizeY];319 memset(spawns[cellx],0,sizeof(CellSpawns*)*_sizeY);316 staticSpawns.GOSpawns.push_back(gspawn); //We already have a staticSpawns in the Map class, and it does just the right thing 317 ++GameObjectSpawnCount; 320 318 } 321 322 if(!spawns[cellx][celly]) 323 spawns[cellx][celly]=new CellSpawns; 324 325 spawns[cellx][celly]->GOSpawns.push_back(gspawn); 326 ++GameObjectSpawnCount; 319 else 320 { 321 //uint32 cellx=float2int32(((_maxX-gspawn->x)/_cellSize)); 322 //uint32 celly=float2int32(((_maxY-gspawn->y)/_cellSize)); 323 uint32 cellx=CellHandler<MapMgr>::GetPosX(gspawn->x); 324 uint32 celly=CellHandler<MapMgr>::GetPosY(gspawn->y); 325 if(spawns[cellx]==NULL) 326 { 327 spawns[cellx]=new CellSpawns*[_sizeY]; 328 memset(spawns[cellx],0,sizeof(CellSpawns*)*_sizeY); 329 } 330 331 if(!spawns[cellx][celly]) 332 spawns[cellx][celly]=new CellSpawns; 333 334 spawns[cellx][celly]->GOSpawns.push_back(gspawn); 335 ++GameObjectSpawnCount; 336 } 327 337 }while(result->NextRow()); 328 338 } -
trunk/src/arcemu-world/Map.h
r2828 r2860 97 97 //uint32 stateNpcLink; 98 98 uint32 phase; 99 uint32 overrides; 99 100 } GOSpawn; 100 101 -
trunk/src/arcemu-world/MapMgr.cpp
r2835 r2860 434 434 if(_mapWideStaticObjects.size()) 435 435 { 436 uint32 globalcount=0; 436 437 if(!buf) 437 438 buf = new ByteBuffer(300); … … 440 441 { 441 442 count = (*itr)->BuildCreateUpdateBlockForPlayer(buf, plObj); 442 plObj->PushCreationData(buf, count); 443 } 443 globalcount += count; 444 } 445 //VLack: It seems if we use the same buffer then it is a BAD idea to try and push created data one by one, add them at once! 446 // If you try to add them one by one, then as the buffer already contains data, they'll end up repeating some object. 447 // Like 6 object updates for Deeprun Tram, but the built package will contain these entries: 2AFD0, 2AFD0, 2AFD1, 2AFD0, 2AFD1, 2AFD2 448 if( globalcount>0 ) plObj->PushCreationData(buf, globalcount); 444 449 } 445 450 } … … 764 769 else if( curObj->GetTypeFromGUID() == HIGHGUID_TYPE_TRANSPORTER ) 765 770 fRange = 0.0f; // unlimited distance for transporters (only up to 2 cells +/- anyway.) 766 //If the object announcing it's position is a transport, then it should announce it to everyone and everything; thus deleting it from visible objects should be avoided. - By: VLack aka. VLsoft 767 else if( obj->GetTypeId() == TYPEID_GAMEOBJECT && static_cast<GameObject*>(obj)->GetInfo()->Type == GAMEOBJECT_TYPE_TRANSPORT ) 771 //If the object announcing its position is a transport, or other special object, then deleting it from visible objects should be avoided. - By: VLack 772 else if( obj->GetTypeId() == TYPEID_GAMEOBJECT && (static_cast<GameObject*>(obj)->GetOverrides() & GAMEOBJECT_INFVIS) && obj->GetMapId() == curObj->GetMapId() ) 773 fRange = 0.0f; 774 //If the object we're checking for possible removal is a transport or other special object, and we are players on the same map, don't remove it... 775 else if( plObj && curObj->GetTypeId() == TYPEID_GAMEOBJECT && (static_cast<GameObject*>(curObj)->GetOverrides() & GAMEOBJECT_INFVIS) && obj->GetMapId() == curObj->GetMapId() ) 768 776 fRange = 0.0f; 769 777 else if( curObj->IsPlayer() && static_cast< Player* >( curObj )->GetUInt64Value(PLAYER_FARSIGHT) == obj->GetGUID()) … … 893 901 MapCell *cell; 894 902 895 //If the object announcing it's position is a transport, then it should do so in a much wider area - like the distance between the two transport towers in Orgrimmar, or more. - By: VLack aka. VLsoft896 if( obj->GetTypeId() == TYPEID_GAMEOBJECT && static_cast<GameObject*>(obj)->GetInfo()->Type == GAMEOBJECT_TYPE_TRANSPORT) {903 //If the object announcing it's position is a special one, then it should do so in a much wider area - like the distance between the two transport towers in Orgrimmar, or more. - By: VLack 904 if( obj->GetTypeId() == TYPEID_GAMEOBJECT && (static_cast<GameObject*>(obj)->GetOverrides() & GAMEOBJECT_ONMOVEWIDE) ) { 897 905 endX = cellX + 5 <= _sizeX ? cellX + 6 : ( _sizeX - 1 ); 898 906 endY = cellY + 5 <= _sizeY ? cellY + 6 : ( _sizeY - 1 ); … … 943 951 else if( curObj->GetTypeFromGUID() == HIGHGUID_TYPE_TRANSPORTER ) 944 952 fRange = 0.0f; // unlimited distance for transporters (only up to 2 cells +/- anyway.) 945 //If the object announcing it's position is a transport, then it should announce it to everyone and everything as far as possible. - By: VLack aka. VLsoft 946 else if( obj->GetTypeId() == TYPEID_GAMEOBJECT && static_cast<GameObject*>(obj)->GetInfo()->Type == GAMEOBJECT_TYPE_TRANSPORT ) 953 954 //If the object announcing its position is a transport, or other special object, then deleting it from visible objects should be avoided. - By: VLack 955 else if( obj->GetTypeId() == TYPEID_GAMEOBJECT && (static_cast<GameObject*>(obj)->GetOverrides() & GAMEOBJECT_INFVIS) && obj->GetMapId() == curObj->GetMapId() ) 956 fRange = 0.0f; 957 //If the object we're checking for possible removal is a transport or other special object, and we are players on the same map, don't remove it, and add it whenever possible... 958 else if( plObj && curObj->GetTypeId() == TYPEID_GAMEOBJECT && (static_cast<GameObject*>(curObj)->GetOverrides() & GAMEOBJECT_INFVIS) && obj->GetMapId() == curObj->GetMapId() ) 947 959 fRange = 0.0f; 948 960 else … … 2241 2253 } 2242 2254 2243 void MapMgr::LoadInstanceScript() 2244 { 2245 mInstanceScript = sScriptMgr.CreateScriptClassForInstance( _mapId, this ); 2246 }; 2247 void MapMgr::CallScriptUpdate() 2248 { 2249 ASSERT( mInstanceScript ); 2250 mInstanceScript->UpdateEvent(); 2251 }; 2255 void MapMgr::LoadInstanceScript() 2256 { 2257 mInstanceScript = sScriptMgr.CreateScriptClassForInstance( _mapId, this ); 2258 }; 2259 2260 void MapMgr::CallScriptUpdate() 2261 { 2262 ASSERT( mInstanceScript ); 2263 mInstanceScript->UpdateEvent(); 2264 }; -
trunk/src/arcemu-world/Master.h
r2777 r2860 29 29 30 30 #ifndef _VERSION 31 # define _VERSION "3. 1.3"31 # define _VERSION "3.2.0" 32 32 #endif 33 33 -
trunk/src/arcemu-world/MiscHandler.cpp
r2808 r2860 1924 1924 } 1925 1925 1926 //NOTE: VLack: since 3.2.0, the first field of this packet is a _packed_ GUID, so keep this in mind if you plan to read data (just use WoWGuid, it'll read it correctly). 1927 1926 1928 /* uint16 opcode = recv_data.GetOpcode(); 1927 1929 std::stringstream ss; … … 2462 2464 } 2463 2465 2466 void WorldSession::HandleRaidDifficultyOpcode(WorldPacket& recv_data) 2467 { 2468 uint32 data; 2469 recv_data >> data; 2470 2471 Group * m_Group = _player->GetGroup(); 2472 2473 if(m_Group && _player->IsGroupLeader()) 2474 { 2475 m_Group->m_raiddifficulty = data; 2476 _player->iInstanceType = data; 2477 sInstanceMgr.ResetSavedInstances(_player); 2478 2479 m_Group->Lock(); 2480 for(uint32 i = 0; i < m_Group->GetSubGroupCount(); ++i) 2481 { 2482 for(GroupMembersSet::iterator itr = m_Group->GetSubGroup(i)->GetGroupMembersBegin(); itr != m_Group->GetSubGroup(i)->GetGroupMembersEnd(); ++itr) 2483 { 2484 if((*itr)->m_loggedInPlayer) 2485 { 2486 (*itr)->m_loggedInPlayer->iInstanceType = data; 2487 (*itr)->m_loggedInPlayer->SendRaidDifficulty(); 2488 } 2489 } 2490 } 2491 m_Group->Unlock(); 2492 } 2493 else if(!_player->GetGroup()) 2494 { 2495 _player->iInstanceType = data; 2496 sInstanceMgr.ResetSavedInstances(_player); 2497 } 2498 2499 #ifdef OPTIMIZED_PLAYER_SAVING 2500 _player->save_InstanceType(); 2501 #endif 2502 } 2503 2464 2504 void WorldSession::HandleSummonResponseOpcode(WorldPacket & recv_data) 2465 2505 { … … 2523 2563 _player->SetUInt32Value(PLAYER_FIELD_GLYPHS_1 + glyphNum, 0); 2524 2564 _player->RemoveAllAuras(glyph->SpellID, 0); 2565 _player->m_specs[0].glyphs[glyphNum] = 0; //VLack: TempFIX till dual spec... 2566 _player->smsg_TalentsInfo(false, 0, 0); 2525 2567 } 2526 2568 … … 2542 2584 return; 2543 2585 } 2586 2587 void WorldSession::HandleWorldStateUITimerUpdate(WorldPacket& recv_data) 2588 { 2589 WorldPacket data(SMSG_WORLD_STATE_UI_TIMER_UPDATE, 4); 2590 data << (uint32)UNIXTIME;; 2591 SendPacket(&data); 2592 } -
trunk/src/arcemu-world/MovementHandler.cpp
r2773 r2860 99 99 void WorldSession::HandleMoveTeleportAckOpcode( WorldPacket & recv_data ) 100 100 { 101 uint64guid;101 WoWGuid guid; 102 102 recv_data >> guid; 103 103 if(guid == _player->GetGUID()) … … 272 272 /* Read Movement Data Packet */ 273 273 /************************************************************************/ 274 WoWGuid guid; 275 recv_data >> guid; 274 276 movement_info.init(recv_data); 277 m_MoverWoWGuid = guid; 275 278 276 279 /************************************************************************/ … … 427 430 { 428 431 move_time = (movement_info.time - (mstime - m_clientTimeDelay)) + MOVEMENT_PACKET_TIME_DELAY + mstime; 429 memcpy(&movement_packet[pos], recv_data.contents(), recv_data.size()); 432 // memcpy(&movement_packet[pos], recv_data.contents(), recv_data.size()); 433 memcpy(&movement_packet[0], recv_data.contents(), recv_data.size()); 430 434 movement_packet[pos+6]=0; 431 435 … … 673 677 void WorldSession::HandleMoveNotActiveMoverOpcode( WorldPacket & recv_data ) 674 678 { 675 679 WoWGuid guid; 680 recv_data >> guid; 681 682 if(guid == m_MoverWoWGuid) 683 return; 684 685 movement_info.init(recv_data); 686 687 if(guid != uint64(0)) 688 m_MoverWoWGuid = guid; 689 else 690 m_MoverWoWGuid.Init(_player->GetGUID()); 691 692 // set up to the movement packet 693 movement_packet[0] = m_MoverWoWGuid.GetNewGuidMask(); 694 memcpy(&movement_packet[1], m_MoverWoWGuid.GetNewGuid(), m_MoverWoWGuid.GetNewGuidLen()); 676 695 } 677 696 -
trunk/src/arcemu-world/Object.cpp
r2839 r2860 240 240 case TYPEID_GAMEOBJECT: 241 241 flags = 0x0350; 242 if( m_uint32Values[GAMEOBJECT_DISPLAYID]==3831 ) flags=0x0252; //Deeprun Tram proper flags as of 3.2.0. 242 243 break; 243 244 244 245 case TYPEID_DYNAMICOBJECT: 245 flags = 0x0 050;246 flags = 0x0150; 246 247 break; 247 248 … … 276 277 { 277 278 /* deeprun tram, etc */ 278 flags = 0x 352;279 flags = 0x252; 279 280 }break; 280 281 … … 287 288 } 288 289 //The above 3 checks FAIL to identify transports, thus their flags remain 0x58, and this is BAAAAAAD! Later they don't get position x,y,z,o updates, so they appear randomly by a client-calculated path, they always face north, etc... By: VLack 289 if( flags != 0x0352 && GetTypeId() == TYPEID_GAMEOBJECT && static_cast<GameObject*>(this)->GetInfo()->Type == GAMEOBJECT_TYPE_TRANSPORT )290 if( flags != 0x0352 && GetTypeId() == TYPEID_GAMEOBJECT && static_cast<GameObject*>(this)->GetInfo()->Type == GAMEOBJECT_TYPE_TRANSPORT && !(static_cast<GameObject*>(this)->GetOverrides() & GAMEOBJECT_OVERRIDE_PARENTROT) ) 290 291 flags = 0x0352; 291 292 } … … 307 308 _SetCreateBits( &updateMask, target ); 308 309 310 if(GetTypeId() == TYPEID_GAMEOBJECT && (static_cast<GameObject*>(this)->GetOverrides() & GAMEOBJECT_OVERRIDE_PARENTROT) ) 311 { 312 updateMask.SetBit(GAMEOBJECT_PARENTROTATION_02); 313 updateMask.SetBit(GAMEOBJECT_PARENTROTATION_03); 314 } 315 309 316 // this will cache automatically if needed 310 317 _BuildValuesUpdate( data, &updateMask, target ); … … 439 446 /* ByteBuffer *splinebuf = (m_objectTypeId == TYPEID_UNIT) ? target->GetAndRemoveSplinePacket(GetGUID()) : 0; */ 440 447 uint16 flag16 = 0; // some other flag 448 /* VLack: idea from Mangos, for future vehicle implementation 449 if(GetTypeId() == TYPEID_UNIT) 450 if(((Creature*)this)->isVehicle()) 451 flag16 |= 0x20;*/ 452 441 453 *data << (uint16)flags; 442 454 … … 458 470 uThis = static_cast<Creature*>(this); 459 471 460 if( flags & UPDATEFLAG_UNK1 ) //0x0100461 *data << uint8( 0 ); //some say it is like parent guid ?462 463 472 if (flags & UPDATEFLAG_LIVING) //0x20 464 473 { … … 483 492 // Don't know what this is, but I've only seen it applied to spirit healers. 484 493 // maybe some sort of invisibility flag? :/ 485 486 494 switch(GetEntry()) 487 495 { … … 495 503 496 504 if(uThis->GetAIInterface()->IsFlying()) 497 //flags2 |= 0x800; //in 2.3 this is some state that i was not able to decode yet505 //flags2 |= 0x800; //in 2.3 this is some state that i was not able to decode yet 498 506 flags2 |= MOVEFLAG_NO_COLLISION; //0x400 Zack : Teribus the Cursed had flag 400 instead of 800 and he is flying all the time 499 507 if(uThis->GetProto() && uThis->GetProto()->extra_a9_flags) 500 508 { 501 509 //do not send shit we can't honor 502 #define UNKNOWN_FLAGS2 ( 0x0 200 | 0x00002000 | 0x00001000 | 0x00200000 | 0x04000000 | 0x08000000 )510 #define UNKNOWN_FLAGS2 ( 0x00002000 | 0x04000000 | 0x08000000 ) 503 511 uint32 inherit = uThis->GetProto()->extra_a9_flags & UNKNOWN_FLAGS2; 504 512 flags2 |= inherit; 505 513 } 506 /*if(GetGUIDHigh() == HIGHGUID_WAYPOINT)514 /*if(GetGUIDHigh() == HIGHGUID_WAYPOINT) 507 515 { 508 516 if(GetUInt32Value(UNIT_FIELD_STAT0) == 768) // flying waypoint … … 522 530 // 0x10 -> disables movement compensation and causes players to jump around all the place 523 531 // 0x40 -> disables movement compensation and causes players to jump around all the place 524 } 525 526 if( ( flags & 0x0300 ) ) //0x0300=UPDATEFLAG_UNK1 | UPDATEFLAG_UNK2 527 { 528 if( flags & UPDATEFLAG_UNK1 ) //0x0100 529 { 530 *data << (float)m_position.x; 531 *data << (float)m_position.y; 532 *data << (float)m_position.z; 533 } 534 *data << (float)m_position.x; 535 *data << (float)m_position.y; 536 *data << (float)m_position.z; 537 // if( flags & UPDATEFLAG_UNK2 ) //0x0200 538 // { 539 *data << (float)m_position.o; 540 // *data << (float)0; //well no idea atm 541 if (m_objectTypeId == TYPEID_CORPSE) 542 *data << (float)m_position.o; //VLack: repeat the orientation! 543 else 544 *data << (float)0; 545 // } 546 } 547 else if (flags & UPDATEFLAG_HAS_POSITION) //0x40 548 { 532 533 //Send position data, every living thing has these 549 534 *data << (float)m_position.x; 550 535 *data << (float)m_position.y; … … 559 544 *data << wowguid; 560 545 *data << pThis->m_TransporterX << pThis->m_TransporterY << pThis->m_TransporterZ << pThis->m_TransporterO; 561 //*data << pThis->m_TransporterTime;546 //*data << pThis->m_TransporterTime; 562 547 *data << pThis->m_TransporterUnk; 563 548 *data << (uint8)0; … … 574 559 } 575 560 } 576 } 577 578 if (flags & UPDATEFLAG_LIVING) //0x20 579 { 580 if( flags2 & MOVEFLAG_SWIMMING ) //0x0200000 flying/swimming, && unk sth to do with vehicles? 561 562 if( (flags2 & (MOVEFLAG_SWIMMING | MOVEFLAG_AIR_SWIMMING)) || (flag16 & 0x20) ) // 0x2000000+0x0200000 flying/swimming, && unk sth to do with vehicles? 581 563 { 582 564 if(pThis && moveinfo) … … 591 573 *data << (uint32)0; //last fall time 592 574 593 if( flags2 & MOVEFLAG_ FALLING || flags2 & MOVEFLAG_JUMPING ) // 0x00002000 ||0x00001000594 { 595 /*if(pThis && moveinfo)575 if( flags2 & MOVEFLAG_JUMPING ) // 0x00001000 576 { 577 /*if(pThis && moveinfo) 596 578 { 597 579 *data << moveinfo->FallTime; … … 601 583 } 602 584 else 603 { 604 */ 585 {*/ 605 586 *data << (float)0; 606 587 *data << (float)1.0; 607 588 *data << (float)0; 608 589 *data << (float)0; 609 // } 610 } 611 if( flags2 & MOVEFLAG_AIR_SWIMMING ) //0x02000000 612 *data << (uint32)0; //? 613 if( flags2 & MOVEFLAG_SWIMMING ) //0x00200000 614 *data << (uint32)0; //? 615 if( flags2 & MOVEFLAG_SPLINE_MOVER ) //0x04000000 616 *data << (uint32)0; //? 590 //} 591 } 592 593 if( flags2 & MOVEFLAG_SPLINE_MOVER ) // 0x4000000 594 { 595 int err1, err2; err2=0; err1=10/err2; //FAIL please with divide by zero :) 596 } 617 597 618 598 if( m_walkSpeed == 0 ) 619 599 *data << 8.0f; 620 600 else 621 *data << m_walkSpeed; // walk speed601 *data << m_walkSpeed; // walk speed 622 602 if( m_runSpeed == 0 ) 623 603 *data << 8.0f; 624 604 else 625 *data << m_runSpeed; // run speed626 *data << m_backWalkSpeed; // backwards walk speed627 *data << m_swimSpeed; // swim speed628 *data << m_backSwimSpeed; // backwards swim speed605 *data << m_runSpeed; // run speed 606 *data << m_backWalkSpeed; // backwards walk speed 607 *data << m_swimSpeed; // swim speed 608 *data << m_backSwimSpeed; // backwards swim speed 629 609 if( m_flySpeed == 0 ) 630 610 *data << 8.0f; 631 611 else 632 *data << m_flySpeed; // fly speed612 *data << m_flySpeed; // fly speed 633 613 *data << m_backFlySpeed; // back fly speed 634 *data << m_turnRate; // turn rate 635 *data << float(7); 636 /*if( flags2 & MOVEFLAG_IMMOBILIZED ) //0x08000000 637 if(splinebuf) 638 { 639 data->append(*splinebuf); 640 delete splinebuf; 641 }*/ 642 } 614 *data << m_turnRate; // turn rate 615 *data << float(7); // pitch rate, now a constant... 616 617 if( flags2 & 0x08000000 ) //VLack: On Mangos this is a nice spline movement code, but we never had such... Also, at this point we haven't got this flag, that's for sure, but fail just in case... 618 { 619 int err1, err2; err2=0; err1=10/err2; //FAIL please with divide by zero :) 620 } 621 } 622 else //----------------------------------- No UPDATEFLAG_LIVING ----------------------------------- 623 { 624 if( flags & UPDATEFLAG_POSITION ) //0x0100 625 { 626 *data << uint8( 0 ); //some say it is like parent guid ? 627 *data << (float)m_position.x; 628 *data << (float)m_position.y; 629 *data << (float)m_position.z; 630 *data << (float)m_position.x; 631 *data << (float)m_position.y; 632 *data << (float)m_position.z; 633 *data << (float)m_position.o; 634 635 if (m_objectTypeId == TYPEID_CORPSE) 636 *data << (float)m_position.o; //VLack: repeat the orientation! 637 else 638 *data << (float)0; 639 } 640 else if (flags & UPDATEFLAG_HAS_POSITION) //0x40 641 { 642 if(flags & UPDATEFLAG_TRANSPORT && m_uint32Values[GAMEOBJECT_BYTES_1]==GAMEOBJECT_TYPE_MO_TRANSPORT) 643 { 644 *data << (float)0; 645 *data << (float)0; 646 *data << (float)0; 647 } 648 else 649 { 650 *data << (float)m_position.x; 651 *data << (float)m_position.y; 652 *data << (float)m_position.z; 653 } 654 *data << (float)m_position.o; 655 } 656 } 657 643 658 644 659 if( flags & UPDATEFLAG_LOWGUID ) //0x08 … … 649 664 650 665 if( flags & UPDATEFLAG_HAS_TARGET ) //0x04 651 *data << (uint8)0; //some compressed GUID 652 653 if( flags & UPDATEFLAG_VEHICLE ) //0x80 654 { 655 *data << (uint32)0; //? 656 *data << (uint32)0; //? 657 } 658 659 if(flags & UPDATEFLAG_TRANSPORT) //0x2 666 FastGUIDPack(*data, GetUInt64Value(UNIT_FIELD_TARGET)); //some compressed GUID 667 668 669 if( flags & UPDATEFLAG_TRANSPORT ) //0x2 660 670 { 661 671 if(target) … … 668 678 *data << getMSTime(); 669 679 } 670 if( flags & UPDATEFLAG_UNK2 ) //0x0200 680 if( flags & UPDATEFLAG_VEHICLE ) //0x80 681 { 682 *data << (uint32)0; //Vehicle ID 683 *data << (uint32)0; //Facing 684 } 685 686 if( flags & UPDATEFLAG_ROTATION ) //0x0200 671 687 { 672 688 if( IsGameObject() ) -
trunk/src/arcemu-world/ObjectMgr.cpp
r2848 r2860 3133 3133 if(result) 3134 3134 { 3135 if(result->GetFieldCount() != 5 1)3135 if(result->GetFieldCount() != 52) 3136 3136 { 3137 3137 Log.LargeErrorMessage(LARGERRORMESSAGE_WARNING, "groups table format is invalid. Please update your database."); -
trunk/src/arcemu-world/ObjectStorage.cpp
r2840 r2860 23 23 /** Table formats converted to strings 24 24 */ 25 const char * gItemPrototypeFormat = "uuuusuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu ffuffuuuuuuuuuufuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusuuuuuuuuuuuuuuuuuuuuuuuuuuuuu";25 const char * gItemPrototypeFormat = "uuuusuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuffuffuuuuuuuuuufuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusuuuuuuuuuuuuuuuuuuuuuuuuuuuuu"; 26 26 const char * gItemNameFormat = "usu"; 27 const char * gCreatureNameFormat = "usssuuuuuuuuuu ffcc";28 const char * gGameObjectNameFormat = "uuusssssssfuuuuuuuuuuuuuuuuuuuuuuuuuuuu ";27 const char * gCreatureNameFormat = "usssuuuuuuuuuuuuuuuuffcc"; 28 const char * gGameObjectNameFormat = "uuusssssssfuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu"; 29 29 const char * gCreatureProtoFormat = "uuuuuuufuuuffuuffuuuuuuuuffsuuuufffuuuuuuuuu"; 30 30 const char * gVendorRestrictionEntryFormat = "uuuuuu"; -
trunk/src/arcemu-world/Opcodes.cpp
r2773 r2860 21 21 #include "StdAfx.h" 22 22 23 // Updated for 3. 0.2.903823 // Updated for 3.2.0 24 24 NameTableEntry g_worldOpcodeNames[] = { 25 25 {MSG_NULL_ACTION, "MSG_NULL_ACTION"}, … … 1215 1215 {SMSG_EQUIPMENT_SET_LIST, "SMSG_EQUIPMENT_SET_LIST"}, 1216 1216 {SMSG_TALENTS_INFO, "SMSG_TALENTS_INFO"}, 1217 {MSG_SET_RAID_DIFFICULTY, "MSG_SET_RAID_DIFFICULTY"}, 1218 {CMSG_WORLD_STATE_UI_TIMER_UPDATE, "CMSG_WORLD_STATE_UI_TIMER_UPDATE"}, 1219 {SMSG_WORLD_STATE_UI_TIMER_UPDATE, "SMSG_WORLD_STATE_UI_TIMER_UPDATE"}, 1217 1220 {0, 0} 1218 1221 }; 1219 1220 1221 -
trunk/src/arcemu-world/Opcodes.h
r2845 r2860 1223 1223 SMSG_EQUIPMENT_SET_LIST = 0x4BC, // SMSG, equipment manager list? 1224 1224 SMSG_TALENTS_INFO = 0x4C0, // SMSG, talents related 1225 NUM_MSG_TYPES = 0x4CB, // max msg number 1225 MSG_SET_RAID_DIFFICULTY = 0x4EB, 1226 CMSG_WORLD_STATE_UI_TIMER_UPDATE = 0x4F6, 1227 SMSG_WORLD_STATE_UI_TIMER_UPDATE = 0x4F7, 1228 NUM_MSG_TYPES = 0x4F8, // max msg number 1226 1229 }; 1227 1230 -
trunk/src/arcemu-world/Player.cpp
r2850 r2860 1602 1602 *p_data << GetUInt32Value(PLAYER_GUILDID);// guild 1603 1603 1604 if(rename_pending) *p_data << uint32(0x00A04342); // wtf blizz? :P1604 if(rename_pending) *p_data << uint32(0x00A04342); // wtf blizz? :P 1605 1605 else if(m_banned) *p_data << (uint32)7; // Banned (cannot login) 1606 else if(IsDead()) *p_data << (uint32)8704; // Dead (displaying as Ghost) 1607 else *p_data << (uint32)1; // Alive 1608 1606 else if(IsDead()) *p_data << (uint32)8704; // Dead (displaying as Ghost) 1607 else *p_data << (uint32)1; // Alive 1608 1609 *p_data << (uint32)0; //VLack: send 1 for faction change at logon 1609 1610 *p_data << (uint8)m_restState; // rest state 1611 *p_data << (uint8)0; //3.2.0 1610 1612 1611 1613 // pet stuff … … 2718 2720 ss << "'"; 2719 2721 2720 for(uint32 i = 0; i < 8; ++i)2722 for(uint32 i = 0; i < GLYPHS_COUNT; ++i) 2721 2723 ss << m_uint32Values[PLAYER_FIELD_GLYPHS_1 + i] << ","; 2722 2724 … … 3255 3257 if(m_arenaTeams[z] != NULL) 3256 3258 { 3257 SetUInt32Value(PLAYER_FIELD_ARENA_TEAM_INFO_1_1 + (z* 6), m_arenaTeams[z]->m_id);3259 SetUInt32Value(PLAYER_FIELD_ARENA_TEAM_INFO_1_1 + (z*7), m_arenaTeams[z]->m_id); 3258 3260 if(m_arenaTeams[z]->m_leader == GetLowGUID()) 3259 SetUInt32Value(PLAYER_FIELD_ARENA_TEAM_INFO_1_1 + (z* 6) + 1, 0);3261 SetUInt32Value(PLAYER_FIELD_ARENA_TEAM_INFO_1_1 + (z*7) + 1, 0); 3260 3262 else 3261 SetUInt32Value(PLAYER_FIELD_ARENA_TEAM_INFO_1_1 + (z* 6) + 1, 1);3263 SetUInt32Value(PLAYER_FIELD_ARENA_TEAM_INFO_1_1 + (z*7) + 1, 1); 3262 3264 } 3263 3265 } … … 3491 3493 3492 3494 // Load Glyphs and apply their auras 3493 // LoadFieldsFromString(get_next_field.GetString(), PLAYER_FIELD_GLYPHS_1, 8); 3494 LoadFieldsFromString(get_next_field.GetString(), PLAYER_FIELD_GLYPHS_1, 6); 3495 LoadFieldsFromString(get_next_field.GetString(), PLAYER_FIELD_GLYPHS_1, GLYPHS_COUNT); 3495 3496 GlyphPropertyEntry *glyph; 3496 // for(uint32 i=0; i < 8; i++) 3497 for(uint32 i=0; i < 6; i++) 3497 for(uint32 i=0; i < GLYPHS_COUNT; i++) 3498 3498 { 3499 3499 uint32 glyphId = GetUInt32Value(PLAYER_FIELD_GLYPHS_1 + i); … … 3510 3510 la.positive = 0; //VLack: check this, as this was uninitialized, 0 is a safe bet, but glyphs should be positive, aren't they? 3511 3511 loginauras.push_back(la); 3512 m_specs[0].glyphs[i] = glyphId; //VLack: TempFIX till we properly implement dual specs, make them appear in the first set! 3512 3513 } 3513 3514 … … 4674 4675 WorldPacket data(MSG_SET_DUNGEON_DIFFICULTY, 12); 4675 4676 data << (uint32)iInstanceType; 4677 data << (uint32)0x1; 4678 data << (uint32)InGroup(); 4679 GetSession()->SendPacket(&data); 4680 } 4681 4682 void Player::SendRaidDifficulty() 4683 { 4684 WorldPacket data(MSG_SET_RAID_DIFFICULTY, 12); 4685 data << (uint32)iInstanceType; 4676 4686 data << (uint32)0x1; 4677 4687 data << (uint32)InGroup(); -
trunk/src/arcemu-world/Player.h
r2850 r2860 992 992 void SendMeetingStoneQueue(uint32 DungeonId, uint8 Status); 993 993 void SendDungeonDifficulty(); 994 void SendRaidDifficulty(); 994 995 995 996 void AddToWorld(); -
trunk/src/arcemu-world/QueryHandler.cpp
r2801 r2860 136 136 data << ci->unkfloat2; 137 137 data << ci->Leader; 138 data << uint32(0); // VLack: 4 quest items and one movement information139 data << uint32(0);140 data << uint32(0);141 data << uint32(0);138 for(uint32 i = 0; i < 6; ++i) 139 { 140 data << uint32(ci->QuestItems[i]); 141 } 142 142 data << uint32(0); 143 143 } … … 216 216 217 217 data << float(goinfo->Size); 218 for(uint32 i = 0; i < 4; ++i)218 for(uint32 i = 0; i < 6; ++i) 219 219 { 220 220 data << uint32(goinfo->QuestItems[i]); -
trunk/src/arcemu-world/QuestMgr.cpp
r2808 r2860 410 410 *data << qst->reward_choiceitem[i]; 411 411 *data << qst->reward_choiceitemcount[i]; 412 ip = ItemPrototypeStorage.LookupEntry(qst->reward_ item[i]);412 ip = ItemPrototypeStorage.LookupEntry(qst->reward_choiceitem[i]); 413 413 *data << ( ip ? ip->DisplayInfoID : uint32(0) ); 414 414 -
trunk/src/arcemu-world/Spell.cpp
r2831 r2860 120 120 void SpellCastTargets::write( WorldPacket& data ) 121 121 { 122 if( m_targetMask & TARGET_FLAG_DEST_LOCATION ){ //VLack: nice Aspire code, might be useful for us too123 m_targetMask = TARGET_FLAG_SELF; // hackfix for client crash. TODO fix124 }125 126 122 data << m_targetMask; 127 123 data << m_targetMaskExtended; -
trunk/src/arcemu-world/SpellAuras.cpp
r2838 r2860 316 316 &Aura::SpellAuraNULL,//292 call stabled pet 317 317 &Aura::SpellAuraNULL,//293 2 test spells 318 &Aura::SpellAuraNULL //294 2 spells, possible prevent mana regen 318 &Aura::SpellAuraNULL,//294 2 spells, possible prevent mana regen 319 &Aura::SpellAuraNULL,//295 320 &Aura::SpellAuraNULL,//296 321 &Aura::SpellAuraNULL,//297 322 &Aura::SpellAuraNULL,//298 323 &Aura::SpellAuraNULL,//299 324 &Aura::SpellAuraNULL,//300 325 &Aura::SpellAuraNULL,//301 326 &Aura::SpellAuraNULL,//302 327 &Aura::SpellAuraNULL,//303 328 &Aura::SpellAuraNULL,//304 329 &Aura::SpellAuraNULL,//305 330 &Aura::SpellAuraNULL,//306 319 331 }; 320 332 -
trunk/src/arcemu-world/SpellAuras.h
r2828 r2860 319 319 SPELL_AURA_293 = 293, 320 320 SPELL_AURA_294 = 294, 321 TOTAL_SPELL_AURAS = 295, 322 }; 321 SPELL_AURA_295 = 295, 322 SPELL_AURA_296 = 296, 323 SPELL_AURA_297 = 297, 324 SPELL_AURA_298 = 298, 325 SPELL_AURA_299 = 299, 326 SPELL_AURA_300 = 300, 327 SPELL_AURA_301 = 301, 328 SPELL_AURA_302 = 302, 329 SPELL_AURA_303 = 303, 330 SPELL_AURA_304 = 304, 331 SPELL_AURA_305 = 305, 332 SPELL_AURA_306 = 306, 333 TOTAL_SPELL_AURAS = 307, 334 }; 335 323 336 enum AuraTickFlags 324 337 { -
trunk/src/arcemu-world/SpellEffects.cpp
r2850 r2860 5086 5086 p_caster->RemoveAura( gp_old->SpellID ); 5087 5087 p_caster->SetUInt32Value( PLAYER_FIELD_GLYPHS_1 + m_glyphslot, 0 ); 5088 p_caster->m_specs[0].glyphs[m_glyphslot] = 0; //VLack: TempFIX till dual spec... 5089 p_caster->smsg_TalentsInfo(false, 0, 0); 5088 5090 } 5089 5091 } … … 5099 5101 p_caster->SetUInt32Value( PLAYER_FIELD_GLYPHS_1 + m_glyphslot, g_new ); 5100 5102 p_caster->CastSpell( p_caster, gp_new->SpellID, true ); 5103 p_caster->m_specs[0].glyphs[m_glyphslot] = g_new; //VLack: TempFIX till dual spec... 5104 p_caster->smsg_TalentsInfo(false, 0, 0); 5101 5105 } 5102 5106 -
trunk/src/arcemu-world/TaxiHandler.cpp
r2853 r2860 108 108 } 109 109 110 WorldPacket data( 48);110 WorldPacket data(64); 111 111 data.Initialize( SMSG_SHOWTAXINODES ); 112 112 data << uint32( 1 ) << guid; … … 251 251 252 252 uint64 guid; 253 uint32 moocost;254 253 uint32 nodecount; 255 254 vector<uint32> pathes; … … 260 259 WorldPacket data(SMSG_ACTIVATETAXIREPLY, 4); 261 260 262 recvPacket >> guid >> moocost >>nodecount;261 recvPacket >> guid >> nodecount; 263 262 if(nodecount < 2) 264 263 return; -
trunk/src/arcemu-world/TaxiMgr.cpp
r2773 r2860 457 457 {*/ 458 458 field = (uint8)((itr->second->to - 1) / 32); 459 if ( field>=12 ) continue; //The DBC can contain negative TO values??? That'll be 255 here (because we store everything unsigned), skip them! 459 460 Mask[field] |= 1 << ( (itr->second->to - 1 ) % 32 ); 460 461 //} -
trunk/src/arcemu-world/TransporterHandler.cpp
r2773 r2860 41 41 sLog.outString("Transporter id[%i] name[%s] - can't set GAMEOBJECT_TYPE - it will behave badly!",EntryID,Name); 42 42 43 m_overrides = GAMEOBJECT_INFVIS | GAMEOBJECT_ONMOVEWIDE; //Make it forever visible on the same map 44 43 45 // Set period 44 46 m_period = Time; -
trunk/src/arcemu-world/UpdateFields.h
r2773 r2860 19 19 */ 20 20 21 /** 3. 1.1UpdateFields as of whenever i extracted them.21 /** 3.2.0 UpdateFields as of whenever i extracted them. 22 22 */ 23 23 … … 71 71 #define ITEM_FIELD_DURABILITY OBJECT_END + 0x0037 // Size: 1, Type: INT, Flags: OWNER, ITEM_OWNER 72 72 #define ITEM_FIELD_MAXDURABILITY OBJECT_END + 0x0038 // Size: 1, Type: INT, Flags: OWNER, ITEM_OWNER 73 #define ITEM_FIELD_ PAD OBJECT_END + 0x0039 // Size: 1, Type: INT, Flags: NONE73 #define ITEM_FIELD_CREATE_PLAYED_TIME OBJECT_END + 0x0039 // Size: 1, Type: INT, Flags: PUBLIC 74 74 #define ITEM_END OBJECT_END + 0x003A 75 75 … … 319 319 #define PLAYER_VISIBLE_ITEM_19_ENCHANTMENT UNIT_END + 0x0093 // Size: 1, Type: TWO_SHORT, Flags: PUBLIC 320 320 #define PLAYER_CHOSEN_TITLE UNIT_END + 0x0094 // Size: 1, Type: INT, Flags: PUBLIC 321 #define PLAYER_F IELD_PAD_0 UNIT_END + 0x0095 // Size: 1, Type: INT, Flags: NONE321 #define PLAYER_FAKE_INEBRIATION UNIT_END + 0x0095 // Size: 1, Type: INT, Flags: PUBLIC 322 322 #define PLAYER_FIELD_INV_SLOT_HEAD UNIT_END + 0x0096 // Size: 46, Type: LONG, Flags: PRIVATE 323 323 #define PLAYER_FIELD_PACK_SLOT_1 UNIT_END + 0x00C4 // Size: 32, Type: LONG, Flags: PRIVATE … … 357 357 #define PLAYER_FIELD_MOD_DAMAGE_DONE_PCT UNIT_END + 0x03F3 // Size: 7, Type: INT, Flags: PRIVATE 358 358 #define PLAYER_FIELD_MOD_HEALING_DONE_POS UNIT_END + 0x03FA // Size: 1, Type: INT, Flags: PRIVATE 359 #define PLAYER_FIELD_MOD_TARGET_RESISTANCE UNIT_END + 0x03FB // Size: 1, Type: INT, Flags: PRIVATE 360 #define PLAYER_FIELD_MOD_TARGET_PHYSICAL_RESISTANCE UNIT_END + 0x03FC // Size: 1, Type: INT, Flags: PRIVATE 361 #define PLAYER_FIELD_BYTES UNIT_END + 0x03FD // Size: 1, Type: BYTES, Flags: PRIVATE 362 #define PLAYER_AMMO_ID UNIT_END + 0x03FE // Size: 1, Type: INT, Flags: PRIVATE 363 #define PLAYER_SELF_RES_SPELL UNIT_END + 0x03FF // Size: 1, Type: INT, Flags: PRIVATE 364 #define PLAYER_FIELD_PVP_MEDALS UNIT_END + 0x0400 // Size: 1, Type: INT, Flags: PRIVATE 365 #define PLAYER_FIELD_BUYBACK_PRICE_1 UNIT_END + 0x0401 // Size: 12, Type: INT, Flags: PRIVATE 366 #define PLAYER_FIELD_BUYBACK_TIMESTAMP_1 UNIT_END + 0x040D // Size: 12, Type: INT, Flags: PRIVATE 367 #define PLAYER_FIELD_KILLS UNIT_END + 0x0419 // Size: 1, Type: TWO_SHORT, Flags: PRIVATE 368 #define PLAYER_FIELD_TODAY_CONTRIBUTION UNIT_END + 0x041A // Size: 1, Type: INT, Flags: PRIVATE 369 #define PLAYER_FIELD_YESTERDAY_CONTRIBUTION UNIT_END + 0x041B // Size: 1, Type: INT, Flags: PRIVATE 370 #define PLAYER_FIELD_LIFETIME_HONORBALE_KILLS UNIT_END + 0x041C // Size: 1, Type: INT, Flags: PRIVATE 371 #define PLAYER_FIELD_BYTES2 UNIT_END + 0x041D // Size: 1, Type: BYTES, Flags: PRIVATE 372 #define PLAYER_FIELD_WATCHED_FACTION_INDEX UNIT_END + 0x041E // Size: 1, Type: INT, Flags: PRIVATE 373 #define PLAYER_FIELD_COMBAT_RATING_1 UNIT_END + 0x041F // Size: 25, Type: INT, Flags: PRIVATE 374 #define PLAYER_FIELD_ARENA_TEAM_INFO_1_1 UNIT_END + 0x0438 // Size: 18, Type: INT, Flags: PRIVATE 375 #define PLAYER_FIELD_HONOR_CURRENCY UNIT_END + 0x044A // Size: 1, Type: INT, Flags: PRIVATE 376 #define PLAYER_FIELD_ARENA_CURRENCY UNIT_END + 0x044B // Size: 1, Type: INT, Flags: PRIVATE 377 #define PLAYER_FIELD_MAX_LEVEL UNIT_END + 0x044C // Size: 1, Type: INT, Flags: PRIVATE 378 #define PLAYER_FIELD_DAILY_QUESTS_1 UNIT_END + 0x044D // Size: 25, Type: INT, Flags: PRIVATE 379 #define PLAYER_RUNE_REGEN_1 UNIT_END + 0x0466 // Size: 4, Type: FLOAT, Flags: PRIVATE 380 #define PLAYER_NO_REAGENT_COST_1 UNIT_END + 0x046A // Size: 3, Type: INT, Flags: PRIVATE 381 #define PLAYER_FIELD_GLYPH_SLOTS_1 UNIT_END + 0x046D // Size: 6, Type: INT, Flags: PRIVATE 382 #define PLAYER_FIELD_GLYPHS_1 UNIT_END + 0x0473 // Size: 6, Type: INT, Flags: PRIVATE 383 #define PLAYER_GLYPHS_ENABLED UNIT_END + 0x0479 // Size: 1, Type: INT, Flags: PRIVATE 384 #define PLAYER_END UNIT_END + 0x047A 359 #define PLAYER_FIELD_MOD_HEALING_PCT UNIT_END + 0x03FB // Size: 1, Type: FLOAT, Flags: PRIVATE 360 #define PLAYER_FIELD_MOD_HEALING_DONE_PCT UNIT_END + 0x03FC // Size: 1, Type: FLOAT, Flags: PRIVATE 361 #define PLAYER_FIELD_MOD_TARGET_RESISTANCE UNIT_END + 0x03FD // Size: 1, Type: INT, Flags: PRIVATE 362 #define PLAYER_FIELD_MOD_TARGET_PHYSICAL_RESISTANCE UNIT_END + 0x03FE // Size: 1, Type: INT, Flags: PRIVATE 363 #define PLAYER_FIELD_BYTES UNIT_END + 0x03FF // Size: 1, Type: BYTES, Flags: PRIVATE 364 #define PLAYER_AMMO_ID UNIT_END + 0x0400 // Size: 1, Type: INT, Flags: PRIVATE 365 #define PLAYER_SELF_RES_SPELL UNIT_END + 0x0401 // Size: 1, Type: INT, Flags: PRIVATE 366 #define PLAYER_FIELD_PVP_MEDALS UNIT_END + 0x0402 // Size: 1, Type: INT, Flags: PRIVATE 367 #define PLAYER_FIELD_BUYBACK_PRICE_1 UNIT_END + 0x0403 // Size: 12, Type: INT, Flags: PRIVATE 368 #define PLAYER_FIELD_BUYBACK_TIMESTAMP_1 UNIT_END + 0x040F // Size: 12, Type: INT, Flags: PRIVATE 369 #define PLAYER_FIELD_KILLS UNIT_END + 0x041B // Size: 1, Type: TWO_SHORT, Flags: PRIVATE 370 #define PLAYER_FIELD_TODAY_CONTRIBUTION UNIT_END + 0x041C // Size: 1, Type: INT, Flags: PRIVATE 371 #define PLAYER_FIELD_YESTERDAY_CONTRIBUTION UNIT_END + 0x041D // Size: 1, Type: INT, Flags: PRIVATE 372 #define PLAYER_FIELD_LIFETIME_HONORBALE_KILLS UNIT_END + 0x041E // Size: 1, Type: INT, Flags: PRIVATE 373 #define PLAYER_FIELD_BYTES2 UNIT_END + 0x041F // Size: 1, Type: 6, Flags: PRIVATE 374 #define PLAYER_FIELD_WATCHED_FACTION_INDEX UNIT_END + 0x0420 // Size: 1, Type: INT, Flags: PRIVATE 375 #define PLAYER_FIELD_COMBAT_RATING_1 UNIT_END + 0x0421 // Size: 25, Type: INT, Flags: PRIVATE 376 #define PLAYER_FIELD_ARENA_TEAM_INFO_1_1 UNIT_END + 0x043A // Size: 21, Type: INT, Flags: PRIVATE 377 #define PLAYER_FIELD_HONOR_CURRENCY UNIT_END + 0x044F // Size: 1, Type: INT, Flags: PRIVATE 378 #define PLAYER_FIELD_ARENA_CURRENCY UNIT_END + 0x0450 // Size: 1, Type: INT, Flags: PRIVATE 379 #define PLAYER_FIELD_MAX_LEVEL UNIT_END + 0x0451 // Size: 1, Type: INT, Flags: PRIVATE 380 #define PLAYER_FIELD_DAILY_QUESTS_1 UNIT_END + 0x0452 // Size: 25, Type: INT, Flags: PRIVATE 381 #define PLAYER_RUNE_REGEN_1 UNIT_END + 0x046B // Size: 4, Type: FLOAT, Flags: PRIVATE 382 #define PLAYER_NO_REAGENT_COST_1 UNIT_END + 0x046F // Size: 3, Type: INT, Flags: PRIVATE 383 #define PLAYER_FIELD_GLYPH_SLOTS_1 UNIT_END + 0x0472 // Size: 6, Type: INT, Flags: PRIVATE 384 #define PLAYER_FIELD_GLYPHS_1 UNIT_END + 0x0478 // Size: 6, Type: INT, Flags: PRIVATE 385 #define PLAYER_GLYPHS_ENABLED UNIT_END + 0x047E // Size: 1, Type: INT, Flags: PRIVATE 386 #define PLAYER_FIELD_PADDING UNIT_END + 0x047F // Size: 1, Type: INT, Flags: NONE 387 #define PLAYER_END UNIT_END + 0x0480 385 388 386 389 //GameObjectFields … … 400 403 #define DYNAMICOBJECT_SPELLID OBJECT_END + 0x0003 // Size: 1, Type: INT, Flags: PUBLIC 401 404 #define DYNAMICOBJECT_RADIUS OBJECT_END + 0x0004 // Size: 1, Type: FLOAT, Flags: PUBLIC 402 #define DYNAMICOBJECT_POS_X OBJECT_END + 0x0005 // Size: 1, Type: FLOAT, Flags: PUBLIC 403 #define DYNAMICOBJECT_POS_Y OBJECT_END + 0x0006 // Size: 1, Type: FLOAT, Flags: PUBLIC 404 #define DYNAMICOBJECT_POS_Z OBJECT_END + 0x0007 // Size: 1, Type: FLOAT, Flags: PUBLIC 405 #define DYNAMICOBJECT_FACING OBJECT_END + 0x0008 // Size: 1, Type: FLOAT, Flags: PUBLIC 406 #define DYNAMICOBJECT_CASTTIME OBJECT_END + 0x0009 // Size: 1, Type: INT, Flags: PUBLIC 407 #define DYNAMICOBJECT_END OBJECT_END + 0x000A 405 #define DYNAMICOBJECT_CASTTIME OBJECT_END + 0x0005 // Size: 1, Type: INT, Flags: PUBLIC 406 #define DYNAMICOBJECT_END OBJECT_END + 0x0006 408 407 409 408 //CorpseFields -
trunk/src/arcemu-world/WorldSession.cpp
r2845 r2860 896 896 WorldPacketHandlers[MSG_RANDOM_ROLL].handler = &WorldSession::HandleRandomRollOpcode; 897 897 WorldPacketHandlers[MSG_SET_DUNGEON_DIFFICULTY].handler = &WorldSession::HandleDungeonDifficultyOpcode; 898 WorldPacketHandlers[MSG_SET_RAID_DIFFICULTY].handler = &WorldSession::HandleRaidDifficultyOpcode; 898 899 899 900 // Misc … … 908 909 909 910 WorldPacketHandlers[CMSG_PET_CAST_SPELL].handler = &WorldSession::HandlePetCastSpell; 911 912 WorldPacketHandlers[CMSG_WORLD_STATE_UI_TIMER_UPDATE].handler = &WorldSession::HandleWorldStateUITimerUpdate; 910 913 911 914 -
trunk/src/arcemu-world/WorldSession.h
r2845 r2860 111 111 UPDATEFLAG_HAS_POSITION = 0x40, 112 112 UPDATEFLAG_VEHICLE = 0x80, 113 UPDATEFLAG_ UNK1= 0x0100,114 UPDATEFLAG_ UNK2= 0x0200113 UPDATEFLAG_POSITION = 0x0100, 114 UPDATEFLAG_ROTATION = 0x0200 115 115 }; 116 116 … … 680 680 //instances 681 681 void HandleResetInstanceOpcode(WorldPacket& recv_data); 682 void HandleDungeonDifficultyOpcode(WorldPacket& recv_data); 682 void HandleDungeonDifficultyOpcode(WorldPacket& recv_data); 683 void HandleRaidDifficultyOpcode(WorldPacket& recv_data); 683 684 684 685 uint8 TrainerGetSpellStatus(TrainerSpell* pSpell); … … 718 719 719 720 void HandleSetFactionInactiveOpcode( WorldPacket & recv_data ); 721 722 //MISC 723 void HandleWorldStateUITimerUpdate( WorldPacket & recv_data ); 720 724 721 725 public: