/*
** Generic Item structure
** Length: 244 bytes
** Used in:
** itemShopStruct(0c20), itemReceivedPlayerStruct(5220),
** itemPlayerStruct(6421), bookPlayerStruct(6521),
** containerPlayerStruct(6621), summonedItemStruct(7821),
** tradeItemStruct(df20),
*/
#define ITEM_STRUCT_SIZE 360
#define SHORT_BOOK_ITEM_STRUCT_SIZE 264
#define SHORT_CONTAINER_ITEM_STRUCT_SIZE 276
struct Item_Struct
{
/*0000*/ char name[64]; // Name of item
/*0064*/ char lore[80]; // Lore text
/*0144*/ char idfile[6]; // Not sure what this is used for
/*0150*/ sint16 flag;
/*0152*/ uint8 unknown0150[22]; // Placeholder
/*0174*/ uint8 weight; // Weight of item
/*0175*/ sint8 nosave; // Nosave flag 1=normal, 0=nosave, -1=spell?
/*0176*/ sint8 nodrop; // Nodrop flag 1=normal, 0=nodrop, -1=??
/*0177*/ uint8 size; // Size of item
/*0178*/ int8 type;
/*0179*/ uint8 unknown0178; // ***Placeholder
/*0180*/ uint16 item_nr; // Unique Item number
/*0182*/ uint16 icon_nr; // Icon Number
/*0184*/ sint16 equipSlot; // Current Equip slot
/*0186*/ uint8 unknwn0186[2]; // Equip slot cont.?
/*0188*/ uint32 equipableSlots; // Slots where this item goes
/*0192*/ sint32 cost; // Item cost in copper
/*0196*/ uint8 unknown0196[32]; // ***Placeholder
union
{
struct
{
// 0228- have different meanings depending on flags
/*0228*/ sint8 STR; // Strength
/*0229*/ sint8 STA; // Stamina
/*0230*/ sint8 CHA; // Charisma
/*0231*/ sint8 DEX; // Dexterity
/*0232*/ sint8 INT; // Intelligence
/*0233*/ sint8 AGI; // Agility
/*0234*/ sint8 WIS; // Wisdom
/*0235*/ sint8 MR; // Magic Resistance
/*0236*/ sint8 FR; // Fire Resistance
/*0237*/ sint8 CR; // Cold Resistance
/*0238*/ sint8 DR; // Disease Resistance
/*0239*/ sint8 PR; // Poison Resistance
/*0240*/ uint16 HP; // Hitpoints
/*0242*/ uint16 MANA; // Mana
/*0244*/ uint16 AC; // Armor Class
/*0246*/ uint8 MaxCharges; // Maximum number of charges, for rechargable? (Sept 25, 2002)
/*0247*/ sint8 GMFlag; // GM flag 0 - normal item, -1 - gm item (Sept 25, 2002)
/*0248*/ uint8 light; // Light effect of this item
/*0249*/ uint8 delay; // Weapon Delay
/*0250*/ uint8 damage; // Weapon Damage
/*0251*/ sint8 effecttype0; // 0=combat, 1=click anywhere w/o class check, 2=latent/worn, 3=click anywhere EXPENDABLE, 4=click worn, 5=click anywhere w/ class check, -1=no effect
/*0252*/ uint8 range; // Range of weapon
/*0253*/ uint8 skill; // Skill of this weapon, refer to weaponskill chart
/*0254*/ sint8 magic; // Magic flag
// 00 (0000) = ???
// 01 (0001) = magic
// 12 (1100) = ???
// 14 (1110) = ???
// 15 (1111) = ???
/*0255*/ sint8 level0; // Casting level
/*0256*/ uint8 material; // Material?
/*0257*/ uint8 unknown0258[3]; // ***Placeholder
/*0260*/ uint32 color; // Amounts of RGB in original color
/*0264*/ uint8 unknown0264[2]; // ***Placeholder (Asiel: Has to do with Diety, will unwrap later)
/*0266*/ uint16 spellId0; // SpellID of special effect
/*0268*/ uint16 classes; // Classes that can use this item
/*0270*/ uint8 unknown0270[2]; // ***Placeholder
union
{
struct
{
/*0272*/ uint16 races; // Races that can use this item
/*0274*/ sint8 unknown0274[2]; // ***Placeholder
/*0276*/ sint8 stackable; // 1= stackable, 3 = normal, 0 = ? (not stackable)
} normal;
};
/*0277*/ uint8 level; // Casting level
union // 0278 has different meanings depending on an stackable
{
/*0278*/ sint8 number; // Number of items in stack
/*0278*/ sint8 charges; // Number of charges (-1 = unlimited)
};
/*0279*/ sint8 effecttype; // 0=combat, 1=click anywhere w/o class check, 2=latent/worn, 3=click anywhere EXPENDABLE, 4=click worn, 5=click anywhere w/ class check, -1=no effect
/*0280*/ uint16 spellId; // spellId of special effect
/*0282*/ uint8 unknown0282[10]; // ***Placeholder 0288
/*0292*/ uint32 casttime; // Cast time of clicky item in miliseconds
/*0296*/ uint8 unknown0296[16]; // ***Placeholder
/*0312*/ uint16 skillModPercent; // Skill mod value in % (Sept 25, 2002)
/*0314*/ sint16 skillModId; // Skill mod index (Sept 25, 2002)
/*0316*/ uint8 unknown0315[44]; // Bane and Elemental dmg struct (writing it now, hopefully will be up soon)
} common;
struct // Book Structure (flag == 0x7669)
{
/*0228*/ sint8 unknown0172[6]; // ***Placeholder
/*0234*/ char file[15]; // Filename of book text on server
/*0249*/ sint8 unknown0190[15]; // ***Placeholder
} book;
struct // containers flag == 0x5400 or 0x5450
{
/*0228*/ sint8 unknown0212[41]; // ***Placeholder
/*0269*/ uint8 numSlots; // number of slots in container
/*0270*/ sint8 unknown0214; // ***Placeholder
/*0271*/ sint8 sizeCapacity; // Maximum size item container can hold
/*0272*/ uint8 weightReduction; // % weight reduction of container
/*0273*/ uint8 unknown0273[3]; // ***Placeholder
} container;
};
};
|