Wow, I am surprised that it actually posted that whole item packet. That was pretty big lol.
Anyway, here is how I am breaking down a single item from those examples:
Code:
01 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
01 00 00 00
00 00 00 00
25 53 4c 01
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
49 6e 74 72 69 63 61 74 65 20 57 6f 6f 64 65 6e 20 46 69 67 75 72 69 6e 65 Name
00 unknown0000
49 6d 62 75 65 64 20 77 69 74 68 20 61 6e 20 61 64 76 65 6e 74 75 72 65 72 27 73 20 73 70 69 72 69 74 Lore
00 unknown0000
49 54 36 33 IDFile
00 unknown0000
bb 88 00 00 ID
01 Weight
01 NoRent
00 NoDrop
00 Size
00 Slots
01 00 00 00 00 00 00 00 Price
7f 03 00 00 Icon
01 unknown0000
00 00 00 00 unknown0000
00 BenefitFlag
00 Tradeskills
0a CR
0a DR
0a PR
0a MR
0a FR
00 Corruption
0f AStr
0f ASta
00 AAgi
0a ADex
00 ACha
00 AInt
0a AWis
5a 00 00 00 HP
50 00 00 00 Mana
00 00 00 00 Endur
14 00 00 00 AC
00 00 00 00 unknown0000
00 00 00 00 unknown0000
00 00 00 00 unknown0000
04 00 00 00 Classes
ff ff 00 00 Races
00 00 00 00 Deity
00 00 00 00 SkillModValue
00 00 00 00 unknown0000
ff ff ff ff SkillModType
00 00 00 00 BaneDmgRace
00 00 00 00 BaneDmgBody
00 00 00 00 BaneDmgRaceAmt
00 00 00 00 BaneDmgAmt
01 Magic
00 00 00 00 CastTime_
33 ReqLevel
00 RecLevel
00 RecSkill
00 00 00 00 BardType
00 00 00 00 BardValue
00 Light
00 Delay
00 00 00 00 ElemDmgType
00 00 00 00 ElemDmgAmt
00 00 00 00 Range
00 00 00 00 Damage
00 00 00 ff Color
0a 00 00 00 ItemType
00 00 00 00 Material
00 00 00 00 unknown0000
00 unknown0000
00 00 80 3f SellRate
00 00 00 00 CombatEffects
00 00 00 00 Shielding
00 00 00 00 StunResist
00 00 00 00 StrikeThrough
00 00 00 00 ExtraDmgSkill
00 00 00 00 ExtraDmgAmt
00 00 00 00 SpellShield
00 00 00 00 Avoidance
00 00 00 00 Accuracy
b9 88 00 00 CharmFileID
00 00 00 00 FactionMod1
00 00 00 00 FactionMod2
00 00 00 00 FactionMod3
00 00 00 00 FactionMod4
00 00 00 00 FactionAmt1
00 00 00 00 FactionAmt2
00 00 00 00 FactionAmt3
00 00 00 00 FactionAmt4
43 48 52 4d 50 6f 50 41 63 63 65 73 73 - CHRMPoPAccess CharmFile
00
00 00 00 00 AugType
00 00 AugRestrict
00 00 AugDistiller
07 AugSlotType
00 00 00 01 AugSlotUnk
00 AugSlotUnk2
00 augslot2type
00 00 00 01 augslot2visible
00 augslot2unk2
00 augslot2type
00 00 00 01 augslot2visible
00 augslot2unk2
00 augslot2type
00 00 00 01 augslot2visible
00 augslot2unk2
00 augslot2type
00 00 00 01 augslot2visible
00 augslot2unk2
00 00 00 00 PointType
00 00 00 00 LDoNTheme
00 00 00 00 LDoNPrice
46 00 00 00 UNK098
00 00 00 00 LDoNSold
00 BagType
00 BagSlots
00 BagSize
00 BagWR
00 Book
00 00 BookType
ff ff ff ff Filename
00 LoreGroup
00 ArtifactFlag
00 PendingLoreFlag
00 00 00 00 Favor
00 00 00 00 GuildFavor
00 FVNoDrop
00 DotShielding
00 00 00 00 Attack
00 00 00 00 Regen
00 00 00 00 ManaRegen
00 00 00 00 EnduranceRegen
00 Haste
00 DamageShield
ff ff ff ff unknown0000
00 unknown0000
00 Attuneable
00 NoPet
00 00 unknown0000 ???
00 PotionBelt
00 00 00 00 PotionBeltSlots
01 StackSize
00 NoTransfer
// Stackable
00 QuestItemFlag
00 unknown0000
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 unknown0000
00 00 00 00 Effect
ff ff ff ff Type
00 Level2
00 Level
00 00 00 00 MaxCharges
00 00 00 00 CastTime
00 00 00 00 RecastDelay
00 00 00 00 RecastType
00 00 00 00 unknown0005
00 effectname
00 00 00 00 unknown0007
ff ff ff ff Effect
ff ff ff ff Type
00 Level2
00 Level
00 00 00 00 unknown0001
00 00 00 00 unknown0002
00 00 00 00 unknown0003
00 00 00 00 unknown0004
00 00 00 00 ProcRate
00 effectname
00 00 00 00 unknown0007
ff ff ff ff Effect
ff ff ff ff Type
00 Level2
00 Level
00 00 00 00 unknown0001
00 00 00 00 unknown0002
00 00 00 00 unknown0003
00 00 00 00 unknown0004
00 00 00 00 unknown0005
00 effectname
00 00 00 00 unknown0007
ff ff ff ff Effect
ff ff ff ff Type
00 Level2
00 Level
00 00 00 00 unknown0001
00 00 00 00 unknown0002
00 00 00 00 unknown0003
00 00 00 00 unknown0004
00 00 00 00 unknown0005
00 effectname
00 00 00 00 unknown0007
ff ff ff ff Effect
ff ff ff ff Type
00 Level2
00 Level
00 00 00 00 unknown0001
00 00 00 00 unknown0002
00 00 00 00 unknown0003
00 00 00 00 unknown0004
00 00 00 00 unknown0005
00 effectname
00 00 00 00 unknown0007
ff ff ff ff Effect
00 00 00 00 Type
00 Level2
00 Level
00 00 00 00 unknown0001
00 00 00 00 unknown0002
00 00 00 00 unknown0003
00 00 00 00 unknown0004
00 00 00 00 unknown0005
00 effectname
00 00 00 00 unknown0007
00 purity
00 dsmitigation
00 herostr
00 heroint
00 herowis
00 heroagi
00 herodex
00 herosta
00 herocha
00 00 00 00 heropoison
00 00 00 00 heromagic
00 00 00 00 herofire
00 00 00 00 herodisease
00 00 00 00 herocold
00 00 00 00 herocorruption
00 00 00 00 healamt
00 00 00 00 spelldmg
00 00 00 00 clairvoyance
00 00 00 00 backstabdmg
00 00 00 00 evolvinglevel
00 00 00 00 MaxPower
00 00 00 00 Power
00 space for separating items with augs in them?
00 space for separating items
And that should all be fairly well explained in the packet structure I posted for it in this thread earlier here:
Code:
struct ItemSerialization_Struct {
/*0000*/ uint32 stacksize;
/*0004*/ uint32 unknown004; // 00 00 00 00
/*0008*/ uint32 price;
/*0012*/ uint32 slot;
/*0016*/ uint32 merchcount;
/*0020*/ uint32 unknown020; // 00 00 00 00
/*0024*/ sint32 serialnumber;
/*0028*/ uint32 instnodrop;
/*0032*/ uint32 typepotion;
/*0036*/ uint32 unknown036; // 00 00 00 00
/*0040*/ uint32 unknown040; // 00 00 00 00
/*0044*/ uint32 unknown044; // 00 00 00 00
/*0048*/ uint32 unknown048; // 00 00 00 00
/*0052*/ uint32 unknown052; // 00 00 00 00
/*0056*/ sint32 unknown056; // 00 00 00 01
/*0060*/ Item_Struct item; // Actual Item Struct
/*0000*/ uint8 unknown00x1; // 00 Break for separating items within items?
/*0000*/ Item_Struct augments; // Bag Slots/Augments within an item
/*0000*/ uint8 unknown00x2; // 00 Break for separating items?
}
/*
** Child struct of Item_Struct:
** Effect data: Click, Proc, Focus, Worn, Scroll
**
*/
struct ItemClickEffect_Struct {
/*0000*/ sint32 Effect;
/*0004*/ uint32 Type;
/*0008*/ uint8 Level2;
/*0009*/ uint8 Level;
/*0010*/ sint32 MaxCharges; // Max Charges of this effect
union {
/*0014*/ uint16 Fulfilment; // Food fulfilment (How long it lasts)
/*0016*/ sint16 CastTime; // Cast Time for clicky effects, in milliseconds
};
/*0018*/ uint32 RecastDelay; // Delay on Recast in seconds
/*0022*/ uint32 RecastType; // Recast Type from -1 to 18
/*0026*/ uint32 unknown0005;
/*0030*/ char effectname[1]; //click name - Default is NULL
/*0031*/ uint32 unknown0007;
/*0035*/
};
struct ItemProcEffect_Struct {
/*0000*/ sint32 Effect;
/*0004*/ uint32 Type;
/*0008*/ uint8 Level2;
/*0009*/ uint8 Level;
/*0010*/ uint32 unknown0001;
/*0014*/ uint32 unknown0002;
/*0018*/ uint32 unknown0003;
/*0022*/ uint32 unknown0004;
/*0026*/ sint32 ProcRate; // Proc Rate - 100 is default
/*0030*/ char effectname[1]; //proc name - Default is NULL
/*0031*/ uint32 unknown0007;
/*0035*/
};
struct ItemWornFocusScrollEffect_Struct {
/*0000*/ sint32 Effect;
/*0004*/ uint32 Type;
/*0008*/ uint8 Level2;
/*0009*/ uint8 Level;
/*0010*/ uint32 unknown0001;
/*0014*/ uint32 unknown0002;
/*0018*/ uint32 unknown0003;
/*0022*/ uint32 unknown0004;
/*0026*/ uint32 unknown0005;
/*0030*/ char effectname[1]; //focus, worn, or scroll name - Default is NULL
/*0031*/ uint32 unknown0007;
/*0035*/
};
struct ItemAugmentSlot_Struct {
/*0000*/ uint8 AugSlotType; // LDoN: Augment Slot 1-5 Type
/*0001*/ sint32 AugSlotVisible; // LDoN: Augment Slot 1-5 Unknown
/*0005*/ uint8 AugSlotUnk2; // LDoN: Augment Slot 1-5 Unknown
/*0006*/
};
#define MAX_AUGMENT_SLOTS 5
struct Item_Struct {
// Non packet based field
// uint8 MinStatus;
// bool LoreFlag; // This will be true if LoreGroup is non-zero
// bool SummonedFlag; // Unused in SoF
// Packet based fields
// uint8 ItemClass; // Item Type: 0=common, 1=container, 2=book
char Name[1]; // Variable Length String for Name
uint8 unknown0001; // 00 Break between Strings
char Lore[1]; // Variable Length String for Item Lore Text
uint8 unknown0002; // 00 Break between Strings
char IDFile[1]; // Variable Length String for Visible Model Number - IT63
uint8 unknown0003; // 00 Break between Strings
uint32 ID; // Unique ID (also PK for DB)
uint8 Weight; // Item weight * 10
uint8 NoRent; // No Rent: 0=norent, 255=not norent
uint8 NoDrop; // No Drop: 0=nodrop, 255=not nodrop
uint8 Size; // Size: 0=tiny, 1=small, 2=medium, 3=large, 4=giant
uint8 Slots; // Bitfield for which slots this item can be used in
char Price[8]; // Item cost (?) maybe int64?
uint32 Icon; // Icon Number
uint8 unknown0013; // UNK013 - 01
uint32 unknown0014; // UNK014 - One of these are probably int32
bool BenefitFlag; // Does this have a benefit flag?
bool Tradeskills; // Is this a tradeskill item?
sint8 CR; // Save vs Cold
sint8 DR; // Save vs Disease
sint8 PR; // Save vs Poison
sint8 MR; // Save vs Magic
sint8 FR; // Save vs Fire
sint8 Corruption; // New Save vs Corruption ****
sint8 AStr; // Strength
sint8 ASta; // Stamina
sint8 AAgi; // Agility
sint8 ADex; // Dexterity
sint8 ACha; // Charisma
sint8 AInt; // Intelligence
sint8 AWis; // Wisdom
sint32 HP; // HP
sint32 Mana; // Mana
uint32 Endur; // Endurance
sint32 AC; // AC
uint32 unknown0015; //
uint32 unknown0016; //
uint32 unknown0017; //
uint32 Classes; // Bitfield of classes that can equip item (1 << class#)
uint32 Races; // Bitfield of races that can equip item (1 << race#)
uint32 Deity; // Bitmask of Deities that can equip this item
sint32 SkillModValue; // % Mod to skill specified in SkillModType
uint32 unknown0038; // UNK038 - Default is 0
uint32 SkillModType; // Type of skill for SkillModValue to apply to
uint32 BaneDmgRace; // Bane Damage Race
uint32 BaneDmgBody; // Bane Damage Body
uint32 BaneDmgRaceAmt; // Bane Damage Race Amount
sint32 BaneDmgAmt; // Bane Damage Body Amount
bool Magic; // True=Magic Item, False=not
sint32 CastTime_; // Cast Time in Milliseconds
uint8 ReqLevel; // Required Level to use item
uint8 RecLevel; // Recommended level to use item
uint8 RecSkill; // Recommended skill to use item (refers to primary skill of item)
uint32 BardType; // Bard Skill Type
sint32 BardValue; // Bard Skill Amount
sint8 Light; // Light
uint8 Delay; // Delay * 10
uint32 ElemDmgType; // Elemental Damage Type (1=magic, 2=fire)
uint32 ElemDmgAmt; // Elemental Damage
uint32 Range; // Range of item
uint32 Damage; // Delay between item usage (in 0.1 sec increments)
uint32 Color; // RR GG BB 00 <-- as it appears in pc
uint32 ItemType; // Item Type/Skill (itemClass* from above)
uint32 Material; // Item material type
uint32 unknown0060; // UNK060 - Default is 0
uint8 unknown0061; // UNK061 - Default is 0
float SellRate; // Sell rate
sint32 CombatEffects; // PoP: Combat Effects +
sint32 Shielding; // PoP: Shielding %
sint32 StunResist; // PoP: Stun Resist %
sint32 StrikeThrough; // PoP: Strike Through %
uint32 ExtraDmgSkill; // PoP: Extra Damage Skill
uint32 ExtraDmgAmt; // PoP: Extra Damage Amount
sint32 SpellShield; // PoP: Spell Shield %
sint32 Avoidance; // PoP: Avoidance +
sint32 Accuracy; // PoP: Accuracy +
uint32 CharmFileID; // ID of the Charm File
sint32 FactionMod1; // Faction Mod 1
sint32 FactionAmt1; // Faction Amt 1
sint32 FactionMod2; // Faction Mod 2
sint32 FactionAmt2; // Faction Amt 2
sint32 FactionMod3; // Faction Mod 3
sint32 FactionAmt3; // Faction Amt 3
sint32 FactionMod4; // Faction Mod 4
sint32 FactionAmt4; // Faction Amt 4
char CharmFile[1]; // Name of the Charm File
uint8 unknown0062; // 00 Break between Strings
uint32 AugType;
uint16 AugRestrict;
uint16 AugDistiller;
ItemAugmentSlot_Struct augslots[MAX_AUGMENT_SLOTS]; //Augment Slots
uint32 PointType;
uint32 LDoNTheme;
uint32 LDoNPrice;
uint32 unknown0098; // UNK098
uint32 LDoNSold;
uint8 BagType; // 0:Small Bag, 1:Large Bag, 2:Quiver, 3:Belt Pouch ... there are 50 types
uint8 BagSlots; // Number of slots: can only be 2, 4, 6, 8, or 10
uint8 BagSize; // 0:TINY, 1:SMALL, 2:MEDIUM, 3:LARGE, 4:GIANT
uint8 BagWR; // 0->100
uint8 Book; // 0=Not bool, 1=Book
uint16 BookType;
uint32 Filename; // Filename for book data
uint8 LoreGroup; // LoreGroup seems to have replaced LoreFlag
bool ArtifactFlag; // Flag as an Artifact
bool PendingLoreFlag; // ??? Maybe just unknown?
uint32 Favor; // Individual favor
uint32 GuildFavor; // Guild favor
uint8 FVNoDrop; // Firiona Vie nodrop flag
uint8 DotShielding; // May need to be moved to the PoP stuff ****
uint32 Attack;
uint32 Regen;
uint32 ManaRegen;
uint32 EnduranceRegen;
uint8 Haste;
uint8 DamageShield;
uint32 unknown0120; // UNK120 - Default is -1
uint8 unknown0121; // UNK121 - Default is 0
bool Attuneable;
bool NoPet;
uint16 unknown0124; // UNK124 - Default 0
bool PotionBelt;
uint32 PotionBeltSlots;
uint8 StackSize;
bool NoTransfer; //Swapped Positions with StackSize ****
// bool Stackable; //Not in 13th Floor ???
bool QuestItemFlag;
uint8 unknown0131; // UNK131 - Default is 0
uint8 unknown0132[19]; // UNK132 - Default is 0
ItemClickEffect_Struct Click;
ItemProcEffect_Struct Proc;
ItemWornFocusScrollEffect_Struct Worn, Focus, Scroll;
uint32 unknown0193;//UNK193 - Default is 0
uint8 purity; //purity - Newly Added - Default is 0, but some go up to 75
uint8 dsmitigation; //dsmitigation - Newly Added - Default is 0, but some are up to 2
uint8 herostr; //heroic_str - Newly Added - Default is 0
uint8 heroint; //heroic_int - Newly Added - Default is 0
uint8 herowis; //heroic_wis - Newly Added - Default is 0
uint8 heroagi; //heroic_agi - Newly Added - Default is 0
uint8 herodex; //heroic_dex - Newly Added - Default is 0
uint8 herosta; //heroic_sta - Newly Added - Default is 0
uint8 herocha; //heroic_cha - Newly Added - Default is 0
uint32 heropoison; //HeroicSvPoison - Newly Added - Default is 0
uint32 heromagic; //HeroicSvMagic - Newly Added - Default is 0
uint32 herofire; //HeroicSvFire - Newly Added - Default is 0
uint32 herodisease; //HeroicSvDisease - Newly Added - Default is 0
uint32 herocold; //HeroicSvCold - Newly Added - Default is 0
uint32 herocorruption; //HeroicSvCorruption - Newly Added - Default is 0
uint32 healamt; //healamt - Newly Added - Default is 0, but some are up to 9
uint32 spelldmg; //spelldmg - Newly Added - Default is 0, but some are up to 9
uint32 clairvoyance; //clairvoyance - Newly Added - Default is 0, but some are up to 10
uint32 backstabdmg; //backstabdmg - Newly Added - Default is 0, but some are up to 65
uint32 evolvinglevel; //evolvinglevel - Newly Added - Default is 0, but some are up to 7
uint32 MaxPower; //MaxPower - Newly Added
uint32 Power; //Power - Newly Added
};
After reviewing it a bit more, it looks like there was already code to handle the click/proc/worn/focus/spell section properly. And also one for handling the augments section, so those extra structs here are probably not needed, if it is just set to work the same as the current item structure.
Also, I am only pretty sure of the structure up to the end of the click/proc/worn/focus/spell section, so everything after that is just a guess that will probably need to be moved around later after we can test and see what is what. It should be pretty easy to figure out unknown fields just by changing them and seeing what gets changed.