Final prep for extending skill use range - client patch and database are ready..just need the code in-between

This commit is contained in:
Uleat 2013-10-28 13:06:49 -04:00
parent 28bcf074fc
commit 08706055af
9 changed files with 21 additions and 94 deletions

View File

@ -2,13 +2,19 @@ EQEMu Changelog (Started on Sept 24, 2003 15:50)
-------------------------------------------------------
== 10/28/2013 ==
Uleat: Client patch prep work for extending usable skill range (no apparent issues with Ti through RoF[12-10-2012] testing - i.e., clients showed proper skills and they didn't crash)
Uleat: This final patch aligns the existing server PlayerProfile_Struct with the previous changes. The pp_struct, as well as the character 'pp' blob, remains unchanged in size and alignment. The only difference is that the first trailing 100 bytes of the unknown array have been re-assigned to the skills array, and the unknown array decreased by the same amount.
Notes:
- The existing configuration will allow the use of any new skills up to 99
- Due to this new segment of the blob having never been written to properly, we may have erratic data there that needs to be cleared before use
- None of the new skills are coded to use these 'new' skill slots
- A per-client method will still need to be observed when coding for the new skill uses
== 10/27/2013 ==
Uleat: Attempted fix for high level (12) debug compile failiures
Notes:
- Explicit Windows vs. Linus code was not changed due to my inability to compile Linux code
- Explicit Windows vs. Linux code was not changed due to my inability to compile Linux code
- Only CMake accessible flags were corrected if adding the 'std' namespace did not correct the issue
- the tag [CODEBUG] was added to code identifed by the above note
- the tag [CODEBUG] was added to failed code identifed by the above note
- If you are having compile issues after this patch is committed, look to the changes here first
Uleat: Changed riposte fail check to proper failure criteria - (x == a && x == b, where a != b) never passes, so skills a and b can riposte (discovery find, no known reported occurences)
Uleat: Enforced naming standard on my recent changes (Sorry for any inconviencies)

View File

@ -802,8 +802,7 @@ struct SuspendedMinion_Struct
static const uint32 MAX_PP_LANGUAGE = 28;
static const uint32 MAX_PP_SPELLBOOK = 480; // Increased to 480 to support SoF
static const uint32 MAX_PP_MEMSPELL = 9;
static const uint32 MAX_PP_SKILL = 75; // still in-use server-side - this must remain 75 until all code and database can be changed
//static const uint32 MAX_PP_SKILL = _SkillPacketArraySize; // 100
static const uint32 MAX_PP_SKILL = _SkillPacketArraySize; // 100 - actual skills buffer size
static const uint32 MAX_PP_AA_ARRAY = 240;
static const uint32 MAX_GROUP_MEMBERS = 6;
static const uint32 MAX_RECAST_TYPES = 20;
@ -942,9 +941,8 @@ struct PlayerProfile_Struct
/*4764*/ int32 copper_cursor; // Copper on cursor
/*4768*/ int32 platinum_shared; // Platinum shared between characters
/*4772*/ uint8 unknown4808[24];
/*4796*/ uint32 skills[MAX_PP_SKILL]; // currently, 75 dword buffer
/*5096*/ uint8 unknown5132[284]; // this is for 75 dword buffer
///*5196*/ uint8 unknown5132[184]; // this is for 100 dword buffer
/*4796*/ uint32 skills[MAX_PP_SKILL]; // [400] List of skills // 100 dword buffer
/*5196*/ uint8 unknown5132[184];
/*5380*/ uint32 pvp2; //
/*5384*/ uint32 unknown5420; //
/*5388*/ uint32 pvptype; //

View File

@ -266,20 +266,7 @@ ENCODE(OP_PlayerProfile) {
OUT(silver_cursor);
OUT(copper_cursor);
//OUT_array(skills, structs::MAX_PP_SKILL); // 1:1 direct copy (100 dword)
OUT_array(skills, MAX_PP_SKILL); // copy first 75 from server struct
for(r = MAX_PP_SKILL; r < structs::MAX_PP_SKILL; r++) { eq->skills[r] = (uint32)0; } // zero the rest
/*
// SKILLS TEST
eq->skills[75] = (uint32)5; // SkillRemoveTrap
eq->skills[76] = (uint32)10; // SkillTripleAttack
eq->skills[77] = (uint32)15; // Skill2HPiercing
eq->skills[78] = (uint32)20; // SkillNone
for(r = MAX_PP_SKILL + 4; r < structs::MAX_PP_SKILL; r++) { eq->skills[r] = (uint32)0; }
// END TEST
*/
OUT_array(skills, structs::MAX_PP_SKILL); // 1:1 direct copy (100 dword)
OUT(toxicity);
OUT(thirst_level);

View File

@ -1020,30 +1020,18 @@ ENCODE(OP_PlayerProfile)
outapp->WriteUInt32(structs::MAX_PP_SKILL);
for(uint32 r = 0; r < MAX_PP_SKILL; r++)
for(uint32 r = 0; r < structs::MAX_PP_SKILL; r++)
{
outapp->WriteUInt32(emu->skills[r]);
}
// deprecated
// Write zeroes for the rest of the skills
/*
for(uint32 r = 0; r < structs::MAX_PP_SKILL - MAX_PP_SKILL; r++)
{
outapp->WriteUInt32(emu->skills[r]);
}
/*
// SKILLS TEST
outapp->WriteUInt32(5); // SkillRemoveTrap
outapp->WriteUInt32(10); // SkillTripleAttack
outapp->WriteUInt32(15); // Skill2HPiercing
outapp->WriteUInt32(20); // SkillNone
// Write zeroes for the rest of the skills
for(uint32 r = 0; r < structs::MAX_PP_SKILL - MAX_PP_SKILL - 4; r++)
{
outapp->WriteUInt32(emu->skills[r]);
}
// END TEST
*/
outapp->WriteUInt32(25); // Unknown count

View File

@ -536,20 +536,7 @@ ENCODE(OP_PlayerProfile) {
OUT(silver_cursor);
OUT(copper_cursor);
//OUT_array(skills, structs::MAX_PP_SKILL); // 1:1 direct copy (100 dword)
OUT_array(skills, MAX_PP_SKILL); // copy first 75 from server struct
for(r = MAX_PP_SKILL; r < structs::MAX_PP_SKILL; r++) { eq->skills[r] = (uint32)0; } // zero the rest
/*
// SKILLS TEST
eq->skills[75] = (uint32)5; // SkillRemoveTrap
eq->skills[76] = (uint32)10; // SkillTripleAttack
eq->skills[77] = (uint32)15; // Skill2HPiercing
eq->skills[78] = (uint32)20; // SkillNone
for(r = MAX_PP_SKILL + 4; r < structs::MAX_PP_SKILL; r++) { eq->skills[r] = (uint32)0; }
// END TEST
*/
OUT_array(skills, structs::MAX_PP_SKILL); // 1:1 direct copy (100 dword)
// OUT(unknown04760[236]);
OUT(toxicity);

View File

@ -535,20 +535,7 @@ ENCODE(OP_PlayerProfile) {
OUT(silver_cursor);
OUT(copper_cursor);
//OUT_array(skills, structs::MAX_PP_SKILL); // 1:1 direct copy (100 dword)
OUT_array(skills, MAX_PP_SKILL); // copy first 75 from server struct
for(r = MAX_PP_SKILL; r < structs::MAX_PP_SKILL; r++) { eq->skills[r] = (uint32)0; } // zero the rest
/*
// SKILLS TEST
eq->skills[75] = (uint32)5; // SkillRemoveTrap
eq->skills[76] = (uint32)10; // SkillTripleAttack
eq->skills[77] = (uint32)15; // Skill2HPiercing
eq->skills[78] = (uint32)20; // SkillNone
for(r = MAX_PP_SKILL + 4; r < structs::MAX_PP_SKILL; r++) { eq->skills[r] = (uint32)0; }
// END TEST
*/
OUT_array(skills, structs::MAX_PP_SKILL); // 1:1 direct copy (100 dword)
// OUT(unknown04760[236]);
OUT(toxicity);

View File

@ -270,20 +270,7 @@ ENCODE(OP_PlayerProfile) {
OUT(silver_cursor);
OUT(copper_cursor);
//OUT_array(skills, structs::MAX_PP_SKILL); // 1:1 direct copy (100 dword)
OUT_array(skills, MAX_PP_SKILL); // copy first 75 from server struct
for(r = MAX_PP_SKILL; r < structs::MAX_PP_SKILL; r++) { eq->skills[r] = (uint32)0; } // zero the rest
/*
// SKILLS TEST
eq->skills[75] = (uint32)5; // SkillRemoveTrap
eq->skills[76] = (uint32)10; // SkillTripleAttack
eq->skills[77] = (uint32)15; // Skill2HPiercing
eq->skills[78] = (uint32)20; // SkillNone
for(r = MAX_PP_SKILL + 4; r < structs::MAX_PP_SKILL; r++) { eq->skills[r] = (uint32)0; }
// END TEST
*/
OUT_array(skills, structs::MAX_PP_SKILL); // 1:1 direct copy (100 dword)
// OUT(unknown04760[236]);
OUT(toxicity);

View File

@ -550,20 +550,7 @@ ENCODE(OP_PlayerProfile) {
OUT(silver_cursor);
OUT(copper_cursor);
//OUT_array(skills, structs::MAX_PP_SKILL); // 1:1 direct copy (100 dword)
OUT_array(skills, MAX_PP_SKILL); // copy first 75 from server struct
for(r = MAX_PP_SKILL; r < structs::MAX_PP_SKILL; r++) { eq->skills[r] = (uint32)0; } // zero the rest
/*
// SKILLS TEST
eq->skills[75] = (uint32)5; // SkillRemoveTrap
eq->skills[76] = (uint32)10; // SkillTripleAttack
eq->skills[77] = (uint32)15; // Skill2HPiercing
eq->skills[78] = (uint32)20; // SkillNone
for(r = MAX_PP_SKILL + 4; r < structs::MAX_PP_SKILL; r++) { eq->skills[r] = (uint32)0; }
// END TEST
*/
OUT_array(skills, structs::MAX_PP_SKILL); // 1:1 direct copy (100 dword)
// OUT(unknown04760[236]);
OUT(toxicity);

View File

@ -738,7 +738,7 @@ struct BindStruct {
static const uint32 MAX_PP_LANGUAGE = 28;
static const uint32 MAX_PP_SPELLBOOK = 400;
static const uint32 MAX_PP_MEMSPELL = 9;
static const uint32 MAX_PP_SKILL = 75;
static const uint32 MAX_PP_SKILL = 100;
static const uint32 MAX_PP_AA_ARRAY = 240;
static const uint32 MAX_GROUP_MEMBERS = 6;
@ -878,7 +878,7 @@ struct PlayerProfile_Struct
/*4768*/ sint32 platinum_shared; // Platinum shared between characters
/*4772*/ uint8 unknown3812[24]; // @bp unknown skills?
/*4796*/ uint32 skills[MAX_PP_SKILL];
/*5096*/ uint8 unknown5096[284]; // @bp unknown skills?
/*5196*/ uint8 unknown5096[184]; // @bp unknown skills?
/*5380*/ int32 pvp2; //
/*5384*/ int32 unknown4420; //
/*5388*/ int32 pvptype; //