v14.00 by Yohann

This commit is contained in:
ChaosMarc
2021-01-04 08:07:29 +01:00
parent c8849ef0fa
commit 2597bc3946
106 changed files with 7790 additions and 7535 deletions

View File

@@ -1,10 +1,10 @@
/*======================================================================
File created by Yohann NICOLAS.
Add support 1.13d by L'Autour.
Add support 1.14d by haxifix.
Add support 1.14d by haxifix.
Declares the type for a STDCALL or FASTCALL function pointer
called N with arguments list P, returning R, namedInDLL D and at @A
Declares the type for a STDCALL or FASTCALL function pointer
called N with arguments list P, returning R, namedInDLL D and at @A
======================================================================*/
@@ -149,144 +149,143 @@
//F7(STD, D2Common,00000,00000,00000,00000,10001,00000,00000,00000, DWORD, D2GetActIDFromLevel, (DWORD levelID));
F8(STD, D2Common,00000,00000,00000,10188,11084,11109,10346,10907, 21AED0, DWORD, D2Common11084, (Room* ptRoom, DWORD zero));
F8(STD, D2Common,10057,10057,10057,10332,11021,10511,10826,10691, 21A1B0, DWORD, D2GetLevelID, (Room* ptRoom));
F8(STD, D2Common,10138,10138,10138,10623,10491,11043,10654,10716, 24E810, Room*, D2GetDropRoom, (Room* ptRoom, Position*, Position*, DWORD, DWORD, DWORD, DWORD));
//F7(STD, D2Common,10149,10149,10149,00000,00000,00000,00000,00000, Inventory*, D2GetInventory, (Unit* ptUnit));
F8(STD, D2Common,10242,10242,10242,00000,00000,00000,00000,00000,00000, Unit*, D2Common10242, (Inventory* ptInventory, Unit* ptItem, DWORD bIsClient));
F8(STD, D2Common,10246,10246,10246,10855,10813,10289,10133,10402, 23B950, Unit*, D2CanPutItemInInv, (Inventory* ptInventory, Unit* ptItem, DWORD p3, DWORD zero, Unit* ptUnit, const char* file, DWORD line));
F8(STD, D2Common,10243,10243,10243,10461,10827,10936,10646,10490, 23AD90, Unit*, D2InvRemoveItem, (Inventory* ptInventory, Unit* ptItem));
F8(STD, D2Common,10249,10249,10249,10880,11068,10436,11107,10963, 23BCC0, DWORD, D2InvAddItem, (Inventory* ptInventory, Unit* ptItem, DWORD posX, DWORD posY, DWORD vValueC, DWORD bIsClient, BYTE page));//result : boolean 0=echec ; vValueC = 0 for Game.dll, 1 for Clientdll
F8(STD, D2Common,10250,10250,10250,00000,00000,00000,00000,00000, 00000, DWORD, D2Common10250, (const char* file, DWORD line, Inventory* ptInventory, DWORD posX, DWORD posY, DWORD vValueC, DWORD bIsClient, BYTE page));// result : boolean 0=echec ; vValueC = 0 for Game.dll, 1 for Clientdll
//F7(STD, D2Common,10257,10257,10257,00000,00000,00000,00000,00000, Unit*, D2GetItemFromBodyLoc, (Inventory* ptInventory, DWORD bodyloc));
F8(STD, D2Common,10273,10273,10273,00000,00000,00000,00000,00000, 00000, DWORD, D2Common10273, (Inventory* ptInventory, void* unknown));
F8(STD, D2Common,10277,10277,10277,10402,10535,11151,10460,11040, 23B2C0, Unit*, D2InventoryGetFirstItem, (Inventory* ptInventory));
F8(STD, D2Common,10304,10304,10304,10934,11140,10770,10464,10879, 23DFA0, Unit*, D2UnitGetNextItem, (Unit* ptItem));
F8(STD, D2Common,10305,10305,10305,11095,10748,10852,11147,10897, 23DFD0, Unit*, D2GetRealItem, (Unit* ptUnit));
//F7(STD, D2Common,10321,10321,10321,00000,00000,00000,00000,00000, SkillData*, D2GetLeftSkill, (Unit* ptChar));
//F7(STD, D2Common,10322,10322,10322,00000,00000,00000,00000,00000, SkillData*, D2GetRightSkill, (Unit* ptChar));
F8(STD, D2Common,10326,10326,00000,00000,00000,00000,00000,00000, 00000, DWORD, D2GetPosX, (Unit* ptUnit));//NOT IN 1.10
//F7(STD, D2Common,10328,10328,10328,00000,00000,00000,00000,00000, void, D2SetPosX, (Unit* ptUnit, DWORD pos));
F8(STD, D2Common,10329,10329,00000,00000,00000,00000,00000,00000, 00000, DWORD, D2GetPosY, (Unit* ptUnit));//NOT IN 1.10
//F7(STD, D2Common,10331,10331,10331,00000,00000,00000,00000,00000, void, D2SetPosY, (Unit* ptUnit, DWORD pos));
F8(STD, D2Common,10332,10332,10332,11080,10056,10543,10141,11166, 220870, void, D2GetPosition, (Unit* ptUnit, Position* pos));
F8(STD, D2Common,10339,10339,10339,10455,10864,10941,11060,11025, 223460, DWORD, D2GetMaxGoldBank, (Unit* ptUnit));
F8(STD, D2Common,10342,10342,10342,10172,10933,10366,10331,10846, 220BB0, Room*, D2GetRoom, (Unit* ptUnit));
//F7(STD, D2Common,10348,10348,10348,00000,00000,00000,00000,00000, void, D2SetUnitMode, (Unit* ptUnit, DWORD mode));
//F7(STD, D2Common,10394,10394,10394,00000,00000,00000,00000,00000, ObjectsBIN*,D2GetObjectsBIN, (Unit* ptObject));
F8(STD, D2Common,10420,10420,10420,10218,10079,11097,10356,10404, 221F90, PlayerData*,D2InitPlayerData, (Unit* ptChar));
//F7(STD, D2Common,10421,10421,10421,10914,10329,00000,00000,00000, DWORD, D2FreePlayerData, (DWORD game1C, Unit* ptChar));
F8(STD, D2Common,10424,10424,10424,10562,10800,10860,10920,11103, 2221A0, PlayerData*,D2GetPlayerData, (Unit* ptChar));
F8(STD, D2Common,10431,10431,10431,00000,00000,00000,00000,00000, 00000, DWORD, D2GetDefence, (Unit* ptChar));
F8(STD, D2Common,10433,10433,10433,00000,00000,00000,00000,00000, 00000, DWORD, D2GetChanceToBlock, (Unit* ptChar, DWORD isLODGame));
F8(STD, D2Common,10439,10439,10439,10343,11131,10729,10049,11159, 222E70, DWORD, D2GetMaxGold, (Unit* ptUnit));
F8(STD, D2Common,00000,00000,00000,10440,10572,10481,11090,10193, 224690, DWORD, D2Common10572, (Unit* ptObject, DWORD value));
//F7(STD, D2Common,10463,10463,10463,00000,00000,00000,00000,00000, DWORD, D2SetStatWithNoTest, ( Stats* ptStats, DWORD statID, DWORD statValue, DWORD statIndex));
//F7(STD, D2Common,10464,10464,10464,00000,00000,00000,00000,00000, void, D2AddStat, (Stats* ptStats, DWORD statID, DWORD statValue, DWORD statIndex));
//F7(STD, D2Common,10465,10465,10465,00000,00000,00000,00000,00000, DWORD, D2SetStat, (Stats* ptStats, DWORD statID, DWORD statValue, DWORD statIndex));
//F7(STD, D2Common,10466,10466,10466,00000,00000,00000,00000,00000, int, D2GetStat, (Stats* ptStats, DWORD statID, DWORD statIndex));
//F7(STD, D2Common,10470,10470,10470,00000,00000,00000,00000,00000, Stats*, D2AllocNewStats, (DWORD nUnitId, DWORD flags, DWORD uk18, DWORD nUnitType, DWORD nItemNum));
F8(STD, D2Common,00000,00000,00000,10471,11160,10866,10258,10040, 2222C0, BYTE, D2GetObjectFlags, (Unit* ptObject));
F8(STD, D2Common,00000,00000,00000,10572,11048,10150,10111,10033, 222300, void, D2SetObjectFlags, (Unit* ptObject, BYTE flags));
//F7(STD, D2Common,10471,10471,10471,00000,00000,00000,00000,00000, DWORD, D2Common10471, (void*));
//F7(STD, D2Common,10472,10472,10472,00000,00000,00000,00000,00000, DWORD, D2Common10472, (void*));
//F7(STD, D2Common,10475,10475,10475,00000,00000,00000,00000,00000, void, D2UpdateDisabledStat, (Stats* ptCharStats, Stats* ptStats, DWORD one));
//F7(STD, D2Common,10481,10481,10481,00000,00000,00000,00000,00000, void*, D2Common10481, (Unit* ptUnit, DWORD flags));
//F7(STD, D2Common,10484,10484,10484,00000,00000,00000,00000,00000, Stats*, D2GetAffixStats, (Unit* ptItem, DWORD, DWORD));
//F7(STD, D2Common,10485,10485,10485,00000,00000,00000,00000,00000, void, D2FreeStats, (Stats* ptStats));
F8(STD, D2Common,10487,10487,10487,00000,00000,00000,00000,00000, 00000, DWORD, D2isInState, (Unit* ptChar, DWORD isLODGame));
//F7(STD, D2Common,10517,10517,10517,00000,00000,00000,00000,00000, void, D2SetPlayerStat, (Unit* ptChar, DWORD statID, int amount, DWORD index));
F8(STD, D2Common,10518,10518,10518,10109,10627,10762,10551,10645, 2272B0, void, D2AddPlayerStat, (Unit* ptChar, DWORD statID, int amount, DWORD index));//ONLY 1.11b
F8(STD, D2Common,10519,10519,10519,11092,10061,10658,10973,10550, 225480, int, D2GetPlayerStat, (Unit* ptChar, DWORD statID, DWORD index));//ONLY 1.11b
//F7(STD, D2Common,10520,10520,10520,00000,00000,00000,00000,00000, int, D2GetPlayerStat20, (Unit* ptChar, DWORD statID, DWORD index));
F8(STD, D2Common,10521,10521,10521,10733,10550,10494,10587,10216, 2253B0, int, D2GetPlayerBaseStat, (Unit* ptChar, DWORD statID, DWORD index));//ONLY 1.11b
//F7(STD, D2Common,10527,10527,10527,00000,00000,00000,00000,00000, DWORD, D2Common10527, (Unit* ptUnit));
F8(STD, D2Common,10539,10539,10539,00000,00000,00000,00000,00000, 00000, DWORD, D2haveDefenceBonus, (Unit* ptChar));
F8(STD, D2Common,10540,10540,10540,00000,00000,00000,00000,00000, 00000, DWORD, D2haveFireResBonus, (Unit* ptChar));
F8(STD, D2Common,10541,10541,10541,00000,00000,00000,00000,00000, 00000, DWORD, D2haveColdResBonus, (Unit* ptChar));
F8(STD, D2Common,10542,10542,10542,00000,00000,00000,00000,00000, 00000, DWORD, D2haveLightResBonus, (Unit* ptChar));
F8(STD, D2Common,10543,10543,10543,00000,00000,00000,00000,00000, 00000, DWORD, D2havePoisonResBonus, (Unit* ptChar));
F8(STD, D2Common,10546,10546,10546,00000,00000,00000,00000,00000, 00000, DWORD, D2haveDefenceMalus, (Unit* ptChar));
F8(STD, D2Common,10547,10547,10547,00000,00000,00000,00000,00000, 00000, DWORD, D2haveFireResMalus, (Unit* ptChar));
F8(STD, D2Common,10548,10548,10548,00000,00000,00000,00000,00000, 00000, DWORD, D2haveColdResMalus, (Unit* ptChar));
F8(STD, D2Common,10549,10549,10549,00000,00000,00000,00000,00000, 00000, DWORD, D2haveLightResMalus, (Unit* ptChar));
F8(STD, D2Common,10550,10550,10550,00000,00000,00000,00000,00000, 00000, DWORD, D2havePoisonResMalus, (Unit* ptChar));
//F7(STD, D2Common,10552,10552,10552,00000,00000,00000,00000,00000, DWORD, D2Common10552, (Unit* ptUnit));
//F7(STD, D2Common,10567,10567,10567,00000,00000,00000,00000,00000, DWORD, D2CanBeBroken, (Unit* ptItem));
//F7(STD, D2Common,10573,10573,10573,00000,00000,00000,00000,00000, void, D2CopyStats, (Stats* ptDestStats, Stats* ptSrcStats));
//F7(STD, D2Common,10574,10574,10574,00000,00000,00000,00000,00000, void*, D2SetEnabledStat, (Unit* ptItem, DWORD statId, DWORD disabled));
//F7(STD, D2Common,10575,10575,10575,00000,00000,00000,00000,00000, void, D2FreeBinFiles, ());
//F7(STD, D2Common,10576,10576,10576,00000,00000,00000,00000,00000, void, D2LoadBinFiles, (DWORD zero1, DWORD zero2, bool));
//F7(STD, D2Common,00000,00000,00000,10651,10651,00000,00000,00000, DWORD, D2CheckQuestState, (void* ptQuest, DWORD index, DWORD value));
F8(STD, D2Common,10578,10578,10578,10653,10496,10244,10849,10037, 2122F0, void*, D2CompileTxtFile, (DWORD unused, const char* filename, BINField* ptFields, DWORD* ptRecordCount, DWORD recordLength));
F8(STD, D2Common,10600,10600,10600,10573,10262,10887,10695,10994, 2335F0, ItemsBIN*, D2GetItemsBIN, (DWORD itemID));
//F7(STD, D2Common,10601,10601,10601,00000,00000,00000,00000,00000, ItemsBIN*, D2GetByCodeItemStatsBIN, (DWORD code, DWORD* itemID));
//F7(STD, D2Common,10604,10604,10604,00000,00000,00000,00000,00000, AffixBIN*, D2GetAffixBIN, (int affixID));
F8(STD, D2Common,10616,10616,10616,10500,10523,10774,10806,10619, 10619, GemsBIN*, D2GetGemsBIN, (DWORD gemID));
F8(STD, D2Common,11232,11232,11232,10746,10258,10913,10783,10393, 26A1B0, CubeMainBIN*,D2GetCubeMainBIN, (DWORD cubemainID));
F8(STD, D2Common,11233,11233,11233,10639,11135,10390,10675,10235, 26A200, int, D2GetNbCubeMainBIN, ());
//F7(STD, D2Common,10737,10737,10737,00000,00000,00000,00000,00000, LevelsBIN*, D2GetLevelsBIN, (DWORD levelID));
F8(STD, D2Common,10628,10628,10628,00000,00000,00000,00000,00000, 00000, DWORD, D2GetNextLevelXP, (DWORD classID, DWORD level));
F8(STD, D2Common,10629,10629,10629,00000,00000,00000,00000,00000, 00000, DWORD, D2GetMaxLevel, (DWORD classID));
F8(STD, D2Common,10655,10655,10655,10655,10309,10297,10218,10694, 10694, DifficultyLevelsBIN*, D2GetDifficultyLevelsBIN, (DWORD difficultyLevel));
//F7(STD, D2Common,10659,10659,10659,00000,00000,00000,00000,00000, TreasureClassBIN*, D2GetTreasureClassBIN, (WORD id, DWORD uk));
//F7(STD, D2Common,10668,10668,10668,10450,10953,00000,00000,00000, SuperUniqueBIN*, D2GetSuperUniqueBIN, (WORD id));
F8(STD, D2Common,10695,10695,10695,10927,10899,10276,10106,10911, 227E70, DWORD, D2GetItemQuality, (Unit* ptItem));
F8(STD, D2Common,10707,10707,10707,10911,10303,10989,10202,10458, 2280A0, DWORD, D2TestFlags, (Unit* ptUnit, DWORD flags, DWORD line, const char* file));
//F7(STD, D2Common,10708,10708,10708,00000,00000,00000,00000,00000, void, D2SetFlags, (Unit* ptUnit, DWORD flags, DWORD bitNewValue));
//F7(STD, D2Common,10709,10709,10709,00000,00000,00000,00000,00000, DWORD, D2GetFlags, (Unit* ptUnit));
//F7(STD, D2Common,10711,10711,10711,00000,00000,00000,00000,00000, void, D2ItemSetFlags, (Unit* ptItem, DWORD flags, DWORD toSet));// toSet = 0 for set to 0 the selected flags else set to 1
F8(STD, D2Common,10717,10717,10717,10898,10100,10410,10086,10008, 2281E0, DWORD, D2GetItemLevel, (Unit* ptItem));
F8(STD, D2Common,10719,10719,10719,10820,10505,10370,10020,10810, 228250, BYTE, D2ItemGetPage, (Unit* ptUnit));
F8(STD, D2Common,10720,10720,10720,10485,10608,10223,10012,11026, 228280, void, D2ItemSetPage, (Unit* ptItem, BYTE page));
F8(STD, D2Common,10731,10731,10731,11017,10890,10231,10744,10601, 229BB0, DWORD, D2CheckItemType, (Unit* ptItem, DWORD itype));
F8(STD, D2Common,10732,10732,10732,10692,10685,10280,10620,10075, 229DA0, int, D2GetUniqueID, (Unit* ptItem));
F8(STD, D2Common,10734,10734,10734,00000,00000,00000,00000,00000, 00000, void, D2SetAnim, (Unit* ptUnit, int anim));
//F7(STD, D2Common,10749,10749,10749,00000,00000,00000,00000,00000, void, D2GetWidthHeight, (Unit* ptItem, BYTE* Width, BYTE* Height);
//F7(STD, D2Common,10751,10751,10751,00000,00000,00000,00000,00000, DWORD, D2GetItemType, (Unit* ptUnit));
//F7(STD, D2Common,10757,10757,10757,00000,00000,00000,00000,00000, DWORD, D2GetItemLevelReq, (Unit* ptChar, Unit* ptItem));
F8(STD, D2Common,10619,10619,10619,10687,10877,10321,11032,10981, 10981, int*, D2GetNbRunesBIN, ());//return the point on th number
F8(STD, D2Common,10620,10620,10620,10775,10296,10622,10006,10405, 10405, RunesBIN*, D2GetRunesBIN, (int runesID));
//F7(STD, D2Common,10792,10792,10792,00000,00000,00000,00000,00000, DWORD, D2CanBeRare, (Unit* ptItem));
//F7(STD, D2Common,10810,10810,10810,00000,00000,00000,00000,00000, BYTE, D2CheckHasInv, (Unit* ptItem));
//F7(STD, D2Common,10813,10813,10813,00000,00000,00000,00000,00000, DWORD, D2GetStaffMods, (Unit* ptItem));
//F7(STD, D2Common,10816,10816,10816,10816,11085,00000,00000,00000, DWORD, D2GetNbSocket, (Unit* ptItem));
//F7(STD, D2Common,10840,10840,10840,00000,00000,00000,00000,00000, DWORD, D2Common10840, (Unit* ptItem, Unit* ptChar));
//F7(STD, D2Common,10855,10855,10855,00000,00000,00000,00000,00000, void, D2AddAffix, (DWORD, DWORD, Unit* ptItem, AffixBIN* ptAffix, DWORD, DWORD));
//F7(STD, D2Common,10872,10872,10872,00000,00000,00000,00000,00000, DWORD, D2WarpPlayer, (Path* ptPath, Unit* ptChar, Room* ptRoom, DWORD x, DWORD y));
//F7(STD, D2Common,10875,10875,10875,00000,00000,00000,00000,00000, WORD, D2GetItemVersion, (Unit* ptItem));
F8(STD, D2Common,11163,11163,11163,10880,11068,10436,11107,10963, 23BCC0, DWORD, D2isEtheral, (Unit* ptItem));//ONLY UNTIL 1.10
F8(STD, D2Common, 11163, 11163, 11163, 10880, 11068, 10436, 11107, 10963, 23BCC0, DWORD, D2isEtheral2, (Unit* ptItem, DWORD a2, DWORD a3, DWORD a4, DWORD a5, DWORD a6, WORD a7));
F8(STD, D2Common,10881,10881,10881,10956,11156,10218,10987,10665, 2313E0, DWORD, D2SaveItem, (Unit* ptItem, saveBitField* data, DWORD startSize, DWORD p4, DWORD p5, DWORD p6));
//F7(STD, D2Common,10916,10916,10916,00000,00000,00000,00000,00000, void, DoNothing916, ());
//F7(STD, D2Common,10940,10940,10940,10027,10105,10953,00000,00000, void, D2Common10027, (Unit* ptChar, DWORD skillID));
//F7(STD, D2Common,10950,10950,10950,00000,00000,00000,00000,00000, SkillData*, D2GetSkillPointer, (Unit* ptChar, WORD SkillID));
//F7(STD, D2Common,10952,10952,10952,10950,10256,10858,00000,00000, SkillData*, D2IncSkillBaseLevel, (Unit* ptChar, DWORD skillID));
F8(STD, D2Common,10953,10953,10953,10099,10255,10210,10302,10335, 247280, void, D2SetSkillBaseLevel,(Unit* ptChar, DWORD skillID, DWORD slvl, DWORD bRemove, char*, DWORD));
//F7(STD, D2Common,10963,10963,10963,00000,00000,00000,00000,00000, DWORD, D2GetSkillID, (SkillData* ptSkill, const char* file, DWORD line));
//F7(FAST, D2Common,10966,10966,10966,00000,00000,00000,00000,00000, SkillsBIN*, D2GetSkillsBIN, (SkillData* ptSkill));
F8(STD, D2Common,10968,10968,10968,10700,10109,10904,10306,10007, 2442A0, DWORD, D2GetSkillLevel, (Unit* ptChar, SkillData* ptSkill, DWORD includingBonus));
//F7(STD, D2Common,11023,11023,11023,00000,00000,00000,00000,00000, DWORD, D2GetCriticalStrikeFromMasteries, (Unit* ptChar, Unit* ptItem, DWORD zero, DWORD two));
//F7(STD, D2Common,11007,11007,11007,00000,00000,00000,00000,00000, bool, D2TestQuestState, (void* ptQuest, DWORD QuestID, DWORD QuestState));
//F7(STD, D2Common,11041,11041,11041,00000,00000,00000,00000,00000, int, D2GetPlayerSkillID, (DWORD playerID, DWORD skillNumber));
//F7(STD, D2Common,11042,11042,11042,00000,00000,00000,00000,00000, int, D2GetNbSkillsPerPlayer, (DWORD playerID));
//F7(STD, D2Common,11269,11269,11269,00000,00000,00000,00000,00000, DWORD, D2GetAllIndexFromStat, (Stats* ptStats, DWORD statID, D2Stat* allIndex, DWORD maxIndex));
//F7(STD, D2Common,11270,11270,11270,00000,00000,00000,00000,00000, DWORD, D2GetAllIndexFromStatID, (Unit* ptItem, DWORD statID, D2Stat* allIndex, DWORD));
F8(STD, D2Common,11276,11276,11276,10254,10074,10111,10435,11081, 246D00, DWORD, D2GetSkillCost, (Unit* ptChar, int skpoints, DWORD skillID, DWORD curSkillLevel));//not 10447
A8(FAST, D2Common,00000,00000,82C80, 15D0, 1800, 1220, 12D0, 17B0, 833E0, CharStatsBIN*, D2GetCharStatsBIN, (DWORD charID));
A8(FAST, D2Common,00000,00000,12410,5D7D0,1A100,116C0,1C020,5B0E0, 268600, DWORD, D2CompileCubeInput, (CubeInput* cubeinput, char* s, DWORD p1, DWORD p2));
A8(FAST, D2Common,00000,00000,12910,5D210,19B40,11100,1BA60,5AB20, 5AB20, DWORD, D2CompileCubeOutput, (CubeOutput* cubeoutput, char* s, DWORD p1, DWORD p2));
A8(FAST, D2Common,00000,00000,2B1A0, 11F0, 1380, 1140, 1300, 1160, 155C90, ItemTypesBIN*, D2GetItemTypesBIN, (DWORD itemTypesId));
//A7(FAST, D2Common,00000,00000,62FD0,00000,00000,00000,00000,00000, void, D2EncodeValueCheckMax, (saveBitField* data, DWORD value, DWORD bitSize));
A8(FAST, D2Common,00000,00000,642B0, 13F0, 12F0, 1540, 17A0, 17E0, 5C4F0, ItemStatCostBIN*,D2GetItemStatCostBIN, (DWORD id));
//A7(FAST, D2Common,00000,00000,764A0,00000,00000,00000,00000,00000, void*, D2Common764A0, (Stats* ptStats, DWORD stat, ItemStatCostBIN* itemStatCost ,DWORD));
//A7(STD, D2Common,00000,00000,76E30,00000,00000,00000,00000,00000, void, D2PreUpdateDisabledStat, (Stats* ptStats));
//A7(FAST, D2Common,00000,00000,76C10,00000,00000,00000,00000,00000, void, D2ApplyStat,(Stats* ptCharStats, DWORD statId, DWORD value, Unit* ptItem));
A8(FAST, D2Common,738A4,739B4,84268, 96E0, 98D0, 9900, 9900, B5E0, /*116E46*/117079, void*, D2ReadFile,(DWORD unused, char* filename, DWORD* size, const char*, DWORD));
//A7(FAST, D2Common,00000,00000, 94D0,00000,00000,00000,00000,00000, void*, D2GetStringIDForTxtFile,(const char * string));
A8(STD, D2Common,1F500,1F510,29FA0,71EB0,32AA0,7D2A0,59870,80C40, 2552E0, void, D2LoadSuperuniques,(DWORD mempool));//FASCALL UNTIL 1.10
//F8(STD, D2Common,00000,00000,00000,00000,10001,00000,00000,00000,00000, DWORD, D2GetActIDFromLevel, (DWORD levelID));
F8(STD, D2Common,00000,00000,00000,10188,11084,11109,10346,10907,21AED0, DWORD, D2Common11084, (Room* ptRoom, DWORD zero));
F8(STD, D2Common,10057,10057,10057,10332,11021,10511,10826,10691,21A1B0, DWORD, D2GetLevelID, (Room* ptRoom));
F8(STD, D2Common,10138,10138,10138,10623,10491,11043,10654,10716,24E810, Room*, D2GetDropRoom, (Room* ptRoom, Position*, Position*, DWORD, DWORD, DWORD, DWORD));
//F8(STD, D2Common,10149,10149,10149,00000,00000,00000,00000,00000,00000, Inventory*, D2GetInventory, (Unit* ptUnit));
F8(STD, D2Common,10242,10242,10242,00000,00000,00000,00000,00000,00000, Unit*, D2Common10242, (Inventory* ptInventory, Unit* ptItem, DWORD bIsClient));
F8(STD, D2Common,10246,10246,10246,10855,10813,10289,10133,10402,23B950, Unit*, D2CanPutItemInInv, (Inventory* ptInventory, Unit* ptItem, DWORD p3, DWORD zero, Unit* ptUnit, const char* file, DWORD line));
F8(STD, D2Common,10243,10243,10243,10461,10827,10936,10646,10490,23AD90, Unit*, D2InvRemoveItem, (Inventory* ptInventory, Unit* ptItem));
F8(STD, D2Common,10249,10249,10249,10880,11068,10436,11107,10963,23BCC0, DWORD, D2InvAddItem, (Inventory* ptInventory, Unit* ptItem, DWORD posX, DWORD posY, DWORD vValueC, DWORD bIsClient, BYTE page));//result : boolean 0=echec ; vValueC = 0 for Game.dll, 1 for Clientdll
F8(STD, D2Common,10250,10250,10250,00000,00000,00000,00000,00000,00000, DWORD, D2Common10250, (const char* file, DWORD line, Inventory* ptInventory, DWORD posX, DWORD posY, DWORD vValueC, DWORD bIsClient, BYTE page));// result : boolean 0=echec ; vValueC = 0 for Game.dll, 1 for Clientdll
//F8(STD, D2Common,10257,10257,10257,00000,00000,00000,00000,00000,00000, Unit*, D2GetItemFromBodyLoc, (Inventory* ptInventory, DWORD bodyloc));
F8(STD, D2Common,10273,10273,10273,00000,00000,00000,00000,00000,00000, DWORD, D2Common10273, (Inventory* ptInventory, void* unknown));
F8(STD, D2Common,10277,10277,10277,10402,10535,11151,10460,11040,23B2C0, Unit*, D2InventoryGetFirstItem, (Inventory* ptInventory));
F8(STD, D2Common,10304,10304,10304,10934,11140,10770,10464,10879,23DFA0, Unit*, D2UnitGetNextItem, (Unit* ptItem));
F8(STD, D2Common,10305,10305,10305,11095,10748,10852,11147,10897,23DFD0, Unit*, D2GetRealItem, (Unit* ptUnit));
//F8(STD, D2Common,10321,10321,10321,00000,00000,00000,00000,00000,00000, SkillData*, D2GetLeftSkill, (Unit* ptChar));
//F8(STD, D2Common,10322,10322,10322,00000,00000,00000,00000,00000,00000, SkillData*, D2GetRightSkill, (Unit* ptChar));
F8(STD, D2Common,10326,10326,00000,00000,00000,00000,00000,00000,00000, DWORD, D2GetPosX, (Unit* ptUnit));//NOT IN 1.10
//F8(STD, D2Common,10328,10328,10328,00000,00000,00000,00000,00000,00000, void, D2SetPosX, (Unit* ptUnit, DWORD pos));
F8(STD, D2Common,10329,10329,00000,00000,00000,00000,00000,00000,00000, DWORD, D2GetPosY, (Unit* ptUnit));//NOT IN 1.10
//F8(STD, D2Common,10331,10331,10331,00000,00000,00000,00000,00000,00000, void, D2SetPosY, (Unit* ptUnit, DWORD pos));
F8(STD, D2Common,10332,10332,10332,11080,10056,10543,10141,11166,220870, void, D2GetPosition, (Unit* ptUnit, Position* pos));
F8(STD, D2Common,10339,10339,10339,10455,10864,10941,11060,11025,223460, DWORD, D2GetMaxGoldBank, (Unit* ptUnit));
F8(STD, D2Common,10342,10342,10342,10172,10933,10366,10331,10846,220BB0, Room*, D2GetRoom, (Unit* ptUnit));
//F8(STD, D2Common,10348,10348,10348,00000,00000,00000,00000,00000,00000, void, D2SetUnitMode, (Unit* ptUnit, DWORD mode));
//F8(STD, D2Common,10394,10394,10394,00000,00000,00000,00000,00000,00000, ObjectsBIN*,D2GetObjectsBIN, (Unit* ptObject));
F8(STD, D2Common,10420,10420,10420,10218,10079,11097,10356,10404,221F90, PlayerData*,D2InitPlayerData, (Unit* ptChar));
//F8(STD, D2Common,10421,10421,10421,10914,10329,00000,00000,00000,00000, DWORD, D2FreePlayerData, (DWORD game1C, Unit* ptChar));
F8(STD, D2Common,10424,10424,10424,10562,10800,10860,10920,11103,2221A0, PlayerData*,D2GetPlayerData, (Unit* ptChar));
F8(STD, D2Common,10431,10431,10431,00000,00000,00000,00000,00000,00000, DWORD, D2GetDefence, (Unit* ptChar));
F8(STD, D2Common,10433,10433,10433,00000,00000,00000,00000,00000,00000, DWORD, D2GetChanceToBlock, (Unit* ptChar, DWORD isLODGame));
F8(STD, D2Common,10439,10439,10439,10343,11131,10729,10049,11159,222E70, DWORD, D2GetMaxGold, (Unit* ptUnit));
F8(STD, D2Common,00000,00000,00000,10440,10572,10481,11090,10193,224690, DWORD, D2Common10572, (Unit* ptObject, DWORD value));
//F8(STD, D2Common,10463,10463,10463,00000,00000,00000,00000,00000,00000, DWORD, D2SetStatWithNoTest, ( Stats* ptStats, DWORD statID, DWORD statValue, DWORD statIndex));
//F8(STD, D2Common,10464,10464,10464,00000,00000,00000,00000,00000,00000, void, D2AddStat, (Stats* ptStats, DWORD statID, DWORD statValue, DWORD statIndex));
//F8(STD, D2Common,10465,10465,10465,00000,00000,00000,00000,00000,00000, DWORD, D2SetStat, (Stats* ptStats, DWORD statID, DWORD statValue, DWORD statIndex));
//F8(STD, D2Common,10466,10466,10466,00000,00000,00000,00000,00000,00000, int, D2GetStat, (Stats* ptStats, DWORD statID, DWORD statIndex));
//F8(STD, D2Common,10470,10470,10470,00000,00000,00000,00000,00000,00000, Stats*, D2AllocNewStats, (DWORD nUnitId, DWORD flags, DWORD uk18, DWORD nUnitType, DWORD nItemNum));
F8(STD, D2Common,00000,00000,00000,10471,11160,10866,10258,10040,2222C0, BYTE, D2GetObjectFlags, (Unit* ptObject));
F8(STD, D2Common,00000,00000,00000,10572,11048,10150,10111,10033,222300, void, D2SetObjectFlags, (Unit* ptObject, BYTE flags));
//F8(STD, D2Common,10471,10471,10471,00000,00000,00000,00000,00000,00000, DWORD, D2Common10471, (void*));
//F8(STD, D2Common,10472,10472,10472,00000,00000,00000,00000,00000,00000, DWORD, D2Common10472, (void*));
//F8(STD, D2Common,10475,10475,10475,00000,00000,00000,00000,00000,00000, void, D2UpdateDisabledStat, (Stats* ptCharStats, Stats* ptStats, DWORD one));
//F8(STD, D2Common,10481,10481,10481,00000,00000,00000,00000,00000,00000, void*, D2Common10481, (Unit* ptUnit, DWORD flags));
//F8(STD, D2Common,10484,10484,10484,00000,00000,00000,00000,00000,00000, Stats*, D2GetAffixStats, (Unit* ptItem, DWORD, DWORD));
//F8(STD, D2Common,10485,10485,10485,00000,00000,00000,00000,00000,00000, void, D2FreeStats, (Stats* ptStats));
F8(STD, D2Common,10487,10487,10487,00000,00000,00000,00000,00000,00000, DWORD, D2isInState, (Unit* ptChar, DWORD isLODGame));
//F8(STD, D2Common,10517,10517,10517,00000,00000,00000,00000,00000,00000, void, D2SetPlayerStat, (Unit* ptChar, DWORD statID, int amount, DWORD index));
F8(STD, D2Common,10518,10518,10518,10109,10627,10762,10551,10645,2272B0, void, D2AddPlayerStat, (Unit* ptChar, DWORD statID, int amount, DWORD index));//ONLY 1.11b
F8(STD, D2Common,10519,10519,10519,11092,10061,10658,10973,10550,225480, int, D2GetPlayerStat, (Unit* ptChar, DWORD statID, DWORD index));//ONLY 1.11b
//F8(STD, D2Common,10520,10520,10520,00000,00000,00000,00000,00000,00000, int, D2GetPlayerStat20, (Unit* ptChar, DWORD statID, DWORD index));
F8(STD, D2Common,10521,10521,10521,10733,10550,10494,10587,10216,2253B0, int, D2GetPlayerBaseStat, (Unit* ptChar, DWORD statID, DWORD index));//ONLY 1.11b
//F8(STD, D2Common,10527,10527,10527,00000,00000,00000,00000,00000,00000, DWORD, D2Common10527, (Unit* ptUnit));
F8(STD, D2Common,10539,10539,10539,00000,00000,00000,00000,00000,00000, DWORD, D2haveDefenceBonus, (Unit* ptChar));
F8(STD, D2Common,10540,10540,10540,00000,00000,00000,00000,00000,00000, DWORD, D2haveFireResBonus, (Unit* ptChar));
F8(STD, D2Common,10541,10541,10541,00000,00000,00000,00000,00000,00000, DWORD, D2haveColdResBonus, (Unit* ptChar));
F8(STD, D2Common,10542,10542,10542,00000,00000,00000,00000,00000,00000, DWORD, D2haveLightResBonus, (Unit* ptChar));
F8(STD, D2Common,10543,10543,10543,00000,00000,00000,00000,00000,00000, DWORD, D2havePoisonResBonus, (Unit* ptChar));
F8(STD, D2Common,10546,10546,10546,00000,00000,00000,00000,00000,00000, DWORD, D2haveDefenceMalus, (Unit* ptChar));
F8(STD, D2Common,10547,10547,10547,00000,00000,00000,00000,00000,00000, DWORD, D2haveFireResMalus, (Unit* ptChar));
F8(STD, D2Common,10548,10548,10548,00000,00000,00000,00000,00000,00000, DWORD, D2haveColdResMalus, (Unit* ptChar));
F8(STD, D2Common,10549,10549,10549,00000,00000,00000,00000,00000,00000, DWORD, D2haveLightResMalus, (Unit* ptChar));
F8(STD, D2Common,10550,10550,10550,00000,00000,00000,00000,00000,00000, DWORD, D2havePoisonResMalus, (Unit* ptChar));
//F8(STD, D2Common,10552,10552,10552,00000,00000,00000,00000,00000,00000, DWORD, D2Common10552, (Unit* ptUnit));
//F8(STD, D2Common,10567,10567,10567,00000,00000,00000,00000,00000,00000, DWORD, D2CanBeBroken, (Unit* ptItem));
//F8(STD, D2Common,10573,10573,10573,00000,00000,00000,00000,00000,00000, void, D2CopyStats, (Stats* ptDestStats, Stats* ptSrcStats));
//F8(STD, D2Common,10574,10574,10574,00000,00000,00000,00000,00000,00000, void*, D2SetEnabledStat, (Unit* ptItem, DWORD statId, DWORD disabled));
//F8(STD, D2Common,10575,10575,10575,00000,00000,00000,00000,00000,00000, void, D2FreeBinFiles, ());
//F8(STD, D2Common,10576,10576,10576,00000,00000,00000,00000,00000,00000, void, D2LoadBinFiles, (DWORD zero1, DWORD zero2, bool));
//F8(STD, D2Common,00000,00000,00000,10651,10651,00000,00000,00000,00000, DWORD, D2CheckQuestState, (void* ptQuest, DWORD index, DWORD value));
F8(STD, D2Common,10578,10578,10578,10653,10496,10244,10849,10037,2122F0, void*, D2CompileTxtFile, (DWORD unused, const char* filename, BINField* ptFields, DWORD* ptRecordCount, DWORD recordLength));
F8(STD, D2Common,10600,10600,10600,10573,10262,10887,10695,10994,2335F0, ItemsBIN*, D2GetItemsBIN, (DWORD itemID));
//F8(STD, D2Common,10601,10601,10601,00000,00000,00000,00000,00000,00000, ItemsBIN*, D2GetByCodeItemStatsBIN, (DWORD code, DWORD* itemID));
//F8(STD, D2Common,10604,10604,10604,00000,00000,00000,00000,00000,00000, AffixBIN*, D2GetAffixBIN, (int affixID));
F8(STD, D2Common,10616,10616,10616,10500,10523,10774,10806,10619,2372C0, GemsBIN*, D2GetGemsBIN, (DWORD gemID));
F8(STD, D2Common,11232,11232,11232,10746,10258,10913,10783,10393,26A1B0, CubeMainBIN*,D2GetCubeMainBIN, (DWORD cubemainID));
F8(STD, D2Common,11233,11233,11233,10639,11135,10390,10675,10235,26A200, int, D2GetNbCubeMainBIN, ());
//F8(STD, D2Common,10737,10737,10737,00000,00000,00000,00000,00000,00000, LevelsBIN*, D2GetLevelsBIN, (DWORD levelID));
F8(STD, D2Common,10628,10628,10628,00000,00000,00000,00000,00000,00000, DWORD, D2GetNextLevelXP, (DWORD classID, DWORD level));
F8(STD, D2Common,10629,10629,10629,00000,00000,00000,00000,00000,00000, DWORD, D2GetMaxLevel, (DWORD classID));
F8(STD, D2Common,10655,10655,10655,10655,10309,10297,10218,10694,111D30, DifficultyLevelsBIN*, D2GetDifficultyLevelsBIN, (DWORD difficultyLevel));
//F8(STD, D2Common,10659,10659,10659,00000,00000,00000,00000,00000,00000, TreasureClassBIN*, D2GetTreasureClassBIN, (WORD id, DWORD uk));
//F8(STD, D2Common,10668,10668,10668,10450,10953,00000,00000,00000,00000, SuperUniqueBIN*, D2GetSuperUniqueBIN, (WORD id));
F8(STD, D2Common,10695,10695,10695,10927,10899,10276,10106,10911,227E70, DWORD, D2GetItemQuality, (Unit* ptItem));
F8(STD, D2Common,10707,10707,10707,10911,10303,10989,10202,10458,2280A0, DWORD, D2TestFlags, (Unit* ptUnit, DWORD flags, DWORD line, const char* file));
//F8(STD, D2Common,10708,10708,10708,00000,00000,00000,00000,00000,00000, void, D2SetFlags, (Unit* ptUnit, DWORD flags, DWORD bitNewValue));
//F8(STD, D2Common,10709,10709,10709,00000,00000,00000,00000,00000,00000, DWORD, D2GetFlags, (Unit* ptUnit));
//F8(STD, D2Common,10711,10711,10711,00000,00000,00000,00000,00000,00000, void, D2ItemSetFlags, (Unit* ptItem, DWORD flags, DWORD toSet));// toSet = 0 for set to 0 the selected flags else set to 1
F8(STD, D2Common,10717,10717,10717,10898,10100,10410,10086,10008,2281E0, DWORD, D2GetItemLevel, (Unit* ptItem));
F8(STD, D2Common,10719,10719,10719,10820,10505,10370,10020,10810,228250, BYTE, D2ItemGetPage, (Unit* ptUnit));
F8(STD, D2Common,10720,10720,10720,10485,10608,10223,10012,11026,228280, void, D2ItemSetPage, (Unit* ptItem, BYTE page));
F8(STD, D2Common,10731,10731,10731,11017,10890,10231,10744,10601,229BB0, DWORD, D2CheckItemType, (Unit* ptItem, DWORD itype));
F8(STD, D2Common,10732,10732,10732,10692,10685,10280,10620,10075,229DA0, int, D2GetUniqueID, (Unit* ptItem));
F8(STD, D2Common,10734,10734,10734,00000,00000,00000,00000,00000,00000, void, D2SetAnim, (Unit* ptUnit, int anim));
//F8(STD, D2Common,10749,10749,10749,00000,00000,00000,00000,00000,00000, void, D2GetWidthHeight, (Unit* ptItem, BYTE* Width, BYTE* Height);
//F8(STD, D2Common,10751,10751,10751,00000,00000,00000,00000,00000,00000, DWORD, D2GetItemType, (Unit* ptUnit));
//F8(STD, D2Common,10757,10757,10757,00000,00000,00000,00000,00000,00000, DWORD, D2GetItemLevelReq, (Unit* ptChar, Unit* ptItem));
F8(STD, D2Common,10619,10619,10619,10687,10877,10321,11032,10981,239CB0, int*, D2GetNbRunesBIN, ());//return the point on th number
F8(STD, D2Common,10620,10620,10620,10775,10296,10622,10006,10405,239D60, RunesBIN*, D2GetRunesBIN, (int runesID));
//F8(STD, D2Common,10792,10792,10792,00000,00000,00000,00000,00000,00000, DWORD, D2CanBeRare, (Unit* ptItem));
//F8(STD, D2Common,10810,10810,10810,00000,00000,00000,00000,00000,00000, BYTE, D2CheckHasInv, (Unit* ptItem));
//F8(STD, D2Common,10813,10813,10813,00000,00000,00000,00000,00000,00000, DWORD, D2GetStaffMods, (Unit* ptItem));
//F8(STD, D2Common,10816,10816,10816,10816,11085,00000,00000,00000,00000, DWORD, D2GetNbSocket, (Unit* ptItem));
//F8(STD, D2Common,10840,10840,10840,00000,00000,00000,00000,00000,00000, DWORD, D2Common10840, (Unit* ptItem, Unit* ptChar));
//F8(STD, D2Common,10855,10855,10855,00000,00000,00000,00000,00000,00000, void, D2AddAffix, (DWORD, DWORD, Unit* ptItem, AffixBIN* ptAffix, DWORD, DWORD));
//F8(STD, D2Common,10872,10872,10872,00000,00000,00000,00000,00000,00000, DWORD, D2WarpPlayer, (Path* ptPath, Unit* ptChar, Room* ptRoom, DWORD x, DWORD y));
//F8(STD, D2Common,10875,10875,10875,00000,00000,00000,00000,00000,00000, WORD, D2GetItemVersion, (Unit* ptItem));
//F8(STD, D2Common,11163,11163,11163,10880,11068,10436,11107,10963,23BCC0, DWORD, D2isEtheral, (Unit* ptItem));//ONLY UNTIL 1.10
F8(STD, D2Common,10881,10881,10881,10956,11156,10218,10987,10665,2313E0, DWORD, D2SaveItem, (Unit* ptItem, saveBitField* data, DWORD startSize, DWORD p4, DWORD p5, DWORD p6));
//F8(STD, D2Common,10916,10916,10916,00000,00000,00000,00000,00000,00000, void, DoNothing916, ());
//F8(STD, D2Common,10940,10940,10940,10027,10105,10953,00000,00000,00000, void, D2Common10027, (Unit* ptChar, DWORD skillID));
//F8(STD, D2Common,10950,10950,10950,00000,00000,00000,00000,00000,00000, SkillData*, D2GetSkillPointer, (Unit* ptChar, WORD SkillID));
//F8(STD, D2Common,10952,10952,10952,10950,10256,10858,00000,00000,00000, SkillData*, D2IncSkillBaseLevel, (Unit* ptChar, DWORD skillID));
F8(STD, D2Common,10953,10953,10953,10099,10255,10210,10302,10335,247280, void, D2SetSkillBaseLevel,(Unit* ptChar, DWORD skillID, DWORD slvl, DWORD bRemove, char*, DWORD));
//F8(STD, D2Common,10963,10963,10963,00000,00000,00000,00000,00000,00000, DWORD, D2GetSkillID, (SkillData* ptSkill, const char* file, DWORD line));
//F8(FAST, D2Common,10966,10966,10966,00000,00000,00000,00000,00000,00000, SkillsBIN*, D2GetSkillsBIN, (SkillData* ptSkill));
F8(STD, D2Common,10968,10968,10968,10700,10109,10904,10306,10007,2442A0, DWORD, D2GetSkillLevel, (Unit* ptChar, SkillData* ptSkill, DWORD includingBonus));
//F8(STD, D2Common,11023,11023,11023,00000,00000,00000,00000,00000,00000, DWORD, D2GetCriticalStrikeFromMasteries, (Unit* ptChar, Unit* ptItem, DWORD zero, DWORD two));
//F8(STD, D2Common,11007,11007,11007,00000,00000,00000,00000,00000,00000, bool, D2TestQuestState, (void* ptQuest, DWORD QuestID, DWORD QuestState));
//F8(STD, D2Common,11041,11041,11041,00000,00000,00000,00000,00000,00000, int, D2GetPlayerSkillID, (DWORD playerID, DWORD skillNumber));
//F8(STD, D2Common,11042,11042,11042,00000,00000,00000,00000,00000,00000, int, D2GetNbSkillsPerPlayer, (DWORD playerID));
//F8(STD, D2Common,11269,11269,11269,00000,00000,00000,00000,00000,00000, DWORD, D2GetAllIndexFromStat, (Stats* ptStats, DWORD statID, D2Stat* allIndex, DWORD maxIndex));
//F8(STD, D2Common,11270,11270,11270,00000,00000,00000,00000,00000,00000, DWORD, D2GetAllIndexFromStatID, (Unit* ptItem, DWORD statID, D2Stat* allIndex, DWORD));
F8(STD, D2Common,11276,11276,11276,10254,10074,10111,10435,11081,246CA0, DWORD, D2GetSkillCost, (Unit* ptChar, int skpoints, DWORD skillID, DWORD curSkillLevel));//not 10447
A8(FAST, D2Common,00000,00000,82C80, 15D0, 1800, 1220, 12D0, 17B0, 833E0, CharStatsBIN*, D2GetCharStatsBIN, (DWORD charID));
A8(FAST, D2Common,00000,00000,12410,5D7D0,1A100,116C0,1C020,5B0E0,268600, DWORD, D2CompileCubeInput, (CubeInput* cubeinput, char* s, DWORD p1, DWORD p2));
//A8(FAST, D2Common,00000,00000,12910,5D210,19B40,11100,1BA60,5AB20,268A90, DWORD, D2CompileCubeOutput, (CubeOutput* cubeoutput, char* s, DWORD p1, DWORD p2));
A8(FAST, D2Common,00000,00000,2B1A0, 11F0, 1380, 1140, 1300, 1160,155C90, ItemTypesBIN*, D2GetItemTypesBIN, (DWORD itemTypesId));
//A8(FAST, D2Common,00000,00000,62FD0,00000,00000,00000,00000,00000,00000, void, D2EncodeValueCheckMax, (saveBitField* data, DWORD value, DWORD bitSize));
A8(FAST, D2Common,00000,00000,642B0, 13F0, 12F0, 1540, 17A0, 17E0,5C4F0, ItemStatCostBIN*,D2GetItemStatCostBIN, (DWORD id));
//A8(FAST, D2Common,00000,00000,764A0,00000,00000,00000,00000,00000,00000, void*, D2Common764A0, (Stats* ptStats, DWORD stat, ItemStatCostBIN* itemStatCost ,DWORD));
//A8(STD, D2Common,00000,00000,76E30,00000,00000,00000,00000,00000,00000, void, D2PreUpdateDisabledStat, (Stats* ptStats));
//A8(FAST, D2Common,00000,00000,76C10,00000,00000,00000,00000,00000,00000, void, D2ApplyStat,(Stats* ptCharStats, DWORD statId, DWORD value, Unit* ptItem));
A8(FAST, D2Common,738A4,739B4,84268, 96E0, 98D0, 9900, 9900, B5E0,117079, void*, D2ReadFile,(DWORD mempool, char* filename, DWORD* size, const char*, DWORD));
//A8(FAST, D2Common,00000,00000, 94D0,00000,00000,00000,00000,00000,00000, void*, D2GetStringIDForTxtFile,(const char * string));
A8(STD, D2Common,1F500,1F510,29FA0,71EB0,32AA0,7D2A0,59870,80C40,2552E0, void, D2LoadSuperuniques,(DWORD mempool));//FASCALL UNTIL 1.10
A8(STD, D2Common,00000,00000,00000,00000,00000,00000,81EA0,00000,00000, InventoryBIN*, D2GetInventoryBIN, ());
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//D2Client : 6FAA0000
@@ -310,26 +309,29 @@ A8(STD, D2Common,1F500,1F510,29FA0,71EB0,32AA0,7D2A0,59870,80C40, 2552E0, void,
//E2F(D2Client,5BA90, void, D2ReloadGambleScreen, ());//1.11b
//E2F(D2Client,1FEB0, void, D2OpenNPCMenu, (Unit* ptNPC));//1.11b by ESI
A8(FAST, D2Client, 1000, 1000, 1000,75D00,A9070,BEF70,2B420,A9480, 788B0, void*, D2LoadImage, (const char* filename, DWORD filetype));
A8(FAST, D2Client, 1150, 1150, 1140,00000,00000,00000,00000,00000, 00000, void, D2FreeImage, (void* image));//6FAA1140
A8(FAST, D2Client, D640, D630, DB50,73620,5E4E0,79670,147A0,B6890, 787B0, void, D2SendMsgToAll,(BYTE* data));//1.11 and 1.11b by ESI !!
//A7(STD, D2Client,00000,00000,15A80,00000,00000,00000,00000,00000, int, D2GetAvgChanceMonsterWillHitYou, ());//6FAB5A80
A8(STD, D2Client,00000,00000,15A80,00000,00000,00000,00000,00000, 00000, DWORD, D2GetLastMonsterIDFight, ());//6FAB5A80
A8(STD, D2Client,29800,297F0,2FD60,828A0,89320,6B280,BCEA0,BF640, A7D00, void, D2PrintStatsPage, ());
//A7(FAST, D2Client,00000,00000,45990,00000,00000,00000,00000,00000, Unit*, D245990, (Inventory*,DWORD idItem);//6FAE5990
A8(FAST, D2Client,4BB20,4BB20,521C0,B8CB0,21250,88EA0,54E10,2CE40, E4D80, DWORD, D2PrintStat,(Unit* ptItem, Stats* ptStats, DWORD statID, DWORD statIndex, DWORD statValue, LPWSTR lpText));//statID=EAX, lpText=ESI 1.11b
A8(FAST, D2Client,85A60,84DE0,80430,9EEB0,62070,8B7A0,BF5F0,18820, 521C0, LPWSTR, D2SetColorPopup, (LPWSTR popupText, DWORD color));//1.11 and 1.11b BY EDI
//A7(FAST, D2Client,00000,00000,869F0,00000,00000,00000,00000,00000, Unit*, D2ClientGetObject, (DWORD itemNum, DWORD type));//6FB269F0
A8(FAST, D2Client,B4360,B36E0,B5820,3ACC0,54210,31FA0,88A70,26270, B9A00, DWORD, D2PlaySound, (DWORD id, DWORD, DWORD, DWORD, DWORD));
//A7(FAST, D2Client,B9970,B8CF0,BB0F0,00000,00000,00000,00000,00000, void, D2FillRect,(DWORD x, DWORD y, DWORD Width, DWORD Height, DWORD color, DWORD transTbl));
A8(FAST, D2Client,00000,00000,00000,00000,571C0,18450,46150,790D0, 790D0, Unit*, D2GetCurrentNPC, ());
A8(FAST, D2Client,00000,00000,00000,73260,5DE40,791A0,143E0,B61F0, 78350, void, D2SendToServerXX,(DWORD size, BYTE * data));//by EBX
A8(FAST, D2Client,88940,87CC0,83260,A1F30,65690,8EF00,C2790,1C190, 55F20, void, D2TogglePage, (DWORD a, DWORD b, DWORD c));
A8(FAST, D2Client,00000,00000,00000,A6520,710C0,A6640,8CD00,90C10, 89980, void, D2ClickOnStashButton, (DWORD x, DWORD y));//BY x=ESI y=EDI
A8(STD, D2Client,897B0,88B30,84110,9E3B0,621C0,8B8F0,BEAF0,18AA0, 54600, void*, D2LoadBuySelBtn, ());
A8(FAST, D2Client,00000,00000,00000,8E480,5BA90,1CC00,4ABE0,7DC60, 7DC60, void, D2ReloadGambleScreen, ());
//A7(FAST, D2Client,00000,00000,00000,00000,1FEB0,5CDD0,00000,00000, void, D2OpenNPCMenu, (Unit* ptNPC));//by ESI
A8(FAST, D2Client, 1000, 1000, 1000,75D00,A9070,BEF70,2B420,A9480,788B0, void*, D2LoadImage, (const char* filename, DWORD filetype));
A8(FAST, D2Client, 1150, 1150, 1140,00000,00000,00000,00000,00000,78A00, void, D2FreeImage, (void* image));//6FAA1140
A8(FAST, D2Client, D640, D630, DB50,73620,5E4E0,79670,147A0,B6890,787B0, void, D2SendMsgToAll,(BYTE* data));//1.11 and 1.11b by ESI !!
//A8(STD, D2Client,00000,00000,15A80,00000,00000,00000,00000,00000,00000, int, D2GetAvgChanceMonsterWillHitYou, ());//6FAB5A80
A8(STD, D2Client,00000,00000,15A80,00000,00000,00000,00000,00000,00000, DWORD, D2GetLastMonsterIDFight, ());//6FAB5A80
A8(STD, D2Client,29800,297F0,2FD60,828A0,89320,6B280,BCEA0,BF640,A7D00, void, D2PrintStatsPage, ());
//A8(FAST, D2Client,00000,00000,45990,00000,00000,00000,00000,00000,00000, Unit*, D245990, (Inventory*,DWORD idItem);//6FAE5990
A8(FAST, D2Client,4BB20,4BB20,521C0,B8CB0,21250,88EA0,54E10,2CE40,E4D80, DWORD, D2PrintStat,(Unit* ptItem, Stats* ptStats, DWORD statID, DWORD statIndex, DWORD statValue, LPWSTR lpText));//statID=EAX, lpText=ESI 1.11b
A8(FAST, D2Client,85A60,84DE0,80430,9EEB0,62070,8B7A0,BF5F0,18820,521C0, LPWSTR, D2SetColorPopup, (LPWSTR popupText, DWORD color));//1.11 and 1.11b BY EDI
//A8(FAST, D2Client,00000,00000,869F0,00000,00000,00000,00000,00000,00000, Unit*, D2ClientGetObject, (DWORD itemNum, DWORD type));//6FB269F0
A8(FAST, D2Client,B4360,B36E0,B5820,3ACC0,54210,31FA0,88A70,26270,B9A00, DWORD, D2PlaySound, (DWORD id, DWORD, DWORD, DWORD, DWORD));
//A8(FAST, D2Client,B9970,B8CF0,BB0F0,00000,00000,00000,00000,00000,00000, void, D2FillRect,(DWORD x, DWORD y, DWORD Width, DWORD Height, DWORD color, DWORD transTbl));
//A8(FAST, D2Client,00000,00000,00000,00000,571C0,18450,46150,790D0,00000, Unit*, D2GetCurrentNPC, ());
A8(FAST, D2Client,00000,00000,00000,73260,5DE40,791A0,143E0,B61F0,78350, void, D2SendToServerXX,(DWORD size, BYTE * data));//by EBX
A8(FAST, D2Client,88940,87CC0,83260,A1F30,65690,8EF00,C2790,1C190,55F20, void, D2TogglePage, (DWORD a, DWORD b, DWORD c));
A8(FAST, D2Client,00000,00000,00000,A6520,710C0,A6640,8CD00,90C10,89980, void, D2ClickOnStashButton, (DWORD x, DWORD y));//BY x=ESI y=EDI
A8(STD, D2Client,897B0,88B30,84110,9E3B0,621C0,8B8F0,BEAF0,18AA0,54600, void*, D2LoadBuySelBtn, ());
//A8(FAST, D2Client,00000,00000,00000,8E480,5BA90,1CC00,4ABE0,7DC60,00000, void, D2ReloadGambleScreen, ());
//A8(FAST, D2Client,00000,00000,00000,00000,1FEB0,5CDD0,00000,00000,00000, void, D2OpenNPCMenu, (Unit* ptNPC));//by ESI
A8(FAST, D2Client,00000,00000,00000,00000,00000,00000,00000,00000,520C0, void*, D2LoadResImage, (const char* filename));
A8(FAST, D2Client,00000,00000,00000,00000,00000,00000,00000,00000,96990, void*, D2FreeResImages, ());
A8(FAST, D2Client,00000,00000,00000,00000,00000,00000,00000,00000,5C850, void*, D2ReceivePacket, (DWORD a , DWORD b));
A8(STD, D2Client,87220,865A0,81B70,A35F0,669F0,90150,C39E0,1D3E0,56EE0, DWORD, D2PrintInterface, (void* unknown));
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//D2Game : 6FC30000
@@ -351,7 +353,7 @@ A8(FAST, D2Client,00000,00000,00000,8E480,5BA90,1CC00,4ABE0,7DC60, 7DC60, void,
////E2F(D2Game,22C00, WORD, D2GetNewAffix, (Unit* ptItem, DWORD testIfSpawnable, DWORD mustSelectOne, DWORD addToItem, DWORD isPrefix, int affixID, WORD autoAffixGroupID));//6FC52C00
////E2F(D2Game,23610, WORD, D2GetRareAffixName, (Unit* ptItem, DWORD wantPrefix));//6FC53610
////E2F(D2Game,3AD10, DWORD, D2GetSuperUniqueMonsterID, (Game* ptGame, Unit* ptMonster));//6FC6AD10
//E2F(D2Game,EC7E0, DWORD, D2SpawnMonster, (Game* ptGame, Room* ptRoom, DWORD zero1, DWORD x, DWORD y, DWORD minusOne, DWORD superuniqueID, DWORD zero2));//1.11b (wrong param)
//E2F(D2Game,EC7E0, DWORD, D2SpawnSuperUnique, (Game* ptGame, Room* ptRoom, DWORD zero1, DWORD x, DWORD y, DWORD minusOne, DWORD superuniqueID, DWORD zero2));//1.11b (wrong param)
//E2S(D2Game,235C0, void, D2Game235C0, (Game* ptGame, Room* ptRoom));//1.11/1.11b
//E2F(D2Game,4C7B0, Unit*, D2GetSkillItem, (Unit* ptChar));//6FC7C7B0
////E2F(D2Game,5A500, DWORD, D2SavePlayer, (Game* ptGame, Unit* ptChar, char* playername, DWORD zero));//6FC8A500
@@ -362,53 +364,57 @@ A8(FAST, D2Client,00000,00000,00000,8E480,5BA90,1CC00,4ABE0,7DC60, 7DC60, void,
//E2F(D2Game,C09E0, Unit*, D2CreateUnit, (DWORD type, DWORD id, DWORD x, DWORD y, Game* ptGame, Room* ptRoom, DWORD uk1, DWORD uk2, DWORD uk3));//1.11b
//E2F(D2Game,34920, void, D2OpenPandPortal, (Game* ptGame, Unit* ptChar));//1.11b
//E2F(D2Game,34910, void, D2OpenPandFinalPortal, (Game* ptGame, Unit* ptChar));//1.11b
//E2F(D2Game,85AA0, void, D2MephIA, (Game* ptGame, Unit* ptMonster, DWORD*));//1.11b
//E2F(D2Game,D7BD0, void, D2DiabloIA, (Game* ptGame, Unit* ptMonster, DWORD*));//1.11b
//E2F(D2Game,2BC80, void, D2BaalIA, (Game* ptGame, Unit* ptMonster, DWORD*));//1.11b
//E2F(D2Game,D2D70, void, D2UberMephIA, (Game* ptGame, Unit* ptMonster, DWORD*));//1.11b
//E2F(D2Game,7FE60, void, D2UberDiabloIA, (Game* ptGame, Unit* ptMonster, DWORD*));//1.11b
//E2F(D2Game,2A300, void, D2UberBaalIA, (Game* ptGame, Unit* ptMonster, DWORD*));//1.11b
//E2F(D2Game,85AA0, void, D2MephAI, (Game* ptGame, Unit* ptMonster, DWORD*));//1.11b
//E2F(D2Game,D7BD0, void, D2DiabloAI, (Game* ptGame, Unit* ptMonster, DWORD*));//1.11b
//E2F(D2Game,2BC80, void, D2BaalAI, (Game* ptGame, Unit* ptMonster, DWORD*));//1.11b
//E2F(D2Game,D2D70, void, D2UberMephAI, (Game* ptGame, Unit* ptMonster, DWORD*));//1.11b
//E2F(D2Game,7FE60, void, D2UberDiabloAI, (Game* ptGame, Unit* ptMonster, DWORD*));//1.11b
//E2F(D2Game,2A300, void, D2UberBaalAI, (Game* ptGame, Unit* ptMonster, DWORD*));//1.11b
////E2F(D2Game,92420, void, D2ReloadGambleScreenGame, (Unit* ptNPC, Game* ptGame, Unit* ptChar, DWORD, DWORD one));//1.11b
//E2S(D2Game,E66D0, void, D2SaveGame, (Game* ptGame));//1.11b
F8(FAST, D2Game,10059,10059,10059,10039,10007,10037,10049,10002, 135780, void, D2SetNbPlayers, (DWORD nbPlayers));
//A7(FAST, D2Game,00000,00000,01DE0,00000,00000,00000,00000,00000, void*, D2GetClientByClientID, (Game* ptGame, DWORD clientID));//6FC31DE0
A8(FAST, D2Game,00000,00000, 6C60,E3DA0,E8210,EB060,49930,E5070, 12C550, void, D2AddClient, (DWORD clientID));//BY EAX
A8(STD, D2Game,00000,00000, 94E0,E0520,E49A0,A6360,2AAE0,BC700, /*12E860*/12FEE0, Game*, D2GetGameByClientID, (DWORD clientID));//6FC394E0
A8(FAST, D2Game,00000,00000, B0E0,DF250,E36D0,A5080,29820,BB510, 12DED0, void, D2BroadcastFunction, (Game* ptGame, void* fct, void* param));//00DAB0E0
A8(FAST, D2Game, C380, C650, C710,41420,A0D50,7D220,8A3E0,DB780, 13B280, DWORD, D2SendPacket, (void* ptNetClient, LPVOID pData, DWORD size));//EAX=ptNetClient [ESP]=pData
A8(FAST, D2Game, D650, D920, DB50,44D00,A3F20,802E0,8D5F0,DD4F0, 13C4A0, void, D2SetSkillBaseLevelOnClient, (void* ptClient, Unit* ptChar, DWORD skillID, DWORD sLvl, DWORD bRemove));//by EAX,ESI,EBX
//A7(FAST, D2Game,00000,00000,0E6F0,00000,00000,00000,00000,00000, void, D2UpdateClientItem, (NetClient* ptNetClient, Unit* ptChar, Unit* ptItem,DWORD,DWORD,DWORD));//6FC3E6F0
//A7(FAST, D2Game,00000,00000,10FB0,00000,00000,00000,00000,00000, DWORD, D2UpdateInventory, (Game* ptGame, Unit* ptChar, void* ptNetClient, Inventory* pInventory));//6FC40FB0
//A7(FAST, D2Game,00000,00000,110E0,00000,00000,00000,00000,00000, DWORD, D2UpdateItem, (Unit* ptChar, Unit* ptItem, Unit* ptSocketedItem, void* ptNetClient));//6FC410E0
A8(STD, D2Game,00000,00000,00000,27230,109F0,AE930,A22E0,15F40, 16CF40, DWORD, D2LinkPortal, (Game* ptGame, Unit* ptObject, DWORD levelEndID, DWORD levelStartID));
A8(FAST, D2Game,00000,00000,128F0,38D90,43E60,11FF0,D2070,B2F70, 15CA40, DWORD, D2VerifIfNotCarry1, (Unit* ptItem, ItemsBIN* itemsData, Unit* ptFirstItem));// BY EBX=itemsData EAX=ptFirstItem [ESP]=ptItem
//A7(FAST, D2Game,00000,00000,1ED80,00000,00000,00000,00000,00000, Unit*, D2CreateItem, (Game* ptGame, ItemGenerationData* itemGenerationData, DWORD));//6FC4ED80
A8(FAST, D2Game,00000,00000,22070, 1090, 1DF0, 11F0, 1280, 1340, 63740, Room*, D2TestPositionInRoom, (Room* ptRoom, DWORD x, DWORD y));
//A7(FAST, D2Game,00000,00000,22410,00000,00000,00000,00000,00000, void, D2AddStaffModAffixes, (Unit* ptItem, ItemGenerationData* itemParam));//6FC52410
//A7(FAST, D2Game,00000,00000,22C00,00000,00000,00000,00000,00000, WORD, D2GetNewAffix, (Unit* ptItem, DWORD testIfSpawnable, DWORD mustSelectOne, DWORD addToItem, DWORD isPrefix, int affixID, WORD autoAffixGroupID));//6FC52C00
//A7(FAST, D2Game,00000,00000,23610,00000,00000,00000,00000,00000, WORD, D2GetRareAffixName, (Unit* ptItem, DWORD wantPrefix));//6FC53610
//A7(FAST, D2Game,00000,00000,3AD10,00000,00000,00000,00000,00000, DWORD, D2GetSuperUniqueMonsterID, (Game* ptGame, Unit* ptMonster));//6FC6AD10
A8(FAST, D2Game,00000,00000,3F220,4ABE0,EC7E0,40B90,24950,CDE20, 1A09E0, DWORD, D2SpawnMonster, (Game* ptGame, Room* ptRoom, DWORD zero1, DWORD x, DWORD y, DWORD minusOne, DWORD superuniqueID, DWORD zero2));//wrong param
A8(STD, D2Game,00000,00000,00000,D6D10,235C0, D410,200E0,59980, 142B40, void, D2Game235C0, (Game* ptGame, Room* ptRoom));
//A7(FAST, D2Game,00000,00000,4C7B0,00000,00000,00000,00000,00000, Unit*, D2GetSkillItem, (Unit* ptChar));//6FC7C7B0
//A7(FAST, D2Game,00000,00000,5A500,00000,00000,00000,00000,00000, DWORD, D2SavePlayer, (Game* ptGame, Unit* ptChar, char* playername, DWORD zero));//6FC8A500
A8(FAST, D2Game,4F100,4F500,5B8A0,B9D70,25D50,44950,54810,3A4C0, 1335E0, DWORD, D2LoadInventory, (Game* ptGame, Unit* pChar, saveBitField* pdata, DWORD p2, DWORD maxSize, DWORD p4, DWORD *ptNbBytesRead));//6FC8B8A0
A8(FAST, D2Game,7BAE0,7BFD0,8BB00,97620,BEF80,93650,E03A0,6DC40, 152F60, Unit*, D2GameGetObject, (Game* ptGame, DWORD type, DWORD itemNum));//6FCBBB00
//A7(FAST, D2Game,00000,00000,9F320,501C0,F1C50,F1A50,F3220,00000, Unit*, D2GetOwnerMonster, (Unit* ptMonster));
//A7(FAST, D2Game,00000,00000,E08D0,00000,00000,00000,00000,00000, void, D2UpdateSkillDataAfterUnassignment, (Game* ptGame, Unit* ptChar, DWORD skillID));//6FD108D0
A8(FAST, D2Game,00000,00000,00000,99760,C09E0,94E70,E1D90,6FE10, 155230, Unit*, D2CreateUnit, (DWORD type, DWORD id, DWORD x, DWORD y, Game* ptGame, Room* ptRoom, DWORD uk1, DWORD uk2, DWORD uk3));
A8(FAST, D2Game,00000,00000,00000,9B480,34920,D1AA0,70180,941E0, 194270, void, D2OpenPandPortal, (Game* ptGame, Unit* ptChar));
A8(FAST, D2Game,00000,00000,00000,9B470,34910,D1A90,70170,941D0, 194280, void, D2OpenPandFinalPortal, (Game* ptGame, Unit* ptChar));
A8(FAST, D2Game,00000,00000,00000,84730,85AA0,DBE90,A9610,31920, 1E9170, void, D2MephIA, (Game* ptGame, Unit* ptMonster, DWORD*));
A8(FAST, D2Game,00000,00000,00000,75980,D7BD0,CD0F0,85B60,4EAD0, 1F78B0, void, D2DiabloIA, (Game* ptGame, Unit* ptMonster, DWORD*));
A8(FAST, D2Game,00000,00000,00000,EAB20,2BC80,B3B90,B8610,C8850, 1FCFE0, void, D2BaalIA, (Game* ptGame, Unit* ptMonster, DWORD*));
A8(FAST, D2Game,00000,00000,00000,70320,D2D70,C2A90,7B4E0,49480, 1F81C0, void, D2UberMephIA, (Game* ptGame, Unit* ptMonster, DWORD*));
A8(FAST, D2Game,00000,00000,00000,7F200,7FE60,D6250,A39D0,2C3F0, 1E9DF0, void, D2UberDiabloIA, (Game* ptGame, Unit* ptMonster, DWORD*));
A8(FAST, D2Game,00000,00000,00000,E92B0,2A300,B2210,B6C80,C6EC0, 1FD200, void, D2UberBaalIA, (Game* ptGame, Unit* ptMonster, DWORD*));
//A7(FAST, D2Game,00000,00000,00000,00000,92420,00000,00000,00000, void, D2ReloadGambleScreenGame, (Unit* ptNPC, Game* ptGame, Unit* ptChar, DWORD, DWORD one));
A8(STD, D2Game,00000,00000, 89C0,E2390,E66D0,A8090,2C830,BE660, 12CA10, void, D2SaveGame, (Game* ptGame) );
F8(FAST, D2Game,10059,10059,10059,10039,10007,10037,10049,10002,135780, void, D2SetNbPlayers, (DWORD nbPlayers));
//A8(FAST, D2Game,00000,00000,01DE0,00000,00000,00000,00000,00000,00000, void*, D2GetClientByClientID, (Game* ptGame, DWORD clientID));//6FC31DE0
A8(FAST, D2Game,00000,00000, 6C60,E3DA0,E8210,EB060,49930,E5070,12C550, void, D2AddClient, (DWORD clientID));//BY EAX
A8(STD, D2Game,00000,00000, 94E0,E0520,E49A0,A6360,2AAE0,BC700,12E860, Game*, D2GetGameByClientID, (DWORD clientID));//6FC394E0
A8(FAST, D2Game,00000,00000, B0E0,DF250,E36D0,A5080,29820,BB510,12DED0, void, D2BroadcastFunction, (Game* ptGame, void* fct, void* param));//00DAB0E0
A8(FAST, D2Game, C380, C650, C710,41420,A0D50,7D220,8A3E0,DB780,13B280, DWORD, D2SendPacket, (void* ptNetClient, LPVOID pData, DWORD size));//EAX=ptNetClient [ESP]=pData
A8(FAST, D2Game, D650, D920, DB50,44D00,A3F20,802E0,8D5F0,DD4F0,13C4A0, void, D2SetSkillBaseLevelOnClient, (void* ptClient, Unit* ptChar, DWORD skillID, DWORD sLvl, DWORD bRemove));//by EAX,ESI,EBX
//A8(FAST, D2Game,00000,00000,0E6F0,00000,00000,00000,00000,00000,00000, void, D2UpdateClientItem, (NetClient* ptNetClient, Unit* ptChar, Unit* ptItem,DWORD,DWORD,DWORD));//6FC3E6F0
//A8(FAST, D2Game,00000,00000,10FB0,00000,00000,00000,00000,00000,00000, DWORD, D2UpdateInventory, (Game* ptGame, Unit* ptChar, void* ptNetClient, Inventory* pInventory));//6FC40FB0
//A8(FAST, D2Game,00000,00000,110E0,00000,00000,00000,00000,00000,00000, DWORD, D2UpdateItem, (Unit* ptChar, Unit* ptItem, Unit* ptSocketedItem, void* ptNetClient));//6FC410E0
A8(STD, D2Game,00000,00000,00000,27230,109F0,AE930,A22E0,15F40,16CF40, DWORD, D2LinkPortal, (Game* ptGame, Unit* ptObject, DWORD levelEndID, DWORD levelStartID));
A8(FAST, D2Game,00000,00000,128F0,38D90,43E60,11FF0,D2070,B2F70,15CA40, DWORD, D2VerifIfNotCarry1, (Unit* ptItem, ItemsBIN* itemsData, Unit* ptFirstItem));// BY EBX=itemsData EAX=ptFirstItem [ESP]=ptItem
//A8(FAST, D2Game,00000,00000,1ED80,00000,00000,00000,00000,00000,00000, Unit*, D2CreateItem, (Game* ptGame, ItemGenerationData* itemGenerationData, DWORD));//6FC4ED80
A8(FAST, D2Game,00000,00000,22070, 1090, 1DF0, 11F0, 1280, 1340,63740, Room*, D2TestPositionInRoom, (Room* ptRoom, DWORD x, DWORD y));
//A8(FAST, D2Game,00000,00000,22410,00000,00000,00000,00000,00000,00000, void, D2AddStaffModAffixes, (Unit* ptItem, ItemGenerationData* itemParam));//6FC52410
//A8(FAST, D2Game,00000,00000,22C00,00000,00000,00000,00000,00000,00000, WORD, D2GetNewAffix, (Unit* ptItem, DWORD testIfSpawnable, DWORD mustSelectOne, DWORD addToItem, DWORD isPrefix, int affixID, WORD autoAffixGroupID));//6FC52C00
//A8(FAST, D2Game,00000,00000,23610,00000,00000,00000,00000,00000,00000, WORD, D2GetRareAffixName, (Unit* ptItem, DWORD wantPrefix));//6FC53610
//A8(FAST, D2Game,00000,00000,3AD10,00000,00000,00000,00000,00000,00000, DWORD, D2GetSuperUniqueMonsterID, (Game* ptGame, Unit* ptMonster));//6FC6AD10
A8(FAST, D2Game,00000,00000,3F220,4ABE0,EC7E0,40B90,24950,CDE20,1A09E0, DWORD, D2SpawnSuperUnique, (Game* ptGame, Room* ptRoom, DWORD zero1, DWORD x, DWORD y, DWORD minusOne, DWORD superuniqueID, DWORD zero2));//wrong param
A8(FAST, D2Game,00000,00000,00000,C80F0,EF870,EFB10,EF650,C8D70,1B2F20, Unit*, D2SpawnMonster, (DWORD id, DWORD mode, Game* ptGame, Room* ptRoom, DWORD x, DWORD y, DWORD one, DWORD zero));
A8(STD, D2Game,00000,00000,00000,D6D10,235C0, D410,200E0,59980,142B40, void, D2Game235C0, (Game* ptGame, Room* ptRoom));
//A8(FAST, D2Game,00000,00000,4C7B0,00000,00000,00000,00000,00000,00000, Unit*, D2GetSkillItem, (Unit* ptChar));//6FC7C7B0
//A8(FAST, D2Game,00000,00000,5A500,00000,00000,00000,00000,00000,00000, DWORD, D2SavePlayer, (Game* ptGame, Unit* ptChar, char* playername, DWORD zero));//6FC8A500
A8(FAST, D2Game,4F100,4F500,5B8A0,B9D70,25D50,44950,54810,3A4C0,1335E0, DWORD, D2LoadInventory, (Game* ptGame, Unit* pChar, saveBitField* pdata, DWORD p2, DWORD maxSize, DWORD p4, DWORD *ptNbBytesRead));//6FC8B8A0
A8(FAST, D2Game,7BAE0,7BFD0,8BB00,97620,BEF80,93650,E03A0,6DC40,152F60, Unit*, D2GameGetObject, (Game* ptGame, DWORD type, DWORD itemNum));//6FCBBB00
//A8(FAST, D2Game,00000,00000,9F320,501C0,F1C50,F1A50,F3220,00000,00000, Unit*, D2GetOwnerMonster, (Unit* ptMonster));
//A8(FAST, D2Game,00000,00000,E08D0,00000,00000,00000,00000,00000,00000, void, D2UpdateSkillDataAfterUnassignment, (Game* ptGame, Unit* ptChar, DWORD skillID));//6FD108D0
A8(FAST, D2Game,00000,00000,00000,99760,C09E0,94E70,E1D90,6FE10,155230, Unit*, D2CreateUnit, (DWORD type, DWORD id, DWORD x, DWORD y, Game* ptGame, Room* ptRoom, DWORD uk1, DWORD uk2, DWORD uk3));
A8(FAST, D2Game,00000,00000,00000,9B480,34920,D1AA0,70180,941E0,165A90, void, D2OpenPandPortal, (Game* ptGame, Unit* ptChar));
A8(FAST, D2Game,00000,00000,00000,9B470,34910,D1A90,70170,941D0,165AA0, void, D2OpenPandFinalPortal, (Game* ptGame, Unit* ptChar));
A8(FAST, D2Game,00000,00000,00000,75980,D7BD0,CD0F0,85B60,4EAD0,1F78B0, void, D2MephAI, (Game* ptGame, Unit* ptMonster, AIParam* args));
A8(FAST, D2Game,00000,00000,00000,84730,85AA0,DBE90,A9610,31920,1E9170, void, D2DiabloAI, (Game* ptGame, Unit* ptMonster, AIParam* args));
A8(FAST, D2Game,00000,00000,00000,EAB20,2BC80,B3B90,B8610,C8850,1FCFE0, void, D2BaalAI, (Game* ptGame, Unit* ptMonster, AIParam* args));
A8(FAST, D2Game,00000,00000,00000,E92B0,2A300,B2210,B6C80,C6EC0,1FD200, void, D2UberBaalAI, (Game* ptGame, Unit* ptMonster, AIParam* args));
A8(FAST, D2Game,00000,00000,00000,70320,D2D70,C2A90,7B4E0,49480,1F81C0, void, D2UberMephAI, (Game* ptGame, Unit* ptMonster, AIParam* args));
A8(FAST, D2Game,00000,00000,00000,7F200,7FE60,D6250,A39D0,2C3F0,1E9DF0, void, D2UberDiabloAI, (Game* ptGame, Unit* ptMonster, AIParam* args));
//A8(FAST, D2Game,00000,00000,00000,00000,92420,00000,00000,00000,179430, void, D2ReloadGambleScreenGame, (Unit* ptNPC, Game* ptGame, Unit* ptChar, DWORD, DWORD one));
A8(STD, D2Game,00000,00000, 89C0,E2390,E66D0,A8090,2C830,BE660,12CA10, void, D2SaveGame, (Game* ptGame) );
A8(FAST, D2Game,00000,00000,00000,EF580,F0F70,F0D70,F2540,F1800,1DEB60, void, D2MonsterMove, (Game* ptGame, Unit* ptMonster, Unit* target, DWORD two, DWORD x, DWORD y, DWORD one, DWORD zero) );
A8(FAST, D2Game,00000,00000,00000,FF1B0,F0DB0,F0BB0,F2380,F1430,1DEAD0, void, D2MonsterUseSkill, (Game* ptGame, Unit* ptMonster, DWORD arg, DWORD skill, Unit* target, DWORD x, DWORD y) );
A8(FAST, D2Game,00000,00000,00000,B9340,25450,44140,53F10,39810,132240, void, D2SaveSPChar, (Game* ptGame, Unit* ptChar, char* name, DWORD arg, DWORD secondPass) );
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -416,8 +422,8 @@ A8(STD, D2Game,00000,00000, 89C0,E2390,E66D0,A8090,2C830,BE660, 12CA10, void,
//D2S(D2Net,10020, DWORD, D2SendToServer, (DWORD size, DWORD one, void* data));//ONLY 1.11b
//D2S(D2Net,10018, DWORD, D2SendToClient, (DWORD zero, DWORD clientID, void* data, DWORD size));//ONLY 1.11b
F8(STD, D2Net, 10005,10005,10005,10035,10020,10036,10024,10015, 12AE50, DWORD, D2SendToServer, (DWORD size, DWORD one, void* data));//(DWORD zero, void* data, DWORD size) for 1.10 and before
F8(STD, D2Net, 10006,10006,10006,10018,10018,10015,10002,10012, 12B330, DWORD, D2SendToClient, (DWORD zero, DWORD clientID, void* data, DWORD size));
F8(STD, D2Net, 10005,10005,10005,10035,10020,10036,10024,10015,12AE50, DWORD, D2SendToServer, (DWORD size, DWORD one, void* data));//(DWORD zero, void* data, DWORD size) for 1.10 and before
F8(STD, D2Net, 10006,10006,10006,10018,10018,10015,10002,10012,12B330, DWORD, D2SendToClient, (DWORD zero, DWORD clientID, void* data, DWORD size));
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -442,25 +448,25 @@ F8(STD, D2Net, 10006,10006,10006,10018,10018,10015,10002,10012, 12B330, DWORD,
////D2S(Fog,10217, int, D2GetIDFromLookUpTable, (void* table, char* string, bool));//6FF53840
//D2S(Fog,10265, int, D2GetInstructionPointer, ());//ONLY 1.11/1.11b NOT 1.10
F8(STD, Fog, 10023,10023,10023,00000,00000,00000,00000,00000, 00000, void, D2FogAssertOld, (const char* ptMessage, DWORD eip, DWORD line));//(STDCALL until 1.10)
F8(FAST, Fog, 00000,00000,00000,10024,10024,10024,10024,10024, 8A60, void, D2FogAssert, (const char* ptMessage, DWORD eip, DWORD line));
F8(FAST, Fog, 10042,10042,10042,10042,10042,10042,10042,10042, B380, void*, D2FogMemAlloc, (DWORD dwMemSize, LPCSTR lpszErrFile, DWORD ErrLine, DWORD Zero));
F8(FAST, Fog, 10043,10043,10043,10043,10043,10043,10043,10043, B3C0, void*, D2FogMemDeAlloc, (void* ptMemLoc, LPCSTR lpszErrFile, DWORD ErrLine, DWORD Zero));
F8(FAST, Fog, 10045,10045,10045,10045,10045,10045,10045,10045, B430, void*, D2AllocMem, (DWORD,DWORD dwMemSize, LPCSTR lpszErrFile, DWORD ErrLine, DWORD Zero));
F8(FAST, Fog, 10046,10046,10046,10046,10046,10046,10046,10046, B480, void*, D2FreeMem, (DWORD,void* ptMemLoc, LPCSTR lpszErrFile, DWORD ErrLine, DWORD Zero));
F8(FAST, Fog, 10102,10102,10102,10102,10102,10102,10102,10102, 68E0, DWORD, D2MPQOpenFile, (char* ptPath, void** buf));
F8(FAST, Fog, 10103,10103,10103,10103,10103,10103,10103,10103, 68F0, DWORD, D2MPQCloseFile, (void* mpqfile));
F8(FAST, Fog, 10104,10104,10104,10104,10104,10104,10104,10104, 6900, DWORD, D2MPQReadFile, (void* mpqfile, BYTE* buffer, DWORD nbToRead, DWORD* nbRead,DWORD,DWORD,DWORD));
F8(FAST, Fog, 10105,10105,10105,10105,10105,10105,10105,10105, 6930, DWORD, D2MPQGetSizeFile, (void* mpqfile, DWORD* toReset));
F8(FAST, Fog, 10115,10115,10115,10115,10115,10115,10115,10115, 7050, void, D2FogGetSavePath, (char* ptPath, DWORD maxsize));
F8(FAST, Fog, 10116,10116,10116,10116,10116,10116,10116,10116, 6BA0, void, D2FogGetInstallPath, (char* ptPath, DWORD maxsize));
//F7(STD, Fog, 10126,10126,10126,10126,10126,10126,10126,10126, DWORD, D2InitBitField, (saveBitField* data, BYTE* buf, DWORD bufsize));//6FF536C0
//F7(STD, Fog, 10127,10127,10127,10127,10127,10127,10127,10127, DWORD, D2GetBitFieldSize, (saveBitField* data));//6FF536C0
//F7(STD, Fog, 10128,10128,10128,10128,10128,10128,10128,10128, void, D2EncodeValue, (saveBitField* data, DWORD value, DWORD bitSize));//6FF536C0
//F7(STD, Fog, 10130,10130,10130,10130,10130,10130,10130,10130, DWORD, D2DecodeValue, (saveBitField* data,DWORD readingSize));//6FF53840
F8(STD, Fog, 10212,10212,10212,10212,10212,10212,10212,10212, 2BD0B0, void, D2Fog10212, (DWORD unknown));
//F7(STD, Fog, 10217,10217,10217,10217,10217,10217,10217,10217, int, D2GetIDFromLookUpTable, (void* table, char* string, bool));//6FF53840
F8(STD, Fog, 00000,00000,00000,10265,10265,10265,10265,10265, 8090, int, D2GetInstructionPointer, ());
F8(STD, Fog, 10023,10023,10023,00000,00000,00000,00000,00000,00000, void, D2FogAssertOld, (const char* ptMessage, DWORD eip, DWORD line));//(STDCALL until 1.10)
F8(FAST, Fog, 00000,00000,00000,10024,10024,10024,10024,10024,8A60, void, D2FogAssert, (const char* ptMessage, DWORD eip, DWORD line));
F8(FAST, Fog, 10042,10042,10042,10042,10042,10042,10042,10042,B380, void*, D2FogMemAlloc, (DWORD dwMemSize, LPCSTR lpszErrFile, DWORD ErrLine, DWORD Zero));
F8(FAST, Fog, 10043,10043,10043,10043,10043,10043,10043,10043,B3C0, void*, D2FogMemDeAlloc, (void* ptMemLoc, LPCSTR lpszErrFile, DWORD ErrLine, DWORD Zero));
F8(FAST, Fog, 10045,10045,10045,10045,10045,10045,10045,10045,B430, void*, D2AllocMem, (DWORD,DWORD dwMemSize, LPCSTR lpszErrFile, DWORD ErrLine, DWORD Zero));
F8(FAST, Fog, 10046,10046,10046,10046,10046,10046,10046,10046,B480, void*, D2FreeMem, (DWORD,void* ptMemLoc, LPCSTR lpszErrFile, DWORD ErrLine, DWORD Zero));
F8(FAST, Fog, 10102,10102,10102,10102,10102,10102,10102,10102,68E0, DWORD, D2MPQOpenFile, (char* ptPath, void** buf));
F8(FAST, Fog, 10103,10103,10103,10103,10103,10103,10103,10103,68F0, DWORD, D2MPQCloseFile, (void* mpqfile));
F8(FAST, Fog, 10104,10104,10104,10104,10104,10104,10104,10104,6900, DWORD, D2MPQReadFile, (void* mpqfile, BYTE* buffer, DWORD nbToRead, DWORD* nbRead,DWORD,DWORD,DWORD));
F8(FAST, Fog, 10105,10105,10105,10105,10105,10105,10105,10105,6930, DWORD, D2MPQGetSizeFile, (void* mpqfile, DWORD* toReset));
F8(FAST, Fog, 10115,10115,10115,10115,10115,10115,10115,10115,7050, void, D2FogGetSavePath, (char* ptPath, DWORD maxsize));
F8(FAST, Fog, 10116,10116,10116,10116,10116,10116,10116,10116,6BA0, void, D2FogGetInstallPath, (char* ptPath, DWORD maxsize));
//F8(STD, Fog, 10126,10126,10126,10126,10126,10126,10126,10126,00000, DWORD, D2InitBitField, (saveBitField* data, BYTE* buf, DWORD bufsize));//6FF536C0
//F8(STD, Fog, 10127,10127,10127,10127,10127,10127,10127,10127,00000, DWORD, D2GetBitFieldSize, (saveBitField* data));//6FF536C0
//F8(STD, Fog, 10128,10128,10128,10128,10128,10128,10128,10128,00000, void, D2EncodeValue, (saveBitField* data, DWORD value, DWORD bitSize));//6FF536C0
//F8(STD, Fog, 10130,10130,10130,10130,10130,10130,10130,10130,00000, DWORD, D2DecodeValue, (saveBitField* data,DWORD readingSize));//6FF53840
F8(STD, Fog, 10212,10212,10212,10212,10212,10212,10212,10212,2BD0B0, void, D2Fog10212, (DWORD unknow));
//F8(STD, Fog, 10217,10217,10217,10217,10217,10217,10217,10217,00000, int, D2GetIDFromLookUpTable, (void* table, char* string, bool));//6FF53840
F8(STD, Fog, 00000,00000,00000,10265,10265,10265,10265,10265,8090, int, D2GetInstructionPointer, ());
//Fog10213 getIndexFromLookupTable (&table,code,bool)
@@ -479,19 +485,19 @@ F8(STD, Fog, 00000,00000,00000,10265,10265,10265,10265,10265, 8090, int, D2Get
////E2F(D2Lang,2CD0, DWORD, D2unicodenwidth, (char* ptChar, DWORD size));//6FC12CD0_unicodenwidth
////E2S(D2Lang,1670, DWORD, D2swprintf, (DWORD bufSize, LPWSTR buf, LPWSTR string, ...));//6FC11670_sprintf
//F7(FAST, D2Lang, 10003,10003,10003,00000,00000,00000,00000,10011, LPWSTR, D2GetStringFromString, (const char* ptString));//6FC13BC0
F8(FAST, D2Lang, 10003,10003,10003,10002,10004,10010,10011,10011, 124E20, LPWSTR, D2GetStringFromString, (const char* ptString));//6FC13BC0 LAutour
F8(FAST, D2Lang, 10004,10004,10004,10005,10000,10005,10003,10004, 124A30, LPWSTR, D2GetStringFromIndex, (WORD dwIndexNum));
//F7(STD, D2Lang, 10006,10006,10006,00000,00000,00000,00000,00000, void, D2GetStringLang, (LPSTR ptLang, DWORD Zero));//6FC13FB0
F8(STD, D2Lang, 10007,10007,10007,10009,10013,10002,10009,10001, 125150, DWORD, D2GetLang, ());//14b 00522A20
F8(STD, D2Lang, 10010,10010,10010,00000,00000,00000,00000,00000, 00000, DWORD, D2PrintBigNumber, (LPWSTR ptBuf , DWORD number, DWORD size));//6FC14210
//F7(STD, D2Lang, 10013,10013,10013,00000,00000,00000,00000,10005, DWORD, D2GetStringAndIndexFromString, (const char* ptString , LPWSTR result));//6FC13960
//A7(FAST, D2Lang, 00000,00000,029B0,00000,00000,00000,00000,00000, DWORD, D2UnicodeWidth, (DWORD MemLoc, WORD Size));//6FC129B0
//A7(FAST, D2Lang, 00000,00000,02E60,00000,00000,00000,00000,00000, LPWSTR, D2GetStrFromIndex , (void* ptFile, void* ptMemLoc, DWORD dwIndexNum));//6FC12E60
//A7(FAST, D2Lang, 00000,00000,03640,00000,00000,00000,00000,00000, TblHeader*, D2LoadTblFile, (LPCSTR lpszFileName));//6FC13640
//A7(FAST, D2Lang, 00000,00000,03A90,00000,00000,00000,00000,00000, WORD, D2GetStrAndIndexFromString, (void* ptFile, void* ptMemLoc, LPSTR String, LPWSTR RetString));//6FC13A90
//A7(FAST, D2Lang, 00000,00000,02CD0,00000,00000,00000,00000,00000, DWORD, D2unicodenwidth, (char* ptChar, DWORD size));//6FC12CD0_unicodenwidth
//A7(STD, D2Lang, 00000,00000,01670,00000,00000,00000,00000,00000, DWORD, D2swprintf, (DWORD bufSize, LPWSTR buf, LPWSTR string, ...));//6FC11670_sprintf
//F8(FAST, D2Lang, 10003,10003,10003,00000,00000,00000,00000,10011,00000, LPWSTR, D2GetStringFromString, (const char* ptString));//6FC13BC0
F8(FAST, D2Lang, 10003,10003,10003,10002,10004,10010,10011,10011,124E20, LPWSTR, D2GetStringFromString, (const char* ptString));//6FC13BC0 LAutour
F8(FAST, D2Lang, 10004,10004,10004,10005,10000,10005,10003,10004,124A30, LPWSTR, D2GetStringFromIndex, (WORD dwIndexNum));
//F8(STD, D2Lang, 10006,10006,10006,00000,00000,00000,00000,00000,00000, void, D2GetStringLang, (LPSTR ptLang, DWORD Zero));//6FC13FB0
F8(STD, D2Lang, 10007,10007,10007,10009,10013,10002,10009,10001,125150, DWORD, D2GetLang, ());//14b 00522A20
F8(STD, D2Lang, 10010,10010,10010,00000,00000,00000,00000,00000,00000, DWORD, D2PrintBigNumber, (LPWSTR ptBuf , DWORD number, DWORD size));//6FC14210
//F8(STD, D2Lang, 10013,10013,10013,00000,00000,00000,00000,10005,00000, DWORD, D2GetStringAndIndexFromString, (const char* ptString , LPWSTR result));//6FC13960
//A8(FAST, D2Lang, 00000,00000,029B0,00000,00000,00000,00000,00000,00000, DWORD, D2UnicodeWidth, (DWORD MemLoc, WORD Size));//6FC129B0
//A8(FAST, D2Lang, 00000,00000,02E60,00000,00000,00000,00000,00000,00000, LPWSTR, D2GetStrFromIndex , (void* ptFile, void* ptMemLoc, DWORD dwIndexNum));//6FC12E60
//A8(FAST, D2Lang, 00000,00000,03640,00000,00000,00000,00000,00000,00000, TblHeader*, D2LoadTblFile, (LPCSTR lpszFileName));//6FC13640
//A8(FAST, D2Lang, 00000,00000,03A90,00000,00000,00000,00000,00000,00000, WORD, D2GetStrAndIndexFromString, (void* ptFile, void* ptMemLoc, LPSTR String, LPWSTR RetString));//6FC13A90
//A8(FAST, D2Lang, 00000,00000,02CD0,00000,00000,00000,00000,00000,00000, DWORD, D2unicodenwidth, (char* ptChar, DWORD size));//6FC12CD0_unicodenwidth
//A8(STD, D2Lang, 00000,00000,01670,00000,00000,00000,00000,00000,00000, DWORD, D2swprintf, (DWORD bufSize, LPWSTR buf, LPWSTR string, ...));//6FC11670_sprintf
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Storm : 6FFB0000
@@ -500,10 +506,10 @@ F8(STD, D2Lang, 10010,10010,10010,00000,00000,00000,00000,00000, 00000, DWORD,
//D2S(Storm,503, void, D2Storm503, (DWORD, DWORD, DWORD)); //+1.11
//D2S(Storm,511, void, D2FreeWinMessage, (sWinMessage* msg));//1.11/1.11b
//F7(STD, Storm, 253, 253, 253, 253, 253, 253, 000, 000, void, D2StormMPQCloseFile, (void* mpqfile));
F8(STD, Storm, 268, 268, 268, 268, 268, 268, 268, 268, 192F0, DWORD, D2StormMPQOpenFile, (DWORD zero, LPCSTR fileName, DWORD dwSearchScope, void** buffer))
F8(STD, Storm, 503, 503, 503, 503, 503, 503, 503, 503, 13750, void, D2Storm503, (DWORD, DWORD, DWORD));
F8(STD, Storm, 511, 511, 511, 511, 511, 511, 511, 511, 20290, void, D2FreeWinMessage, (sWinMessage* msg));
//F8(STD, Storm, 253, 253, 253, 253, 253, 253, 000, 000,00000, void, D2StormMPQCloseFile, (void* mpqfile));
F8(STD, Storm, 268, 268, 268, 268, 268, 268, 268, 268, 192F0, DWORD, D2StormMPQOpenFile, (DWORD zero, LPCSTR fileName, DWORD dwSearchScope, void** buffer))
F8(STD, Storm, 503, 503, 503, 503, 503, 503, 503, 503, 13750, void, D2Storm503, (DWORD, DWORD, DWORD));
F8(STD, Storm, 511, 511, 511, 511, 511, 511, 511, 511, 20290, void, D2FreeWinMessage, (sWinMessage* msg));
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -515,12 +521,12 @@ F8(STD, Storm, 511, 511, 511, 511, 511, 511, 511, 511, 20290, void, D
//D2S(D2gfx,10000, void, D2FillArea,(DWORD x1, DWORD y1, DWORD x2, DWORD y2, DWORD color, DWORD transTbl));//ONLY 1.11b
//D2S(D2gfx,10044, void, D2PrintImage,(sDrawImageInfo* data, DWORD x, DWORD y, DWORD p4, DWORD p5, DWORD p6) );//ONLY 1.11b
F8(STD, D2gfx, 10005,10005,10005,10000,10063,10043,10031,10012, F5160, DWORD, D2GetResolution,() );
//F7,STD, D2gfx, 10023,10023,10023,00000,00000,00000,00000,00000, DWORD, D2CreateMainWindow,(DWORD,DWORD) );
//F7(STD, D2gfx, 10026,10026,10026,00000,00000,00000,00000,00000, DWORD, D2ShowWindow,() );
//F7,STD, D2gfx, 10027,10027,10027,00000,00000,00000,00000,00000, HWND, D2GetWindowHandle,() );//6FA749C0
F8(STD, D2gfx, 10055,10055,10055,10028,10000,10062,10014,10028, F6300, void, D2FillArea,(DWORD x1, DWORD y1, DWORD x2, DWORD y2, DWORD color, DWORD transTbl));
F8(STD, D2gfx, 10072,10072,10072,10047,10044,10024,10041,10042, F6480, void, D2PrintImage,(sDrawImageInfo* data, DWORD x, DWORD y, DWORD p4, DWORD p5, DWORD p6) );
F8(STD, D2gfx, 10005,10005,10005,10000,10063,10043,10031,10012,F5160, DWORD, D2GetResolution,() );
//F8,STD, D2gfx, 10023,10023,10023,00000,00000,00000,00000,00000,00000, DWORD, D2CreateMainWindow,(DWORD,DWORD) );
//F8(STD, D2gfx, 10026,10026,10026,00000,00000,00000,00000,00000,00000, DWORD, D2ShowWindow,() );
//F8,STD, D2gfx, 10027,10027,10027,00000,00000,00000,00000,00000,00000, HWND, D2GetWindowHandle,() );//6FA749C0
F8(STD, D2gfx, 10055,10055,10055,10028,10000,10062,10014,10028,F6300, void, D2FillArea,(DWORD x1, DWORD y1, DWORD x2, DWORD y2, DWORD color, DWORD transTbl));
F8(STD, D2gfx, 10072,10072,10072,10047,10044,10024,10041,10042,F6480, void, D2PrintImage,(sDrawImageInfo* data, DWORD x, DWORD y, DWORD p4, DWORD p5, DWORD p6) );
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -534,36 +540,36 @@ F8(STD, D2gfx, 10072,10072,10072,10047,10044,10024,10041,10042, F6480, void, D
//D2F(D2Win,10132, DWORD, D2PrintTextPopup,(LPWSTR s, DWORD x, DWORD y, DWORD uk, DWORD type, DWORD color) );//6F8AB080
//D2S(D2Win,10113, void*, D2CreateTextBox,(DWORD* data) );//ONLY 1.11b
F8(FAST, D2Win, 10046,10046,10046,10061,10075,10015,10022,10051, FCFF0, void, D2PrintLineOnTextBox,(void* screen, char* s, DWORD color) );
F8(FAST, D2Win, 10117,10117,10117,10020,10064,10001,10150,10076, 102320, void, D2PrintString,(LPWSTR s, DWORD x, DWORD y, DWORD color, DWORD bfalse) );
F8(FAST, D2Win, 10121,10121,10121,10034,10128,10132,10028,10150, 101820, DWORD, D2GetPixelLen,(LPWSTR s) );
F8(FAST, D2Win, 10127,10127,10127,10141,10170,10010,10184,10047, 102EF0, DWORD, D2SetFont,(DWORD fontID) );
F8(FAST, D2Win, 10129,10129,10129,10118,10039,10031,10085,10137, 102280, void, D2PrintPopup,(LPWSTR s, DWORD x, DWORD y, DWORD color, DWORD center) );
F8(FAST, D2Win, 10131,10131,10131,00000,00000,00000,00000,00000, 00000, void, D2GetPixelRect,(LPWSTR s, DWORD* x, DWORD* y) );//6F8AB260
F8(FAST, D2Win, 10132,10132,10132,00000,00000,00000,00000,00000, 00000, DWORD, D2PrintTextPopup,(LPWSTR s, DWORD x, DWORD y, DWORD uk, DWORD type, DWORD color) );//6F8AB080
F8(STD, D2Win, 10017,10017,10017,10147,10113,10098,10098,10164, F93C0, void*, D2CreateTextBox,(DWORD* data) );
F8(FAST, D2Win, 10046,10046,10046,10061,10075,10015,10022,10051,FCFF0, void, D2PrintLineOnTextBox,(void* screen, char* s, DWORD color) );
F8(FAST, D2Win, 10117,10117,10117,10020,10064,10001,10150,10076,102320, void, D2PrintString,(LPWSTR s, DWORD x, DWORD y, DWORD color, DWORD bfalse) );
F8(FAST, D2Win, 10121,10121,10121,10034,10128,10132,10028,10150,101820, DWORD, D2GetPixelLen,(LPWSTR s) );
F8(FAST, D2Win, 10127,10127,10127,10141,10170,10010,10184,10047,102EF0, DWORD, D2SetFont,(DWORD fontID) );
F8(FAST, D2Win, 10129,10129,10129,10118,10039,10031,10085,10137,102280, void, D2PrintPopup,(LPWSTR s, DWORD x, DWORD y, DWORD color, DWORD center) );
F8(FAST, D2Win, 10131,10131,10131,00000,00000,00000,00000,00000,00000, void, D2GetPixelRect,(LPWSTR s, DWORD* x, DWORD* y) );//6F8AB260
F8(FAST, D2Win, 10132,10132,10132,00000,00000,00000,00000,00000,00000, DWORD, D2PrintTextPopup,(LPWSTR s, DWORD x, DWORD y, DWORD uk, DWORD type, DWORD color) );//6F8AB080
F8(STD, D2Win, 10017,10017,10017,10147,10113,10098,10098,10164,F93C0, void*, D2CreateTextBox,(DWORD* data) );
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//D2CMP : ????0000
//D2S(D2CMP,10014, DWORD, D2CMP10014, (void* image) );//ONLY 1.11
F8(STD, D2CMP, 10032,10032,10032,10021,10014,10106,10065,10020, 201A50, DWORD, D2CMP10014, (void* image) );
F8(STD, D2CMP, 10032,10032,10032,10021,10014,10106,10065,10020,201A50, DWORD, D2CMP10014, (void* image) );
//ONLY UNTIL 1.10 :
A8(FAST, D2Client, BA00, B9F0, C080,00000,00000,00000,00000,00000, 00000, DWORD, D2isLODGame, ());//6FAAC080
A8(FAST, D2Client, 00000,00000, C090,00000,00000,00000,00000,00000, 00000, BYTE, D2GetDifficultyLevel, ());//6FAAC090 1.09 should be BA10 (b) BA00 (d)
A8(STD, D2Client, B6670,B59F0,B7BC0,00000,00000,00000,00000,00000, 00000, DWORD, D2GetMouseX, ());//6FB57BC0
A8(STD, D2Client, B6680,B5A00,B7BD0,00000,00000,00000,00000,00000, 00000, DWORD, D2GetMouseY, ());//6FB57BD0
A8(STD, D2Client, 8DC40,8CFC0,883D0,00000,00000,00000,00000,00000, 00000, Unit*, D2GetClientPlayer, ());//6FB283D0
A8(FAST, D2Client, B920, B910, BF60,00000,00000,00000,00000,00000, 00000, void, D2CleanStatMouseUp, ());//6FAABF60
A8(FAST, D2Client, D210, D200, D990,00000,00000,00000,00000,00000, 00000, void, D2SendToServer3, (BYTE type, WORD p));//6FAAD990
//A7(FAST, D2Client, 00000,00000, DA20,00000,00000,00000,00000,00000, void, D2SendToServer5, (BYTE type, DWORD p));//6FAADA20
//A7(FAST, D2Client, 00000,00000, D9E0,00000,00000,00000,00000,00000, void, D2SendToServer7, (BYTE type, WORD p1, WORD p2, WORD p3));//6FAAD9E0
//A7(FAST, D2Client, 00000,00000, DA40,00000,00000,00000,00000,00000, void, D2SendToServer9, (BYTE type, DWORD p1, DWORD p2));//6FAADA40
//A7(FAST, D2Client, 00000,00000, DA70,00000,00000,00000,00000,00000, void, D2SendToServer13,(BYTE type, DWORD p1, DWORD p2, DWORD p3));//6FAADA70
A8(FAST, D2Game, 7C2C0,7C7B0,8C2E0,00000,00000,00000,00000,00000, 00000, NetClient*, D2GetClient, (Unit* ptUnit, char* lpszErrFile, DWORD ErrLine));//6FCBC2E0
A8(FAST, D2Client, BA00, B9F0, C080,00000,00000,00000,00000,00000,00000, DWORD, D2isLODGame, ());//6FAAC080
A8(FAST, D2Client, 00000,00000, C090,00000,00000,00000,00000,00000,00000, BYTE, D2GetDifficultyLevel, ());//6FAAC090 1.09 should be BA10 (b) BA00 (d)
A8(STD, D2Client, B6670,B59F0,B7BC0,00000,00000,00000,00000,00000,00000, DWORD, D2GetMouseX, ());//6FB57BC0
A8(STD, D2Client, B6680,B5A00,B7BD0,00000,00000,00000,00000,00000,00000, DWORD, D2GetMouseY, ());//6FB57BD0
A8(STD, D2Client, 8DC40,8CFC0,883D0,00000,00000,00000,00000,00000,63DD0, Unit*, D2GetClientPlayer, ());//6FB283D0
A8(FAST, D2Client, B920, B910, BF60,00000,00000,00000,00000,00000,4DA70, void, D2CleanStatMouseUp, ());//6FAABF60
A8(FAST, D2Client, D210, D200, D990,00000,00000,00000,00000,00000,00000, void, D2SendToServer3, (BYTE type, WORD p));//6FAAD990
//A8(FAST, D2Client, 00000,00000, DA20,00000,00000,00000,00000,00000,00000, void, D2SendToServer5, (BYTE type, DWORD p));//6FAADA20
//A8(FAST, D2Client, 00000,00000, D9E0,00000,00000,00000,00000,00000,00000, void, D2SendToServer7, (BYTE type, WORD p1, WORD p2, WORD p3));//6FAAD9E0
//A8(FAST, D2Client, 00000,00000, DA40,00000,00000,00000,00000,00000,00000, void, D2SendToServer9, (BYTE type, DWORD p1, DWORD p2));//6FAADA40
//A8(FAST, D2Client, 00000,00000, DA70,00000,00000,00000,00000,00000,00000, void, D2SendToServer13,(BYTE type, DWORD p1, DWORD p2, DWORD p3));//6FAADA70
A8(FAST, D2Game, 7C2C0,7C7B0,8C2E0,00000,00000,00000,00000,00000,1531C0, NetClient*, D2GetClient, (Unit* ptUnit, char* lpszErrFile, DWORD ErrLine));//6FCBC2E0
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////// VARIABLES ////////
@@ -584,24 +590,25 @@ A8(FAST, D2Game, 7C2C0,7C7B0,8C2E0,00000,00000,00000,00000,00000, 00000, NetClie
//E2C(D2Client,11B418,DWORD, MouseX);//0x320 = 800 //1.11b
//E2C(D2Client,11C1E0,Unit*, ptClientChar);//1.11b
//C7(D2Common,000000,000000, 96A20, 9B74C, 9EE8C, 9B500, 99E1C, DataTables*,SgptDataTables); //03836A20 - 037A0000 //01EE6A20
C8(D2Client, D50E8, D40E0, D40F0, F5C60, F4FC8, DC6E4, DBC4C, F7038, 311470, DWORD, ResolutionY);//0x258 = 600
C8(D2Client, D50EC, D40E4, D40F4, F5C5C, F4FC4, DC6E0, DBC48, F7034, 31146C, DWORD, ResolutionX);//0x320 = 800
C8(D2Client,125AD8,124958,11A74C,11BD28,11BEFC,11BD2C,11B9A4,11D358, 3A285C, DWORD, NegWindowStartY);//0xFFFFFFC4 = -60
C8(D2Client,125AD4,124954,11A748,11BD24,11BEF8,11BD28,11B9A0,11D354, 3A2858, DWORD, WindowStartX);//0x50 = 80
//C7(D2Launch, 55818, 56088, 2CD5C,000000, 2CD5C,000000,000000,00000, DWORD, GameTypeMode);//0x50 = 80 //6FA3CD5C-6FA10000
C8(D2Game, F2A80, F2918,113FB8,111718,1115E0,1105E0,1107B8,1105E0, 4842A8, NetClient*, ClientTable);
//C7(D2Client,000000,000000,000000,000000,104225,000000,000000,00000, DWORD, CurrentNPCNum);
C8(D2Client,000000,000000,000000, FB3F4,11A2F4,10330C,119854,1087B4, 3A04F4, DWORD, IsLodGame);
C8(D2Client,000000,000000,10795C,11BFB8,11C2A8,11BFF4,000000,000000, 000000, BYTE, DifficultyLevel);
//C7(D2Client,000000,000000,10795C,11BFB8,11C2A8,11BFF4,000000,11D1D8, BYTE, DifficultyLevel);
C8(D2Client,000000,000000,000000,10A40C,11B414,101634,11B824,11C94C, 3A6AAC, DWORD, MouseY);//0x258 = 600
C8(D2Client,000000,000000,000000,10A410,11B418,101638,11B828,11C950, 3A6AB0, DWORD, MouseX);//0x320 = 800
C8(D2Client,000000,000000,000000,11C4F0,11C1E0,11C3D0,11BBFC,11D050, 3A6A70, Unit*, ptClientChar);
//C8(D2Common,000000,000000, 96A20, 9B74C, 9EE8C, 9B500, 99E1C,000000,000000, DataTables*,SgptDataTables); //03836A20 - 037A0000 //01EE6A20
C8(D2Client, D50E8, D40E0, D40F0, F5C60, F4FC8, DC6E4, DBC4C, F7038,311470, DWORD, ResolutionY);//0x258 = 600
C8(D2Client, D50EC, D40E4, D40F4, F5C5C, F4FC4, DC6E0, DBC48, F7034,31146C, DWORD, ResolutionX);//0x320 = 800
C8(D2Client,125AD8,124958,11A74C,11BD28,11BEFC,11BD2C,11B9A4,11D358,3A285C, DWORD, NegWindowStartY);//0xFFFFFFC4 = -60
C8(D2Client,125AD4,124954,11A748,11BD24,11BEF8,11BD28,11B9A0,11D354,3A2858, DWORD, WindowStartX);//0x50 = 80
//C8(D2Launch, 55818, 56088, 2CD5C,000000, 2CD5C,000000,000000,00000,000000, DWORD, GameTypeMode);//0x50 = 80 //6FA3CD5C-6FA10000
C8(D2Game, F2A80, F2918,113FB8,111718,1115E0,1105E0,1107B8,1105E0,4842A8, NetClient*, ClientTable);
//C8(D2Client,000000,000000,000000,000000,104225,000000,000000,00000,000000, DWORD, CurrentNPCNum);
C8(D2Client,000000,000000,000000, FB3F4,11A2F4,10330C,119854,1087B4,3A04F4, DWORD, IsLodGame);
C8(D2Client,000000,000000,10795C,11BFB8,11C2A8,11BFF4,000000,000000,000000, BYTE, DifficultyLevel);
//C8(D2Client,000000,000000,10795C,11BFB8,11C2A8,11BFF4,000000,11D1D8,000000, BYTE, DifficultyLevel);
C8(D2Client,000000,000000,000000,10A40C,11B414,101634,11B824,11C94C,3A6AAC, DWORD, MouseY);//0x258 = 600
C8(D2Client,000000,000000,000000,10A410,11B418,101638,11B828,11C950,3A6AB0, DWORD, MouseX);//0x320 = 800
C8(D2Client,000000,000000,000000,11C4F0,11C1E0,11C3D0,11BBFC,11D050,3A6A70, Unit*, ptClientChar);
C8(D2Client,11E0F4,11CF54,112D04,11B9A8,11BB30,11BF48,11C028,11CAA4,3BB5E8, DWORD, InputCommandLen);
C8(D2Client,11CE50,11BCB0,111A58,11C590,11D590,11FC40,11EC80,11D650,3BB638, WCHAR, InputCommand);
C8(D2Client, DB918, DA828,000000,000000,000000,000000,000000,000000, 000000, DWORD, NbStatDesc);
C8(D2Client, DAF98, D9EA8,000000,000000,000000,000000,000000,000000, 000000, DWORD, StatDescTable);
C8(D2Client, DB918, DA828,000000,000000,000000,000000,000000,000000,000000, DWORD, NbStatDesc);
C8(D2Client, DAF98, D9EA8,000000,000000,000000,000000,000000,000000,000000, DWORD, StatDescTable);
/* NEXT NOT TESTED IN 1.10 (1.09b fct)
D2_STD(D2Common10066, void, D2RemoveFromRoom, (DrlgRoom1* hRoom, DWORD untitype, DWORD unitID), 0x6FD7CFD0);
@@ -659,69 +666,69 @@ D2_FST(D2Client6FB30470,void, D2ClientUpdatePlayer, (Unit* ptChar, DWORD nUnitT
Storm 1.09:
251 SFileAuthenticateArchive
252 SFileCloseArchive
253 SFileCloseFile
254 SFileDdaBegin
255 SFileDdaBeginEx
256 SFileDdaDestroy
257 SFileDdaEnd
258 SFileDdaGetPos
259 SFileDdaGetVolume
260 SFileDdaInitialize
261 SFileDdaSetVolume
262 SFileDestroy
263 SFileEnableDirectAccess
264 SFileGetFileArchive
265 SFileGetFileSize
266 SFileOpenArchive
267 SFileOpenFile
268 SFileOpenFileEx
269 SFileReadFile
270 SFileSetBasePath
271 SFileSetFilePointer
272 SFileSetLocale
273 SFileGetBasePath
274 SFileSetIoErrorMode
275 SFileGetArchiveName
276 SFileGetFileName
277 SFileGetArchiveInfo
278 SFileSetPlatform
279 SFileLoadFile
280 SFileUnloadFile
281 SFileLoadFileEx
282 SFilePrioritizeRequest
283 SFile_CancelRequest
284 SFileSetAsyncBudget
285 SFileSetDataChunkSize
286 SFileEnableSeekOptimization
287 SFileReadFileEx
288 SFile_CancelRequestEx
289 SFileReadFileEx2
290 SFileLoadFileEx2
251 SFileAuthenticateArchive
252 SFileCloseArchive
253 SFileCloseFile
254 SFileDdaBegin
255 SFileDdaBeginEx
256 SFileDdaDestroy
257 SFileDdaEnd
258 SFileDdaGetPos
259 SFileDdaGetVolume
260 SFileDdaInitialize
261 SFileDdaSetVolume
262 SFileDestroy
263 SFileEnableDirectAccess
264 SFileGetFileArchive
265 SFileGetFileSize
266 SFileOpenArchive
267 SFileOpenFile
268 SFileOpenFileEx
269 SFileReadFile
270 SFileSetBasePath
271 SFileSetFilePointer
272 SFileSetLocale
273 SFileGetBasePath
274 SFileSetIoErrorMode
275 SFileGetArchiveName
276 SFileGetFileName
277 SFileGetArchiveInfo
278 SFileSetPlatform
279 SFileLoadFile
280 SFileUnloadFile
281 SFileLoadFileEx
282 SFilePrioritizeRequest
283 SFile_CancelRequest
284 SFileSetAsyncBudget
285 SFileSetDataChunkSize
286 SFileEnableSeekOptimization
287 SFileReadFileEx
288 SFile_CancelRequestEx
289 SFileReadFileEx2
290 SFileLoadFileEx2
Storm1.08
401 SMemAlloc
403 SMemFree
404 SMemGetSize
405 SMemReAlloc
481 SMemFindNextBlock
482 SMemFindNextHeap
483 SMemGetHeapByCaller
484 SMemGetHeapByPtr
485 SMemHeapAlloc
486 SMemHeapCreate
487 SMemHeapDestroy
488 SMemHeapFree
489 SMemHeapReAlloc
490 SMemHeapSize
491 SMemCopy
492 SMemFill
493 SMemMove
494 SMemZero
495 SMemCmp
496 SMemSetDebugFlags
497 SMemDumpState
401 SMemAlloc
403 SMemFree
404 SMemGetSize
405 SMemReAlloc
481 SMemFindNextBlock
482 SMemFindNextHeap
483 SMemGetHeapByCaller
484 SMemGetHeapByPtr
485 SMemHeapAlloc
486 SMemHeapCreate
487 SMemHeapDestroy
488 SMemHeapFree
489 SMemHeapReAlloc
490 SMemHeapSize
491 SMemCopy
492 SMemFill
493 SMemMove
494 SMemZero
495 SMemCmp
496 SMemSetDebugFlags
497 SMemDumpState
*/
//Kingpin: D2Common #10027 is used to get dest unit (used for get type5 object in next room)
//D2Common10247, (ptInventory, ptItem, x,y,0xC,void*,void*,BYTE page) verif if items can be put in inventory
@@ -741,9 +748,9 @@ Storm1.08
/*
Kingpin: d2common #11270
Kingpin: Check MonType.txt line to see if it match (returns a boolan)
Kingpin: arg1 = unknown
arg2 = damage_vs_montype (stat from intestatscost.txt)
arg3 = ptUnit
Kingpin: arg1 = unknown
arg2 = damage_vs_montype (stat from intestatscost.txt)
arg3 = ptUnit
arg4 = 80 (maxline maybe, but is only guessing)
//d2game.6FD1D660 reverse player name :P
@@ -763,42 +770,42 @@ Kingpin: D2Client.6FB18770 returns a boolean if you have enough mana for skill
Kingpin: D2Client.6FB18AC0 sets it to selectable or not
D2Common #10480 Return ptState arg1 = ptUnit, arg2 = state_id
D2Common #10479 Get State_ID from ptState+14
D2Common #11265 Get Skill_ID from ptState+1C Arg1 = ptState
D2Common #11265 Get Skill_ID from ptState+1C Arg1 = ptState
Kingpin: D2Common #10497 Get Duration of State
Kingpin: D2Common #10497 Get Duration of State
Kingpin: arg1 = state_id
D2Client.6FB5B0F0
Function: Draw Filled Rectangle
D2Client.6FB5B0F0
Function: Draw Filled Rectangle
void FASTCALL D2ClientFillRect(int x, int y, int Width, int Height, ULONG ulColor, ULONG transTbl);
D2_FST(D2Client6FB5B0F0,void, D2ClientFillRect,(int x, int y, int Width, int Height, DWORD col, DWORD transTbl), offset_D2Client + 0xBB0F0);//6FB5B0F0-6FAA0000
D2Gfx.#10055
Function: Draw Filled Rectangle
D2Gfx.#10055
Function: Draw Filled Rectangle
void STDCALL D2GfxFillRect(int left, int top, int right, int bottom, ULONG ulColor, ULONG transTbl);
NOTES:
color = Palette index.
transTbl = pl2 transform table index ...
0 = 75% transparent
1 = 50% transparent
2 = 25% transparent
3 = color blend 1 //white is transparent black is solid
4 = color blend 2 //black is transparent white is solid
5 = normal draw
6 = color blend 3 // screen + color
7 = hilight
NOTES:
color = Palette index.
transTbl = pl2 transform table index ...
0 = 75% transparent
1 = 50% transparent
2 = 25% transparent
3 = color blend 1 //white is transparent black is solid
4 = color blend 2 //black is transparent white is solid
5 = normal draw
6 = color blend 3 // screen + color
7 = hilight
6FAE7831 E8 9A380800 CALL <JMP.&D2Common.#10252> ; click inventory
6FAE8D44 E8 87230800 CALL <JMP.&D2Common.#10252> ; Right click inventory
6FAE7831 E8 9A380800 CALL <JMP.&D2Common.#10252> ; click inventory
6FAE8D44 E8 87230800 CALL <JMP.&D2Common.#10252> ; Right click inventory
6FAE8972 E8 59270800 CALL <JMP.&D2Common.#10252> ; mouse over
D2Client.6FACFCD0 then that set color for the text (it calls in this function #10121 and 10117)
Kingpin: and the position
Kingpin: arg1 = Xpos
arg2 = Ypos
arg3 = Pointer to Unicode String
Kingpin: arg1 = Xpos
arg2 = Ypos
arg3 = Pointer to Unicode String
arg4 = Color
Kingpin: 10470 has as first arg ptGame +1C (memory alloc thing)
@@ -808,51 +815,51 @@ Kingpin: arg4 = 4 (same here, no idea)
Kingpin: arg5 = uniqueID
Kingpin: 10868 SetMod
arg1 = ptItem
arg2 = ItemMod
arg1 = ptItem
arg2 = ItemMod
arg3 = 1
Kingpin: 11232 Get Cube Recipe Record (Line) from Cubemain.bin Address in memory
Kingpin: 11232 Get Cube Recipe Record (Line) from Cubemain.bin Address in memory
Kingpin: i have no parameters for 11232
Kingpin: 11233 Get Number of Cube Recipes
Kingpin: edi contains target unit
Kingpin: edi contains target unit
Kingpin: 10342 get ptRoom from target unit
Kingpin: ecx = unique unit id
Kingpin: ebx = unit type
Kingpin: eax = ptRoom
Kingpin: 10066 remove unit from room
D2Game.6FCBC900 ; Get Target Unit
D2Game.6FCBC900 ; Get Target Unit
Arg1 = ptPlayer (ptUnit)
Arg2 = ptGame
#10962 Add skill to player
Kingpin: arg1 ptPlayer
#10962 Add skill to player
Kingpin: arg1 ptPlayer
arg2 SkillID
Kingpin: arg3 Skill Level
10602 Gets an item ID # from an item code
10602 Gets an item ID # from an item code
Kingpin: get Prefix/suffix
Kingpin: #10699 arg1 = ptItem, arg2 = prefix Index
Kingpin: #10701 arg1 = ptItem, arg2 = suffix index
D2EquipUnit STDCALL_FUNCTION(int, D2Common280D, (Inventory* ptInventory, Unit* ptItem, int bodylocation));
D2AddItemToInventory STDCALL_FUNCTION(int, D2Common2802, (Inventory* ptInventory, Unit* ptItem, int nodePage));
D2EquipUnit STDCALL_FUNCTION(int, D2Common280D, (Inventory* ptInventory, Unit* ptItem, int bodylocation));
D2AddItemToInventory STDCALL_FUNCTION(int, D2Common2802, (Inventory* ptInventory, Unit* ptItem, int nodePage));
Kingpin: in my notes it should start here
Kingpin: 6FC51360 /$ 55 PUSH EBP
D2DropTC FASTCALL_FUNCTION(void, D2Game6FC51360, (D2Game* ptGame, Unit* ptChar, Unit* ptNPC, void* ptTC, DWORD z5, DWORD ilvl, DWORD z1, DWORD z2, DWORD z3, DWORD z4));
D2DropTC FASTCALL_FUNCTION(void, D2Game6FC51360, (D2Game* ptGame, Unit* ptChar, Unit* ptNPC, void* ptTC, DWORD z5, DWORD ilvl, DWORD z1, DWORD z2, DWORD z3, DWORD z4));
Kingpin: D2CreateItemUnit FASTCALL_FUNCTION(Unit*, D2Game6FC501A0, (Unit* ptPlayer, DWORD itemCode, D2Game* ptGame, DWORD uk1, DWORD quality, DWORD uk3, DWORD uk4, DWORD Lvl, DWORD uk5, DWORD uk6, DWORD uk7));
ptItem = D2CreateItemUnit(ptPlayer, D2GetItemIDfromCode(CharstatTXT->Item1), PCGame, 4, 2, 1, 1, D2GetUnitStat(ptPlayer,STATS_LEVEL,0), 0, 0, 0);
Kingpin: D2CreateItemUnit FASTCALL_FUNCTION(Unit*, D2Game6FC501A0, (Unit* ptPlayer, DWORD itemCode, D2Game* ptGame, DWORD uk1, DWORD quality, DWORD uk3, DWORD uk4, DWORD Lvl, DWORD uk5, DWORD uk6, DWORD uk7));
ptItem = D2CreateItemUnit(ptPlayer, D2GetItemIDfromCode(CharstatTXT->Item1), PCGame, 4, 2, 1, 1, D2GetUnitStat(ptPlayer,STATS_LEVEL,0), 0, 0, 0);
Kingpin: monsterData +28 holds ptGame
Kingpin: ptGame +2C UniqueID (owner ID)
Kingpin: ptGame +30 UnitType
Kingpin: ptGame +30 UnitType
srvDoFunc 15 adds temporarly a stat
Kingpin: we have 10041 that get ptRoom from ptAct, XOffset&Yoffset

View File

@@ -1,10 +1,10 @@
/*=================================================================
File created by Yohann NICOLAS.
@brief Diablo II Unit Structures definitions.
@brief Diablo II Unit Structures definitions.
NOT TESTED IN 1.10 (1.09b)
NOT TESTED IN 1.10 (1.09b)
=================================================================*/
#pragma once
@@ -16,6 +16,14 @@ struct Unit;
struct SkillsBIN;
struct SkillData;
struct ObjectsBIN;
struct NetClient;
struct Game;
struct ActMap;
struct ActData;
struct Level;
struct RoomEx;
struct Room;
/*=================================================================*/
/* Skill Structure. */
@@ -59,7 +67,7 @@ struct Position
DWORD y;
};
struct Room//size=0x80
/*struct Room//size=0x80
{
//ptRoom +48 0 = spawn new units (monster, objects e.tc), 1 = don't spawn any new units
DWORD seed1; //+00
@@ -79,23 +87,113 @@ struct Room//size=0x80
BYTE isGenerated2:1;//???
};
};
};
};*/
struct ActMap//ptGame+BC size=0x60
struct RoomEx //size=5C
{
DWORD isNotManaged;
DWORD uk4;
DWORD uk8;//size = 0x488
Room* ptFirstRoom;
DWORD __00[2]; //0x00
RoomEx** roomExNear; //0x08
DWORD __0C[5]; //0x0C
struct {
INT32 roomNumber; //0x00
void* __04; //0x04
PINT32 subNumber; //0x08
} *pType2Info; //0x20
RoomEx* ptNextRoomEx; //0x24
UINT32 roomFlags; //0x28
UINT32 roomsNearCount; //0x2C
Room* ptRoom; //0x30
INT32 posX; //0x34
INT32 posY; //0x38
INT32 sizeX; //0x3C
INT32 sizeY; //0x40
DWORD __44; //0x44
UINT32 presetType; //0x48
void* ptWarpTiles; //0x4C
DWORD __50[2]; //0x50
Level* ptLevel; //0x58
};
struct Room //size=0x80
{
Room** ptNearRooms; //0x00
DWORD __04[3]; //0x04
RoomEx* ptRoomEx; //0x10
DWORD __14[3]; //0x14
void* coll; //0x20
INT32 nbNearRooms; //0x24
DWORD __28[9]; //0x28
DWORD startX; //0x4C
DWORD startY; //0x50
DWORD sizeX; //0x54
DWORD sizeY; //0x58
DWORD __5C[6]; //0x5C
Unit* ptFirstUnit; //0x74
DWORD __78; //0x78
Room* ptNextRoom; //0x7C
};
struct Level //size=0x234
{
DWORD type; //+000
DWORD flags; //+004
DWORD __004_010[2]; //+008
RoomEx* ptFirstRoomEx; //+010
DWORD __014_01C[2]; //+014
INT32 posX; //+01C
INT32 posY; //+020
INT32 sizeX; //+024
INT32 sizeY; //+028
DWORD __0C2_1AC[96]; //+02C
Level* ptNextLevel; //+1AC
DWORD __1B0; //+1B0
ActData* ptActData; //+1B4
DWORD __1B8_1C0[2]; //+1B8
DWORD levelType; //+1C0
DWORD seed1; //+1C4
DWORD seed2; //+1C8
DWORD uk_1CC; //+1CC
UINT32 levelNo; //+1D0
DWORD __1D4_234[96]; //+1D4
};
struct ActData //size=0x488
{
DWORD seed1; //+000
DWORD seed2; //+004
DWORD nbRooms; //+008
DWORD __00C_0094[34]; //+00C
DWORD nTalRashaTombLevel; //094
DWORD __098; //+098
Game* ptGame; //+09C
DWORD __0A0_450[237]; //+0A0
BYTE difficulty; //+450
BYTE __451_46C[27]; //+451
ActMap* ptActMap; //+46C
DWORD __470_484[5]; //+470
DWORD nBossMummyTombLevel;//+484
};
struct ActMap //size=0x60
{
DWORD isNotManaged; //+00
DWORD __04; //+04
DWORD townLevel; //+08
DWORD seed; //+0C
Room* ptFirstRoom; //+10
DWORD actNumber; //+14
DWORD __18_48[12]; //+18
ActData* ptActData; //+48
DWORD __50_5C[4]; //+4C
void* ptMemoryPool; //+5C
};
struct NetClient;
//ptGame : 04E4007C
struct Game
{ //Offset from Code.
{ //Offset from Code.
BYTE uk1[0x18]; //+00
DWORD _ptLock; //+18 Unknown
DWORD memoryPool; //+1C Memory Pool (??)
DWORD _ptLock; //+18 Unknown
DWORD memoryPool; //+1C Memory Pool (??)
BYTE uk2[0x4D]; //+20
BYTE difficultyLevel; //+6D (Difficulty 0,1 or 2)
WORD unknown1; //+6E Cube puts 4 here
@@ -104,7 +202,9 @@ struct Game
WORD unknown2; //+78
BYTE uk4[0x0E]; //+7A
NetClient* ptClient; //+88
BYTE uk8C[0x30]; //+8C
BYTE __8C[0x1C]; //+8C
DWORD gameFrame; //+A8
BYTE __AC[0x10]; //+AC
ActMap* mapAct[5]; //+BC
BYTE ukD0[0x1024]; //+D0
DWORD* game10F4; //+10F4
@@ -117,7 +217,7 @@ struct Game
struct Path //(8 dword)
{ //Offset from Code. Size: 20
{ //Offset from Code. Size: 20
WORD uk1; //+00
WORD mapx; //+02
WORD uk2; //+04
@@ -132,7 +232,7 @@ struct Path //(8 dword)
struct Inventory
{ //Offset from Code. Size: 30 <EFBFBD> 40
{ //Offset from Code. Size: 30 to 40
DWORD tag; //+00 = 0x01020304
BYTE uk1[0x04]; //+04 =? 0
Unit* ptChar; //+08
@@ -200,24 +300,49 @@ struct Stats //sizeof(Stats)=0x64
DWORD unknow2; //+60 (=0)
};
struct AIControl
{
DWORD specialState; // +00 SpecialState - stuff like terror, confusion goes here
void* aiFunction; // +04 fpAiFunction(); - the primary ai function to call (void * __fastcall)(pGame,pUnit,pAiTickArgs);
DWORD aiFlags; // +08 AiFlags
DWORD ownerGUID; // +0C OwnerGUID - the global unique identifier of the boss or minion owner
DWORD ownerType; // +10 eOwnerType - the unit type of the boss or minion owner
DWORD args[3]; // +14 dwArgs[3] - three dwords holding custom data used by ai func to store counters (etc)
void* cmdCurrent; // +20 pCmdCurrents
void* cmdLast; // +24 pCmdLast
Game* ptGame; // +28 pGame
DWORD ownerGUID2; // +2C OwnerGUID - the same as +008
DWORD ownerType2; // +30 eOwnerType - the same as +00C
void* minionList; // +34 pMinionList - list of all minions, for boss units (SetBoss in MonStats, Unique, SuperUnique etc)
DWORD trapNo; // +3C eTrapNo - used by shadows for summoning traps (so they stick to one type usually)
};
struct MonsterData // sizeof(MonsterData)=0x60
{ //Offset from Code.
BYTE uk[0x16]; //+00
union {
WORD flags; //+16
struct {
WORD fuk1:1;
WORD isSuperUnique:1;
WORD isChampion:1;
WORD isUnique:1;
WORD fuk2:13;
MonStatsBIN* ptMonStats; //+000 - pMonStats - record in monstats.txt
BYTE components[0x10]; //+004 - Components[16] - bytes holding the component Ids for each component; Order: HD, TR, LG, RA, LA, RH, LH, SH, S1, S2, S3, S4, S5, S6, S7, S8
WORD seed; //+014 - NameSeed
union
{
BYTE flags; //+016 - TypeFlags
struct
{
BYTE isOther:1; // MONTYPE_OTHER(set for some champs, uniques)
BYTE isSuperUnique:1; // MONTYPE_SUPERUNIQUE
BYTE isChampion:1; // MONTYPE_CHAMPION
BYTE isUnique:1; // MONTYPE_UNIQUE
BYTE isMinion:1; // MONTYPE_MINION
BYTE isPossessed:1; // MONTYPE_POSSESSED
BYTE isGhostly:1; // MONTYPE_GHOSTLY
BYTE isMultishot:1; // MONTYPE_MULTISHOT
};
};
BYTE uk1[0x0E]; //+18
WORD superUniqueID; //+26
void* unknow1; //+28
BYTE uk2[0x38]; //+28
BYTE lastMode; //+017 - eLastMode
DWORD duriel; //+018 - dwDuriel - set only for duriel
BYTE monUModList[10]; //+01C - MonUModList[9] - nine bytes holding the Ids for each MonUMod assigned to the unit
DWORD superUniqueID; //+026
AIControl* ptAiGeneral; //+02A
BYTE uk2[0x32]; //+02E
};
struct ObjectData
@@ -226,15 +351,15 @@ struct ObjectData
BYTE levelID;
};
/*
Kingpin: struct MonsterData
{
BYTE uk1[0x13]; // +00
DWORD Flags; // +14
DWORD uk2; // +18
DWORD MinionOwnerID; // +1C
BYTE uk3[0x5]; // +20
WORD SuperUniqueID; // +26 Superunique ID of monster
D2Game* ptGame; // +28 ptGame
Kingpin: struct MonsterData
{
BYTE uk1[0x13]; // +00
DWORD Flags; // +14
DWORD uk2; // +18
DWORD MinionOwnerID; // +1C
BYTE uk3[0x5]; // +20
WORD SuperUniqueID; // +26 Superunique ID of monster
D2Game* ptGame; // +28 ptGame
};
*/
@@ -269,27 +394,27 @@ struct ItemData//size=0x74
};
};
/*
ITEMFLAG_NEWITEM = 0x00000001,
ITEMFLAG_TAGETING = 0x00000004,
ITEMFLAG_UNIDENTIFIED = 0x00000010,
ITEMFLAG_QUANTITY = 0x00000020,
ITEMFLAG_Durability = 0x00000100,
ITEMFLAG_NEWITEM = 0x00000001,
ITEMFLAG_TAGETING = 0x00000004,
ITEMFLAG_UNIDENTIFIED = 0x00000010,
ITEMFLAG_QUANTITY = 0x00000020,
ITEMFLAG_Durability = 0x00000100,
ITEMFLAG_UNKNOWN2 = 0x00000400,
ITEMFLAG_SOCKETED = 0x00000800,
ITEMFLAG_NON_SELLABLE = 0x00001000,
ITEMFLAG_NEWITEM2 = 0x00002000,
ITEMFLAG_SOCKETED = 0x00000800,
ITEMFLAG_NON_SELLABLE = 0x00001000,
ITEMFLAG_NEWITEM2 = 0x00002000,
ITEMFLAG_UNKNOWN3 = 0x00004000,
ITEMFLAG_CHECKSECPRICE = 0x00010000,
ITEMFLAG_CHECKGAMBLEPRICE = 0x00020000,
ITEMFLAG_CHECKSECPRICE = 0x00010000,
ITEMFLAG_CHECKGAMBLEPRICE = 0x00020000,
ITEMFLAG_UNKNOWN4 = 0x00080000,
ITEMFLAG_INDESTRUCTIBLE(ETHERAL) = 0x00400000,
ITEMFLAG_INDESTRUCTIBLE(ETHERAL) = 0x00400000,
ITEMFLAG_UNKNOWN5 = 0x00800000,
ITEMFLAG_FROMPLAYER = 0x01000000,
ITEMFLAG_FROMPLAYER = 0x01000000,
ITEMFLAG_RUNEWORD = 0x04000000
*/
DWORD guid1; //+1C Global Unique ID 1
DWORD guid2; //+20 Global Unique ID 2
DWORD guid3; //+24 Global Unique ID 3
DWORD guid1; //+1C Global Unique ID 1
DWORD guid2; //+20 Global Unique ID 2
DWORD guid3; //+24 Global Unique ID 3
DWORD uniqueID; //+28
BYTE ilvl; //+2C
BYTE uk1[0x03]; //+2D
@@ -300,7 +425,7 @@ ITEMFLAG_RUNEWORD = 0x04000000
WORD prefix[3]; //+38
WORD suffix[3]; //+3E
BYTE equipLoc; //+44
/* emplacement si <20>quip<EFBFBD>
/* location if equipped
* 00 = noequip/inBelt
* 01 = head
* 02 = neck
@@ -326,7 +451,7 @@ ITEMFLAG_RUNEWORD = 0x04000000
BYTE ItemData3; //+47 //D2Common10854 D2Common10853
BYTE pEarLevel; //+48
BYTE varGfx; //+49
char IName[0x12]; //+4A //inscribed/ear name
char IName[0x12]; //+4A //inscribed/ear name
Inventory* ptInventory; //+5C
Unit* ptPrevItem; //+60
Unit* ptNextItem; //+64
@@ -360,12 +485,12 @@ struct NetClient
//+1A8 is ptGame
//+4A8 ptNextClient
/*
Kingpin: ptPclient
+16C is either act or unit type
+170 Active UniqueID for player
+174 Active ptPlayer on Client
+1a8 ptGame
+1b4 Current or next ptRoom
Kingpin: ptPclient
+16C is either act or unit type
+170 Active UniqueID for player
+174 Active ptPlayer on Client
+1a8 ptGame
+1b4 Current or next ptRoom
*/
};
/*
@@ -376,20 +501,20 @@ struct PlayerData
NetClient* ptNetClient; //+9C
};
*/
struct PlayerData
{
char name[0x10]; //+00 Player Name
void* ptQuest[3]; //+10 Quest Pointers for each difficulty
struct PlayerData
{
char name[0x10]; //+00 Player Name
void* ptQuest[3]; //+10 Quest Pointers for each difficulty
BYTE uk1[0x18]; //+1C //before : 0x14
void* ptArenaUnit; //+34 ptArena for the Unit
void* ptArenaUnit; //+34 ptArena for the Unit
BYTE uk2[0x4]; //+38 //before : 0x7
WORD MPSourcePortalUniqueID; //+3C Source Portal Unique_ID
WORD MPSourcePortalUniqueID; //+3C Source Portal Unique_ID
BYTE uk3[0x2]; //+3E
WORD MPDestPortalUniqueID; //+40 Destination Portal Unique_ID
BYTE uk4[0x06]; //+42
BYTE ptObjectUnID; //+48 Object UniqueID for TownPortals
BYTE uk5[0x53]; //+49
NetClient* ptNetClient; //+9C ptClient
WORD MPDestPortalUniqueID; //+40 Destination Portal Unique_ID
BYTE uk4[0x06]; //+42
BYTE ptObjectUnID; //+48 Object UniqueID for TownPortals
BYTE uk5[0x53]; //+49
NetClient* ptNetClient; //+9C ptClient
};
@@ -400,11 +525,11 @@ struct Unit
DWORD nUnitType; //+00
union{
DWORD nPlayerClass;
DWORD nTxtFileNo;
DWORD nTxtFileNo;
}; //+04
DWORD nUnitId; //+08
DWORD nItemNum; //+0C
DWORD CurrentAnim; //+10
DWORD mode; //+10
union{
MonsterData* ptMonsterData;
ObjectData* ptObjectData;
@@ -452,7 +577,7 @@ struct Unit
BYTE uk10[0x0C]; //+D4
Unit* ptFirstMonster; //+E0
Unit* Unit1; //+E4
Unit* Unit2; //+E8
Unit* ptNextUnitInRoom; //+E8
BYTE uk11[0x08]; //+EC
union{
CBPlayerData* ptCBPlayerData;
@@ -480,60 +605,60 @@ struct ItemMod
struct AIStruct
{
DWORD mSpawn; // +00
void* mAIFunc; // +04
DWORD mUnknown1[8]; // +08
D2Game* mGame; // +28
DWORD mMinionOwner; // +2C
DWORD mOwnerType; // +30
DWORD mSpawn; // +00
void* mAIFunc; // +04
DWORD mUnknown1[8]; // +08
D2Game* mGame; // +28
DWORD mMinionOwner; // +2C
DWORD mOwnerType; // +30
};
struct LocInfo
{ //Offset from Code
Unit* noneLoc; //+00
Unit* headLoc; //+04
Unit* neckLoc; //+08
Unit* torsoLoc; //+0c
Unit* rightArmLoc; //+10
Unit* leftArmLoc; //+14
Unit* rightRingLoc; //+18
Unit* leftRingLoc; //+1c
Unit* beltLoc; //+20
Unit* feetLoc; //+24
Unit* glovesLoc; //+28
Unit* noneLoc; //+00
Unit* headLoc; //+04
Unit* neckLoc; //+08
Unit* torsoLoc; //+0c
Unit* rightArmLoc; //+10
Unit* leftArmLoc; //+14
Unit* rightRingLoc; //+18
Unit* leftRingLoc; //+1c
Unit* beltLoc; //+20
Unit* feetLoc; //+24
Unit* glovesLoc; //+28
};
struct ItemData
struct ItemData
{ // Offset from Code
DWORD quality; // +00.
DWORD lowSeed; // +04.
DWORD highSeed; // +08.
DWORD unknown1; // +0c.
DWORD startLowSeed; // +10.
DWORD cmdFlags; // +14.
DWORD flags; // +18.
DWORD unknown2[2]; // +1C
DWORD originID; // +24.
DWORD iLvl; // +28.
WORD version; // +2C.
WORD prefix; // +2E.
WORD suffix; // +30.
WORD autoPrefix; // +32.
WORD prefix1; // +34.
WORD prefix2; // +36.
WORD prefix3; // +38.
WORD suffix1; // +3A.
WORD suffix2; // +3C.
WORD suffix3; // +3E.
BYTE bodyLoc; // +40. // 0=inv/stash 4=gaucheS 5=droiteS
BYTE inPage; // +41. // FF=equip 00=inv 04=stash
BYTE unknown3[3]; // +42
BYTE picture[8]; // +45
DWORD ilvl; // +4C
DWORD lowSeed; // +04.
DWORD highSeed; // +08.
DWORD unknown1; // +0c.
DWORD startLowSeed; // +10.
DWORD cmdFlags; // +14.
DWORD flags; // +18.
DWORD unknown2[2]; // +1C
DWORD originID; // +24.
DWORD iLvl; // +28.
WORD version; // +2C.
WORD prefix; // +2E.
WORD suffix; // +30.
WORD autoPrefix; // +32.
WORD prefix1; // +34.
WORD prefix2; // +36.
WORD prefix3; // +38.
WORD suffix1; // +3A.
WORD suffix2; // +3C.
WORD suffix3; // +3E.
BYTE bodyLoc; // +40. // 0=inv/stash 4=gaucheS 5=droiteS
BYTE inPage; // +41. // FF=equip 00=inv 04=stash
BYTE unknown3[3]; // +42
BYTE picture[8]; // +45
DWORD ilvl; // +4C
};
struct PresetUnit
struct PresetUnit
{ //Offset from Code
DWORD unitType; //+00
DWORD txtFileNo; //+04
@@ -546,128 +671,128 @@ struct PresetUnit
struct MissileData
{
+04 flags
+08 0 on start
+0c -1 on start
+20 nDirection
+28 range?
+2c range?
+30 level
+34 number of pierces (byte)
+35 (byte)
+36 (byte)
+37 (byte)
+38 range-activate
+04 flags
+08 0 on start
+0c -1 on start
+20 nDirection
+28 range?
+2c range?
+30 level
+34 number of pierces (byte)
+35 (byte)
+36 (byte)
+37 (byte)
+38 range-activate
};
struct Combat
struct Combat
{
DWORD mHeader; // +00 : Always 0x32
DWORD mHeader; // +00 : Always 0x32
DWORD mDisplayFlag; // +04 : Affect critical hit etc ...
DWORD mPhysicalDmg; // +08 : Values are << 8
DWORD mUnknown1; // +0C
DWORD mFireDmg; // +10 : Values are << 8
DWORD mUnknown2; // +14
DWORD mBurnLeng; // +18
DWORD mLtngDmg; // +1C : values are << 8
DWORD mMagDmg; // +20 : values are << 8
DWORD mColdDmg; // +24 : values are << 8
DWORD mPoisDmg; // +28 : ??
DWORD mPoisLeng; // +2C
DWORD mColdLeng; // +30
DWORD mFreezeLeng; // +34
DWORD mLifeSteal; // +38
DWORD mManaSteal; // +3C
DWORD mUnknwon3; // +40
DWORD mStunLeng; // +44
DWORD mUnknown4; // +48
DWORD mTotalDamage; // +4C
DWORD mUnknown5[6]; // +50
DWORD mOverlay; // +68
DWORD mUnknwon6; // +6C
DWORD mBurnLeng; // +18
DWORD mLtngDmg; // +1C : values are << 8
DWORD mMagDmg; // +20 : values are << 8
DWORD mColdDmg; // +24 : values are << 8
DWORD mPoisDmg; // +28 : ??
DWORD mPoisLeng; // +2C
DWORD mColdLeng; // +30
DWORD mFreezeLeng; // +34
DWORD mLifeSteal; // +38
DWORD mManaSteal; // +3C
DWORD mUnknwon3; // +40
DWORD mStunLeng; // +44
DWORD mUnknown4; // +48
DWORD mTotalDamage; // +4C
DWORD mUnknown5[6]; // +50
DWORD mOverlay; // +68
DWORD mUnknwon6; // +6C
};
struct Node
{ //Offset from Code.
DWORD flag; //+00 //Yoh : null->flag
Unit* ptItem; //+04 //Yoh : ItemData=>Unit
DWORD unID; //+08
DWORD page; //+0c //Yoh plutot etat : inventory/stash=1; inv-belt=2; equip=3
Node* nextNode; //+10
DWORD flag; //+00 //Yoh : null->flag
Unit* ptItem; //+04 //Yoh : ItemData=>Unit
DWORD unID; //+08
DWORD page; //+0c //Yoh plutot etat : inventory/stash=1; inv-belt=2; equip=3
Node* nextNode; //+10
};
struct MonsterData // size110 : 60
{
AIStruct* AIPtr;
void* unkonwPtr1;
void* uniqueInfo;
void* spawnInfo;
void* unknownPtr2;
DWORD unkown[8];
void* lvlPtr;
MonStatTxt* monstatPtr;
AIStruct* AIPtr;
void* unkonwPtr1;
void* uniqueInfo;
void* spawnInfo;
void* unknownPtr2;
DWORD unkown[8];
void* lvlPtr;
MonStatTxt* monstatPtr;
};
struct Unit
struct Unit
{ //Offset from Code.
DWORD nUnitType; //+00
union
{
DWORD nTxtFileNo;
DWORD nPlayerClass;
}; //+04
union
{
DWORD nTxtFileNo;
DWORD nPlayerClass;
}; //+04
DWORD nUnitId; //+08
DWORD eMode; //+0c
DWORD* unknow1; //+10
DWORD nAct; //+14
DWORD pActRelated; //+18
DWORD unknown2[4]; //Unknown Data at +1C
D2Seed nSeed; //+2C
DWORD startSeed; //+34
Path* pPos; //+38
DWORD* unknow1; //+10
DWORD nAct; //+14
DWORD pActRelated; //+18
DWORD unknown2[4]; //Unknown Data at +1C
D2Seed nSeed; //+2C
DWORD startSeed; //+34
Path* pPos; //+38
DWORD unknown3[6]; //Unknown Data at +3C
DWORD animSpeed; //+54
DWORD unknown32[2]; //+58
BYTE COFString[12]; //+60
Stats* ptStats; //+6C
union
{
DWORD animSpeed; //+54
DWORD unknown32[2]; //+58
BYTE COFString[12]; //+60
Stats* ptStats; //+6C
union
{
PlayerData* pPlayerData;
MonsterData* pMonsterData;
ItemData* pItemData;
MissileData* pMissile;
MissileData* pMissile;
ObjectData* pObjectData;
}; //+70
DWORD unknown5[2]; //+74
BYTE unknown6[2]; //+7C
BYTE rndDmg[2]; //+7e
DWORD unknown7; //+80
BYTE unknown6[2]; //+7C
BYTE rndDmg[2]; //+7e
DWORD unknown7; //+80
Inventory* ptInventory; //+84
DWORD unknown8[4]; //+88
DWORD startNull; //+98
DWORD unknown9[2]; //+9c
D2Game* ptGame; //+a4
DWORD unknown10[4]; //+a8
DWORD startNull; //+98
DWORD unknown9[2]; //+9c
D2Game* ptGame; //+a4
DWORD unknown10[4]; //+a8
DWORD nOwnerType; //+b8
DWORD nOwnerId; //+bc
DWORD unknown11[3]; //+c0
D2Info* ptInfo; //+cc
Combat* ptCombat; //+d0
DWORD unknown12[5]; //+d4
DWORD flags; //+e8
DWORD LODflag; //+ec
DWORD unknown11[3]; //+c0
D2Info* ptInfo; //+cc
Combat* ptCombat; //+d0
DWORD unknown12[5]; //+d4
DWORD flags; //+e8
DWORD LODflag; //+ec
DWORD unknown13[7]; //+f0
Unit* pNext; //+10c
DWORD unknown14[2]; //+110 //YOH
union
union
{
ItemData* ptItemData;
void* ptData;

File diff suppressed because it is too large Load Diff

View File

@@ -1,7 +1,7 @@
/*=================================================================
File created by Yohann NICOLAS.
@brief Diablo II Tbl Structures definitions.
@brief Diablo II Tbl Structures definitions.
=================================================================*/

View File

@@ -1,7 +1,7 @@
/*=================================================================
File created by Yohann NICOLAS.
NOT TESTED IN 1.10 (1.09b)
NOT TESTED IN 1.10 (1.09b)
=================================================================*/
@@ -15,15 +15,15 @@ struct Room;
#pragma pack(1)
struct sWinMessage
{
void* msg;
DWORD msg;
DWORD type;
DWORD uk1;
DWORD key;
WORD x;
WORD y;
DWORD uk3;
DWORD uk4;
DWORD managed;
DWORD unmanaged;
DWORD unmanaged;
};
#pragma pack()
@@ -60,11 +60,11 @@ struct saveBitField
struct BINField
{
char* fieldName;
int type;
DWORD strLength;
DWORD offset;
void* lookup;
char* fieldName;
int type;
DWORD strLength;
DWORD offset;
void* lookup;
};
struct ItemGenerationData //size=0x84
@@ -95,6 +95,17 @@ struct ItemGenerationData //size=0x84
};
};
struct AIParam {
void* control; //+0x00
void* u_0x04; //+0x04
Unit* target; //+0x08
void* u_0x0C; //+0x0C
void* u_0x10; //+0x10
DWORD distanceToTarget; //+0x14
BOOL engagedInCombat; //+0x18
MonStatsBIN* ptMonStatsBIN; //+0x1C
void* ptMonStats2BIN; //+0x20
};
/*=================================================================*/
/* Data Structure to Update Client */

View File

@@ -1,15 +1,15 @@
/*=================================================================
File created by Yohann NICOLAS.
Constants of D2
NOT TESTED IN 1.10 (from 1.09b)
Constants of D2
NOT TESTED IN 1.10 (from 1.09b)
=================================================================*/
#pragma once
/*==================================================================================*/
/*
/*
* Constants & Enumerations.
*/
/*==================================================================================*/
@@ -18,29 +18,29 @@ enum D2TypeSize { D2TS_UNITSIZE = 0x011C };
enum D2DifficultyModes { D2DM_NORMAL, D2DM_NIGHTMARE, D2DM_HELL };
enum D2PlayerClass { D2PC_AMAZON, D2PC_SORCERESS, D2PC_NECROMANCER, D2PC_PALADIN, D2PC_BARBARIAN, D2PC_DRUID, D2PC_ASSASSIN };
// add the prefix "<22>c" before the number directly in the text.
enum D2Color
{
BLACK=6,
// BLACK_BIS=14,
DARK_GRAY=5,
GRAY=16,
LIGHT_GRAY=15,
// WHITE_BIS=13,
WHITE=0,
RED=1,
BRIGHT_WHITE=18,
GOLD=4,
DARK_YELLOW=7,
YELLOW=9,
ORANGE=8,
DARKEST_GREEN=10,
DARK_GREEN=12,
GREEN=2,
BLUE=3,
GOLD=4,
DARK_GRAY=5,
// INVISIBLE=6,
DARK_YELLOW=7,
ORANGE=8,
YELLOW=9,
DARKEST_GREEN=0xA,
PURPLE=0xB,
DARK_GREEN=0xC,
// WHITE_BIS=0xD,
// INVISIBLE2=0xE,
LIGHT_GRAY=0xF,
GRAY=0x10,
// VERY_WIERD=0x11,
BRIGHT_WHITE=0x12,
CRYSTAL_RED=0x13,
// WIERD_YELLOW=0x14
PURPLE=11,
RED=1,
CRYSTAL_RED=19,
// VERY_WIERD=17,
};
enum D2Lang
@@ -52,8 +52,8 @@ enum D2Lang
LNG_POR,// Portuguese
LNG_ITA,// Italian
LNG_JPN,// Japanese
LNG_KOR,// Korean
LNG_SIN,//
LNG_KOR,// Korean
LNG_SIN,//
LNG_CHI,// Chinese
LNG_POL,// Polish
LNG_RUS,// Russian
@@ -445,7 +445,7 @@ enum D2Mod
DEXTERITY,
VITALITY,
ENERGY,
MAXMANA,
MAXMANA,
MAXMANA_PERCENT,
MAXHP,
MAXHP_PERCENT,
@@ -824,6 +824,30 @@ enum D2UnitType
UNIT_ROOMTILE
};
enum D2UnitMode
{
UNIT_MODE_DEATH = 0,
UNIT_MODE_NEUTRAL,
UNIT_MODE_WALK,
UNIT_MODE_RUN,
UNIT_MODE_GET_HIT,
UNIT_MODE_TOWN_NEUTRAL,
UNIT_MODE_TOWN_WALK,
UNIT_MODE_ATTACK1,
UNIT_MODE_ATTACK2,
UNIT_MODE_BLOCK,
UNIT_MODE_CAST,
UNIT_MODE_THROW,
UNIT_MODE_KICK,
UNIT_MODE_SKILL1,
UNIT_MODE_SKILL2,
UNIT_MODE_SKILL3,
UNIT_MODE_SKILL4,
UNIT_MODE_DEAD,
UNIT_MODE_SEQUENCE,
UNIT_MODE_KNOCK_BACK
};
enum D2BodyLoc
{
LOC_HEAD =1,