itemdb.hpp 26 KB

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