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