1. #ifndef __INC_METIN2_ITEM_LENGTH_H__
  2. #define __INC_METIN2_ITEM_LENGTH_H__
  3. enum EItemMisc
  4. {
  5. ITEM_NAME_MAX_LEN = 24,
  6. ITEM_VALUES_MAX_NUM = 6,
  7. ITEM_SMALL_DESCR_MAX_LEN = 256,
  8. ITEM_LIMIT_MAX_NUM = 2,
  9. ITEM_APPLY_MAX_NUM = 3,
  10. ITEM_SOCKET_MAX_NUM = 4,
  11. ITEM_MAX_COUNT = 200,
  12. ITEM_ATTRIBUTE_MAX_NUM = 15,
  13. ITEM_ATTRIBUTE_MAX_LEVEL = 5,
  14. ITEM_AWARD_WHY_MAX_LEN = 50,
  15. REFINE_MATERIAL_MAX_NUM = 5,
  16. ITEM_ELK_VNUM = 50026,
  17. #ifdef ENABLE_ENCHANT_SYSTEM
  18. COSTUME_ATTRIBUTE_MAX_NUM = 3,
  19. #endif
  20. };
  21. const BYTE ITEM_SOCKET_REMAIN_SEC = 0;
  22. enum EItemValueIdice
  23. {
  24. ITEM_VALUE_DRAGON_SOUL_POLL_OUT_BONUS_IDX = 0,
  25. ITEM_VALUE_CHARGING_AMOUNT_IDX = 0,
  26. ITEM_VALUE_SECONDARY_COIN_UNIT_IDX = 0,
  27. };
  28. enum EItemDragonSoulSockets
  29. {
  30. ITEM_SOCKET_DRAGON_SOUL_ACTIVE_IDX = 2,
  31. ITEM_SOCKET_CHARGING_AMOUNT_IDX = 2,
  32. };
  33. // 헐 이거 미친거 아니야?
  34. // 나중에 소켓 확장하면 어쩌려고 이지랄 -_-;;;
  35. enum EItemUniqueSockets
  36. {
  37. ITEM_SOCKET_UNIQUE_SAVE_TIME = ITEM_SOCKET_MAX_NUM - 2,
  38. ITEM_SOCKET_UNIQUE_REMAIN_TIME = ITEM_SOCKET_MAX_NUM - 1
  39. };
  40. enum EItemTypes
  41. {
  42. ITEM_NONE, //0
  43. ITEM_WEAPON, //1//무기
  44. ITEM_ARMOR, //2//갑옷
  45. ITEM_USE, //3//아이템 사용
  46. ITEM_AUTOUSE, //4
  47. ITEM_MATERIAL, //5
  48. ITEM_SPECIAL, //6 //스페셜 아이템
  49. ITEM_TOOL, //7
  50. ITEM_LOTTERY, //8//복권
  51. ITEM_ELK, //9//돈
  52. ITEM_METIN, //10
  53. ITEM_CONTAINER, //11
  54. ITEM_FISH, //12//낚시
  55. ITEM_ROD, //13
  56. ITEM_RESOURCE, //14
  57. ITEM_CAMPFIRE, //15
  58. ITEM_UNIQUE, //16
  59. ITEM_SKILLBOOK, //17
  60. ITEM_QUEST, //18
  61. ITEM_POLYMORPH, //19
  62. ITEM_TREASURE_BOX, //20//보물상자
  63. ITEM_TREASURE_KEY, //21//보물상자 열쇠
  64. ITEM_SKILLFORGET, //22
  65. ITEM_GIFTBOX, //23
  66. ITEM_PICK, //24
  67. ITEM_HAIR, //25//머리
  68. ITEM_TOTEM, //26//토템
  69. ITEM_BLEND, //27//생성될때 랜덤하게 속성이 붙는 약물
  70. ITEM_COSTUME, //28//코스츔 아이템 (2011년 8월 추가된 코스츔 시스템용 아이템)
  71. ITEM_DS, //29 //용혼석
  72. ITEM_SPECIAL_DS, //30 // 특수한 용혼석 (DS_SLOT에 착용하는 UNIQUE 아이템이라 생각하면 됨)
  73. ITEM_EXTRACT, //31 추출도구.
  74. ITEM_SECONDARY_COIN, //32 ?? 명도전??
  75. ITEM_RING, //33 반지
  76. ITEM_BELT, //34 벨트
  77. ITEM_PET, //36
  78. #ifdef __ATTR_TRANSFER_SYSTEM__
  79. ITEM_TRANSFER_SCROLL, //37
  80. #endif
  81. ITEM_GACHA, //35
  82. #ifdef AHMET_TILSIM_SYSTEM
  83. ITEM_TALISMAN, //38
  84. #endif
  85. };
  86. enum EMetinSubTypes
  87. {
  88. METIN_NORMAL,
  89. METIN_GOLD,
  90. };
  91. enum EWeaponSubTypes
  92. {
  93. WEAPON_SWORD,
  94. WEAPON_DAGGER,
  95. WEAPON_BOW,
  96. WEAPON_TWO_HANDED,
  97. WEAPON_BELL,
  98. WEAPON_FAN,
  99. WEAPON_ARROW,
  100. WEAPON_MOUNT_SPEAR,
  101. WEAPON_CLAW,
  102. WEAPON_NUM_TYPES,
  103. };
  104. enum EArmorSubTypes
  105. {
  106. ARMOR_BODY,
  107. ARMOR_HEAD,
  108. ARMOR_SHIELD,
  109. ARMOR_WRIST,
  110. ARMOR_FOOTS,
  111. ARMOR_NECK,
  112. ARMOR_EAR,
  113. ARMOR_NUM_TYPES
  114. };
  115. enum ECostumeSubTypes
  116. {
  117. COSTUME_BODY = ARMOR_BODY, // [중요!!] ECostumeSubTypes enum value는 종류별로 EArmorSubTypes의 그것과 같아야 함.
  118. COSTUME_HAIR = ARMOR_HEAD, // 이는 코스츔 아이템에 추가 속성을 붙이겠다는 사업부의 요청에 따라서 기존 로직을 활용하기 위함임.
  119. COSTUME_ACCE,
  120. #ifdef __WEAPON_COSTUME_SYSTEM__
  121. COSTUME_WEAPON,
  122. #endif
  123. COSTUME_NUM_TYPES,
  124. };
  125. enum EDragonSoulSubType
  126. {
  127. DS_SLOT1,
  128. DS_SLOT2,
  129. DS_SLOT3,
  130. DS_SLOT4,
  131. DS_SLOT5,
  132. DS_SLOT6,
  133. DS_SLOT_MAX,
  134. };
  135. enum EDragonSoulGradeTypes
  136. {
  137. DRAGON_SOUL_GRADE_NORMAL,
  138. DRAGON_SOUL_GRADE_BRILLIANT,
  139. DRAGON_SOUL_GRADE_RARE,
  140. DRAGON_SOUL_GRADE_ANCIENT,
  141. DRAGON_SOUL_GRADE_LEGENDARY,
  142. #ifdef ENABLE_DS_GRADE_MYTH
  143. DRAGON_SOUL_GRADE_MYTH,
  144. #endif
  145. DRAGON_SOUL_GRADE_MAX,
  146. };
  147. enum EDragonSoulStepTypes
  148. {
  149. DRAGON_SOUL_STEP_LOWEST,
  150. DRAGON_SOUL_STEP_LOW,
  151. DRAGON_SOUL_STEP_MID,
  152. DRAGON_SOUL_STEP_HIGH,
  153. DRAGON_SOUL_STEP_HIGHEST,
  154. DRAGON_SOUL_STEP_MAX,
  155. };
  156. #define DRAGON_SOUL_STRENGTH_MAX 7
  157. enum EDSInventoryMaxNum
  158. {
  159. DRAGON_SOUL_INVENTORY_MAX_NUM = DS_SLOT_MAX * DRAGON_SOUL_GRADE_MAX * DRAGON_SOUL_BOX_SIZE,
  160. };
  161. enum EFishSubTypes
  162. {
  163. FISH_ALIVE,
  164. FISH_DEAD,
  165. };
  166. enum EResourceSubTypes
  167. {
  168. RESOURCE_FISHBONE,
  169. RESOURCE_WATERSTONEPIECE,
  170. RESOURCE_WATERSTONE,
  171. RESOURCE_BLOOD_PEARL,
  172. RESOURCE_BLUE_PEARL,
  173. RESOURCE_WHITE_PEARL,
  174. RESOURCE_BUCKET,
  175. RESOURCE_CRYSTAL,
  176. RESOURCE_GEM,
  177. RESOURCE_STONE,
  178. RESOURCE_METIN,
  179. RESOURCE_ORE,
  180. };
  181. enum EUniqueSubTypes
  182. {
  183. UNIQUE_NONE,
  184. UNIQUE_BOOK,
  185. UNIQUE_SPECIAL_RIDE,
  186. UNIQUE_SPECIAL_MOUNT_RIDE,
  187. };
  188. enum EUseSubTypes
  189. {
  190. USE_POTION, // 0
  191. USE_TALISMAN,
  192. USE_TUNING,
  193. USE_MOVE,
  194. USE_TREASURE_BOX,
  195. USE_MONEYBAG,
  196. USE_BAIT,
  197. USE_ABILITY_UP,
  198. USE_AFFECT,
  199. USE_CREATE_STONE,
  200. USE_SPECIAL, // 10
  201. USE_POTION_NODELAY,
  202. USE_CLEAR,
  203. USE_INVISIBILITY,
  204. USE_DETACHMENT,
  205. USE_BUCKET,
  206. USE_POTION_CONTINUE,
  207. USE_CLEAN_SOCKET,
  208. USE_CHANGE_ATTRIBUTE,
  209. USE_ADD_ATTRIBUTE,
  210. USE_ADD_ACCESSORY_SOCKET, // 20
  211. USE_PUT_INTO_ACCESSORY_SOCKET,
  212. USE_ADD_ATTRIBUTE2,
  213. USE_RECIPE,
  214. USE_CHANGE_ATTRIBUTE2,
  215. USE_BIND,
  216. USE_UNBIND,
  217. USE_TIME_CHARGE_PER,
  218. USE_TIME_CHARGE_FIX, // 28
  219. USE_PUT_INTO_BELT_SOCKET, // 29 벨트 소켓에 사용할 수 있는 아이템
  220. USE_PUT_INTO_RING_SOCKET,
  221. #ifdef __NEW_ENCHANT_ATTR__
  222. USE_CHANGE_ATTRIBUTE3,
  223. #endif
  224. USE_ADD_ATTRIBUTE_COSTUME,
  225. USE_CHANGE_ATTRIBUTE_COSTUME, // 30 반지 소켓에 사용할 수 있는 아이템 (유니크 반지 말고, 새로 추가된 반지 슬롯)
  226. #ifdef ENABLE_ENCHANT_SYSTEM
  227. USE_CHANGE_COSTUME_ATTR, // 31
  228. USE_RESET_COSTUME_ATTR, // 32
  229. #endif
  230. #ifdef __MOUNT_SYSTEM__
  231. USE_MOUNT,
  232. #endif
  233. #ifdef WJ_EXTENDED_PET_SYSTEM
  234. USE_PET,
  235. #endif
  236. #ifdef __COSTUME_ATTR_SYSTEM__
  237. USE_COSTUME_ENCHANT,
  238. USE_COSTUME_TRANSFORM,
  239. #endif
  240. };
  241. enum EExtractSubTypes
  242. {
  243. EXTRACT_DRAGON_SOUL,
  244. EXTRACT_DRAGON_HEART,
  245. };
  246. enum EAutoUseSubTypes
  247. {
  248. AUTOUSE_POTION,
  249. AUTOUSE_ABILITY_UP,
  250. AUTOUSE_BOMB,
  251. AUTOUSE_GOLD,
  252. AUTOUSE_MONEYBAG,
  253. AUTOUSE_TREASURE_BOX
  254. };
  255. enum EMaterialSubTypes
  256. {
  257. MATERIAL_LEATHER,
  258. MATERIAL_BLOOD,
  259. MATERIAL_ROOT,
  260. MATERIAL_NEEDLE,
  261. MATERIAL_JEWEL,
  262. MATERIAL_DS_REFINE_NORMAL,
  263. MATERIAL_DS_REFINE_BLESSED,
  264. MATERIAL_DS_REFINE_HOLLY,
  265. };
  266. enum ESpecialSubTypes
  267. {
  268. SPECIAL_MAP,
  269. SPECIAL_KEY,
  270. SPECIAL_DOC,
  271. SPECIAL_SPIRIT,
  272. };
  273. enum EToolSubTypes
  274. {
  275. TOOL_FISHING_ROD
  276. };
  277. enum ELotterySubTypes
  278. {
  279. LOTTERY_TICKET,
  280. LOTTERY_INSTANT
  281. };
  282. enum EItemFlag
  283. {
  284. ITEM_FLAG_REFINEABLE = (1 << 0),
  285. ITEM_FLAG_SAVE = (1 << 1),
  286. ITEM_FLAG_STACKABLE = (1 << 2), // 여러개 합칠 수 있음
  287. ITEM_FLAG_COUNT_PER_1GOLD = (1 << 3),
  288. ITEM_FLAG_SLOW_QUERY = (1 << 4),
  289. ITEM_FLAG_UNUSED01 = (1 << 5), // UNUSED
  290. ITEM_FLAG_UNIQUE = (1 << 6),
  291. ITEM_FLAG_MAKECOUNT = (1 << 7),
  292. ITEM_FLAG_IRREMOVABLE = (1 << 8),
  293. ITEM_FLAG_CONFIRM_WHEN_USE = (1 << 9),
  294. ITEM_FLAG_QUEST_USE = (1 << 10),
  295. ITEM_FLAG_QUEST_USE_MULTIPLE = (1 << 11),
  296. ITEM_FLAG_QUEST_GIVE = (1 << 12),
  297. ITEM_FLAG_LOG = (1 << 13),
  298. ITEM_FLAG_APPLICABLE = (1 << 14),
  299. };
  300. enum EItemAntiFlag
  301. {
  302. ITEM_ANTIFLAG_FEMALE = (1 << 0),
  303. ITEM_ANTIFLAG_MALE = (1 << 1),
  304. ITEM_ANTIFLAG_WARRIOR = (1 << 2),
  305. ITEM_ANTIFLAG_ASSASSIN = (1 << 3),
  306. ITEM_ANTIFLAG_SURA = (1 << 4),
  307. ITEM_ANTIFLAG_SHAMAN = (1 << 5),
  308. ITEM_ANTIFLAG_GET = (1 << 6),
  309. ITEM_ANTIFLAG_DROP = (1 << 7),
  310. ITEM_ANTIFLAG_SELL = (1 << 8),
  311. ITEM_ANTIFLAG_EMPIRE_A = (1 << 9),
  312. ITEM_ANTIFLAG_EMPIRE_B = (1 << 10),
  313. ITEM_ANTIFLAG_EMPIRE_C = (1 << 11),
  314. ITEM_ANTIFLAG_SAVE = (1 << 12),
  315. ITEM_ANTIFLAG_GIVE = (1 << 13),
  316. ITEM_ANTIFLAG_PKDROP = (1 << 14),
  317. ITEM_ANTIFLAG_STACK = (1 << 15),
  318. ITEM_ANTIFLAG_MYSHOP = (1 << 16),
  319. ITEM_ANTIFLAG_SAFEBOX = (1 << 17),
  320. ITEM_ANTIFLAG_WOLFMAN = (1 << 18),
  321. };
  322. enum EItemWearableFlag
  323. {
  324. WEARABLE_BODY = (1 << 0),
  325. WEARABLE_HEAD = (1 << 1),
  326. WEARABLE_FOOTS = (1 << 2),
  327. WEARABLE_WRIST = (1 << 3),
  328. WEARABLE_WEAPON = (1 << 4),
  329. WEARABLE_NECK = (1 << 5),
  330. WEARABLE_EAR = (1 << 6),
  331. WEARABLE_UNIQUE = (1 << 7),
  332. WEARABLE_SHIELD = (1 << 8),
  333. WEARABLE_ARROW = (1 << 9),
  334. WEARABLE_HAIR = (1 << 10),
  335. WEARABLE_ABILITY = (1 << 11),
  336. WEARABLE_COSTUME_BODY = (1 << 12),
  337. WEARABLE_COSTUME_HAIR = (1 << 13),
  338. WEARABLE_COSTUME_ACCE = (1 << 14),
  339. #ifdef __WEAPON_COSTUME_SYSTEM__
  340. WEARABLE_COSTUME_WEAPON = (1 << 15),
  341. #endif
  342. #ifdef __MOUNT_SYSTEM__
  343. WEARABLE_COSTUME_MOUNT = (1 << 16),
  344. #endif
  345. #ifdef WJ_EXTENDED_PET_SYSTEM
  346. WEARABLE_PET = (1 << 17),
  347. #endif
  348. };
  349. enum ELimitTypes
  350. {
  351. LIMIT_NONE,
  352. LIMIT_LEVEL,
  353. LIMIT_STR,
  354. LIMIT_DEX,
  355. LIMIT_INT,
  356. LIMIT_CON,
  357. LIMIT_PCBANG,
  358. /// 착용 여부와 상관 없이 실시간으로 시간 차감 (socket0에 소멸 시간이 박힘: unix_timestamp 타입)
  359. LIMIT_REAL_TIME,
  360. /// 아이템을 맨 처음 사용(혹은 착용) 한 순간부터 리얼타임 타이머 시작
  361. /// 최초 사용 전에는 socket0에 사용가능시간(초단위, 0이면 프로토의 limit value값 사용) 값이 쓰여있다가
  362. /// 아이템 사용시 socket1에 사용 횟수가 박히고 socket0에 unix_timestamp 타입의 소멸시간이 박힘.
  363. LIMIT_REAL_TIME_START_FIRST_USE,
  364. /// 아이템을 착용 중일 때만 사용 시간이 차감되는 아이템
  365. /// socket0에 남은 시간이 초단위로 박힘. (아이템 최초 사용시 해당 값이 0이면 프로토의 limit value값을 socket0에 복사)
  366. LIMIT_TIMER_BASED_ON_WEAR,
  367. LIMIT_MAX_NUM
  368. };
  369. enum EAttrAddonTypes
  370. {
  371. ATTR_ADDON_NONE,
  372. // positive values are reserved for set
  373. ATTR_DAMAGE_ADDON = -1,
  374. };
  375. enum ERefineType
  376. {
  377. REFINE_TYPE_NORMAL,
  378. REFINE_TYPE_NOT_USED1,
  379. REFINE_TYPE_SCROLL,
  380. REFINE_TYPE_HYUNIRON,
  381. REFINE_TYPE_MONEY_ONLY,
  382. REFINE_TYPE_MUSIN,
  383. REFINE_TYPE_BDRAGON,
  384. };
  385. #endif

Item_length.h