itemdb.hpp 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967
  1. // Copyright (c) rAthena Dev Teams - Licensed under GNU GPL
  2. // For more information, see LICENCE in the main folder
  3. #ifndef ITEMDB_HPP
  4. #define ITEMDB_HPP
  5. #include "../common/db.hpp"
  6. #include "../common/mmo.hpp" // ITEM_NAME_LENGTH
  7. ///Maximum allowed Item ID (range: 1 ~ 65,534)
  8. #define MAX_ITEMID USHRT_MAX
  9. ///Use apple for unknown items.
  10. #define UNKNOWN_ITEM_ID 512
  11. /// The maximum number of item delays
  12. #define MAX_ITEMDELAYS 10
  13. ///Designed for search functions, species max number of matches to display.
  14. #define MAX_SEARCH 5
  15. ///Maximum amount of items a combo may require
  16. #define MAX_ITEMS_PER_COMBO 6
  17. #define MAX_ITEMGROUP_RANDGROUP 4 ///Max group for random item (increase this when needed). TODO: Remove this limit and use dynamic size if needed
  18. #define MAX_ROULETTE_LEVEL 7 /** client-defined value **/
  19. #define MAX_ROULETTE_COLUMNS 9 /** client-defined value **/
  20. #define CARD0_FORGE 0x00FF
  21. #define CARD0_CREATE 0x00FE
  22. #define CARD0_PET 0x0100
  23. ///Marks if the card0 given is "special" (non-item id used to mark pets/created items. [Skotlex]
  24. #define itemdb_isspecial(i) (i == CARD0_FORGE || i == CARD0_CREATE || i == CARD0_PET)
  25. ///Enum of item id (for hardcoded purpose)
  26. enum item_itemid
  27. {
  28. ITEMID_RED_POTION = 501,
  29. ITEMID_YELLOW_POTION = 503,
  30. ITEMID_WHITE_POTION = 504,
  31. ITEMID_BLUE_POTION = 505,
  32. ITEMID_APPLE = 512,
  33. ITEMID_HOLY_WATER = 523,
  34. ITEMID_PUMPKIN = 535,
  35. ITEMID_RED_SLIM_POTION = 545,
  36. ITEMID_YELLOW_SLIM_POTION = 546,
  37. ITEMID_WHITE_SLIM_POTION = 547,
  38. ITEMID_WING_OF_FLY = 601,
  39. ITEMID_WING_OF_BUTTERFLY = 602,
  40. ITEMID_ANODYNE = 605,
  41. ITEMID_ALOEBERA = 606,
  42. ITEMID_MAGNIFIER = 611,
  43. ITEMID_POISON_BOTTLE = 678,
  44. ITEMID_EMPTY_BOTTLE = 713,
  45. ITEMID_EMPERIUM = 714,
  46. ITEMID_RED_GEMSTONE = 716,
  47. ITEMID_BLUE_GEMSTONE = 717,
  48. ITEMID_ORIDECON_STONE = 756,
  49. ITEMID_ALCOHOL = 970,
  50. ITEMID_ORIDECON = 984,
  51. ITEMID_ANVIL = 986,
  52. ITEMID_ORIDECON_ANVIL = 987,
  53. ITEMID_GOLDEN_ANVIL = 988,
  54. ITEMID_EMPERIUM_ANVIL = 989,
  55. ITEMID_BLOODY_RED = 990,
  56. ITEMID_CRYSTAL_BLUE = 991,
  57. ITEMID_WIND_OF_VERDURE = 992,
  58. ITEMID_YELLOW_LIVE = 993,
  59. ITEMID_FLAME_HEART = 994,
  60. ITEMID_MISTIC_FROZEN = 995,
  61. ITEMID_ROUGH_WIND = 996,
  62. ITEMID_GREAT_NATURE = 997,
  63. ITEMID_IRON = 998,
  64. ITEMID_STEEL = 999,
  65. ITEMID_STAR_CRUMB = 1000,
  66. ITEMID_IRON_ORE = 1002,
  67. ITEMID_PHRACON = 1010,
  68. ITEMID_EMVERETARCON = 1011,
  69. ITEMID_TRAP = 1065,
  70. ITEMID_ANGRA_MANYU = 1599,
  71. ITEMID_PAINT_BRUSH = 6122,
  72. ITEMID_MAGIC_GEAR_FUEL = 6146,
  73. ITEMID_STRANGE_EMBRYO = 6415,
  74. ITEMID_STONE = 7049,
  75. ITEMID_FIRE_BOTTLE = 7135,
  76. ITEMID_ACID_BOTTLE = 7136,
  77. ITEMID_MAN_EATER_BOTTLE = 7137,
  78. ITEMID_MINI_BOTTLE = 7138,
  79. ITEMID_COATING_BOTTLE = 7139,
  80. ITEMID_FRAGMENT_OF_CRYSTAL = 7321,
  81. ITEMID_SKULL_ = 7420,
  82. ITEMID_TOKEN_OF_SIEGFRIED = 7621,
  83. ITEMID_TRAP_ALLOY = 7940,
  84. ITEMID_MERCENARY_RED_POTION = 12184,
  85. ITEMID_MERCENARY_BLUE_POTION = 12185,
  86. ITEMID_GIANT_FLY_WING = 12212,
  87. ITEMID_NEURALIZER = 12213,
  88. ITEMID_M_CENTER_POTION = 12241,
  89. ITEMID_M_AWAKENING_POTION = 12242,
  90. ITEMID_M_BERSERK_POTION = 12243,
  91. ITEMID_N_FLY_WING = 12323,
  92. ITEMID_N_BUTTERFLY_WING = 12324,
  93. ITEMID_NOVICE_MAGNIFIER = 12325,
  94. ITEMID_ANCILLA = 12333,
  95. ITEMID_DUN_TELE_SCROLL3 = 12352,
  96. ITEMID_REINS_OF_MOUNT = 12622,
  97. ITEMID_NOBLE_NAMEPLATE = 12705,
  98. ITEMID_SILVER_BULLET = 13201,
  99. ITEMID_PURIFICATION_BULLET = 13220,
  100. ITEMID_SILVER_BULLET_ = 13221,
  101. ITEMID_DUN_TELE_SCROLL1 = 14527,
  102. ITEMID_DUN_TELE_SCROLL2 = 14581,
  103. ITEMID_WOB_RUNE = 14582,
  104. ITEMID_WOB_SCHWALTZ = 14583,
  105. ITEMID_WOB_RACHEL = 14584,
  106. ITEMID_WOB_LOCAL = 14585,
  107. ITEMID_SIEGE_TELEPORT_SCROLL = 14591,
  108. };
  109. ///Rune Knight
  110. enum rune_item_list
  111. {
  112. ITEMID_NAUTHIZ = 12725,
  113. ITEMID_RAIDO,
  114. ITEMID_BERKANA,
  115. ITEMID_ISA,
  116. ITEMID_OTHILA,
  117. ITEMID_URUZ,
  118. ITEMID_THURISAZ,
  119. ITEMID_WYRD,
  120. ITEMID_HAGALAZ,
  121. ITEMID_LUX_ANIMA = 22540,
  122. };
  123. ///Mechanic
  124. enum mechanic_item_list
  125. {
  126. ITEMID_ACCELERATOR = 2800,
  127. ITEMID_HOVERING_BOOSTER,
  128. ITEMID_SUICIDAL_DEVICE,
  129. ITEMID_SHAPE_SHIFTER,
  130. ITEMID_COOLING_DEVICE,
  131. ITEMID_MAGNETIC_FIELD_GENERATOR,
  132. ITEMID_BARRIER_BUILDER,
  133. ITEMID_REPAIR_KIT,
  134. ITEMID_CAMOUFLAGE_GENERATOR,
  135. ITEMID_HIGH_QUALITY_COOLER,
  136. ITEMID_SPECIAL_COOLER,
  137. ITEMID_SCARLET_PTS = 6360,
  138. ITEMID_INDIGO_PTS,
  139. ITEMID_YELLOW_WISH_PTS,
  140. ITEMID_LIME_GREEN_PTS,
  141. ITEMID_REPAIR_A = 12392,
  142. ITEMID_REPAIR_B,
  143. ITEMID_REPAIR_C,
  144. };
  145. ///Genetic
  146. enum genetic_item_list
  147. {
  148. ITEMID_SEED_OF_HORNY_PLANT = 6210,
  149. ITEMID_BLOODSUCK_PLANT_SEED,
  150. ITEMID_BOMB_MUSHROOM_SPORE,
  151. ITEMID_HP_INCREASE_POTION_SMALL = 12422,
  152. ITEMID_HP_INCREASE_POTION_MEDIUM,
  153. ITEMID_HP_INCREASE_POTION_LARGE,
  154. ITEMID_SP_INCREASE_POTION_SMALL,
  155. ITEMID_SP_INCREASE_POTION_MEDIUM,
  156. ITEMID_SP_INCREASE_POTION_LARGE,
  157. ITEMID_CONCENTRATED_WHITE_POTION_Z,
  158. ITEMID_SAVAGE_FULL_ROAST,
  159. ITEMID_COCKTAIL_WARG_BLOOD,
  160. ITEMID_MINOR_STEW,
  161. ITEMID_SIROMA_ICED_TEA,
  162. ITEMID_DROSERA_HERB_SALAD,
  163. ITEMID_PETITE_TAIL_NOODLES,
  164. ITEMID_BLACK_MASS,
  165. ITEMID_VITATA500,
  166. ITEMID_CONCENTRATED_CEROMAIN_SOUP,
  167. ITEMID_CURE_FREE = 12475,
  168. ITEMID_APPLE_BOMB = 13260,
  169. ITEMID_COCONUT_BOMB,
  170. ITEMID_MELON_BOMB,
  171. ITEMID_PINEAPPLE_BOMB,
  172. ITEMID_BANANA_BOMB,
  173. ITEMID_BLACK_LUMP,
  174. ITEMID_BLACK_HARD_LUMP,
  175. ITEMID_VERY_HARD_LUMP,
  176. ITEMID_MYSTERIOUS_POWDER,
  177. ITEMID_HP_INC_POTS_TO_THROW = 13275,
  178. ITEMID_HP_INC_POTM_TO_THROW,
  179. ITEMID_HP_INC_POTL_TO_THROW,
  180. ITEMID_SP_INC_POTS_TO_THROW,
  181. ITEMID_SP_INC_POTM_TO_THROW,
  182. ITEMID_SP_INC_POTL_TO_THROW,
  183. };
  184. ///Guillotine Cross
  185. enum poison_item_list
  186. {
  187. ITEMID_PARALYSE = 12717,
  188. ITEMID_LEECHESEND,
  189. ITEMID_OBLIVIONCURSE,
  190. ITEMID_DEATHHURT,
  191. ITEMID_TOXIN,
  192. ITEMID_PYREXIA,
  193. ITEMID_MAGICMUSHROOM,
  194. ITEMID_VENOMBLEED,
  195. };
  196. ///Item No Use List
  197. enum item_nouse_list
  198. {
  199. NOUSE_SITTING = 0x01,
  200. };
  201. ///Item job
  202. enum e_item_job
  203. {
  204. ITEMJ_NORMAL = 0x01,
  205. ITEMJ_UPPER = 0x02,
  206. ITEMJ_BABY = 0x04,
  207. ITEMJ_THIRD = 0x08,
  208. ITEMJ_THIRD_TRANS = 0x10,
  209. ITEMJ_THIRD_BABY = 0x20,
  210. };
  211. enum e_item_ammo
  212. {
  213. AMMO_ARROW = 1,
  214. AMMO_THROWABLE_DAGGER,
  215. AMMO_BULLET,
  216. AMMO_SHELL,
  217. AMMO_GRENADE,
  218. AMMO_SHURIKEN,
  219. AMMO_KUNAI,
  220. AMMO_CANNONBALL,
  221. AMMO_THROWABLE_ITEM, ///Sling items
  222. MAX_AMMO_TYPE,
  223. };
  224. #define AMMO_TYPE_ALL ((1<<MAX_AMMO_TYPE)-1)
  225. enum e_random_item_group {
  226. IG_BLUEBOX = 1,
  227. IG_VIOLETBOX,
  228. IG_CARDALBUM,
  229. IG_GIFTBOX,
  230. IG_SCROLLBOX,
  231. IG_FINDINGORE,
  232. IG_COOKIEBAG,
  233. IG_FIRSTAID,
  234. IG_HERB,
  235. IG_FRUIT,
  236. IG_MEAT,
  237. IG_CANDY,
  238. IG_JUICE,
  239. IG_FISH,
  240. IG_BOX,
  241. IG_GEMSTONE,
  242. IG_RESIST,
  243. IG_ORE,
  244. IG_FOOD,
  245. IG_RECOVERY,
  246. IG_MINERAL,
  247. IG_TAMING,
  248. IG_SCROLL,
  249. IG_QUIVER,
  250. IG_MASK,
  251. IG_ACCESORY,
  252. IG_JEWEL,
  253. IG_GIFTBOX_1,
  254. IG_GIFTBOX_2,
  255. IG_GIFTBOX_3,
  256. IG_GIFTBOX_4,
  257. IG_EGGBOY,
  258. IG_EGGGIRL,
  259. IG_GIFTBOXCHINA,
  260. IG_LOTTOBOX,
  261. IG_FOODBAG,
  262. IG_POTION,
  263. IG_REDBOX_2,
  264. IG_BLEUBOX,
  265. IG_REDBOX,
  266. IG_GREENBOX,
  267. IG_YELLOWBOX,
  268. IG_OLDGIFTBOX,
  269. IG_MAGICCARDALBUM,
  270. IG_HOMETOWNGIFT,
  271. IG_MASQUERADE,
  272. IG_TRESURE_BOX_WOE,
  273. IG_MASQUERADE_2,
  274. IG_EASTER_SCROLL,
  275. IG_PIERRE_TREASUREBOX,
  276. IG_CHERISH_BOX,
  277. IG_CHERISH_BOX_ORI,
  278. IG_LOUISE_COSTUME_BOX,
  279. IG_XMAS_GIFT,
  280. IG_FRUIT_BASKET,
  281. IG_IMPROVED_COIN_BAG,
  282. IG_INTERMEDIATE_COIN_BAG,
  283. IG_MINOR_COIN_BAG,
  284. IG_S_GRADE_COIN_BAG,
  285. IG_A_GRADE_COIN_BAG,
  286. IG_ADVANCED_WEAPONS_BOX,
  287. IG_SPLENDID_BOX,
  288. IG_CARDALBUM_ARMOR,
  289. IG_CARDALBUM_HELM,
  290. IG_CARDALBUM_ACC,
  291. IG_CARDALBUM_SHOES,
  292. IG_CARDALBUM_SHIELD,
  293. IG_CARDALBUM_WEAPON,
  294. IG_CARDALBUM_GARMENT,
  295. IG_FLAMEL_CARD,
  296. IG_SPECIAL_BOX,
  297. IG_TRESURE_BOX_WOE_,
  298. IG_RWC_PARTI_BOX,
  299. IG_RWC_FINAL_COMP_BOX,
  300. IG_GIFT_BUNDLE,
  301. IG_CARACAS_RING_BOX,
  302. IG_CRUMPLED_PAPER,
  303. IG_SOLO_GIFT_BASKET,
  304. IG_COUPLE_EVENT_BASKET,
  305. IG_GM_WARP_BOX,
  306. IG_FORTUNE_COOKIE1,
  307. IG_FORTUNE_COOKIE2,
  308. IG_FORTUNE_COOKIE3,
  309. IG_NEW_GIFT_ENVELOPE,
  310. IG_PASSION_FB_HAT_BOX,
  311. IG_COOL_FB_HAT_BOX,
  312. IG_VICTORY_FB_HAT_BOX,
  313. IG_GLORY_FB_HAT_BOX,
  314. IG_PASSION_HAT_BOX2,
  315. IG_COOL_HAT_BOX2,
  316. IG_VICTORY_HAT_BOX2,
  317. IG_ASPERSIO_5_SCROLL_BOX,
  318. IG_PET_EGG_SCROLL_BOX1,
  319. IG_PET_EGG_SCROLL_BOX2,
  320. IG_PET_EGG_SCROLL1,
  321. IG_PET_EGG_SCROLL2,
  322. IG_PET_EGG_SCROLL_BOX3,
  323. IG_PET_EGG_SCROLL_BOX4,
  324. IG_PET_EGG_SCROLL_BOX5,
  325. IG_PET_EGG_SCROLL3,
  326. IG_PET_EGG_SCROLL4,
  327. IG_PET_EGG_SCROLL5,
  328. IG_INFILTRATOR_BOX,
  329. IG_MURAMASA_BOX,
  330. IG_EXCALIBUR_BOX,
  331. IG_COMBAT_KNIFE_BOX,
  332. IG_COUNTER_DAGGER_BOX,
  333. IG_KAISER_KNUCKLE_BOX,
  334. IG_POLE_AXE_BOX,
  335. IG_MIGHTY_STAFF_BOX,
  336. IG_RIGHT_EPSILON_BOX,
  337. IG_BALISTAR_BOX,
  338. IG_DIARY_OF_GREAT_SAGE_BOX,
  339. IG_ASURA_BOX,
  340. IG_APPLE_OF_ARCHER_BOX,
  341. IG_BUNNY_BAND_BOX,
  342. IG_SAHKKAT_BOX,
  343. IG_LORD_CIRCLET_BOX,
  344. IG_ELVEN_EARS_BOX,
  345. IG_STEEL_FLOWER_BOX,
  346. IG_CRITICAL_RING_BOX,
  347. IG_EARRING_BOX,
  348. IG_RING_BOX,
  349. IG_NECKLACE_BOX,
  350. IG_GLOVE_BOX,
  351. IG_BROOCH_BOX,
  352. IG_ROSARY_BOX,
  353. IG_SAFETY_RING_BOX,
  354. IG_VESPER_CORE01_BOX,
  355. IG_VESPER_CORE02_BOX,
  356. IG_VESPER_CORE03_BOX,
  357. IG_VESPER_CORE04_BOX,
  358. IG_PET_EGG_SCROLL_BOX6,
  359. IG_PET_EGG_SCROLL_BOX7,
  360. IG_PET_EGG_SCROLL_BOX8,
  361. IG_PET_EGG_SCROLL_BOX9,
  362. IG_PET_EGG_SCROLL_BOX10,
  363. IG_PET_EGG_SCROLL_BOX11,
  364. IG_PET_EGG_SCROLL6,
  365. IG_PET_EGG_SCROLL7,
  366. IG_PET_EGG_SCROLL8,
  367. IG_PET_EGG_SCROLL9,
  368. IG_PET_EGG_SCROLL10,
  369. IG_PET_EGG_SCROLL11,
  370. IG_CP_HELM_SCROLL_BOX,
  371. IG_CP_SHIELD_SCROLL_BOX,
  372. IG_CP_ARMOR_SCROLL_BOX,
  373. IG_CP_WEAPON_SCROLL_BOX,
  374. IG_REPAIR_SCROLL_BOX,
  375. IG_SUPER_PET_EGG1,
  376. IG_SUPER_PET_EGG2,
  377. IG_SUPER_PET_EGG3,
  378. IG_SUPER_PET_EGG4,
  379. IG_SUPER_CARD_PET_EGG1,
  380. IG_SUPER_CARD_PET_EGG2,
  381. IG_SUPER_CARD_PET_EGG3,
  382. IG_SUPER_CARD_PET_EGG4,
  383. IG_VIGORGRA_PACKAGE1,
  384. IG_VIGORGRA_PACKAGE2,
  385. IG_VIGORGRA_PACKAGE3,
  386. IG_VIGORGRA_PACKAGE4,
  387. IG_VIGORGRA_PACKAGE5,
  388. IG_VIGORGRA_PACKAGE6,
  389. IG_VIGORGRA_PACKAGE7,
  390. IG_VIGORGRA_PACKAGE8,
  391. IG_VIGORGRA_PACKAGE9,
  392. IG_VIGORGRA_PACKAGE10,
  393. IG_VIGORGRA_PACKAGE11,
  394. IG_VIGORGRA_PACKAGE12,
  395. IG_PET_EGG_SCROLL12,
  396. IG_PET_EGG_SCROLL13,
  397. IG_PET_EGG_SCROLL14,
  398. IG_SUPER_PET_EGG5,
  399. IG_SUPER_PET_EGG6,
  400. IG_SUPER_PET_EGG7,
  401. IG_SUPER_PET_EGG8,
  402. IG_PET_EGG_SCROLL_E,
  403. IG_RAMEN_HAT_BOX,
  404. IG_MYSTERIOUS_TRAVEL_SACK1,
  405. IG_MYSTERIOUS_TRAVEL_SACK2,
  406. IG_MYSTERIOUS_TRAVEL_SACK3,
  407. IG_MYSTERIOUS_TRAVEL_SACK4,
  408. IG_MAGICIAN_CARD_BOX,
  409. IG_ACOLYTE_CARD_BOX,
  410. IG_ARCHER_CARD_BOX,
  411. IG_SWORDMAN_CARD_BOX,
  412. IG_THIEF_CARD_BOX,
  413. IG_MERCHANT_CARD_BOX,
  414. IG_HARD_CORE_SET_BOX,
  415. IG_KITTY_SET_BOX,
  416. IG_SOFT_CORE_SET_BOX,
  417. IG_DEVIRUCHI_SET_BOX,
  418. IG_MVP_HUNT_BOX,
  419. IG_BREWING_BOX,
  420. IG_XMAS_PET_SCROLL,
  421. IG_LUCKY_SCROLL08,
  422. IG_BR_SWORDPACKAGE,
  423. IG_BR_MAGEPACKAGE,
  424. IG_BR_ACOLPACKAGE,
  425. IG_BR_ARCHERPACKAGE,
  426. IG_BR_MERPACKAGE,
  427. IG_BR_THIEFPACKAGE,
  428. IG_ACIDBOMB_10_BOX,
  429. IG_BASIC_SIEGE_SUPPLY_BOX,
  430. IG_ADV_SIEGE_SUPPLY_BOX,
  431. IG_ELITE_SIEGE_SUPPLY_BOX,
  432. IG_SAKURA_SCROLL,
  433. IG_BEHOLDER_RING_BOX,
  434. IG_HALLOW_RING_BOX,
  435. IG_CLAMOROUS_RING_BOX,
  436. IG_CHEMICAL_RING_BOX,
  437. IG_INSECTICIDE_RING_BOX,
  438. IG_FISHER_RING_BOX,
  439. IG_DECUSSATE_RING_BOX,
  440. IG_BLOODY_RING_BOX,
  441. IG_SATANIC_RING_BOX,
  442. IG_DRAGOON_RING_BOX,
  443. IG_ANGEL_SCROLL,
  444. IG_DEVIL_SCROLL,
  445. IG_SURPRISE_SCROLL,
  446. IG_JULY7_SCROLL,
  447. IG_BACSOJIN_SCROLL,
  448. IG_ANIMAL_SCROLL,
  449. IG_HEART_SCROLL,
  450. IG_NEW_YEAR_SCROLL,
  451. IG_VALENTINE_PLEDGE_BOX,
  452. IG_OX_TAIL_SCROLL,
  453. IG_BUDDAH_SCROLL,
  454. IG_EVIL_INCARNATION,
  455. IG_F_CLOVER_BOX_MOUTH,
  456. IG_MOUTH_BUBBLE_GUM_BOX,
  457. IG_F_CLOVER_BOX_MOUTH2,
  458. IG_F_CLOVER_BOX_MOUTH4,
  459. IG_BGUM_BOX_IN_MOUTH2,
  460. IG_BGUM_BOX_IN_MOUTH4,
  461. IG_TW_OCTOBER_SCROLL,
  462. IG_MY_SCROLL1,
  463. IG_TW_NOV_SCROLL,
  464. IG_MY_SCROLL2,
  465. IG_PR_RESET_STONE_BOX,
  466. IG_FPR_RESET_STONE_BOX,
  467. IG_MAJESTIC_DEVIL_SCROLL,
  468. IG_LIFE_RIBBON_BOX,
  469. IG_LIFE_RIBBON_BOX2,
  470. IG_LIFE_RIBBON_BOX3,
  471. IG_MAGIC_CANDY_BOX10,
  472. IG_RWC2010_SUITCASEA,
  473. IG_RWC2010_SUITCASEB,
  474. IG_SAGITTARIUS_SCROLL,
  475. IG_SAGITTARIUS_SCR_BOX,
  476. IG_SAGITTAR_DIADEM_SCROLL,
  477. IG_SAGITTAR_DI_SCROLL_BOX,
  478. IG_CAPRI_CROWN_SCROLL,
  479. IG_CAPRI_CROWN_SCROLL_BOX,
  480. IG_CAPRICON_DI_SCROLL,
  481. IG_CAPRICON_DI_SCROLL_BOX,
  482. IG_AQUARIUS_DIADEM_SCROLL,
  483. IG_AQUARIUS_DI_SCROLL_BOX,
  484. IG_LOVELY_AQUARIUS_SCROLL,
  485. IG_LOVELY_AQUARIUS_BOX,
  486. IG_PISCES_DIADEM_SCROLL,
  487. IG_PISCES_DIADEM_BOX,
  488. IG_ENERGETIC_PISCES_SCROLL,
  489. IG_ENERGETIC_PISCES_BOX,
  490. IG_ARIES_SCROLL,
  491. IG_ARIES_SCROLL_BOX,
  492. IG_BOARDING_HALTER_BOX,
  493. IG_TAURUS_DIADEM_SCROLL,
  494. IG_TAURUS_DI_SCROLL_BOX,
  495. IG_UMBALA_SPIRIT_BOX2,
  496. IG_F_UMBALA_SPIRIT_BOX2,
  497. IG_TAURUS_CROWN_SCROLL,
  498. IG_TAURUS_CROWN_SCROLL_BOX,
  499. IG_GEMI_DIADEM_SCROLL,
  500. IG_GEMI_DIADEM_SCROLL_BOX,
  501. IG_SUPER_PET_EGG1_2,
  502. IG_SUPER_PET_EGG4_2,
  503. IG_FIRE_BRAND_BOX,
  504. IG_BR_INDEPENDENCE_SCROLL,
  505. IG_ALL_IN_ONE_RING_BOX,
  506. IG_GEMI_CROWN_SCROLL,
  507. IG_GEMI_CROWN_SCROLL_BOX,
  508. IG_RWC_SPECIAL_SCROLL,
  509. IG_RWC_LIMITED_SCROLL,
  510. IG_ASGARD_SCROLL,
  511. IG_MS_CANCER_SCROLL,
  512. IG_RWC_SUPER_SCROLL,
  513. IG_LEO_SCROLL,
  514. IG_MS_VIRGO_SCROLL,
  515. IG_LUCKY_EGG_C6,
  516. IG_LIBRA_SCROLL,
  517. IG_HALLO_SCROLL,
  518. IG_MS_SCORPIO_SCROLL,
  519. IG_TCG_CARD_SCROLL,
  520. IG_BOITATA_SCROLL,
  521. IG_LUCKY_EGG_C2,
  522. IG_LUCKY_EGG_C6_,
  523. IG_LUCKY_EGG_C9,
  524. IG_LUCKY_EGG_C7,
  525. IG_LUCKY_EGG_C8,
  526. IG_LUCKY_EGG_C10,
  527. IG_WIND_TYPE_SCROLL,
  528. IG_LUCKY_EGG_C3,
  529. IG_LUCKY_EGG_C4,
  530. IG_LUCKY_EGG_C5,
  531. IG_WEATHER_REPORT_BOX,
  532. IG_COMIN_ACTOR_BOX,
  533. IG_HEN_SET_BOX,
  534. IG_LUCKY_EGG_C,
  535. IG_WATER_TYPE_SCROLL,
  536. IG_EARTH_TYPE_SCROLL,
  537. IG_EARTH_TYPE_SCROLL_,
  538. IG_SPLASH_SCROLL,
  539. IG_VOCATION_SCROLL,
  540. IG_WISDOM_SCROLL,
  541. IG_PATRON_SCROLL,
  542. IG_HEAVEN_SCROLL,
  543. IG_TW_AUG_SCROLL,
  544. IG_TW_NOV_SCROLL2,
  545. IG_ILLUSION_NOTHING,
  546. IG_TW_SEP_SCROLL,
  547. IG_FLAME_LIGHT,
  548. IG_TW_RAINBOW_SCROLL,
  549. IG_TW_RED_SCROLL,
  550. IG_TW_ORANGE_SCROLL,
  551. IG_TW_YELLOW_SCROLL,
  552. IG_SCROLL_OF_DEATH,
  553. IG_SCROLL_OF_LIFE,
  554. IG_SCROLL_OF_MAGIC,
  555. IG_SCROLL_OF_THEWS,
  556. IG_SCROLL_OF_DARKNESS,
  557. IG_SCROLL_OF_HOLINESS,
  558. IG_HORNED_SCROLL,
  559. IG_MERCURY_SCROLL,
  560. IG_CHALLENGE_KIT,
  561. IG_TW_APRIL_SCROLL,
  562. IG_TW_OCTOBER_SCROLL_,
  563. IG_SUMMER_SCROLL3,
  564. IG_C_WING_OF_FLY_3DAY_BOX,
  565. IG_RWC_2012_SET_BOX,
  566. IG_EX_DEF_POTION_BOX,
  567. IG_RWC_SCROLL_2012,
  568. IG_OLD_COIN_POCKET,
  569. IG_HIGH_COIN_POCKET,
  570. IG_MID_COIN_POCKET,
  571. IG_LOW_COIN_POCKET,
  572. IG_SGRADE_POCKET,
  573. IG_AGRADE_POCKET,
  574. IG_BGRADE_POCKET,
  575. IG_CGRADE_POCKET,
  576. IG_DGRADE_POCKET,
  577. IG_EGRADE_POCKET,
  578. IG_PTOTECTION_SEAGOD_BOX,
  579. IG_HAIRTAIL_BOX1,
  580. IG_HAIRTAIL_BOX2,
  581. IG_SPEARFISH_BOX1,
  582. IG_SPEARFISH_BOX2,
  583. IG_SAUREL_BOX1,
  584. IG_SAUREL_BOX2,
  585. IG_TUNA_BOX1,
  586. IG_TUNA_BOX2,
  587. IG_MALANG_CRAB_BOX1,
  588. IG_MALANG_CRAB_BOX2,
  589. IG_BRINDLE_EEL_BOX1,
  590. IG_BRINDLE_EEL_BOX2,
  591. IG_PTOTECTION_SEAGOD_BOX2,
  592. IG_PTOTECTION_SEAGOD_BOX3,
  593. IG_OCTO_HSTICK_BOX,
  594. IG_OCTO_HSTICK_BOX2,
  595. IG_OCTO_HSTICK_BOX3,
  596. IG_SILVERVINE_FRUIT_BOX10,
  597. IG_SILVERVINE_FRUIT_BOX40,
  598. IG_SILVERVINE_FRUIT_BOX4,
  599. IG_MALANG_WOE_ENCARD_BOX,
  600. IG_XMAS_BLESS,
  601. IG_FIRE_TYPE_SCROLL,
  602. IG_BLUE_SCROLL,
  603. IG_GOOD_STUDENT_GIFT_BOX,
  604. IG_BAD_STUDENT_GIFT_BOX,
  605. IG_INDIGO_SCROLL,
  606. IG_VIOLET_SCROLL,
  607. IG_BI_HWANG_SCROLL,
  608. IG_JUNG_BI_SCROLL,
  609. IG_JE_UN_SCROLL,
  610. IG_YONG_KWANG_SCROLL,
  611. IG_HALLOWEEN_G_BOX,
  612. IG_SOLO_CHRISTMAS_GIFT,
  613. IG_SG_WEAPON_SUPPLY_BOX,
  614. IG_CANDY_HOLDER,
  615. IG_LUCKY_BAG,
  616. IG_HOLY_EGG_2,
  617. IG_ADVENTURER_RETURNS_SUPPORT_BOX,
  618. IG_SUPPORT_PACKAGE,
  619. IG_SUPPORT_PACKAGE_10,
  620. IG_EVENT_ALMIGHTY_BOX,
  621. IG_EVENT_ALMIGHTY_BOX_100,
  622. IG_LOTTOBOX1,
  623. IG_LOTTOBOX2,
  624. IG_LOTTOBOX3,
  625. IG_LOTTOBOX4,
  626. IG_LOTTOBOX5,
  627. IG_SUPPORT_PACKAGE_III,
  628. IG_SUPPORT_PACKAGE_III_10,
  629. IG_UNLIMITED_BOX,
  630. IG_UNLIMITED_BOX_10,
  631. IG_UNLIMITED_BOX_II,
  632. IG_UNLIMITED_BOX_II_10,
  633. IG_THREE_MASTER_PACKAGE_III,
  634. IG_THREE_MASTER_PACKAGE_III_10,
  635. IG_2013_RWC_SCROLL,
  636. IG_SUPPORT_PACKAGE_II,
  637. IG_SUPPORT_PACKAGE_II_10,
  638. IG_LEVEL_UP_BOX100,
  639. IG_LEVEL_UP_BOX120,
  640. IG_LEVEL_UP_BOX130,
  641. IG_LEVEL_UP_BOX140,
  642. IG_LEVEL_UP_BOX150,
  643. IG_LEVEL_UP_BOX160,
  644. IG_GIFT_BUFF_SET,
  645. IG_LUCKY_SILVERVINE_FRUIT_BOX_III10,
  646. IG_LUCKY_SILVERVINE_FRUIT_BOX_III110,
  647. IG_OLD_ORE_BOX,
  648. IG_BLESSING_LUCKY_SCROLL,
  649. IG_SOGRAT_LUCKY_SCROLL,
  650. IG_GARNET_LUCKY_SCROLL,
  651. IG_AMORA_LUCKY_SCROLL,
  652. IG_VENUS_LUCKY_SCROLL,
  653. IG_ERZULIE_LUCKY_SCROLL,
  654. IG_MAJESTIC_LUCKY_SCROLL,
  655. IG_EPIC_HEROES_LUCKY_EGG,
  656. IG_HERO_MIDGARD_EGG,
  657. IG_IMORTAL_MIDGARD_SCROLL,
  658. IG_TW_13Y_LUCKY_EGG_06,
  659. IG_HAPPY_TIME_SCROLL,
  660. IG_TIME_TRAVEL_SCROLL,
  661. IG_SOLARIS_FESTIVAL_SCROLL,
  662. IG_MIDGARD_FES_SCROLL,
  663. IG_MIDGARD_SCROLL,
  664. IG_SWEET_MIDGARD_SCROLL,
  665. IG_WINTER_MIDGARD_SCROLL,
  666. IG_SPRING_FESTIVAL_SCROLL,
  667. IG_IDRO10TH_SCROLL,
  668. IG_REQUIEM_SCROLL,
  669. IG_HOLY_SPIRIT_SCROLL,
  670. IG_GARUDA_SCROLL,
  671. IG_THANKS_GIVING_SCROLL,
  672. IG_IDN_LEGEND_HERO_SCROLL,
  673. IG_BLESSING_MIDGARD_SCROLL,
  674. IG_CHRONOSIAN_LUCKY_SCROLL,
  675. IG_SANCTUARY_LUCKY_SCROLL,
  676. IG_CYBORG_LUCKY_SCROLL,
  677. IG_UNDINE_LUCKY_SCROLL,
  678. IG_GOD_MATERIAL_BOX,
  679. IG_SEALED_MIND_BOX,
  680. IG_COSTAMA_EGG18,
  681. IG_COSTAMA_EGG19,
  682. IG_FLOWER_BLOSSOM_SCROLL,
  683. IG_COSTAMA_EGG24,
  684. IG_SMITHY_LUCKY_SCROLL,
  685. IG_GANYMEDE_LUCKY_SCROLL,
  686. IG_LASTANGEL_LUCKYSCROLL,
  687. IG_VALKYRIE_LUCKY_SCROLL,
  688. IG_SPLASH_RAINBOW_LUCKY_SCROLL,
  689. IG_SHAPESHIFTER_COSTUME,
  690. IG_JULY_LUCKY_SCROLL,
  691. IG_COSTAMA_EGG23,
  692. IG_COSTAMA_EGG28,
  693. IG_MIDGARD_LUCKY_SCROLL,
  694. IG_BLESSING_SCARLET_SCROLL,
  695. IG_COSTAMA_EGG29,
  696. IG_INK_BALL,
  697. IG_SOMETHING_CANDY_HOLDER,
  698. IG_SHINING_EGG,
  699. IG_AGUST_LUCKY_SCROLL,
  700. IG_ELEMENT,
  701. IG_POISON,
  702. IG_CASH_FOOD,
  703. IG_BOMB,
  704. IG_THROWABLE,
  705. IG_MERCENARY,
  706. IG_NOIVE_BOX,
  707. IG_VALERIAN_SCROLL,
  708. IG_IMMORTAL_EGG,
  709. IG_SAPPHIRE_EGG,
  710. IG_IDN_HEART_SCROLL,
  711. IG_IDN_WISDOM_EGG,
  712. IG_CHRISTMAS_BOX,
  713. IG_SPECIAL_CHRISTMAS_BOX,
  714. IG_SANTA_GIFT,
  715. IG_PRIZEOFHERO,
  716. IG_PRIVATE_AIRSHIP,
  717. };
  718. /// Enum for bound/sell restricted selling
  719. enum e_itemshop_restrictions {
  720. ISR_NONE = 0x0,
  721. ISR_BOUND = 0x1,
  722. ISR_SELLABLE = 0x2,
  723. ISR_BOUND_SELLABLE = 0x4,
  724. ISR_BOUND_GUILDLEADER_ONLY = 0x8,
  725. };
  726. ///Item combo struct
  727. struct item_combo
  728. {
  729. struct script_code *script;
  730. unsigned short *nameid;/* nameid array */
  731. unsigned char count;
  732. unsigned short id;/* id of this combo */
  733. bool isRef;/* whether this struct is a reference or the master */
  734. };
  735. /// Struct of item group entry
  736. struct s_item_group_entry
  737. {
  738. unsigned short nameid, /// Item ID
  739. duration, /// Duration if item as rental item (in minutes)
  740. amount; /// Amount of item will be obtained
  741. bool isAnnounced, /// Broadcast if player get this item
  742. GUID, /// Gives Unique ID for items in each box opened
  743. isNamed; /// Named the item (if possible)
  744. char bound; /// Makes the item as bound item (according to bound type)
  745. };
  746. /// Struct of random group
  747. struct s_item_group_random
  748. {
  749. struct s_item_group_entry *data; /// Random group entry
  750. unsigned short data_qty; /// Number of item in random group
  751. };
  752. /// Struct of item group that will be used for db
  753. struct s_item_group_db
  754. {
  755. unsigned short id, /// Item Group ID
  756. must_qty; /// Number of must item at this group
  757. struct s_item_group_entry *must; /// Must item entry
  758. struct s_item_group_random random[MAX_ITEMGROUP_RANDGROUP]; //! TODO: Move this fixed array to dynamic size if needed.
  759. };
  760. /// Struct of Roulette db
  761. struct s_roulette_db {
  762. unsigned short *nameid[MAX_ROULETTE_LEVEL], /// Item ID
  763. *qty[MAX_ROULETTE_LEVEL]; /// Amount of Item ID
  764. int *flag[MAX_ROULETTE_LEVEL]; /// Whether the item is for loss or win
  765. int items[MAX_ROULETTE_LEVEL]; /// Number of items in the list for each
  766. };
  767. extern struct s_roulette_db rd;
  768. ///Main item data struct
  769. struct item_data
  770. {
  771. unsigned short nameid;
  772. char name[ITEM_NAME_LENGTH],jname[ITEM_NAME_LENGTH];
  773. //Do not add stuff between value_buy and view_id (see how getiteminfo works)
  774. int value_buy;
  775. int value_sell;
  776. int type;
  777. int maxchance; //For logs, for external game info, for scripts: Max drop chance of this item (e.g. 0.01% , etc.. if it = 0, then monsters don't drop it, -1 denotes items sold in shops only) [Lupus]
  778. int sex;
  779. int equip;
  780. int weight;
  781. int atk;
  782. int def;
  783. int range;
  784. int slot;
  785. int look;
  786. int elv;
  787. int wlv;
  788. int view_id;
  789. int elvmax; ///< Maximum level for this item
  790. #ifdef RENEWAL
  791. int matk;
  792. #endif
  793. int delay;
  794. //Lupus: I rearranged order of these fields due to compatibility with ITEMINFO script command
  795. // some script commands should be revised as well...
  796. uint64 class_base[3]; //Specifies if the base can wear this item (split in 3 indexes per type: 1-1, 2-1, 2-2)
  797. unsigned class_upper : 6; //Specifies if the class-type can equip it (0x01: normal, 0x02: trans, 0x04: baby, 0x08:third, 0x10:trans-third, 0x20-third-baby)
  798. struct {
  799. int chance;
  800. int id;
  801. } mob[MAX_SEARCH]; //Holds the mobs that have the highest drop rate for this item. [Skotlex]
  802. struct script_code *script; //Default script for everything.
  803. struct script_code *equip_script; //Script executed once when equipping.
  804. struct script_code *unequip_script;//Script executed once when unequipping.
  805. struct {
  806. unsigned available : 1;
  807. uint32 no_equip;
  808. unsigned no_refine : 1; // [celest]
  809. unsigned delay_consume : 2; // 1 - Signifies items that are not consumed immediately upon double-click; 2 - Signifies items that are not removed on consumption [Skotlex]
  810. unsigned trade_restriction : 9; //Item restrictions mask [Skotlex]
  811. unsigned autoequip: 1;
  812. unsigned buyingstore : 1;
  813. unsigned dead_branch : 1; // As dead branch item. Logged at `branchlog` table and cannot be used at 'nobranch' mapflag [Cydh]
  814. unsigned group : 1; // As item group container [Cydh]
  815. unsigned guid : 1; // This item always be attached with GUID and make it as bound item! [Cydh]
  816. unsigned broadcast : 1; ///< Will be broadcasted if someone obtain the item [Cydh]
  817. bool bindOnEquip; ///< Set item as bound when equipped
  818. uint8 dropEffect; ///< Drop Effect Mode
  819. } flag;
  820. struct {// item stacking limitation
  821. unsigned short amount;
  822. unsigned int inventory:1;
  823. unsigned int cart:1;
  824. unsigned int storage:1;
  825. unsigned int guildstorage:1;
  826. } stack;
  827. struct {// used by item_nouse.txt
  828. unsigned int flag;
  829. unsigned short override;
  830. } item_usage;
  831. short gm_lv_trade_override; //GM-level to override trade_restriction
  832. /* bugreport:309 */
  833. struct item_combo **combos;
  834. unsigned char combos_count;
  835. short delay_sc; ///< Use delay group if any instead using player's item_delay data [Cydh]
  836. };
  837. // Struct for item random option [Secret]
  838. struct s_random_opt_data
  839. {
  840. unsigned short id;
  841. struct script_code *script;
  842. };
  843. /// Enum for Random Option Groups
  844. enum Random_Option_Group {
  845. RDMOPTG_None = 0,
  846. RDMOPTG_Crimson_Weapon,
  847. };
  848. /// Struct for random option group entry
  849. struct s_random_opt_group_entry {
  850. struct s_item_randomoption option[MAX_ITEM_RDM_OPT];
  851. };
  852. /// Struct for Random Option Group
  853. struct s_random_opt_group {
  854. uint8 id;
  855. struct s_random_opt_group_entry *entries;
  856. uint16 total;
  857. };
  858. struct item_data* itemdb_searchname(const char *name);
  859. int itemdb_searchname_array(struct item_data** data, int size, const char *str);
  860. struct item_data* itemdb_search(unsigned short nameid);
  861. struct item_data* itemdb_exists(unsigned short nameid);
  862. #define itemdb_name(n) itemdb_search(n)->name
  863. #define itemdb_jname(n) itemdb_search(n)->jname
  864. #define itemdb_type(n) itemdb_search(n)->type
  865. #define itemdb_atk(n) itemdb_search(n)->atk
  866. #define itemdb_def(n) itemdb_search(n)->def
  867. #define itemdb_look(n) itemdb_search(n)->look
  868. #define itemdb_weight(n) itemdb_search(n)->weight
  869. #define itemdb_equip(n) itemdb_search(n)->equip
  870. #define itemdb_usescript(n) itemdb_search(n)->script
  871. #define itemdb_equipscript(n) itemdb_search(n)->script
  872. #define itemdb_wlv(n) itemdb_search(n)->wlv
  873. #define itemdb_range(n) itemdb_search(n)->range
  874. #define itemdb_slot(n) itemdb_search(n)->slot
  875. #define itemdb_available(n) (itemdb_search(n)->flag.available)
  876. #define itemdb_traderight(n) (itemdb_search(n)->flag.trade_restriction)
  877. #define itemdb_viewid(n) (itemdb_search(n)->view_id)
  878. #define itemdb_autoequip(n) (itemdb_search(n)->flag.autoequip)
  879. #define itemdb_dropeffect(n) (itemdb_search(n)->flag.dropEffect)
  880. const char* itemdb_typename(enum item_types type);
  881. const char *itemdb_typename_ammo (enum e_item_ammo ammo);
  882. bool itemdb_is_spellbook2(unsigned short nameid);
  883. struct s_item_group_entry *itemdb_get_randgroupitem(uint16 group_id, uint8 sub_group);
  884. unsigned short itemdb_searchrandomid(uint16 group_id, uint8 sub_group);
  885. #define itemdb_value_buy(n) itemdb_search(n)->value_buy
  886. #define itemdb_value_sell(n) itemdb_search(n)->value_sell
  887. #define itemdb_canrefine(n) (!itemdb_search(n)->flag.no_refine)
  888. //Item trade restrictions [Skotlex]
  889. bool itemdb_isdropable_sub(struct item_data *itd, int gmlv, int unused);
  890. bool itemdb_cantrade_sub(struct item_data *itd, int gmlv, int gmlv2);
  891. bool itemdb_canpartnertrade_sub(struct item_data *itd, int gmlv, int gmlv2);
  892. bool itemdb_cansell_sub(struct item_data *itd, int gmlv, int unused);
  893. bool itemdb_cancartstore_sub(struct item_data *itd, int gmlv, int unused);
  894. bool itemdb_canstore_sub(struct item_data *itd, int gmlv, int unused);
  895. bool itemdb_canguildstore_sub(struct item_data *itd, int gmlv, int unused);
  896. bool itemdb_canmail_sub(struct item_data *itd, int gmlv, int unused);
  897. bool itemdb_canauction_sub(struct item_data *itd, int gmlv, int unused);
  898. bool itemdb_isrestricted(struct item* item, int gmlv, int gmlv2, bool (*func)(struct item_data*, int, int));
  899. #define itemdb_isdropable(item, gmlv) itemdb_isrestricted(item, gmlv, 0, itemdb_isdropable_sub)
  900. #define itemdb_cantrade(item, gmlv, gmlv2) itemdb_isrestricted(item, gmlv, gmlv2, itemdb_cantrade_sub)
  901. #define itemdb_canpartnertrade(item, gmlv, gmlv2) itemdb_isrestricted(item, gmlv, gmlv2, itemdb_canpartnertrade_sub)
  902. #define itemdb_cansell(item, gmlv) itemdb_isrestricted(item, gmlv, 0, itemdb_cansell_sub)
  903. #define itemdb_cancartstore(item, gmlv) itemdb_isrestricted(item, gmlv, 0, itemdb_cancartstore_sub)
  904. #define itemdb_canstore(item, gmlv) itemdb_isrestricted(item, gmlv, 0, itemdb_canstore_sub)
  905. #define itemdb_canguildstore(item, gmlv) itemdb_isrestricted(item , gmlv, 0, itemdb_canguildstore_sub)
  906. #define itemdb_canmail(item, gmlv) itemdb_isrestricted(item , gmlv, 0, itemdb_canmail_sub)
  907. #define itemdb_canauction(item, gmlv) itemdb_isrestricted(item , gmlv, 0, itemdb_canauction_sub)
  908. bool itemdb_isequip2(struct item_data *id);
  909. #define itemdb_isequip(nameid) itemdb_isequip2(itemdb_search(nameid))
  910. char itemdb_isidentified(unsigned short nameid);
  911. bool itemdb_isstackable2(struct item_data *id);
  912. #define itemdb_isstackable(nameid) itemdb_isstackable2(itemdb_search(nameid))
  913. bool itemdb_isNoEquip(struct item_data *id, uint16 m);
  914. struct item_combo *itemdb_combo_exists(unsigned short combo_id);
  915. struct s_item_group_db *itemdb_group_exists(unsigned short group_id);
  916. bool itemdb_group_item_exists(unsigned short group_id, unsigned short nameid);
  917. char itemdb_pc_get_itemgroup(uint16 group_id, bool identify, struct map_session_data *sd);
  918. bool itemdb_parse_roulette_db(void);
  919. struct s_random_opt_data *itemdb_randomopt_exists(short id);
  920. struct s_random_opt_group *itemdb_randomopt_group_exists(int id);
  921. void itemdb_reload(void);
  922. void do_final_itemdb(void);
  923. void do_init_itemdb(void);
  924. #endif /* ITEMDB_HPP */