Here are the only struct differences for UF and SoD that I know so far based on the packets bad_captain and Derision were generating for each client:
SoD
Code:
// Used by MercenaryMerchantList_Struct
struct MercenaryListEntry_Struct {
/*0000*/ int32 MercID; // ID unique to each type of mercenary (probably a DB id)
/*0004*/ int32 MercType; // From dbstr_us.txt - Apprentice (330000100), Journeyman (330000200), Master (330000300)
/*0008*/ int32 MercSubType; // From dbstr_us.txt - 330020105^23^Race: Guktan<br>Type: Healer<br>Confidence: High<br>Proficiency: Apprentice, Tier V...
/*0012*/ int32 PurchaseCost; // Purchase Cost (in gold)
/*0016*/ int32 UpkeepCost; // Upkeep Cost (in gold)
/*0020*/ int32 AltCurrencyCost; // Alternate Currency Purchase Cost? (all seen costs show N/A Bayle Mark) - Seen 0
/*0024*/ int32 AltCurrencyUpkeep; // Alternate Currency Upkeep Cost? (all seen costs show 1 Bayle Mark) - Seen 1
/*0028*/ int32 AltCurrencyType; // Alternate Currency Type? - 19^17^Bayle Mark^0 - Seen 19
/*0032*/ int32 StanceCount; // Iterations of MercenaryStance_Struct - Normally 2 to 4 seen
/*0036*/ sint32 TimeLeft; // Unknown (always see -1 at merchant) - Seen 900000 (15 minutes in ms for newly hired merc)
/*0040*/ MercenaryStance_Struct Stances[2]; // Count Varies, but hard set to 2 for now - From dbstr_us.txt - 1^24^Passive^0, 2^24^Balanced^0, etc (1 to 9 as of April 2012)
};
// Used by MercenaryDataUpdate_Struct
struct MercenaryData_Struct {
/*0000*/ int32 MercID; // ID unique to each type of mercenary (probably a DB id)
/*0004*/ int32 MercType; // From dbstr_us.txt - Apprentice (330000100), Journeyman (330000200), Master (330000300)
/*0008*/ int32 MercSubType; // From dbstr_us.txt - 330020105^23^Race: Guktan<br>Type: Healer<br>Confidence: High<br>Proficiency: Apprentice, Tier V...
/*0012*/ int32 PurchaseCost; // Purchase Cost (in gold)
/*0016*/ int32 UpkeepCost; // Upkeep Cost (in gold)
/*0020*/ int32 AltCurrencyCost; // Alternate Currency Purchase Cost? (all seen costs show N/A Bayle Mark) - Seen 0
/*0024*/ int32 AltCurrencyUpkeep; // Alternate Currency Upkeep Cost? (all seen costs show 1 Bayle Mark) - Seen 1
/*0028*/ int32 AltCurrencyType; // Alternate Currency Type? - 19^17^Bayle Mark^0 - Seen 19
/*0032*/ int32 StanceCount; // Iterations of MercenaryStance_Struct - Normally 2 to 4 seen
/*0036*/ sint32 TimeLeft; // Unknown (always see -1 at merchant) - Seen 900000 (15 minutes in ms for newly hired merc)
/*0040*/ MercenaryStance_Struct Stances[2]; // Count Varies, but hard set to 2 for now - From dbstr_us.txt - 1^24^Passive^0, 2^24^Balanced^0, etc (1 to 9 as of April 2012)
/*0000*/ int32 MercUnk05; // Seen 1 - Extra Merc Data field that differs from MercenaryListEntry_Struct
// MercUnk05 may be a field that is at the end of the packet only, even if multiple mercs are listed (haven't seen examples of multiple mercs owned at once)
};
Underfoot
Code:
// Used by MercenaryMerchantList_Struct
struct MercenaryListEntry_Struct {
/*0000*/ int32 MercID; // ID unique to each type of mercenary (probably a DB id)
/*0004*/ int32 MercType; // From dbstr_us.txt - Apprentice (330000100), Journeyman (330000200), Master (330000300)
/*0008*/ int32 MercSubType; // From dbstr_us.txt - 330020105^23^Race: Guktan<br>Type: Healer<br>Confidence: High<br>Proficiency: Apprentice, Tier V...
/*0012*/ int32 PurchaseCost; // Purchase Cost (in gold)
/*0016*/ int32 UpkeepCost; // Upkeep Cost (in gold)
/*0020*/ int32 AltCurrencyCost; // Alternate Currency Purchase Cost? (all seen costs show N/A Bayle Mark) - Seen 0
/*0024*/ int32 AltCurrencyUpkeep; // Alternate Currency Upkeep Cost? (all seen costs show 1 Bayle Mark) - Seen 1
/*0028*/ int32 AltCurrencyType; // Alternate Currency Type? - 19^17^Bayle Mark^0 - Seen 19
/*0032*/ int8 MercUnk01; // Unknown (always see 0)
/*0033*/ sint32 TimeLeft; // Unknown (always see -1 at merchant) - Seen 900000 (15 minutes in ms for newly hired merc)
/*0037*/ int32 MerchantSlot; // Merchant Slot? Increments, but not always by 1 - May be for Merc Window Options (Seen 5, 36, 1 for active mercs)?
/*0041*/ int32 MercUnk02; // Unknown (normally see 1, but sometimes 2 or 0)
/*0045*/ int32 StanceCount; // Iterations of MercenaryStance_Struct - Normally 2 to 4 seen
/*0049*/ int32 MercUnk03; // Unknown (always 0 at merchant) - Seen on active merc: 93 a4 03 77, b8 ed 2f 26, 88 d5 8b c3, and 93 a4 ad 77
/*0053*/ int8 MercUnk04; // Seen 1
/*0054*/ MercenaryStance_Struct Stances[2]; // Count Varies, but hard set to 2 for now - From dbstr_us.txt - 1^24^Passive^0, 2^24^Balanced^0, etc (1 to 9 as of April 2012)
};
// Used by MercenaryDataUpdate_Struct
struct MercenaryData_Struct {
/*0000*/ int32 MercID; // ID unique to each type of mercenary (probably a DB id)
/*0004*/ int32 MercType; // From dbstr_us.txt - Apprentice (330000100), Journeyman (330000200), Master (330000300)
/*0008*/ int32 MercSubType; // From dbstr_us.txt - 330020105^23^Race: Guktan<br>Type: Healer<br>Confidence: High<br>Proficiency: Apprentice, Tier V...
/*0012*/ int32 PurchaseCost; // Purchase Cost (in gold)
/*0016*/ int32 UpkeepCost; // Upkeep Cost (in gold)
/*0020*/ int32 AltCurrencyCost; // Alternate Currency Purchase Cost? (all seen costs show N/A Bayle Mark) - Seen 0
/*0024*/ int32 AltCurrencyUpkeep; // Alternate Currency Upkeep Cost? (all seen costs show 1 Bayle Mark) - Seen 1
/*0028*/ int32 AltCurrencyType; // Alternate Currency Type? - 19^17^Bayle Mark^0 - Seen 19
/*0032*/ int8 MercUnk01; // Unknown (always see 0)
/*0033*/ sint32 TimeLeft; // Unknown (always see -1 at merchant) - Seen 900000 (15 minutes in ms for newly hired merc)
/*0037*/ int32 MerchantSlot; // Merchant Slot? Increments, but not always by 1 - May be for Merc Window Options (Seen 5, 36, 1 for active mercs)?
/*0041*/ int32 MercUnk02; // Unknown (normally see 1, but sometimes 2 or 0)
/*0045*/ int32 StanceCount; // Iterations of MercenaryStance_Struct - Normally 2 to 4 seen
/*0049*/ int32 MercUnk03; // Unknown (always 0 at merchant) - Seen on active merc: 93 a4 03 77, b8 ed 2f 26, 88 d5 8b c3, and 93 a4 ad 77
/*0053*/ int8 MercUnk04; // Seen 1
/*0054*/ MercenaryStance_Struct Stances[2]; // Count Varies, but hard set to 2 for now - From dbstr_us.txt - 1^24^Passive^0, 2^24^Balanced^0, etc (1 to 9 as of April 2012)
/*0000*/ int32 MercUnk05; // Seen 1 - Extra Merc Data field that differs from MercenaryListEntry_Struct
// MercUnk05 may be a field that is at the end of the packet only, even if multiple mercs are listed (haven't seen examples of multiple mercs owned at once)
};
My guess is that most of the smaller packets have not changed much if at all.