After the June 11 patch, I will ask the thread be deleted as to avoid confusion. Also, if you are not playing on test currently, you should ignore the changes on this thread. If you are currently playing on a LIVE server, do not use anything in this thread to alter your MQ after the patch...USE THE CVS AFTER THE PATCH INSTEAD. This thread is simply for anyone that wishes to run MQ on test and help with the patch transition. (And, yes, I know the offsets will probably be different after patch and the structs may very well change too...but it's better than being blind)
Also, I will not be checking EVERYTHING as I'm not attempting to support MQ on the test server. So, please don't start asking for offsets for everything...hehe
-------------------------------------------------------------------
Cofirmed Offsets
Code: Select all
Char=00761028
CharInfo=00761044
SpawnHeader=0076100
Spells=0076E770
Comments on Structcs
* CHARINFO :: Tested. Everything seems fine inasmuch as the data I have to work with until you get to the first large Unknown chunk, which now has some data sprinkled throughout it. Also, the CHARINFO struct is quite a bit bigger (about 450 BYTES or so), but it seems as though most of the extra crap was thrown in with the other unknown stuff. Also, I may be dreaming, but I have this sneaky suspicion that they removed the "Birth" related floats for whatever reason or else it's just not obvious on my test char as only lvl 25..hehe. Finally, I was unable to test the bank slots and so forth until it goes live; however, it shouldn't be too hard to fly right through and make the corrections with this framework already in place. (See code below -- NOTES: The data out to the right of the new unknowndata is the data I got with my /testbuffed lvl 25 druid in gfay)
I know the comments in this struct might make it difficult to understand. However, if it's in bold or does not have comments stating specificaly that is UNTESTED, then it is tested and in the proper location at the moment. (ie, Server is definately at 0x3908)
* SPAWNINFO :: Tested. As far as I can tell, there doesn't seem to be any major changes. MQ 'should' run without any adjustments.
* COMMON :: Tested. As far as I can tell, there doesn't seem to be any major changes. MQ 'should' run without any adjustments.
* ITEMINFO :: Tested. So far, I've only confirmed that there is an extra DWORD inserted at 0xf0
* SPELLLIST :: Tested. Some new data and flags were added in the middle of the structure, bumping everything down a bit. See struct below.
-------------------------------------------------------------------
Known Struct Changes (New/Modified code is bolded)
Code: Select all
typedef struct _CHARINFO {
/*0x0000*/ BYTE Unknown00000;
/*0x0001*/ BYTE Unknown00001;
/*0x0002*/ CHAR Name[64];
/*0x0042*/ CHAR Lastname[70];
/*0x0088*/ DWORD Gender;
/*0x008c*/ DWORD Race;
/*0x0090*/ DWORD Class;
/*0x0094*/ DWORD Unknown0x0094;
/*0x0098*/ DWORD Level;
/*0x009c*/ DWORD Exp;
/*0x00a0*/ DWORD PracticePoints;
/*0x00a4*/ DWORD Mana;
/*0x00a8*/ DWORD BaseHP;
/*0x00ac*/ DWORD Stunned;
/*0x00b0*/ DWORD BaseSTR;
/*0x00b4*/ DWORD BaseSTA;
/*0x00b8*/ DWORD BaseCHA;
/*0x00bc*/ DWORD BaseDEX;
/*0x00c0*/ DWORD BaseINT;
/*0x00c4*/ DWORD BaseAGI;
/*0x00c8*/ DWORD BaseWIS;
/*0x00cc*/ DWORD Face;
/*0x00d0*/ BYTE EquipType[8];
/*0x00d8*/ BYTE emptyforexpansion[4];
/*0x00dc*/ DWORD EquipColor[8];
/*0x00fc*/ DWORD Equipment[22]; // equipment ids
/*0x0154*/ DWORD InventoryBagIDs[9]; // 8 inventory + 1 cursor
/*0x0178*/ BYTE languages[48]; // List of languages (MAX_KNOWN_LANGS)
/*0x01a8*/ BYTE Unknown00512[480];
/*0x0388*/ struct _SPELLBUFF Buff[15]; // Buffs currently on the player
/*0x0478*/ DWORD InventoryBag1[10]; //IDs of what it contains
/*0x04a0*/ DWORD InventoryBag2[10];
/*0x04c8*/ DWORD InventoryBag3[10];
/*0x04f0*/ DWORD InventoryBag4[10];
/*0x0518*/ DWORD InventoryBag5[10];
/*0x0540*/ DWORD InventoryBag6[10];
/*0x0568*/ DWORD InventoryBag7[10];
/*0x0590*/ DWORD InventoryBag8[10];
/*0x05b8*/ DWORD InventoryBag9[10];
/*0x05e0*/ DWORD Unknown0x05e0[2];
/*0x05e8*/ BYTE Unknown0x05e8[1432];
/*0x0b80*/ DWORD SpellBook[512]; // List of the Spells in spellbook
/*0x1380*/ DWORD MemorizedSpells[8];
/*0x13a0*/ BYTE Unknown0x13a0[36];
/*0x13c4*/ FLOAT y;
/*0x13c8*/ FLOAT x;
/*0x13cc*/ FLOAT z;
/*0x13d0*/ FLOAT heading;
/*0x13d4*/ DWORD standstate; // 100=running(?)
/*0x13d8*/ DWORD Plat;
/*0x13dc*/ DWORD Gold;
/*0x13e0*/ DWORD Silver;
/*0x13e4*/ DWORD Copper;
/*0x13e8*/ DWORD BankPlat;
/*0x13ec*/ DWORD BankGold;
/*0x13f0*/ DWORD BankSilver;
/*0x13f4*/ DWORD BankCopper;
/*0x13f8*/ BYTE Unknown0x13f8[32];
/*0x1418*/ DWORD Skill[125];
/*0x160c*/ BYTE Unknown0x160c[112];
/*0x167c*/ DWORD AutoSplit;
/*0x1680*/ BYTE Unknown0x1680[64];
/*0x16c0*/ DWORD hungerlevel; // max value < 10000 ; 0 is as hungry as you can get
/*0x16c4*/ DWORD thirstlevel;
/*0x16c8*/ BYTE Unknown0x16c8[20]; // ***Placeholder
/*0x16dc*/ DWORD zoneId;
/*0x16e0*/ struct _SPAWNINFO* pSpawn;
/*0x16e4*/ PITEMINFO Inventory[30]; // confirm with further testing
/*0x175c*/ PITEMINFO Cursor;
/*0x1760*/ BYTE Unknown0x1760[4];
/*0x1764*/ DWORD STR;
/*0x1768*/ DWORD STA;
/*0x176c*/ DWORD CHA;
/*0x1770*/ DWORD DEX;
/*0x1774*/ DWORD INT;
/*0x1778*/ DWORD AGI;
/*0x177c*/ DWORD WIS;
/*0x1780*/ BYTE Unknown0x1780[4];
/*0x1784*/ DWORD SaveMagic;
/*0x1788*/ DWORD SaveFire;
/*0x178c*/ DWORD SaveCold;
/*0x1790*/ DWORD SavePosion;
/*0x1794*/ DWORD SaveDisease;
/*0x1798*/ DWORD CurrWeight;
/*0x179c*/ BYTE Unknown0x179c[72];
/*0x17e4*/ SPELLBUFF ShortBuff[6]; [b]
/*0x1844*/ BYTE Unknown0x1844[148];
/*0x18d8*/ DWORD UnknownData0x18d8; // 2886
/*0x18dc*/ BYTE Unknown0x18dc[116];
/*0x1950*/ DWORD UnknownData0x1950; // 25
/*0x1954*/ BYTE Unknown0x1954[80];
/*0x19a4*/ DWORD UnknownData0x19a4; // 1
/*0x19a8*/ BYTE Unknown0x19a8[68];
/*0x19ec*/ DWORD UnknownData0x19ec; // 65
/*0x19f0*/ BYTE Unknown0x19f0[108];
/*0x1a5c*/ DWORD UnknownData0x1a5c; // 100
/*0x1a60*/ BYTE Unknown0x1a60[12];
/*0x1a6c*/ DWORD UnknownData0x1a6c; // 100
/*0x1a70*/ BYTE Unknown0x1a70[368]; [/b]
///////////////////////////////////////////////
/// ALL DATA IN THIS BLOCK WILL HAVE TO BE TESTED LIVE
/// DUE TO LACK OF DATA ON TEST SERVER CHARACTER. HEX
/// LOCATIONS MAY NEED ADJUSTING. HOWEVER, FOR PRACTICAL
/// PURPOSES, IT SHOULD STILL COMPILE AND RUN WITHOUT PROBLEMS,
/// THE DATA *MAY* SIMPLY BE INCORRECT UNTIL FURTHER TESTING
/// IS DONE.
/*0x1be0*/ DWORD ZoneBoundId;
/*0x1be4*/ DWORD ZoneBirthId;
/*0x1be8*/ DWORD ZoneOtherId[3];
/*0x1be8*/ FLOAT ZoneBoundX;
/*0x1bf4*/ FLOAT ZoneBirthX;
/*0x1bf8*/ FLOAT ZoneOtherX[3];
/*0x1c08*/ FLOAT ZoneBoundY;
/*0x1d00*/ FLOAT ZoneBirthY;
/*0x1d04*/ FLOAT ZoneOtherY[3];
/*0x1c1c*/ FLOAT ZoneBoundZ;
/*0x1c20*/ FLOAT ZoneBirthZ;
/*0x1c24*/ FLOAT ZoneOtherZ[3];
/*0x1c30*/ BYTE Unknown0x1c30[3548];
/*0x2a0c*/ DWORD GuildID;
/*0x2a10*/ BYTE Unknown0x2a10[15];
/*0x2a1f*/ BYTE Anon;
/*0x2a20*/ WORD GuildStatus;
/*0x2a22*/ BYTE Unknown0x2a22[454];
/*0x2be8*/ DWORD AAExp;
/*0x2bec*/ BYTE Unknown0x2bec[428];
/*0x2d98*/ DWORD AAPoints;
///////////////////////////////////////////////
[b]
/*0x2d9c*/ BYTE Unknown0x2d9c[2924];
/*0x3908*/ CHAR Server[40]; [/b]
/// BANK & 0x3930 UNCONFIRMED DUE TO LACK OF DATA
/*0x3930*/ BYTE Unknown0x3930[16];
/*0x3940*/ PITEMINFO Bank[NUM_BANK_SLOTS];
} CHARINFO, *PCHARINFO;
Code: Select all
#define ITEM_NAME_LEN 64
#define LORE_NAME_LEN 80
typedef struct _ITEMINFO {
/*0x0*/ BYTE Unknown0x00; //placeholder
/*0x1*/ BYTE Weight;
/*0x2*/ BYTE NoRent;
/*0x3*/ BYTE NoDrop;
/*0x4*/ BYTE Size;
/*0x5*/ BYTE Type;
/*0x6*/ BYTE Unknown0x06[10];
/*0x10*/ CHAR IDFile[30];
/*0x2e*/ CHAR LoreName[LORE_NAME_LEN];
/*0x7e*/ BYTE Unknown0x7e[14];
/*0x8c*/ DWORD Cost;
/*0x90*/ CHAR Name[ITEM_NAME_LEN];
/*0xd0*/ DWORD IconNumber;
/*0xd4*/ DWORD Unknown0xd4;
/*0xd8*/ DWORD Unknown0xd8;
/*0xdc*/ DWORD Unknown0xdc; // -1 ?
/*0xe0*/ DWORD Unknown0xe0; // -1 ?
/*0xe4*/ DWORD Unknown0xe4;
/*0xe8*/ DWORD Unknown0xe8;
/*0xec*/ DWORD ItemNumber;
[b]/*0xf0*/ DWORD Unknown0xf0;[/b]
union {
/*0xf4*/ COMMON Common;
/*0xf4*/ CONTAINER Container;
/*0xf4*/ BOOK Book;
};
} ITEMINFO, *PITEMINFO;
Code: Select all
#define SPELLLIST_STARTOFFSET 0x24
#define TOTAL_SPELL_COUNT 0x0FA0 // # of spells in game
typedef struct _SPELLLIST {
/*0x000*/ DWORD ID;
/*0x004*/ FLOAT Range;
/*0x008*/ BYTE Unknown0x008[12];
/*0x014*/ DWORD CastTime;
/*0x018*/ DWORD FizzleTime;
/*0x01c*/ DWORD RecastTime;
/*0x020*/ DWORD DurationType; //DurationFormula on Lucy
/*0x024*/ DWORD Unknown0x024[2];
/*0x02c*/ DWORD Mana;
/*0x030*/ DWORD Base[12]; //Base1-Base12
/*0x060*/ DWORD Max[12]; //Max1-Max12
/*0x090*/ DWORD BookIcon;
/*0x094*/ DWORD GemIcon;
/*0x098*/ DWORD ReagentId[4]; //ReagentId1-ReagentId4
/*0x0a8*/ DWORD ReagentCount[4]; //ReagentCount1-ReagentCount4
/*0x0b8*/ DWORD Unknown0x0b8[4];
/*0x0c8*/ BYTE Calc[12]; //Calc1-Calc12
/*0x0d4*/ BYTE Unknown0x0d4;
/*0x0d5*/ BYTE Deletable; // untested
/*0x0d6*/ BYTE Unknown0x0d6[2];
/*0x0d8*/ BYTE Attrib[12]; //Attrib1-Attrib12
/*0x0e4*/ BYTE Unknown0x0e4;
/*0x0e5*/ BYTE FizzLeadj;
/*0x0e6*/ BYTE Unknown0x0e6;
/*0x0e7*/ BYTE Unknown0x0e7;
/*0x0e8*/ BYTE Unknown0x0e8[3];
/*0x0eb*/ BYTE Level[15];
/*0x0fa*/ BYTE Unknown0x0fa[16];
/*0x10a*/ BYTE CastingAnim;
[b]/*0x10b*/ BYTE Unknown0x10b[5];
/*0x110*/ DWORD UnknownFlags0x110; // Lucy lists this as 'descnum', but I think it's flags.
/*0x114*/ DWORD UnknownFlags0x114;
/*0x118*/ BYTE Unknown0x118[12];
/*0x124*/ DWORD UnknownFlags0x124;
/*0x128*/ DWORD UnknownFlags0x128;
/*0x12c*/ DWORD Unknown0x12c[2];
/*0x134*/ CHAR *Name;
/*0x138*/ CHAR *Target;
/*0x13c*/ CHAR *Unknown0x13c;
/*0x140*/ CHAR *Unknown0x140;
/*0x144*/ CHAR *Unknown0x144; // new struct that indicates casting sound possibly?
/*0x148*/ CHAR *CastOnYou;
/*0x14c*/ CHAR *CastOnAnother;
/*0x150*/ CHAR *WearOff;
/*0x154*/ CHAR *Unknown0x154; // new sprites animation struct?
/*0x158*/ DWORD spaindex;
/*0x15c*/ DWORD Unknown0x15c;
/*0x160*/ DWORD SpellAnim;
/*0x164*/ DWORD Unknown0x164;
/*0x168*/ DWORD Unknown130; // This is Unknown130 from Lucy
/*0x16c*/ DWORD Unknown0x16c;
/*0x170*/ DWORD SpellIcon;
/*0x174*/ BYTE Unknown0x174[12];[/b]
} SPELLLIST, *PSPELLLIST;
Results via mqext (for changed structs)
Charinfo
Code: Select all
Name = Amadeus (offset 0x2)
Lastname = (offset 0x42)
Gender = 0 (offset 0x88)
Race = 4 (offset 0x8c)
Class = 6 (offset 0x90)
Level = 25 (offset 0x98)
Exp = 0 (offset 0x9c)
PracticePoints = 130 (offset 0xa0)
Mana = 521 (offset 0xa4)
BaseHP = 550 (offset 0xa8)
Stunned = 0 (offset 0xac)
BaseSTR = 70 (offset 0xb0)
BaseSTA = 75 (offset 0xb4)
BaseCHA = 75 (offset 0xb8)
BaseDEX = 80 (offset 0xbc)
BaseINT = 75 (offset 0xc0)
BaseAGI = 95 (offset 0xc4)
BaseWIS = 115 (offset 0xc8)
Face = 4 (offset 0xcc)
EquipType = 12562136 (offset 0xd0)
emptyforexpansion = 12562144 (offset 0xd8)
EquipColor = 12562148 (offset 0xdc)
Equipment = 12562180 (offset 0xfc)
InventoryBagIDs = 12562268 (offset 0x154)
languages = 12562304 (offset 0x178)
Buff = 12562832 (offset 0x388)
InventoryBag1 = 12563072 (offset 0x478)
InventoryBag2 = 12563112 (offset 0x4a0)
InventoryBag3 = 12563152 (offset 0x4c8)
InventoryBag4 = 12563192 (offset 0x4f0)
InventoryBag5 = 12563232 (offset 0x518)
InventoryBag6 = 12563272 (offset 0x540)
InventoryBag7 = 12563312 (offset 0x568)
InventoryBag8 = 12563352 (offset 0x590)
InventoryBag9 = 12563392 (offset 0x5b8)
SpellBook = 12564872 (offset 0xb80)
MemorizedSpells = 12566920 (offset 0x1380)
y = -629.000000 (offset 0x13c4)
x = 226.000000 (offset 0x13c8)
z = 77.688499 (offset 0x13cc)
heading = 340.000000 (offset 0x13d0)
standstate = 100 (offset 0x13d4)
Plat = 0 (offset 0x13d8)
Gold = 0 (offset 0x13dc)
Silver = 0 (offset 0x13e0)
Copper = 0 (offset 0x13e4)
BankPlat = 0 (offset 0x13e8)
BankGold = 0 (offset 0x13ec)
BankSilver = 0 (offset 0x13f0)
BankCopper = 0 (offset 0x13f4)
Skill = 12567072 (offset 0x1418)
AutoSplit = 0 (offset 0x167c)
hungerlevel = 4052 (offset 0x16c0)
thirstlevel = 4052 (offset 0x16c4)
zoneId = 54 (offset 0x16dc)
pSpawn = 96141904 (offset 0x16e0)
Inventory = 12567788 (offset 0x16e4)
Cursor = 97729824 (offset 0x175c)
STR = 76 (offset 0x1764)
STA = 84 (offset 0x1768)
CHA = 75 (offset 0x176c)
DEX = 92 (offset 0x1770)
INT = 86 (offset 0x1774)
AGI = 107 (offset 0x1778)
WIS = 166 (offset 0x177c)
SaveMagic = 30 (offset 0x1784)
SaveFire = 25 (offset 0x1788)
SaveCold = 35 (offset 0x178c)
SavePosion = 22 (offset 0x1790)
SaveDisease = 15 (offset 0x1794)
CurrWeight = 35 (offset 0x1798)
ShortBuff = 12568044 (offset 0x17e4)
UnknownData0x18d8 = 2886 (offset 0x18d8)
UnknownData0x1950 = 25 (offset 0x1950)
UnknownData0x19a4 = 1 (offset 0x19a4)
UnknownData0x19ec = 65 (offset 0x19ec)
UnknownData0x1a5c = 100 (offset 0x1a5c)
UnknownData0x1a6c = 100 (offset 0x1a6c)
ZoneBoundId = 54 (offset 0x1be0)
ZoneBirthId = 0 (offset 0x1be4)
ZoneOtherId = 12569072 (offset 0x1be8)
ZoneBoundX = 192.000000 (offset 0x1bf4)
ZoneBirthX = 0.000000 (offset 0x1bf8)
ZoneOtherX = 0.000000 (offset 0xafc700)
ZoneBoundY = 64.000000 (offset 0x1c08)
ZoneBirthY = 0.000000 (offset 0x1c0c)
ZoneOtherY = 0.000000 (offset 0xafc6a0)
ZoneBoundZ = 35.000000 (offset 0x1c1c)
ZoneBirthZ = 9.000000 (offset 0x1c20)
ZoneOtherZ = 0.000000 (offset 0xafc640)
GuildID = -1 (offset 0x2a0c)
Anon = 255 (offset 0x2a1f)
GuildStatus = 65535 (offset 0x2a20)
AAExp = 0 (offset 0x2be8)
AAPoints = 0 (offset 0x2d98)
Server = test (offset 0x3908)
Bank = 12576584 (offset 0x3940)
Code: Select all
ID = 201 (offset 0x0)
Range = 200.000000 (offset 0x4)
CastTime = 1500 (offset 0x14)
FizzleTime = 2250 (offset 0x18)
RecastTime = 3000 (offset 0x1c)
DurationType = 5 (offset 0x20)
Mana = 12 (offset 0x2c)
Base1 = -1 (offset 0x30)
Base2 = -5 (offset 0x34)
Base3 = 0 (offset 0x38)
Base4 = 0 (offset 0x3c)
Base5 = 0 (offset 0x40)
Base6 = 0 (offset 0x44)
Base7 = 0 (offset 0x48)
Base8 = 0 (offset 0x4c)
Base9 = 0 (offset 0x50)
Base10 = 0 (offset 0x54)
Base11 = 0 (offset 0x58)
Base12 = 0 (offset 0x5c)
Max1 = 0 (offset 0x60)
Max2 = 0 (offset 0x64)
Max3 = 0 (offset 0x68)
Max4 = 0 (offset 0x6c)
Max5 = 0 (offset 0x70)
Max6 = 0 (offset 0x74)
Max7 = 0 (offset 0x78)
Max8 = 0 (offset 0x7c)
Max9 = 0 (offset 0x80)
Max10 = 0 (offset 0x84)
Max11 = 0 (offset 0x88)
Max12 = 0 (offset 0x8c)
BookIcon = 2502 (offset 0x90)
GemIcon = 2115 (offset 0x94)
ReagentId1 = -1 (offset 0x98)
ReagentId2 = -1 (offset 0x9c)
ReagentId3 = -1 (offset 0xa0)
ReagentId4 = -1 (offset 0xa4)
ReagentCount1 = 1 (offset 0xa8)
ReagentCount2 = 1 (offset 0xac)
ReagentCount3 = 1 (offset 0xb0)
ReagentCount4 = 1 (offset 0xb4)
Calc1 = 100 (offset 0xc8)
Calc2 = 100 (offset 0xc9)
Calc3 = 100 (offset 0xca)
Calc4 = 100 (offset 0xcb)
Calc5 = 100 (offset 0xcc)
Calc6 = 100 (offset 0xcd)
Calc7 = 100 (offset 0xce)
Calc8 = 100 (offset 0xcf)
Calc9 = 100 (offset 0xd0)
Calc10 = 100 (offset 0xd1)
Calc11 = 100 (offset 0xd2)
Calc12 = 100 (offset 0xd3)
Deletable = 0 (offset 0xd5)
Attrib1 = 20 (offset 0xd8)
Attrib2 = 2 (offset 0xd9)
Attrib3 = 254 (offset 0xda)
Attrib4 = 254 (offset 0xdb)
Attrib5 = 254 (offset 0xdc)
Attrib6 = 254 (offset 0xdd)
Attrib7 = 254 (offset 0xde)
Attrib8 = 254 (offset 0xdf)
Attrib9 = 254 (offset 0xe0)
Attrib10 = 254 (offset 0xe1)
Attrib11 = 254 (offset 0xe2)
Attrib12 = 254 (offset 0xe3)
FizzLeadj = 25 (offset 0xe5)
Level(Class 1) = 255 (offset 0xeb)
Level(Class 2) = 1 (offset 0xec)
Level(Class 3) = 9 (offset 0xed)
Level(Class 4) = 255 (offset 0xee)
Level(Class 5) = 255 (offset 0xef)
Level(Class 6) = 255 (offset 0xf0)
Level(Class 7) = 255 (offset 0xf1)
Level(Class 8) = 255 (offset 0xf2)
Level(Class 9) = 255 (offset 0xf3)
Level(Class 10) = 1 (offset 0xf4)
Level(Class 11) = 255 (offset 0xf5)
Level(Class 12) = 255 (offset 0xf6)
Level(Class 13) = 255 (offset 0xf7)
Level(Class 14) = 255 (offset 0xf8)
Level(Class 15) = 9 (offset 0xf9)
CastingAnim = 44 (offset 0x10a)
UnknownFlags0x110 = 40201 [1 8 256 1024 2048 4096 32768 ] (Offset: 0x110)
UnknownFlags0x114 = 65536 [65536 ] (Offset: 0x114)
UnknownFlags0x124 = 39004 [4 8 16 64 2048 4096 32768 ] (Offset: 0x124)
UnknownFlags0x128 = 39099 [1 2 8 16 32 128 2048 4096 32768 ] (Offset: 0x128)
Name = Flash of Light (offset *0x134)
Target = PLAYER_1 (offset *0x138)
CastOnYou = You are blinded by a flash of light. (offset *0x148)
CastOnAnother = Someone is blinded by a flash of light. (offset *0x14c)
WearOff = Your sight returns. (offset *0x150)
spaindex = 22 (offset 0x158)
SpellAnim = 112 (offset 0x160)
SpellIcon = 23 (offset 0x170)
Code: Select all
Weight = 1 (offset 0x1)
NoRent = 255 (offset 0x2)
NoDrop = 0 (offset 0x3)
Size = 0 (offset 0x4)
Type = 0 (offset 0x5)
IDFile = IT63 (offset 0x10)
LoreName = (offset 0x2e)
Cost = 0 (offset 0x8c)
Name = Druid Earring (Test) (offset 0x90)
IconNumber = 1050 (offset 0xd0)
ItemNumber = 38190 (offset 0xec)
Note: The COMMON, CONTAINER, or BOOK union starts at 0xf4
Comments from those on the test server are welcome.

donations for this month's patches.