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