Advertisement
Guest User

Untitled

a guest
Jul 20th, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.15 KB | None | 0 0
  1. #pragma once
  2.  
  3. // NOTE : ItemŔÇ ĹëÇŐ °ü¸® Ŭ·ˇ˝ş´Ů.
  4. // Icon, Model (droped on ground), Game Data
  5.  
  6. #include "../eterLib/GrpSubImage.h"
  7. #include "../eterGrnLib/Thing.h"
  8.  
  9. class CItemData
  10. {
  11. public:
  12. enum
  13. {
  14. ITEM_NAME_MAX_LEN = 24,
  15. ITEM_LIMIT_MAX_NUM = 2,
  16. ITEM_VALUES_MAX_NUM = 6,
  17. ITEM_SMALL_DESCR_MAX_LEN = 256,
  18. ITEM_APPLY_MAX_NUM = 3,
  19. ITEM_SOCKET_MAX_NUM = 3,
  20. };
  21.  
  22. enum EItemType
  23. {
  24. ITEM_TYPE_NONE, //0
  25. ITEM_TYPE_WEAPON, //1//ą«±â
  26. ITEM_TYPE_ARMOR, //2//°©żĘ
  27. ITEM_TYPE_USE, //3//ľĆŔĚĹŰ »çżë
  28. ITEM_TYPE_AUTOUSE, //4
  29. ITEM_TYPE_MATERIAL, //5
  30. ITEM_TYPE_SPECIAL, //6 //˝şĆäĽČ ľĆŔĚĹŰ
  31. ITEM_TYPE_TOOL, //7
  32. ITEM_TYPE_LOTTERY, //8//şą±Ç
  33. ITEM_TYPE_ELK, //9//µ·
  34. ITEM_TYPE_METIN, //10
  35. ITEM_TYPE_CONTAINER, //11
  36. ITEM_TYPE_FISH, //12//ł¬˝Ă
  37. ITEM_TYPE_ROD, //13
  38. ITEM_TYPE_RESOURCE, //14
  39. ITEM_TYPE_CAMPFIRE, //15
  40. ITEM_TYPE_UNIQUE, //16
  41. ITEM_TYPE_SKILLBOOK, //17
  42. ITEM_TYPE_QUEST, //18
  43. ITEM_TYPE_POLYMORPH, //19
  44. ITEM_TYPE_TREASURE_BOX, //20//ş¸ą°»óŔÚ
  45. ITEM_TYPE_TREASURE_KEY, //21//ş¸ą°»óŔÚ ż­Ľč
  46. ITEM_TYPE_SKILLFORGET, //22
  47. ITEM_TYPE_GIFTBOX, //23
  48. ITEM_TYPE_PICK, //24
  49. ITEM_TYPE_HAIR, //25//¸Ó¸®
  50. ITEM_TYPE_TOTEM, //26//ĹäĹŰ
  51. ITEM_TYPE_BLEND, //27//»ýĽşµÉ¶§ ·Ł´ýÇĎ°Ô ĽÓĽşŔĚ şŮ´Â ľŕą°
  52. ITEM_TYPE_COSTUME, //28//ÄÚ˝şĂő ľĆŔĚĹŰ (2011łâ 8żů Ăß°ˇµČ ÄÚ˝şĂő ˝Ă˝şĹŰżë ľĆŔĚĹŰ)
  53. ITEM_TYPE_DS, //29 //żëČĄĽ®
  54. ITEM_TYPE_SPECIAL_DS, //30 // ĆŻĽöÇŃ żëČĄĽ® (DS_SLOTżˇ ÂřżëÇĎ´Â UNIQUE ľĆŔĚĹŰŔ̶ó »ý°˘ÇĎ¸é µĘ)
  55. ITEM_TYPE_EXTRACT, //31 ĂßĂâµµ±¸.
  56. ITEM_TYPE_SECONDARY_COIN, //32 ¸íµµŔü.
  57. ITEM_TYPE_RING, //33 ąÝÁö (ŔŻ´ĎĹ© ˝˝·ÔŔĚ ľĆ´Ń ĽřĽö ąÝÁö ˝˝·Ô)
  58. ITEM_TYPE_BELT, //34 ş§Ć®
  59.  
  60. ITEM_TYPE_MAX_NUM,
  61. };
  62.  
  63. enum EWeaponSubTypes
  64. {
  65. WEAPON_SWORD,
  66. WEAPON_DAGGER, //Ŕ̵µ·ů
  67. WEAPON_BOW,
  68. WEAPON_TWO_HANDED,
  69. WEAPON_BELL,
  70. WEAPON_FAN,
  71. WEAPON_ARROW,
  72. WEAPON_NUM_TYPES,
  73.  
  74. WEAPON_NONE = WEAPON_NUM_TYPES+1,
  75. };
  76.  
  77. enum EMaterialSubTypes
  78. {
  79. MATERIAL_LEATHER,
  80. MATERIAL_BLOOD,
  81. MATERIAL_ROOT,
  82. MATERIAL_NEEDLE,
  83. MATERIAL_JEWEL,
  84. MATERIAL_DS_REFINE_NORMAL,
  85. MATERIAL_DS_REFINE_BLESSED,
  86. MATERIAL_DS_REFINE_HOLLY,
  87. };
  88.  
  89. enum EArmorSubTypes
  90. {
  91. ARMOR_BODY,
  92. ARMOR_HEAD,
  93. ARMOR_SHIELD,
  94. ARMOR_WRIST,
  95. ARMOR_FOOTS,
  96. ARMOR_NECK,
  97. ARMOR_EAR,
  98. ARMOR_NUM_TYPES
  99. };
  100.  
  101. enum ECostumeSubTypes
  102. {
  103. COSTUME_BODY,
  104. COSTUME_HAIR,
  105. #ifdef ENABLE_COSTUME_WEAPON
  106. COSTUME_WEAPON_SWORD = 2,
  107. COSTUME_WEAPON_DAGGER = 3,
  108. COSTUME_WEAPON_BOW = 4,
  109. COSTUME_WEAPON_TWO_HANDED = 5,
  110. COSTUME_WEAPON_BELL = 6,
  111. COSTUME_WEAPON_FAN = 7,
  112. #endif
  113. COSTUME_NUM_TYPES,
  114. };
  115.  
  116. enum EUseSubTypes
  117. {
  118. USE_POTION, // 0
  119. USE_TALISMAN,
  120. USE_TUNING,
  121. USE_MOVE,
  122. USE_TREASURE_BOX,
  123. USE_MONEYBAG,
  124. USE_BAIT,
  125. USE_ABILITY_UP,
  126. USE_AFFECT,
  127. USE_CREATE_STONE,
  128. USE_SPECIAL, // 10
  129. USE_POTION_NODELAY,
  130. USE_CLEAR,
  131. USE_INVISIBILITY,
  132. USE_DETACHMENT,
  133. USE_BUCKET,
  134. USE_POTION_CONTINUE,
  135. USE_CLEAN_SOCKET,
  136. USE_CHANGE_ATTRIBUTE,
  137. USE_ADD_ATTRIBUTE,
  138. USE_ADD_ACCESSORY_SOCKET, // 20
  139. USE_PUT_INTO_ACCESSORY_SOCKET,
  140. USE_ADD_ATTRIBUTE2,
  141. USE_RECIPE,
  142. USE_CHANGE_ATTRIBUTE2,
  143. USE_BIND,
  144. USE_UNBIND,
  145. USE_TIME_CHARGE_PER,
  146. USE_TIME_CHARGE_FIX, // 28
  147. USE_PUT_INTO_BELT_SOCKET, // 29 ş§Ć® ĽŇÄĎżˇ »çżëÇŇ Ľö ŔÖ´Â ľĆŔĚĹŰ
  148. USE_PUT_INTO_RING_SOCKET, // 30 ąÝÁö ĽŇÄĎżˇ »çżëÇŇ Ľö ŔÖ´Â ľĆŔĚĹŰ (ŔŻ´ĎĹ© ąÝÁö ¸»°í, »ő·Î Ăß°ˇµČ ąÝÁö ˝˝·Ô)
  149. };
  150.  
  151. enum EDragonSoulSubType
  152. {
  153. DS_SLOT1,
  154. DS_SLOT2,
  155. DS_SLOT3,
  156. DS_SLOT4,
  157. DS_SLOT5,
  158. DS_SLOT6,
  159. DS_SLOT_NUM_TYPES = 6,
  160. };
  161.  
  162. enum EMetinSubTypes
  163. {
  164. METIN_NORMAL,
  165. METIN_GOLD,
  166. };
  167.  
  168. enum ELimitTypes
  169. {
  170. LIMIT_NONE,
  171.  
  172. LIMIT_LEVEL,
  173. LIMIT_STR,
  174. LIMIT_DEX,
  175. LIMIT_INT,
  176. LIMIT_CON,
  177. LIMIT_PCBANG,
  178.  
  179. /// Âřżë ż©şÎżÍ »ó°ü ľřŔĚ ˝Ç˝Ă°ŁŔ¸·Î ˝Ă°Ł Â÷°¨ (socket0żˇ ĽŇ¸ę ˝Ă°ŁŔĚ ąÚČű: unix_timestamp ŸŔÔ)
  180. LIMIT_REAL_TIME,
  181.  
  182. /// ľĆŔĚĹŰŔ» ¸Ç ĂłŔ˝ »çżë(ȤŔş Âřżë) ÇŃ Ľř°ŁşÎĹÍ ¸®ľóŸŔÓ Ĺ¸ŔĚ¸Ó ˝ĂŔŰ
  183. /// ĂÖĂĘ »çżë Ŕüżˇ´Â socket0żˇ »çżë°ˇ´É˝Ă°Ł(ĂĘ´ÜŔ§, 0Ŕ̸é ÇÁ·ÎĹäŔÇ limit value°Ş »çżë) °ŞŔĚ ľ˛ż©ŔÖ´Ů°ˇ
  184. /// ľĆŔĚĹŰ »çżë˝Ă socket1żˇ »çżë Č˝Ľö°ˇ ąÚČ÷°í socket0żˇ unix_timestamp ŸŔÔŔÇ ĽŇ¸ę˝Ă°ŁŔĚ ąÚČű.
  185. LIMIT_REAL_TIME_START_FIRST_USE,
  186.  
  187. /// ľĆŔĚĹŰŔ» Âřżë ÁßŔĎ ¶§¸¸ »çżë ˝Ă°ŁŔĚ Â÷°¨µÇ´Â ľĆŔĚĹŰ
  188. /// socket0żˇ ł˛Ŕş ˝Ă°ŁŔĚ ĂĘ´ÜŔ§·Î ąÚČű. (ľĆŔĚĹŰ ĂÖĂĘ »çżë˝Ă ÇŘ´ç °ŞŔĚ 0Ŕ̸é ÇÁ·ÎĹäŔÇ limit value°ŞŔ» socket0żˇ şą»ç)
  189. LIMIT_TIMER_BASED_ON_WEAR,
  190.  
  191. LIMIT_MAX_NUM
  192. };
  193.  
  194. enum EItemAntiFlag
  195. {
  196. ITEM_ANTIFLAG_FEMALE = (1 << 0), // ż©Ľş »çżë şŇ°ˇ
  197. ITEM_ANTIFLAG_MALE = (1 << 1), // ł˛Ľş »çżë şŇ°ˇ
  198. ITEM_ANTIFLAG_WARRIOR = (1 << 2), // ą«»ç »çżë şŇ°ˇ
  199. ITEM_ANTIFLAG_ASSASSIN = (1 << 3), // ŔÚ°´ »çżë şŇ°ˇ
  200. ITEM_ANTIFLAG_SURA = (1 << 4), // Ľö¶ó »çżë şŇ°ˇ
  201. ITEM_ANTIFLAG_SHAMAN = (1 << 5), // ą«´ç »çżë şŇ°ˇ
  202. ITEM_ANTIFLAG_GET = (1 << 6), // ÁýŔ» Ľö ľřŔ˝
  203. ITEM_ANTIFLAG_DROP = (1 << 7), // ąö¸± Ľö ľřŔ˝
  204. ITEM_ANTIFLAG_SELL = (1 << 8), // ĆČ Ľö ľřŔ˝
  205. ITEM_ANTIFLAG_EMPIRE_A = (1 << 9), // A Á¦±ą »çżë şŇ°ˇ
  206. ITEM_ANTIFLAG_EMPIRE_B = (1 << 10), // B Á¦±ą »çżë şŇ°ˇ
  207. ITEM_ANTIFLAG_EMPIRE_R = (1 << 11), // C Á¦±ą »çżë şŇ°ˇ
  208. ITEM_ANTIFLAG_SAVE = (1 << 12), // ŔúŔĺµÇÁö ľĘŔ˝
  209. ITEM_ANTIFLAG_GIVE = (1 << 13), // °Ĺ·ˇ şŇ°ˇ
  210. ITEM_ANTIFLAG_PKDROP = (1 << 14), // PK˝Ă ¶łľîÁöÁö ľĘŔ˝
  211. ITEM_ANTIFLAG_STACK = (1 << 15), // ÇŐÄĄ Ľö ľřŔ˝
  212. ITEM_ANTIFLAG_MYSHOP = (1 << 16), // °łŔÎ »óÁˇżˇ żĂ¸± Ľö ľřŔ˝
  213. };
  214.  
  215. enum EItemFlag
  216. {
  217. ITEM_FLAG_REFINEABLE = (1 << 0), // °ł·® °ˇ´É
  218. ITEM_FLAG_SAVE = (1 << 1),
  219. ITEM_FLAG_STACKABLE = (1 << 2), // ż©·Ż°ł ÇŐÄĄ Ľö ŔÖŔ˝
  220. ITEM_FLAG_COUNT_PER_1GOLD = (1 << 3), // °ˇ°ÝŔĚ °łĽö / °ˇ°ÝŔ¸·Î şŻÇÔ
  221. ITEM_FLAG_SLOW_QUERY = (1 << 4), // °ÔŔÓ Áľ·á˝Ăżˇ¸¸ SQLżˇ Äő¸®ÇÔ
  222. ITEM_FLAG_RARE = (1 << 5),
  223. ITEM_FLAG_UNIQUE = (1 << 6),
  224. ITEM_FLAG_MAKECOUNT = (1 << 7),
  225. ITEM_FLAG_IRREMOVABLE = (1 << 8),
  226. ITEM_FLAG_CONFIRM_WHEN_USE = (1 << 9),
  227. ITEM_FLAG_QUEST_USE = (1 << 10), // Äů˝şĆ® ˝şĹ©¸łĆ® µą¸®´ÂÁö?
  228. ITEM_FLAG_QUEST_USE_MULTIPLE= (1 << 11), // Äů˝şĆ® ˝şĹ©¸łĆ® µą¸®´ÂÁö?
  229. ITEM_FLAG_UNUSED03 = (1 << 12), // UNUSED03
  230. ITEM_FLAG_LOG = (1 << 13), // »çżë˝Ă ·Î±×¸¦ ł˛±â´Â ľĆŔĚĹŰŔΰˇ?
  231. ITEM_FLAG_APPLICABLE = (1 << 14),
  232. };
  233.  
  234. enum EWearPositions
  235. {
  236. WEAR_BODY, // 0
  237. WEAR_HEAD, // 1
  238. WEAR_FOOTS, // 2
  239. WEAR_WRIST, // 3
  240. WEAR_WEAPON, // 4
  241. WEAR_NECK, // 5
  242. WEAR_EAR, // 6
  243. WEAR_UNIQUE1, // 7
  244. WEAR_UNIQUE2, // 8
  245. WEAR_ARROW, // 9
  246. WEAR_SHIELD, // 10
  247. WEAR_MAX_NUM,
  248. };
  249.  
  250. enum EItemWearableFlag
  251. {
  252. WEARABLE_BODY = (1 << 0),
  253. WEARABLE_HEAD = (1 << 1),
  254. WEARABLE_FOOTS = (1 << 2),
  255. WEARABLE_WRIST = (1 << 3),
  256. WEARABLE_WEAPON = (1 << 4),
  257. WEARABLE_NECK = (1 << 5),
  258. WEARABLE_EAR = (1 << 6),
  259. WEARABLE_UNIQUE = (1 << 7),
  260. WEARABLE_SHIELD = (1 << 8),
  261. WEARABLE_ARROW = (1 << 9),
  262. };
  263.  
  264. enum EApplyTypes
  265. {
  266. APPLY_NONE, // 0
  267. APPLY_MAX_HP, // 1
  268. APPLY_MAX_SP, // 2
  269. APPLY_CON, // 3
  270. APPLY_INT, // 4
  271. APPLY_STR, // 5
  272. APPLY_DEX, // 6
  273. APPLY_ATT_SPEED, // 7
  274. APPLY_MOV_SPEED, // 8
  275. APPLY_CAST_SPEED, // 9
  276. APPLY_HP_REGEN, // 10
  277. APPLY_SP_REGEN, // 11
  278. APPLY_POISON_PCT, // 12
  279. APPLY_STUN_PCT, // 13
  280. APPLY_SLOW_PCT, // 14
  281. APPLY_CRITICAL_PCT, // 15
  282. APPLY_PENETRATE_PCT, // 16
  283. APPLY_ATTBONUS_HUMAN, // 17
  284. APPLY_ATTBONUS_ANIMAL, // 18
  285. APPLY_ATTBONUS_ORC, // 19
  286. APPLY_ATTBONUS_MILGYO, // 20
  287. APPLY_ATTBONUS_UNDEAD, // 21
  288. APPLY_ATTBONUS_DEVIL, // 22
  289. APPLY_STEAL_HP, // 23
  290. APPLY_STEAL_SP, // 24
  291. APPLY_MANA_BURN_PCT, // 25
  292. APPLY_DAMAGE_SP_RECOVER, // 26
  293. APPLY_BLOCK, // 27
  294. APPLY_DODGE, // 28
  295. APPLY_RESIST_SWORD, // 29
  296. APPLY_RESIST_TWOHAND, // 30
  297. APPLY_RESIST_DAGGER, // 31
  298. APPLY_RESIST_BELL, // 32
  299. APPLY_RESIST_FAN, // 33
  300. APPLY_RESIST_BOW, // 34
  301. APPLY_RESIST_FIRE, // 35
  302. APPLY_RESIST_ELEC, // 36
  303. APPLY_RESIST_MAGIC, // 37
  304. APPLY_RESIST_WIND, // 38
  305. APPLY_REFLECT_MELEE, // 39
  306. APPLY_REFLECT_CURSE, // 40
  307. APPLY_POISON_REDUCE, // 41
  308. APPLY_KILL_SP_RECOVER, // 42
  309. APPLY_EXP_DOUBLE_BONUS, // 43
  310. APPLY_GOLD_DOUBLE_BONUS, // 44
  311. APPLY_ITEM_DROP_BONUS, // 45
  312. APPLY_POTION_BONUS, // 46
  313. APPLY_KILL_HP_RECOVER, // 47
  314. APPLY_IMMUNE_STUN, // 48
  315. APPLY_IMMUNE_SLOW, // 49
  316. APPLY_IMMUNE_FALL, // 50
  317. APPLY_SKILL, // 51
  318. APPLY_BOW_DISTANCE, // 52
  319. APPLY_ATT_GRADE_BONUS, // 53
  320. APPLY_DEF_GRADE_BONUS, // 54
  321. APPLY_MAGIC_ATT_GRADE, // 55
  322. APPLY_MAGIC_DEF_GRADE, // 56
  323. APPLY_CURSE_PCT, // 57
  324. APPLY_MAX_STAMINA, // 58
  325. APPLY_ATT_BONUS_TO_WARRIOR, // 59
  326. APPLY_ATT_BONUS_TO_ASSASSIN,// 60
  327. APPLY_ATT_BONUS_TO_SURA, // 61
  328. APPLY_ATT_BONUS_TO_SHAMAN, // 62
  329. APPLY_ATT_BONUS_TO_MONSTER, // 63
  330. APPLY_MALL_ATTBONUS, // 64 °ř°Ý·Â +x%
  331. APPLY_MALL_DEFBONUS, // 65 ąćľî·Â +x%
  332. APPLY_MALL_EXPBONUS, // 66 °ćÇčġ +x%
  333. APPLY_MALL_ITEMBONUS, // 67 ľĆŔĚĹŰ µĺ·ÓŔ˛ x/10ąč
  334. APPLY_MALL_GOLDBONUS, // 68 µ· µĺ·ÓŔ˛ x/10ąč
  335. APPLY_MAX_HP_PCT, // 69 ĂÖ´ë »ý¸í·Â +x%
  336. APPLY_MAX_SP_PCT, // 70 ĂÖ´ë Á¤˝Ĺ·Â +x%
  337. APPLY_SKILL_DAMAGE_BONUS, // 71 ˝şĹł µĄąĚÁö * (100+x)%
  338. APPLY_NORMAL_HIT_DAMAGE_BONUS, // 72 ĆňŸ µĄąĚÁö * (100+x)%
  339. APPLY_SKILL_DEFEND_BONUS, // 73 ˝şĹł µĄąĚÁö ąćľî * (100-x)%
  340. APPLY_NORMAL_HIT_DEFEND_BONUS, // 74 ĆňŸ µĄąĚÁö ąćľî * (100-x)%
  341. APPLY_EXTRACT_HP_PCT, //75
  342. APPLY_PC_BANG_EXP_BONUS, //76
  343. APPLY_PC_BANG_DROP_BONUS, //77
  344. APPLY_RESIST_WARRIOR, //78
  345. APPLY_RESIST_ASSASSIN , //79
  346. APPLY_RESIST_SURA, //80
  347. APPLY_RESIST_SHAMAN, //81
  348. APPLY_ENERGY, //82
  349. APPLY_DEF_GRADE, // 83 ąćľî·Â. DEF_GRADE_BONUS´Â Ŭ¶óżˇĽ­ µÎąč·Î ş¸ż©Áö´Â ŔǵµµČ ąö±×(...)°ˇ ŔÖ´Ů.
  350. APPLY_COSTUME_ATTR_BONUS, // 84 ÄÚ˝şĆ¬ ľĆŔĚĹŰżˇ şŮŔş ĽÓĽşÄˇ ş¸łĘ˝ş
  351. APPLY_MAGIC_ATTBONUS_PER, // 85 ¸¶ąý °ř°Ý·Â +x%
  352. APPLY_MELEE_MAGIC_ATTBONUS_PER, // 86 ¸¶ąý + ąĐ¸® °ř°Ý·Â +x%
  353.  
  354. APPLY_RESIST_ICE, // 87 łĂ±â ŔúÇ×
  355. APPLY_RESIST_EARTH, // 88 ´ëÁö ŔúÇ×
  356. APPLY_RESIST_DARK, // 89 ľîµŇ ŔúÇ×
  357.  
  358. APPLY_ANTI_CRITICAL_PCT, //90 Ĺ©¸®ĆĽÄĂ ŔúÇ×
  359. APPLY_ANTI_PENETRATE_PCT, //91 °üĹëŸ°Ý ŔúÇ×
  360.  
  361. MAX_APPLY_NUM, //
  362. };
  363.  
  364. enum EImmuneFlags
  365. {
  366. IMMUNE_PARA = (1 << 0),
  367. IMMUNE_CURSE = (1 << 1),
  368. IMMUNE_STUN = (1 << 2),
  369. IMMUNE_SLEEP = (1 << 3),
  370. IMMUNE_SLOW = (1 << 4),
  371. IMMUNE_POISON = (1 << 5),
  372. IMMUNE_TERROR = (1 << 6),
  373. };
  374.  
  375. #pragma pack(push)
  376. #pragma pack(1)
  377. typedef struct SItemLimit
  378. {
  379. BYTE bType;
  380. long lValue;
  381. } TItemLimit;
  382.  
  383. typedef struct SItemApply
  384. {
  385. BYTE bType;
  386. long lValue;
  387. } TItemApply;
  388.  
  389. typedef struct SItemTable
  390. {
  391. DWORD dwVnum;
  392. DWORD dwVnumRange;
  393. char szName[ITEM_NAME_MAX_LEN + 1];
  394. char szLocaleName[ITEM_NAME_MAX_LEN + 1];
  395. BYTE bType;
  396. BYTE bSubType;
  397.  
  398. BYTE bWeight;
  399. BYTE bSize;
  400.  
  401. DWORD dwAntiFlags;
  402. DWORD dwFlags;
  403. DWORD dwWearFlags;
  404. DWORD dwImmuneFlag;
  405.  
  406. DWORD dwIBuyItemPrice;
  407. DWORD dwISellItemPrice;
  408.  
  409. TItemLimit aLimits[ITEM_LIMIT_MAX_NUM];
  410. TItemApply aApplies[ITEM_APPLY_MAX_NUM];
  411. long alValues[ITEM_VALUES_MAX_NUM];
  412. long alSockets[ITEM_SOCKET_MAX_NUM];
  413. DWORD dwRefinedVnum;
  414. WORD wRefineSet;
  415. BYTE bAlterToMagicItemPct;
  416. BYTE bSpecular;
  417. BYTE bGainSocketPct;
  418. } TItemTable;
  419.  
  420. // typedef struct SItemTable
  421. // {
  422. // DWORD dwVnum;
  423. // char szItemName[ITEM_NAME_MAX_LEN + 1];
  424. // BYTE bType;
  425. // BYTE bSubType;
  426. // BYTE bSize;
  427. // DWORD dwAntiFlags;
  428. // DWORD dwFlags;
  429. // DWORD dwWearFlags;
  430. // DWORD dwIBuyItemPrice;
  431. // DWORD dwISellItemPrice;
  432. // TItemLimit aLimits[ITEM_LIMIT_MAX_NUM];
  433. // TItemApply aApplies[ITEM_APPLY_MAX_NUM];
  434. // long alValues[ITEM_VALUES_MAX_NUM];
  435. // long alSockets[ITEM_SOCKET_MAX_NUM];
  436. // DWORD dwRefinedVnum;
  437. // BYTE bSpecular;
  438. // DWORD dwIconNumber;
  439. // } TItemTable;
  440. #pragma pack(pop)
  441.  
  442. public:
  443. CItemData();
  444. virtual ~CItemData();
  445.  
  446. void Clear();
  447. void SetSummary(const std::string& c_rstSumm);
  448. void SetDescription(const std::string& c_rstDesc);
  449.  
  450. CGraphicThing * GetModelThing();
  451. CGraphicThing * GetSubModelThing();
  452. CGraphicThing * GetDropModelThing();
  453. CGraphicSubImage * GetIconImage();
  454.  
  455. DWORD GetLODModelThingCount();
  456. BOOL GetLODModelThingPointer(DWORD dwIndex, CGraphicThing ** ppModelThing);
  457.  
  458. DWORD GetAttachingDataCount();
  459. BOOL GetCollisionDataPointer(DWORD dwIndex, const NRaceData::TAttachingData ** c_ppAttachingData);
  460. BOOL GetAttachingDataPointer(DWORD dwIndex, const NRaceData::TAttachingData ** c_ppAttachingData);
  461.  
  462. /////
  463. const TItemTable* GetTable() const;
  464. DWORD GetIndex() const;
  465. const char * GetName() const;
  466. const char * GetDescription() const;
  467. const char * GetSummary() const;
  468. BYTE GetType() const;
  469. BYTE GetSubType() const;
  470. UINT GetRefine() const;
  471. const char* GetUseTypeString() const;
  472. DWORD GetWeaponType() const;
  473. BYTE GetSize() const;
  474. BOOL IsAntiFlag(DWORD dwFlag) const;
  475. BOOL IsFlag(DWORD dwFlag) const;
  476. BOOL IsWearableFlag(DWORD dwFlag) const;
  477. BOOL HasNextGrade() const;
  478. DWORD GetWearFlags() const;
  479. DWORD GetIBuyItemPrice() const;
  480. DWORD GetISellItemPrice() const;
  481. BOOL GetLimit(BYTE byIndex, TItemLimit * pItemLimit) const;
  482. BOOL GetApply(BYTE byIndex, TItemApply * pItemApply) const;
  483. long GetValue(BYTE byIndex) const;
  484. long GetSocket(BYTE byIndex) const;
  485. long SetSocket(BYTE byIndex,DWORD value);
  486. int GetSocketCount() const;
  487. DWORD GetIconNumber() const;
  488.  
  489. UINT GetSpecularPoweru() const;
  490. float GetSpecularPowerf() const;
  491.  
  492. /////
  493.  
  494. BOOL IsEquipment() const;
  495.  
  496. /////
  497.  
  498. //BOOL LoadItemData(const char * c_szFileName);
  499. void SetDefaultItemData(const char * c_szIconFileName, const char * c_szModelFileName = NULL);
  500. void SetItemTableData(TItemTable * pItemTable);
  501.  
  502. protected:
  503. void __LoadFiles();
  504. void __SetIconImage(const char * c_szFileName);
  505.  
  506. protected:
  507. std::string m_strModelFileName;
  508. std::string m_strSubModelFileName;
  509. std::string m_strDropModelFileName;
  510. std::string m_strIconFileName;
  511. std::string m_strDescription;
  512. std::string m_strSummary;
  513. std::vector<std::string> m_strLODModelFileNameVector;
  514.  
  515. CGraphicThing * m_pModelThing;
  516. CGraphicThing * m_pSubModelThing;
  517. CGraphicThing * m_pDropModelThing;
  518. CGraphicSubImage * m_pIconImage;
  519. std::vector<CGraphicThing *> m_pLODModelThingVector;
  520.  
  521. NRaceData::TAttachingDataVector m_AttachingDataVector;
  522. DWORD m_dwVnum;
  523. TItemTable m_ItemTable;
  524.  
  525. public:
  526. static void DestroySystem();
  527.  
  528. static CItemData* New();
  529. static void Delete(CItemData* pkItemData);
  530.  
  531. static CDynamicPool<CItemData> ms_kPool;
  532. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement