Browse Source

Cleaned up Item Groups
* Moved constants from const.txt to script_constants.h.
* Removes hard coded item groups into the IG_* database to easily be adjusted/created.
* Renamed IG_FingingOre -> IG_FindingOre.

Enabled commented Item Groups
* Follow up to 50d5c14.
* Retains consistency between constant and ID values.
* Renamed duplicate item groups to avoid compile errors.

aleos89 8 years ago
parent
commit
127c13bbdd
11 changed files with 1216 additions and 614 deletions
  1. 0 476
      db/const.txt
  2. 20 20
      db/item_findingore.txt
  3. 95 0
      db/pre-re/item_misc.txt
  4. 96 0
      db/re/item_misc.txt
  5. 2 2
      src/map/clif.c
  6. 21 0
      src/map/itemdb.c
  7. 485 103
      src/map/itemdb.h
  8. 5 5
      src/map/pc.c
  9. 483 0
      src/map/script_constants.h
  10. 7 7
      src/map/skill.c
  11. 2 1
      src/map/status.c

+ 0 - 476
db/const.txt

@@ -14,482 +14,6 @@
 //                  in field Value. Depending on the implementation values assigned by scripts to parameters will affect
 //                  in field Value. Depending on the implementation values assigned by scripts to parameters will affect
 //                  runtime values, such as Zeny, as well (see pc_readparam/pc_setparam).
 //                  runtime values, such as Zeny, as well (see pc_readparam/pc_setparam).
 
 
-//Item Group ID
-IG_BlueBox	1
-IG_VioletBox	2
-IG_CardAlbum	3
-IG_GiftBox	4
-IG_ScrollBox	5
-IG_FingingOre	6
-IG_CookieBag	7
-IG_FirstAid	8
-IG_Herb	9
-IG_Fruit	10
-IG_Meat	11
-IG_Candy	12
-IG_Juice	13
-IG_Fish	14
-IG_Box	15
-IG_Gemstone	16
-IG_Resist	17
-IG_Ore	18
-IG_Food	19
-IG_Recovery	20
-IG_Mineral	21
-IG_Taming	22
-IG_Scroll	23
-IG_Quiver	24
-IG_Mask	25
-IG_Accesory	26
-IG_Jewel	27
-IG_GiftBox_1	28
-IG_GiftBox_2	29
-IG_GiftBox_3	30
-IG_GiftBox_4	31
-IG_EggBoy	32
-IG_EggGirl	33
-IG_GiftBoxChina	34
-IG_LottoBox	35
-IG_FoodBag	36
-IG_Potion	37
-IG_RedBox_2	38
-IG_BleuBox	39
-IG_RedBox	40
-IG_GreenBox	41
-IG_YellowBox	42
-IG_OldGiftBox	43
-IG_MagicCardAlbum	44
-IG_HometownGift	45
-IG_Masquerade	46
-IG_Tresure_Box_WoE	47
-IG_Masquerade_2	48
-IG_Easter_Scroll	49
-IG_Pierre_Treasurebox	50
-IG_Cherish_Box	51
-IG_Cherish_Box_Ori	52
-IG_Louise_Costume_Box	53
-IG_Xmas_Gift	54
-IG_Fruit_Basket	55
-IG_Improved_Coin_Bag	56
-IG_Intermediate_Coin_Bag	57
-IG_Minor_Coin_Bag	58
-IG_S_Grade_Coin_Bag	59
-IG_A_Grade_Coin_Bag	60
-IG_Advanced_Weapons_Box	61
-IG_Splendid_Box	62
-IG_CardAlbum_Armor	63
-IG_CardAlbum_Helm	64
-IG_CardAlbum_Acc	65
-IG_CardAlbum_Shoes	66
-IG_CardAlbum_Shield	67
-IG_CardAlbum_Weapon	68
-IG_CardAlbum_Garment	69
-IG_Flamel_Card	70
-IG_Special_Box	71
-IG_Tresure_Box_WoE_	72
-IG_RWC_Parti_Box	73
-IG_RWC_Final_Comp_Box	74
-IG_Gift_Bundle	75
-IG_Caracas_Ring_Box	76
-IG_Crumpled_Paper	77
-IG_Solo_Gift_Basket	78
-IG_Couple_Event_Basket	79
-IG_GM_Warp_Box	80
-IG_Fortune_Cookie1	81
-IG_Fortune_Cookie2	82
-IG_Fortune_Cookie3	83
-IG_New_Gift_Envelope	84
-IG_Passion_FB_Hat_Box	85
-IG_Cool_FB_Hat_Box	86
-IG_Victory_FB_Hat_Box	87
-IG_Glory_FB_Hat_Box	88
-IG_Passion_Hat_Box2	89
-IG_Cool_Hat_Box2	90
-IG_Victory_Hat_Box2	91
-IG_Aspersio_5_Scroll_Box	92
-IG_Pet_Egg_Scroll_Box1	93
-IG_Pet_Egg_Scroll_Box2	94
-IG_Pet_Egg_Scroll1	95
-IG_Pet_Egg_Scroll2	96
-IG_Pet_Egg_Scroll_Box3	97
-IG_Pet_Egg_Scroll_Box4	98
-IG_Pet_Egg_Scroll_Box5	99
-IG_Pet_Egg_Scroll3	100
-IG_Pet_Egg_Scroll4	101
-IG_Pet_Egg_Scroll5	102
-IG_Infiltrator_Box	103
-IG_Muramasa_Box	104
-IG_Excalibur_Box	105
-IG_Combat_Knife_Box	106
-IG_Counter_Dagger_Box	107
-IG_Kaiser_Knuckle_Box	108
-IG_Pole_Axe_Box	109
-IG_Mighty_Staff_Box	110
-IG_Right_Epsilon_Box	111
-IG_Balistar_Box	112
-IG_Diary_Of_Great_Sage_Box	113
-IG_Asura_Box	114
-IG_Apple_Of_Archer_Box	115
-IG_Bunny_Band_Box	116
-IG_Sahkkat_Box	117
-IG_Lord_Circlet_Box	118
-IG_Elven_Ears_Box	119
-IG_Steel_Flower_Box	120
-IG_Critical_Ring_Box	121
-IG_Earring_Box	122
-IG_Ring_Box	123
-IG_Necklace_Box	124
-IG_Glove_Box	125
-IG_Brooch_Box	126
-IG_Rosary_Box	127
-IG_Safety_Ring_Box	128
-IG_Vesper_Core01_Box	129
-IG_Vesper_Core02_Box	130
-IG_Vesper_Core03_Box	131
-IG_Vesper_Core04_Box	132
-IG_Pet_Egg_Scroll_Box6	133
-IG_Pet_Egg_Scroll_Box7	134
-IG_Pet_Egg_Scroll_Box8	135
-IG_Pet_Egg_Scroll_Box9	136
-IG_Pet_Egg_Scroll_Box10	137
-IG_Pet_Egg_Scroll_Box11	138
-IG_Pet_Egg_Scroll6	139
-IG_Pet_Egg_Scroll7	140
-IG_Pet_Egg_Scroll8	141
-IG_Pet_Egg_Scroll9	142
-IG_Pet_Egg_Scroll10	143
-IG_Pet_Egg_Scroll11	144
-IG_CP_Helm_Scroll_Box	145
-IG_CP_Shield_Scroll_Box	146
-IG_CP_Armor_Scroll_Box	147
-IG_CP_Weapon_Scroll_Box	148
-IG_Repair_Scroll_Box	149
-IG_Super_Pet_Egg1	150
-IG_Super_Pet_Egg2	151
-IG_Super_Pet_Egg3	152
-IG_Super_Pet_Egg4	153
-IG_Super_Card_Pet_Egg1	154
-IG_Super_Card_Pet_Egg2	155
-IG_Super_Card_Pet_Egg3	156
-IG_Super_Card_Pet_Egg4	157
-IG_Vigorgra_Package1	158
-IG_Vigorgra_Package2	159
-IG_Vigorgra_Package3	160
-IG_Vigorgra_Package4	161
-IG_Vigorgra_Package5	162
-IG_Vigorgra_Package6	163
-IG_Vigorgra_Package7	164
-IG_Vigorgra_Package8	165
-IG_Vigorgra_Package9	166
-IG_Vigorgra_Package10	167
-IG_Vigorgra_Package11	168
-IG_Vigorgra_Package12	169
-IG_Pet_Egg_Scroll12	170
-IG_Pet_Egg_Scroll13	171
-IG_Pet_Egg_Scroll14	172
-IG_Super_Pet_Egg5	173
-IG_Super_Pet_Egg6	174
-IG_Super_Pet_Egg7	175
-IG_Super_Pet_Egg8	176
-IG_Pet_Egg_Scroll_E	177
-IG_Ramen_Hat_Box	178
-IG_Mysterious_Travel_Sack1	179
-IG_Mysterious_Travel_Sack2	180
-IG_Mysterious_Travel_Sack3	181
-IG_Mysterious_Travel_Sack4	182
-IG_Magician_Card_Box	183
-IG_Acolyte_Card_Box	184
-IG_Archer_Card_Box	185
-IG_Swordman_Card_Box	186
-IG_Thief_Card_Box	187
-IG_Merchant_Card_Box	188
-IG_Hard_Core_Set_Box	189
-IG_Kitty_Set_Box	190
-IG_Soft_Core_Set_Box	191
-IG_Deviruchi_Set_Box	192
-IG_MVP_Hunt_Box	193
-IG_Brewing_Box	194
-IG_Xmas_Pet_Scroll	195
-IG_Lucky_Scroll08	196
-IG_Br_SwordPackage	197
-IG_Br_MagePackage	198
-IG_Br_AcolPackage	199
-IG_Br_ArcherPackage	200
-IG_Br_MerPackage	201
-IG_Br_ThiefPackage	202
-IG_Acidbomb_10_Box	203
-IG_Basic_Siege_Supply_Box	204
-IG_Adv_Siege_Supply_Box	205
-IG_Elite_Siege_Supply_Box	206
-IG_Sakura_Scroll	207
-IG_Beholder_Ring_Box	208
-IG_Hallow_Ring_Box	209
-IG_Clamorous_Ring_Box	210
-IG_Chemical_Ring_Box	211
-IG_Insecticide_Ring_Box	212
-IG_Fisher_Ring_Box	213
-IG_Decussate_Ring_Box	214
-IG_Bloody_Ring_Box	215
-IG_Satanic_Ring_Box	216
-IG_Dragoon_Ring_Box	217
-IG_Angel_Scroll	218
-IG_Devil_Scroll	219
-IG_Surprise_Scroll	220
-IG_July7_Scroll	221
-IG_Bacsojin_Scroll	222
-IG_Animal_Scroll	223
-IG_Heart_Scroll	224
-IG_New_Year_Scroll	225
-IG_Valentine_Pledge_Box	226
-IG_Ox_Tail_Scroll	227
-IG_Buddah_Scroll	228
-IG_Evil_Incarnation	229
-IG_F_Clover_Box_Mouth	230
-IG_Mouth_Bubble_Gum_Box	231
-IG_F_Clover_Box_Mouth2	232
-IG_F_Clover_Box_Mouth4	233
-IG_BGum_Box_In_Mouth2	234
-IG_BGum_Box_In_Mouth4	235
-IG_Tw_October_Scroll	236
-IG_My_Scroll1	237
-IG_Tw_Nov_Scroll	238
-IG_My_Scroll2	239
-IG_Pr_Reset_Stone_Box	240
-IG_FPr_Reset_Stone_Box	241
-IG_Majestic_Devil_Scroll	242
-IG_Life_Ribbon_Box	243
-IG_Life_Ribbon_Box2	244
-IG_Life_Ribbon_Box3	245
-IG_Magic_Candy_Box10	246
-IG_RWC2010_SuitcaseA	247
-IG_RWC2010_SuitcaseB	248
-IG_Sagittarius_Scroll	249
-IG_Sagittarius_Scr_Box	250
-IG_Sagittar_Diadem_Scroll	251
-IG_Sagittar_Di_Scroll_Box	252
-IG_Capri_Crown_Scroll	253
-IG_Capri_Crown_Scroll_Box	254
-IG_Capricon_Di_Scroll	255
-IG_Capricon_Di_Scroll_Box	256
-IG_Aquarius_Diadem_Scroll	257
-IG_Aquarius_Di_Scroll_Box	258
-IG_Lovely_Aquarius_Scroll	259
-IG_Lovely_Aquarius_Box	260
-IG_Pisces_Diadem_Scroll	261
-IG_Pisces_Diadem_Box	262
-IG_Energetic_Pisces_Scroll	263
-IG_Energetic_Pisces_Box	264
-IG_Aries_Scroll	265
-IG_Aries_Scroll_Box	266
-IG_Boarding_Halter_Box	267
-IG_Taurus_Diadem_Scroll	268
-IG_Taurus_Di_Scroll_Box	269
-IG_Umbala_Spirit_Box2	270
-IG_F_Umbala_Spirit_Box2	271
-IG_Taurus_Crown_Scroll	272
-IG_Taurus_Crown_Scroll_Box	273
-IG_Gemi_Diadem_Scroll	274
-IG_Gemi_Diadem_Scroll_Box	275
-IG_Super_Pet_Egg1_2	276
-IG_Super_Pet_Egg4_2	277
-IG_Fire_Brand_Box	278
-IG_BR_Independence_Scroll	279
-IG_All_In_One_Ring_Box	280
-IG_Gemi_Crown_Scroll	281
-IG_Gemi_Crown_Scroll_Box	282
-IG_RWC_Special_Scroll	283
-IG_RWC_Limited_Scroll	284
-IG_Asgard_Scroll	285
-IG_Ms_Cancer_Scroll	286
-IG_RWC_Super_Scroll	287
-IG_Leo_Scroll	288
-IG_Ms_Virgo_Scroll	289
-IG_Lucky_Egg_C6	290
-IG_Libra_Scroll	291
-IG_Hallo_Scroll	292
-IG_Ms_Scorpio_Scroll	293
-IG_TCG_Card_Scroll	294
-IG_Boitata_Scroll	295
-IG_Lucky_Egg_C2	296
-//IG_Lucky_Egg_C6	297
-IG_Lucky_Egg_C9	298
-IG_Lucky_Egg_C7	299
-IG_Lucky_Egg_C8	300
-IG_Lucky_Egg_C10	301
-IG_Wind_Type_Scroll	302
-IG_Lucky_Egg_C3	303
-IG_Lucky_Egg_C4	304
-IG_Lucky_Egg_C5	305
-IG_Weather_Report_Box	306
-IG_Comin_Actor_Box	307
-IG_Hen_Set_Box	308
-IG_Lucky_Egg_C	309
-IG_Water_Type_Scroll	310
-IG_Earth_Type_Scroll	311
-//IG_Earth_Type_Scroll	312
-IG_Splash_Scroll	313
-IG_Vocation_Scroll	314
-IG_Wisdom_Scroll	315
-IG_Patron_Scroll	316
-IG_Heaven_Scroll	317
-IG_Tw_Aug_Scroll	318
-IG_Tw_Nov_Scroll2	319
-IG_Illusion_Nothing	320
-IG_Tw_Sep_Scroll	321
-IG_Flame_Light	322
-IG_Tw_Rainbow_Scroll	323
-IG_Tw_Red_Scroll	324
-IG_Tw_Orange_Scroll	325
-IG_Tw_Yellow_Scroll	326
-IG_Scroll_Of_Death	327
-IG_Scroll_Of_Life	328
-IG_Scroll_Of_Magic	329
-IG_Scroll_Of_Thews	330
-IG_Scroll_Of_Darkness	331
-IG_Scroll_Of_Holiness	332
-IG_Horned_Scroll	333
-IG_Mercury_Scroll	334
-IG_Challenge_Kit	335
-IG_Tw_April_Scroll	336
-//IG_Tw_October_Scroll	337
-IG_Summer_Scroll3	338
-IG_C_Wing_Of_Fly_3Day_Box	339
-IG_RWC_2012_Set_Box	340
-IG_Ex_Def_Potion_Box	341
-IG_RWC_Scroll_2012	342
-IG_Old_Coin_Pocket	343
-IG_High_Coin_Pocket	344
-IG_Mid_Coin_Pocket	345
-IG_Low_Coin_Pocket	346
-IG_Sgrade_Pocket	347
-IG_Agrade_Pocket	348
-IG_Bgrade_Pocket	349
-IG_Cgrade_Pocket	350
-IG_Dgrade_Pocket	351
-IG_Egrade_Pocket	352
-IG_Ptotection_Seagod_Box	353
-IG_Hairtail_Box1	354
-IG_Hairtail_Box2	355
-IG_Spearfish_Box1	356
-IG_Spearfish_Box2	357
-IG_Saurel_Box1	358
-IG_Saurel_Box2	359
-IG_Tuna_Box1	360
-IG_Tuna_Box2	361
-IG_Malang_Crab_Box1	362
-IG_Malang_Crab_Box2	363
-IG_Brindle_Eel_Box1	364
-IG_Brindle_Eel_Box2	365
-IG_Ptotection_Seagod_Box2	366
-IG_Ptotection_Seagod_Box3	367
-IG_Octo_Hstick_Box	368
-IG_Octo_Hstick_Box2	369
-IG_Octo_Hstick_Box3	370
-IG_Silvervine_Fruit_Box10	371
-IG_Silvervine_Fruit_Box40	372
-IG_Silvervine_Fruit_Box4	373
-IG_Malang_Woe_Encard_Box	374
-IG_Xmas_Bless	375
-IG_Fire_Type_Scroll	376
-IG_Blue_Scroll	377
-IG_Good_Student_Gift_Box	378
-IG_Bad_Student_Gift_Box	379
-IG_Indigo_Scroll	380
-IG_Violet_Scroll	381
-IG_Bi_Hwang_Scroll	382
-IG_Jung_Bi_Scroll	383
-IG_Je_Un_Scroll	384
-IG_Yong_Kwang_Scroll	385
-IG_HALLOWEEN_G_BOX	386
-IG_Solo_Christmas_Gift	387
-IG_Sg_Weapon_Supply_Box	388
-IG_Candy_Holder	389
-IG_Lucky_Bag	390
-IG_Holy_Egg_2	391
-IG_Adventurer_Returns_Support_Box	392
-IG_Support_Package	393
-IG_Support_Package10	394
-IG_Event_Almighty_Box	395
-IG_Event_Almighty_Box10	396
-IG_LottoBox1	397
-IG_LottoBox2	398
-IG_LottoBox3	399
-IG_LottoBox4	400
-IG_LottoBox5	401
-IG_Support_Package_III	402
-IG_Support_Package_III10	403
-IG_Unlimited_Box	404
-IG_Unlimited_Box10	405
-IG_Unlimited_Box_II	406
-IG_Unlimited_Box_II10	407
-IG_Three_Master_Package_III	408
-IG_Three_Master_Package_III10	409
-IG_2013_RWC_Scroll	410
-IG_Support_Package_II	411
-IG_Support_Package_II10	412
-IG_Level_Up_Box100	413
-IG_Level_Up_Box120	414
-IG_Level_Up_Box130	415
-IG_Level_Up_Box140	416
-IG_Level_Up_Box150	417
-IG_Level_Up_Box160	418
-IG_Gift_Buff_Set        419
-IG_Lucky_Silvervine_Fruit_Box_III10        420
-IG_Lucky_Silvervine_Fruit_Box_III110        421
-IG_Old_Ore_Box	422
-IG_Blessing_Lucky_Egg	423
-IG_Sograt_Lucky_Egg	424
-IG_Garnet_Lucky_Egg	425
-IG_Amora_Lucky_Egg	426
-IG_Venus_Lucky_Egg	427
-IG_Erzulie_Lucky_Egg	428
-IG_Majestic_Lucky_Egg	429
-IG_Epic_Heroes_Lucky_Egg	430
-IG_Hero_Midgard_Egg	431
-IG_Midgard_Celebration_Lucky_Egg	432
-IG_Rune_Midgard_Imortal_Lucky_Egg	433
-IG_Rise_Midgard_Lucky_Egg	434
-IG_Time_Travel_Lucky_Egg	435
-IG_Solaris_Festival_Scroll	436
-IG_Midgard_Festival_Egg	437
-IG_Midgard_Egg	438
-IG_Sweet_Midgard_Egg	439
-IG_Winter_Midgard_Egg	440
-IG_Spring_Festival_Lucky_Egg	441
-IG_Birthday_IdRO10th_Scroll	442
-IG_Requiem_Egg	443
-IG_Holy_Spirit_Egg	444
-IG_Memorial_Garuda_Lucky_Egg	445
-IG_Miracle_Lucky_Egg	446
-IG_Legend_Hero_Lucky_Egg	447
-IG_Blessing_Midgard_Lucky_Egg	448
-IG_Chronosian_Lucky_Egg	449
-IG_Sanctuary_Lucky_Egg	450
-IG_Cyborg_Lucky_Egg	451
-IG_Undine_Lucky_Egg	452
-IG_God_Material_Box	453
-IG_Sealed_Mind_Box	454
-IG_Frozen_Egg_Costume	455
-IG_Headgear_Costume_Scroll	456
-IG_Flower_Blossom_Scroll	457
-IG_Seaside_Costume_Scroll	458
-IG_Smithy_Lucky_Egg	459
-IG_Ganymede_Lucky_Egg	460
-IG_LastAngel_LuckyScroll	461
-IG_Valkyrie_Lucky_Egg	462
-IG_Splash_Rainbow_Lucky_Egg	463
-IG_Shapeshifter_Costume	464
-IG_Almighty_Lucky_Egg	465
-IG_Burning_Feather_Costume_Scroll	466
-IG_Animal_Costume_Scroll	467
-IG_Midgard_Lucky_Scroll	468
-IG_Blessing_Scarlet_Egg	469
-IG_Mystical_Costume_Scroll	470
-IG_Ink_Ball	471
-IG_Something_Candy_Holder	472
-IG_Shining_Egg	473
-IG_Shining_Blue_Lucky_Egg	474
-
 EF_NONE	-1
 EF_NONE	-1
 EF_HIT1	0
 EF_HIT1	0
 EF_HIT2	1
 EF_HIT2	1

+ 20 - 20
db/item_findingore.txt

@@ -3,23 +3,23 @@
 // Structure of Database:
 // Structure of Database:
 // GroupID,ItemID,Rate
 // GroupID,ItemID,Rate
 
 
-IG_FingingOre,714,3		//Emperium
-IG_FingingOre,756,20	//Rough Oridecon
-IG_FingingOre,757,20	//Rough Elunium
-IG_FingingOre,969,2		//Gold
-IG_FingingOre,984,10	//Oridecon
-IG_FingingOre,985,10	//Elunium
-IG_FingingOre,990,30	//Red Blood
-IG_FingingOre,991,30	//Crystal Blue
-IG_FingingOre,992,30	//Wind of Verdure
-IG_FingingOre,993,30	//Green Live
-IG_FingingOre,994,15	//Flame Heart
-IG_FingingOre,995,15	//Mystic Frozen
-IG_FingingOre,996,15	//Rough Wind
-IG_FingingOre,997,15	//Great Nature
-IG_FingingOre,998,80	//Iron
-IG_FingingOre,999,50	//Steel
-IG_FingingOre,1002,100	//Iron Ore
-IG_FingingOre,1003,60	//Coal
-IG_FingingOre,1010,95	//Phracon
-IG_FingingOre,1011,55	//Emveretarcon
+IG_FindingOre,714,3		//Emperium
+IG_FindingOre,756,20	//Rough Oridecon
+IG_FindingOre,757,20	//Rough Elunium
+IG_FindingOre,969,2		//Gold
+IG_FindingOre,984,10	//Oridecon
+IG_FindingOre,985,10	//Elunium
+IG_FindingOre,990,30	//Red Blood
+IG_FindingOre,991,30	//Crystal Blue
+IG_FindingOre,992,30	//Wind of Verdure
+IG_FindingOre,993,30	//Green Live
+IG_FindingOre,994,15	//Flame Heart
+IG_FindingOre,995,15	//Mystic Frozen
+IG_FindingOre,996,15	//Rough Wind
+IG_FindingOre,997,15	//Great Nature
+IG_FindingOre,998,80	//Iron
+IG_FindingOre,999,50	//Steel
+IG_FindingOre,1002,100	//Iron Ore
+IG_FindingOre,1003,60	//Coal
+IG_FindingOre,1010,95	//Phracon
+IG_FindingOre,1011,55	//Emveretarcon

+ 95 - 0
db/pre-re/item_misc.txt

@@ -559,3 +559,98 @@ IG_Xmas_Gift,12354,24	// Buche_De_Noel
 IG_Xmas_Gift,12702,36	// Old_Bleu_Box
 IG_Xmas_Gift,12702,36	// Old_Bleu_Box
 IG_Xmas_Gift,14546,6	// Fire_Cracker_Love
 IG_Xmas_Gift,14546,6	// Fire_Cracker_Love
 IG_Xmas_Gift,14550,6	// Fire_Cracker_Xmas
 IG_Xmas_Gift,14550,6	// Fire_Cracker_Xmas
+// Runes
+IG_Rune,12725,1 // Runstone_Nosiege
+IG_Rune,12726,1 // Runstone_Rhydo
+IG_Rune,12727,1 // Runstone_Verkana
+IG_Rune,12728,1 // Runstone_Isia
+IG_Rune,12729,1 // Runstone_Asir
+IG_Rune,12730,1 // Runstone_Urj
+IG_Rune,12731,1 // Runstone_Turisus
+IG_Rune,12732,1 // Runstone_Pertz
+IG_Rune,12733,1 // Runstone_Hagalas
+// Elemental Points
+IG_Element,6360,1 // Scarlet_Pts
+IG_Element,6361,1 // Indigo_Pts
+IG_Element,6362,1 // Yellow_Wish_Pts
+IG_Element,6363,1 // Lime_Green_Pts
+// Poisons
+IG_Poison,12717,1 // Poison_Paralysis
+IG_Poison,12718,1 // Poison_Leech
+IG_Poison,12719,1 // Poison_Oblivion
+IG_Poison,12720,1 // Poison_Disheart
+IG_Poison,12721,1 // Poison_Numb
+IG_Poison,12722,1 // Poison_Fever
+IG_Poison,12723,1 // Poison_Laughing
+IG_Poison,12724,1 // Poison_Fatigue
+// Cash Foods
+IG_Cash_Food,12202,1 // Str_Dish10_
+IG_Cash_Food,12203,1 // Agi_Dish10_
+IG_Cash_Food,12204,1 // Int_Dish10_
+IG_Cash_Food,12205,1 // Dex_Dish10_
+IG_Cash_Food,12206,1 // Luk_Dish10_
+IG_Cash_Food,12207,1 // Vit_Dish10_
+// Bombs
+IG_Bomb,13260,1 // Apple_Bomb
+IG_Bomb,13261,1 // Coconut_Bomb
+IG_Bomb,13262,1 // Melon_Bomb
+IG_Bomb,13263,1 // Pineapple_Bomb
+IG_Bomb,13264,1 // Banana_Bomb
+IG_Bomb,13265,1 // Black_Lump
+IG_Bomb,13266,1 // Black_Hard_Lump
+IG_Bomb,13267,1 // Very_Hard_Lump
+// Throwable Items
+IG_Throwable,13268,1 // Mysterious_Powder
+IG_Throwable,13269,1 // Boost500_To_Throw
+IG_Throwable,13270,1 // Full_SwingK_To_Throw
+IG_Throwable,13271,1 // Mana_Plus_To_Throw
+IG_Throwable,13272,1 // Cure_Free_To_Throw
+IG_Throwable,13273,1 // Stamina_Up_M_To_Throw
+IG_Throwable,13274,1 // Digestive_F_To_Throw
+IG_Throwable,13275,1 // HP_Inc_PotS_To_Throw
+IG_Throwable,13276,1 // HP_Inc_PotM_To_Throw
+IG_Throwable,13277,1 // HP_Inc_PotL_To_Throw
+IG_Throwable,13278,1 // SP_Inc_PotS_To_Throw
+IG_Throwable,13279,1 // SP_Inc_PotM_To_Throw
+IG_Throwable,13280,1 // SP_Inc_PotL_To_Throw
+IG_Throwable,13281,1 // En_White_PotZ_To_Throw
+IG_Throwable,13282,1 // Vitata500_To_Throw
+IG_Throwable,13283,1 // En_Cel_Juice_To_Throw
+IG_Throwable,13284,1 // Savage_BBQ_To_Throw
+IG_Throwable,13285,1 // Wug_Cocktail_To_Throw
+IG_Throwable,13286,1 // M_Brisket_To_Throw
+IG_Throwable,13287,1 // Siroma_Icetea_To_Throw
+IG_Throwable,13288,1 // Drocera_Stew_To_Throw
+IG_Throwable,13289,1 // Petti_Noodle_To_Throw
+IG_Throwable,13290,1 // Black_Thing_To_Throw
+// Mercenary Scrolls
+IG_Mercenary,12153,1 // Bow_Mercenary_Scroll1
+IG_Mercenary,12154,1 // Bow_Mercenary_Scroll2
+IG_Mercenary,12155,1 // Bow_Mercenary_Scroll3
+IG_Mercenary,12156,1 // Bow_Mercenary_Scroll4
+IG_Mercenary,12157,1 // Bow_Mercenary_Scroll5
+IG_Mercenary,12158,1 // Bow_Mercenary_Scroll6
+IG_Mercenary,12159,1 // Bow_Mercenary_Scroll7
+IG_Mercenary,12160,1 // Bow_Mercenary_Scroll8
+IG_Mercenary,12161,1 // Bow_Mercenary_Scroll9
+IG_Mercenary,12162,1 // Bow_Mercenary_Scroll10
+IG_Mercenary,12163,1 // SwordMercenary_Scroll1
+IG_Mercenary,12164,1 // SwordMercenary_Scroll2
+IG_Mercenary,12165,1 // SwordMercenary_Scroll3
+IG_Mercenary,12166,1 // SwordMercenary_Scroll4
+IG_Mercenary,12167,1 // SwordMercenary_Scroll5
+IG_Mercenary,12168,1 // SwordMercenary_Scroll6
+IG_Mercenary,12169,1 // SwordMercenary_Scroll7
+IG_Mercenary,12170,1 // SwordMercenary_Scroll8
+IG_Mercenary,12171,1 // SwordMercenary_Scroll9
+IG_Mercenary,12172,1 // SwordMercenary_Scroll10
+IG_Mercenary,12173,1 // SpearMercenary_Scroll1
+IG_Mercenary,12174,1 // SpearMercenary_Scroll2
+IG_Mercenary,12175,1 // SpearMercenary_Scroll3
+IG_Mercenary,12176,1 // SpearMercenary_Scroll4
+IG_Mercenary,12177,1 // SpearMercenary_Scroll5
+IG_Mercenary,12178,1 // SpearMercenary_Scroll6
+IG_Mercenary,12179,1 // SpearMercenary_Scroll7
+IG_Mercenary,12180,1 // SpearMercenary_Scroll8
+IG_Mercenary,12181,1 // SpearMercenary_Scroll9
+IG_Mercenary,12182,1 // SpearMercenary_Scroll10

+ 96 - 0
db/re/item_misc.txt

@@ -1285,3 +1285,99 @@ IG_God_Material_Box,7089,5 //Indication_Of_Tempest
 IG_God_Material_Box,7090,5 //Slilince_Wave
 IG_God_Material_Box,7090,5 //Slilince_Wave
 IG_God_Material_Box,7091,5 //Rough_Billows
 IG_God_Material_Box,7091,5 //Rough_Billows
 IG_God_Material_Box,7092,5 //Air_Stream
 IG_God_Material_Box,7092,5 //Air_Stream
+// Runes
+IG_Rune,12725,1 // Runstone_Nosiege
+IG_Rune,12726,1 // Runstone_Rhydo
+IG_Rune,12727,1 // Runstone_Verkana
+IG_Rune,12728,1 // Runstone_Isia
+IG_Rune,12729,1 // Runstone_Asir
+IG_Rune,12730,1 // Runstone_Urj
+IG_Rune,12731,1 // Runstone_Turisus
+IG_Rune,12732,1 // Runstone_Pertz
+IG_Rune,12733,1 // Runstone_Hagalas
+IG_Rune,22540,1 // Runstone_Luxanima
+// Elemental Points
+IG_Element,6360,1 // Scarlet_Pts
+IG_Element,6361,1 // Indigo_Pts
+IG_Element,6362,1 // Yellow_Wish_Pts
+IG_Element,6363,1 // Lime_Green_Pts
+// Poisons
+IG_Poison,12717,1 // Poison_Paralysis
+IG_Poison,12718,1 // Poison_Leech
+IG_Poison,12719,1 // Poison_Oblivion
+IG_Poison,12720,1 // Poison_Disheart
+IG_Poison,12721,1 // Poison_Numb
+IG_Poison,12722,1 // Poison_Fever
+IG_Poison,12723,1 // Poison_Laughing
+IG_Poison,12724,1 // Poison_Fatigue
+// Cash Foods
+IG_Cash_Food,12202,1 // Str_Dish10_
+IG_Cash_Food,12203,1 // Agi_Dish10_
+IG_Cash_Food,12204,1 // Int_Dish10_
+IG_Cash_Food,12205,1 // Dex_Dish10_
+IG_Cash_Food,12206,1 // Luk_Dish10_
+IG_Cash_Food,12207,1 // Vit_Dish10_
+// Bombs
+IG_Bomb,13260,1 // Apple_Bomb
+IG_Bomb,13261,1 // Coconut_Bomb
+IG_Bomb,13262,1 // Melon_Bomb
+IG_Bomb,13263,1 // Pineapple_Bomb
+IG_Bomb,13264,1 // Banana_Bomb
+IG_Bomb,13265,1 // Black_Lump
+IG_Bomb,13266,1 // Black_Hard_Lump
+IG_Bomb,13267,1 // Very_Hard_Lump
+// Throwable Items
+IG_Throwable,13268,1 // Mysterious_Powder
+IG_Throwable,13269,1 // Boost500_To_Throw
+IG_Throwable,13270,1 // Full_SwingK_To_Throw
+IG_Throwable,13271,1 // Mana_Plus_To_Throw
+IG_Throwable,13272,1 // Cure_Free_To_Throw
+IG_Throwable,13273,1 // Stamina_Up_M_To_Throw
+IG_Throwable,13274,1 // Digestive_F_To_Throw
+IG_Throwable,13275,1 // HP_Inc_PotS_To_Throw
+IG_Throwable,13276,1 // HP_Inc_PotM_To_Throw
+IG_Throwable,13277,1 // HP_Inc_PotL_To_Throw
+IG_Throwable,13278,1 // SP_Inc_PotS_To_Throw
+IG_Throwable,13279,1 // SP_Inc_PotM_To_Throw
+IG_Throwable,13280,1 // SP_Inc_PotL_To_Throw
+IG_Throwable,13281,1 // En_White_PotZ_To_Throw
+IG_Throwable,13282,1 // Vitata500_To_Throw
+IG_Throwable,13283,1 // En_Cel_Juice_To_Throw
+IG_Throwable,13284,1 // Savage_BBQ_To_Throw
+IG_Throwable,13285,1 // Wug_Cocktail_To_Throw
+IG_Throwable,13286,1 // M_Brisket_To_Throw
+IG_Throwable,13287,1 // Siroma_Icetea_To_Throw
+IG_Throwable,13288,1 // Drocera_Stew_To_Throw
+IG_Throwable,13289,1 // Petti_Noodle_To_Throw
+IG_Throwable,13290,1 // Black_Thing_To_Throw
+// Mercenary Scrolls
+IG_Mercenary,12153,1 // Bow_Mercenary_Scroll1
+IG_Mercenary,12154,1 // Bow_Mercenary_Scroll2
+IG_Mercenary,12155,1 // Bow_Mercenary_Scroll3
+IG_Mercenary,12156,1 // Bow_Mercenary_Scroll4
+IG_Mercenary,12157,1 // Bow_Mercenary_Scroll5
+IG_Mercenary,12158,1 // Bow_Mercenary_Scroll6
+IG_Mercenary,12159,1 // Bow_Mercenary_Scroll7
+IG_Mercenary,12160,1 // Bow_Mercenary_Scroll8
+IG_Mercenary,12161,1 // Bow_Mercenary_Scroll9
+IG_Mercenary,12162,1 // Bow_Mercenary_Scroll10
+IG_Mercenary,12163,1 // SwordMercenary_Scroll1
+IG_Mercenary,12164,1 // SwordMercenary_Scroll2
+IG_Mercenary,12165,1 // SwordMercenary_Scroll3
+IG_Mercenary,12166,1 // SwordMercenary_Scroll4
+IG_Mercenary,12167,1 // SwordMercenary_Scroll5
+IG_Mercenary,12168,1 // SwordMercenary_Scroll6
+IG_Mercenary,12169,1 // SwordMercenary_Scroll7
+IG_Mercenary,12170,1 // SwordMercenary_Scroll8
+IG_Mercenary,12171,1 // SwordMercenary_Scroll9
+IG_Mercenary,12172,1 // SwordMercenary_Scroll10
+IG_Mercenary,12173,1 // SpearMercenary_Scroll1
+IG_Mercenary,12174,1 // SpearMercenary_Scroll2
+IG_Mercenary,12175,1 // SpearMercenary_Scroll3
+IG_Mercenary,12176,1 // SpearMercenary_Scroll4
+IG_Mercenary,12177,1 // SpearMercenary_Scroll5
+IG_Mercenary,12178,1 // SpearMercenary_Scroll6
+IG_Mercenary,12179,1 // SpearMercenary_Scroll7
+IG_Mercenary,12180,1 // SpearMercenary_Scroll8
+IG_Mercenary,12181,1 // SpearMercenary_Scroll9
+IG_Mercenary,12182,1 // SpearMercenary_Scroll10

+ 2 - 2
src/map/clif.c

@@ -17302,7 +17302,7 @@ int clif_magicdecoy_list(struct map_session_data *sd, uint16 skill_lv, short x,
 	WFIFOW(fd,0) = 0x1ad; // This is the official packet. [pakpil]
 	WFIFOW(fd,0) = 0x1ad; // This is the official packet. [pakpil]
 
 
 	for( i = 0, c = 0; i < MAX_INVENTORY; i ++ ) {
 	for( i = 0, c = 0; i < MAX_INVENTORY; i ++ ) {
-		if( itemdb_is_element(sd->inventory.u.items_inventory[i].nameid) ) {
+		if( itemdb_group_item_exists(IG_ELEMENT, sd->inventory.u.items_inventory[i].nameid) ) {
 			WFIFOW(fd, c * 2 + 4) = sd->inventory.u.items_inventory[i].nameid;
 			WFIFOW(fd, c * 2 + 4) = sd->inventory.u.items_inventory[i].nameid;
 			c ++;
 			c ++;
 		}
 		}
@@ -17335,7 +17335,7 @@ int clif_poison_list(struct map_session_data *sd, uint16 skill_lv) {
 	WFIFOW(fd,0) = 0x1ad; // This is the official packet. [pakpil]
 	WFIFOW(fd,0) = 0x1ad; // This is the official packet. [pakpil]
 
 
 	for( i = 0, c = 0; i < MAX_INVENTORY; i ++ ) {
 	for( i = 0, c = 0; i < MAX_INVENTORY; i ++ ) {
-		if( itemdb_is_poison(sd->inventory.u.items_inventory[i].nameid) ) {
+		if( itemdb_group_item_exists(IG_POISON, sd->inventory.u.items_inventory[i].nameid) ) {
 			WFIFOW(fd, c * 2 + 4) = sd->inventory.u.items_inventory[i].nameid;
 			WFIFOW(fd, c * 2 + 4) = sd->inventory.u.items_inventory[i].nameid;
 			c ++;
 			c ++;
 		}
 		}

+ 21 - 0
src/map/itemdb.c

@@ -39,6 +39,27 @@ struct s_item_group_db *itemdb_group_exists(unsigned short group_id) {
 	return (struct s_item_group_db *)uidb_get(itemdb_group, group_id);
 	return (struct s_item_group_db *)uidb_get(itemdb_group, group_id);
 }
 }
 
 
+/**
+ * Check if an item exists in a group
+ * @param nameid: Item to check for in group
+ * @return True if item is in group, else false
+ */
+bool itemdb_group_item_exists(unsigned short group_id, unsigned short nameid)
+{
+	struct s_item_group_db *group = (struct s_item_group_db *)uidb_get(itemdb_group, group_id);
+	uint8 i, j;
+
+	if (!group)
+		return false;
+
+	for (i = 0; i < MAX_ITEMGROUP_RANDGROUP; i++) {
+		for (j = 0; j < group->random[i].data_qty; j++)
+			if (group->random[i].data[j].nameid == nameid)
+				return true;
+	}
+	return false;
+}
+
 /**
 /**
  * Search for item name
  * Search for item name
  * name = item alias, so we should find items aliases first. if not found then look for "jname" (full name)
  * name = item alias, so we should find items aliases first. if not found then look for "jname" (full name)

+ 485 - 103
src/map/itemdb.h

@@ -19,10 +19,6 @@
 ///Maximum amount of items a combo may require
 ///Maximum amount of items a combo may require
 #define MAX_ITEMS_PER_COMBO 6
 #define MAX_ITEMS_PER_COMBO 6
 
 
-//The only item group required by the code to be known. See const.txt for the full list.
-#define IG_FINDINGORE 6
-#define IG_POTION 37
-
 #define MAX_ITEMGROUP_RANDGROUP 4	///Max group for random item (increase this when needed). TODO: Remove this limit and use dynamic size if needed
 #define MAX_ITEMGROUP_RANDGROUP 4	///Max group for random item (increase this when needed). TODO: Remove this limit and use dynamic size if needed
 
 
 #define MAX_ROULETTE_LEVEL 7 /** client-defined value **/
 #define MAX_ROULETTE_LEVEL 7 /** client-defined value **/
@@ -57,7 +53,6 @@ enum item_itemid
 	ITEMID_POISON_BOTTLE				= 678,
 	ITEMID_POISON_BOTTLE				= 678,
 	ITEMID_EMPTY_BOTTLE					= 713,
 	ITEMID_EMPTY_BOTTLE					= 713,
 	ITEMID_EMPERIUM						= 714,
 	ITEMID_EMPERIUM						= 714,
-	ITEMID_YELLOW_GEMSTONE				= 715,
 	ITEMID_RED_GEMSTONE					= 716,
 	ITEMID_RED_GEMSTONE					= 716,
 	ITEMID_BLUE_GEMSTONE				= 717,
 	ITEMID_BLUE_GEMSTONE				= 717,
 	ITEMID_ORIDECON_STONE				= 756,
 	ITEMID_ORIDECON_STONE				= 756,
@@ -126,41 +121,6 @@ enum item_itemid
 	ITEMID_JOB_MANUAL50					= 14592,
 	ITEMID_JOB_MANUAL50					= 14592,
 };
 };
 
 
-///Mercenary Scrolls
-enum mercenary_scroll_item_list
-{
-	ITEMID_BOW_MERCENARY_SCROLL1 = 12153,
-	ITEMID_BOW_MERCENARY_SCROLL2,
-	ITEMID_BOW_MERCENARY_SCROLL3,
-	ITEMID_BOW_MERCENARY_SCROLL4,
-	ITEMID_BOW_MERCENARY_SCROLL5,
-	ITEMID_BOW_MERCENARY_SCROLL6,
-	ITEMID_BOW_MERCENARY_SCROLL7,
-	ITEMID_BOW_MERCENARY_SCROLL8,
-	ITEMID_BOW_MERCENARY_SCROLL9,
-	ITEMID_BOW_MERCENARY_SCROLL10,
-	ITEMID_SWORDMERCENARY_SCROLL1,
-	ITEMID_SWORDMERCENARY_SCROLL2,
-	ITEMID_SWORDMERCENARY_SCROLL3,
-	ITEMID_SWORDMERCENARY_SCROLL4,
-	ITEMID_SWORDMERCENARY_SCROLL5,
-	ITEMID_SWORDMERCENARY_SCROLL6,
-	ITEMID_SWORDMERCENARY_SCROLL7,
-	ITEMID_SWORDMERCENARY_SCROLL8,
-	ITEMID_SWORDMERCENARY_SCROLL9,
-	ITEMID_SWORDMERCENARY_SCROLL10,
-	ITEMID_SPEARMERCENARY_SCROLL1,
-	ITEMID_SPEARMERCENARY_SCROLL2,
-	ITEMID_SPEARMERCENARY_SCROLL3,
-	ITEMID_SPEARMERCENARY_SCROLL4,
-	ITEMID_SPEARMERCENARY_SCROLL5,
-	ITEMID_SPEARMERCENARY_SCROLL6,
-	ITEMID_SPEARMERCENARY_SCROLL7,
-	ITEMID_SPEARMERCENARY_SCROLL8,
-	ITEMID_SPEARMERCENARY_SCROLL9,
-	ITEMID_SPEARMERCENARY_SCROLL10,
-};
-
 ///Rune Knight
 ///Rune Knight
 enum rune_item_list
 enum rune_item_list
 {
 {
@@ -231,28 +191,6 @@ enum genetic_item_list
 	ITEMID_BLACK_HARD_LUMP,
 	ITEMID_BLACK_HARD_LUMP,
 	ITEMID_VERY_HARD_LUMP,
 	ITEMID_VERY_HARD_LUMP,
 	ITEMID_MYSTERIOUS_POWDER,
 	ITEMID_MYSTERIOUS_POWDER,
-	ITEMID_BOOST500_TO_THROW,
-	ITEMID_FULL_SWINGK_TO_THROW,
-	ITEMID_MANA_PLUS_TO_THROW,
-	ITEMID_CURE_FREE_TO_THROW,
-	ITEMID_STAMINA_UP_M_TO_THROW,
-	ITEMID_DIGESTIVE_F_TO_THROW,
-	ITEMID_HP_INC_POTS_TO_THROW,
-	ITEMID_HP_INC_POTM_TO_THROW,
-	ITEMID_HP_INC_POTL_TO_THROW,
-	ITEMID_SP_INC_POTS_TO_THROW,
-	ITEMID_SP_INC_POTM_TO_THROW,
-	ITEMID_SP_INC_POTL_TO_THROW,
-	ITEMID_EN_WHITE_POTZ_TO_THROW,
-	ITEMID_VITATA500_TO_THROW,
-	ITEMID_EN_CEL_JUICE_TO_THROW,
-	ITEMID_SAVAGE_BBQ_TO_THROW,
-	ITEMID_WUG_COCKTAIL_TO_THROW,
-	ITEMID_M_BRISKET_TO_THROW,
-	ITEMID_SIROMA_ICETEA_TO_THROW,
-	ITEMID_DROCERA_STEW_TO_THROW,
-	ITEMID_PETTI_NOODLE_TO_THROW,
-	ITEMID_BLACK_THING_TO_THROW,
 };
 };
 
 
 ///Guillotine Cross
 ///Guillotine Cross
@@ -268,39 +206,6 @@ enum poison_item_list
 	ITEMID_VENOMBLEED,
 	ITEMID_VENOMBLEED,
 };
 };
 
 
-///Spell Books
-enum spell_book_item_list
-{
-	ITEMID_MAGIC_BOOK_FB = 6189,
-	ITEMID_MAGIC_BOOK_CB,
-	ITEMID_MAGIC_BOOK_LB,
-	ITEMID_MAGIC_BOOK_SG,
-	ITEMID_MAGIC_BOOK_LOV,
-	ITEMID_MAGIC_BOOK_MS,
-	ITEMID_MAGIC_BOOK_CM,
-	ITEMID_MAGIC_BOOK_TV,
-	ITEMID_MAGIC_BOOK_TS,
-	ITEMID_MAGIC_BOOK_JT,
-	ITEMID_MAGIC_BOOK_WB,
-	ITEMID_MAGIC_BOOK_HD,
-	ITEMID_MAGIC_BOOK_ES,
-	ITEMID_MAGIC_BOOK_ES_,
-	ITEMID_MAGIC_BOOK_CL,
-	ITEMID_MAGIC_BOOK_CR,
-	ITEMID_MAGIC_BOOK_DL,
-};
-
-///Cash Food
-enum cash_food_item_list
-{
-	ITEMID_STR_DISH10_  = 12202,
-	ITEMID_AGI_DISH10_,
-	ITEMID_INT_DISH10_,
-	ITEMID_DEX_DISH10_,
-	ITEMID_LUK_DISH10_,
-	ITEMID_VIT_DISH10_,
-};
-
 ///Item No Use List
 ///Item No Use List
 enum item_nouse_list
 enum item_nouse_list
 {
 {
@@ -335,6 +240,490 @@ enum e_item_ammo
 
 
 #define AMMO_TYPE_ALL ((1<<MAX_AMMO_TYPE)-1)
 #define AMMO_TYPE_ALL ((1<<MAX_AMMO_TYPE)-1)
 
 
+enum e_random_item_group {
+	IG_BLUEBOX = 1,
+	IG_VIOLETBOX,
+	IG_CARDALBUM,
+	IG_GIFTBOX,
+	IG_SCROLLBOX,
+	IG_FINDINGORE,
+	IG_COOKIEBAG,
+	IG_FIRSTAID,
+	IG_HERB,
+	IG_FRUIT,
+	IG_MEAT,
+	IG_CANDY,
+	IG_JUICE,
+	IG_FISH,
+	IG_BOX,
+	IG_GEMSTONE,
+	IG_RESIST,
+	IG_ORE,
+	IG_FOOD,
+	IG_RECOVERY,
+	IG_MINERAL,
+	IG_TAMING,
+	IG_SCROLL,
+	IG_QUIVER,
+	IG_MASK,
+	IG_ACCESORY,
+	IG_JEWEL,
+	IG_GIFTBOX_1,
+	IG_GIFTBOX_2,
+	IG_GIFTBOX_3,
+	IG_GIFTBOX_4,
+	IG_EGGBOY,
+	IG_EGGGIRL,
+	IG_GIFTBOXCHINA,
+	IG_LOTTOBOX,
+	IG_FOODBAG,
+	IG_POTION,
+	IG_REDBOX_2,
+	IG_BLEUBOX,
+	IG_REDBOX,
+	IG_GREENBOX,
+	IG_YELLOWBOX,
+	IG_OLDGIFTBOX,
+	IG_MAGICCARDALBUM,
+	IG_HOMETOWNGIFT,
+	IG_MASQUERADE,
+	IG_TRESURE_BOX_WOE,
+	IG_MASQUERADE_2,
+	IG_EASTER_SCROLL,
+	IG_PIERRE_TREASUREBOX,
+	IG_CHERISH_BOX,
+	IG_CHERISH_BOX_ORI,
+	IG_LOUISE_COSTUME_BOX,
+	IG_XMAS_GIFT,
+	IG_FRUIT_BASKET,
+	IG_IMPROVED_COIN_BAG,
+	IG_INTERMEDIATE_COIN_BAG,
+	IG_MINOR_COIN_BAG,
+	IG_S_GRADE_COIN_BAG,
+	IG_A_GRADE_COIN_BAG,
+	IG_ADVANCED_WEAPONS_BOX,
+	IG_SPLENDID_BOX,
+	IG_CARDALBUM_ARMOR,
+	IG_CARDALBUM_HELM,
+	IG_CARDALBUM_ACC,
+	IG_CARDALBUM_SHOES,
+	IG_CARDALBUM_SHIELD,
+	IG_CARDALBUM_WEAPON,
+	IG_CARDALBUM_GARMENT,
+	IG_FLAMEL_CARD,
+	IG_SPECIAL_BOX,
+	IG_TRESURE_BOX_WOE_,
+	IG_RWC_PARTI_BOX,
+	IG_RWC_FINAL_COMP_BOX,
+	IG_GIFT_BUNDLE,
+	IG_CARACAS_RING_BOX,
+	IG_CRUMPLED_PAPER,
+	IG_SOLO_GIFT_BASKET,
+	IG_COUPLE_EVENT_BASKET,
+	IG_GM_WARP_BOX,
+	IG_FORTUNE_COOKIE1,
+	IG_FORTUNE_COOKIE2,
+	IG_FORTUNE_COOKIE3,
+	IG_NEW_GIFT_ENVELOPE,
+	IG_PASSION_FB_HAT_BOX,
+	IG_COOL_FB_HAT_BOX,
+	IG_VICTORY_FB_HAT_BOX,
+	IG_GLORY_FB_HAT_BOX,
+	IG_PASSION_HAT_BOX2,
+	IG_COOL_HAT_BOX2,
+	IG_VICTORY_HAT_BOX2,
+	IG_ASPERSIO_5_SCROLL_BOX,
+	IG_PET_EGG_SCROLL_BOX1,
+	IG_PET_EGG_SCROLL_BOX2,
+	IG_PET_EGG_SCROLL1,
+	IG_PET_EGG_SCROLL2,
+	IG_PET_EGG_SCROLL_BOX3,
+	IG_PET_EGG_SCROLL_BOX4,
+	IG_PET_EGG_SCROLL_BOX5,
+	IG_PET_EGG_SCROLL3,
+	IG_PET_EGG_SCROLL4,
+	IG_PET_EGG_SCROLL5,
+	IG_INFILTRATOR_BOX,
+	IG_MURAMASA_BOX,
+	IG_EXCALIBUR_BOX,
+	IG_COMBAT_KNIFE_BOX,
+	IG_COUNTER_DAGGER_BOX,
+	IG_KAISER_KNUCKLE_BOX,
+	IG_POLE_AXE_BOX,
+	IG_MIGHTY_STAFF_BOX,
+	IG_RIGHT_EPSILON_BOX,
+	IG_BALISTAR_BOX,
+	IG_DIARY_OF_GREAT_SAGE_BOX,
+	IG_ASURA_BOX,
+	IG_APPLE_OF_ARCHER_BOX,
+	IG_BUNNY_BAND_BOX,
+	IG_SAHKKAT_BOX,
+	IG_LORD_CIRCLET_BOX,
+	IG_ELVEN_EARS_BOX,
+	IG_STEEL_FLOWER_BOX,
+	IG_CRITICAL_RING_BOX,
+	IG_EARRING_BOX,
+	IG_RING_BOX,
+	IG_NECKLACE_BOX,
+	IG_GLOVE_BOX,
+	IG_BROOCH_BOX,
+	IG_ROSARY_BOX,
+	IG_SAFETY_RING_BOX,
+	IG_VESPER_CORE01_BOX,
+	IG_VESPER_CORE02_BOX,
+	IG_VESPER_CORE03_BOX,
+	IG_VESPER_CORE04_BOX,
+	IG_PET_EGG_SCROLL_BOX6,
+	IG_PET_EGG_SCROLL_BOX7,
+	IG_PET_EGG_SCROLL_BOX8,
+	IG_PET_EGG_SCROLL_BOX9,
+	IG_PET_EGG_SCROLL_BOX10,
+	IG_PET_EGG_SCROLL_BOX11,
+	IG_PET_EGG_SCROLL6,
+	IG_PET_EGG_SCROLL7,
+	IG_PET_EGG_SCROLL8,
+	IG_PET_EGG_SCROLL9,
+	IG_PET_EGG_SCROLL10,
+	IG_PET_EGG_SCROLL11,
+	IG_CP_HELM_SCROLL_BOX,
+	IG_CP_SHIELD_SCROLL_BOX,
+	IG_CP_ARMOR_SCROLL_BOX,
+	IG_CP_WEAPON_SCROLL_BOX,
+	IG_REPAIR_SCROLL_BOX,
+	IG_SUPER_PET_EGG1,
+	IG_SUPER_PET_EGG2,
+	IG_SUPER_PET_EGG3,
+	IG_SUPER_PET_EGG4,
+	IG_SUPER_CARD_PET_EGG1,
+	IG_SUPER_CARD_PET_EGG2,
+	IG_SUPER_CARD_PET_EGG3,
+	IG_SUPER_CARD_PET_EGG4,
+	IG_VIGORGRA_PACKAGE1,
+	IG_VIGORGRA_PACKAGE2,
+	IG_VIGORGRA_PACKAGE3,
+	IG_VIGORGRA_PACKAGE4,
+	IG_VIGORGRA_PACKAGE5,
+	IG_VIGORGRA_PACKAGE6,
+	IG_VIGORGRA_PACKAGE7,
+	IG_VIGORGRA_PACKAGE8,
+	IG_VIGORGRA_PACKAGE9,
+	IG_VIGORGRA_PACKAGE10,
+	IG_VIGORGRA_PACKAGE11,
+	IG_VIGORGRA_PACKAGE12,
+	IG_PET_EGG_SCROLL12,
+	IG_PET_EGG_SCROLL13,
+	IG_PET_EGG_SCROLL14,
+	IG_SUPER_PET_EGG5,
+	IG_SUPER_PET_EGG6,
+	IG_SUPER_PET_EGG7,
+	IG_SUPER_PET_EGG8,
+	IG_PET_EGG_SCROLL_E,
+	IG_RAMEN_HAT_BOX,
+	IG_MYSTERIOUS_TRAVEL_SACK1,
+	IG_MYSTERIOUS_TRAVEL_SACK2,
+	IG_MYSTERIOUS_TRAVEL_SACK3,
+	IG_MYSTERIOUS_TRAVEL_SACK4,
+	IG_MAGICIAN_CARD_BOX,
+	IG_ACOLYTE_CARD_BOX,
+	IG_ARCHER_CARD_BOX,
+	IG_SWORDMAN_CARD_BOX,
+	IG_THIEF_CARD_BOX,
+	IG_MERCHANT_CARD_BOX,
+	IG_HARD_CORE_SET_BOX,
+	IG_KITTY_SET_BOX,
+	IG_SOFT_CORE_SET_BOX,
+	IG_DEVIRUCHI_SET_BOX,
+	IG_MVP_HUNT_BOX,
+	IG_BREWING_BOX,
+	IG_XMAS_PET_SCROLL,
+	IG_LUCKY_SCROLL08,
+	IG_BR_SWORDPACKAGE,
+	IG_BR_MAGEPACKAGE,
+	IG_BR_ACOLPACKAGE,
+	IG_BR_ARCHERPACKAGE,
+	IG_BR_MERPACKAGE,
+	IG_BR_THIEFPACKAGE,
+	IG_ACIDBOMB_10_BOX,
+	IG_BASIC_SIEGE_SUPPLY_BOX,
+	IG_ADV_SIEGE_SUPPLY_BOX,
+	IG_ELITE_SIEGE_SUPPLY_BOX,
+	IG_SAKURA_SCROLL,
+	IG_BEHOLDER_RING_BOX,
+	IG_HALLOW_RING_BOX,
+	IG_CLAMOROUS_RING_BOX,
+	IG_CHEMICAL_RING_BOX,
+	IG_INSECTICIDE_RING_BOX,
+	IG_FISHER_RING_BOX,
+	IG_DECUSSATE_RING_BOX,
+	IG_BLOODY_RING_BOX,
+	IG_SATANIC_RING_BOX,
+	IG_DRAGOON_RING_BOX,
+	IG_ANGEL_SCROLL,
+	IG_DEVIL_SCROLL,
+	IG_SURPRISE_SCROLL,
+	IG_JULY7_SCROLL,
+	IG_BACSOJIN_SCROLL,
+	IG_ANIMAL_SCROLL,
+	IG_HEART_SCROLL,
+	IG_NEW_YEAR_SCROLL,
+	IG_VALENTINE_PLEDGE_BOX,
+	IG_OX_TAIL_SCROLL,
+	IG_BUDDAH_SCROLL,
+	IG_EVIL_INCARNATION,
+	IG_F_CLOVER_BOX_MOUTH,
+	IG_MOUTH_BUBBLE_GUM_BOX,
+	IG_F_CLOVER_BOX_MOUTH2,
+	IG_F_CLOVER_BOX_MOUTH4,
+	IG_BGUM_BOX_IN_MOUTH2,
+	IG_BGUM_BOX_IN_MOUTH4,
+	IG_TW_OCTOBER_SCROLL,
+	IG_MY_SCROLL1,
+	IG_TW_NOV_SCROLL,
+	IG_MY_SCROLL2,
+	IG_PR_RESET_STONE_BOX,
+	IG_FPR_RESET_STONE_BOX,
+	IG_MAJESTIC_DEVIL_SCROLL,
+	IG_LIFE_RIBBON_BOX,
+	IG_LIFE_RIBBON_BOX2,
+	IG_LIFE_RIBBON_BOX3,
+	IG_MAGIC_CANDY_BOX10,
+	IG_RWC2010_SUITCASEA,
+	IG_RWC2010_SUITCASEB,
+	IG_SAGITTARIUS_SCROLL,
+	IG_SAGITTARIUS_SCR_BOX,
+	IG_SAGITTAR_DIADEM_SCROLL,
+	IG_SAGITTAR_DI_SCROLL_BOX,
+	IG_CAPRI_CROWN_SCROLL,
+	IG_CAPRI_CROWN_SCROLL_BOX,
+	IG_CAPRICON_DI_SCROLL,
+	IG_CAPRICON_DI_SCROLL_BOX,
+	IG_AQUARIUS_DIADEM_SCROLL,
+	IG_AQUARIUS_DI_SCROLL_BOX,
+	IG_LOVELY_AQUARIUS_SCROLL,
+	IG_LOVELY_AQUARIUS_BOX,
+	IG_PISCES_DIADEM_SCROLL,
+	IG_PISCES_DIADEM_BOX,
+	IG_ENERGETIC_PISCES_SCROLL,
+	IG_ENERGETIC_PISCES_BOX,
+	IG_ARIES_SCROLL,
+	IG_ARIES_SCROLL_BOX,
+	IG_BOARDING_HALTER_BOX,
+	IG_TAURUS_DIADEM_SCROLL,
+	IG_TAURUS_DI_SCROLL_BOX,
+	IG_UMBALA_SPIRIT_BOX2,
+	IG_F_UMBALA_SPIRIT_BOX2,
+	IG_TAURUS_CROWN_SCROLL,
+	IG_TAURUS_CROWN_SCROLL_BOX,
+	IG_GEMI_DIADEM_SCROLL,
+	IG_GEMI_DIADEM_SCROLL_BOX,
+	IG_SUPER_PET_EGG1_2,
+	IG_SUPER_PET_EGG4_2,
+	IG_FIRE_BRAND_BOX,
+	IG_BR_INDEPENDENCE_SCROLL,
+	IG_ALL_IN_ONE_RING_BOX,
+	IG_GEMI_CROWN_SCROLL,
+	IG_GEMI_CROWN_SCROLL_BOX,
+	IG_RWC_SPECIAL_SCROLL,
+	IG_RWC_LIMITED_SCROLL,
+	IG_ASGARD_SCROLL,
+	IG_MS_CANCER_SCROLL,
+	IG_RWC_SUPER_SCROLL,
+	IG_LEO_SCROLL,
+	IG_MS_VIRGO_SCROLL,
+	IG_LUCKY_EGG_C6,
+	IG_LIBRA_SCROLL,
+	IG_HALLO_SCROLL,
+	IG_MS_SCORPIO_SCROLL,
+	IG_TCG_CARD_SCROLL,
+	IG_BOITATA_SCROLL,
+	IG_LUCKY_EGG_C2,
+	IG_LUCKY_EGG_C6_,
+	IG_LUCKY_EGG_C9,
+	IG_LUCKY_EGG_C7,
+	IG_LUCKY_EGG_C8,
+	IG_LUCKY_EGG_C10,
+	IG_WIND_TYPE_SCROLL,
+	IG_LUCKY_EGG_C3,
+	IG_LUCKY_EGG_C4,
+	IG_LUCKY_EGG_C5,
+	IG_WEATHER_REPORT_BOX,
+	IG_COMIN_ACTOR_BOX,
+	IG_HEN_SET_BOX,
+	IG_LUCKY_EGG_C,
+	IG_WATER_TYPE_SCROLL,
+	IG_EARTH_TYPE_SCROLL,
+	IG_EARTH_TYPE_SCROLL_,
+	IG_SPLASH_SCROLL,
+	IG_VOCATION_SCROLL,
+	IG_WISDOM_SCROLL,
+	IG_PATRON_SCROLL,
+	IG_HEAVEN_SCROLL,
+	IG_TW_AUG_SCROLL,
+	IG_TW_NOV_SCROLL2,
+	IG_ILLUSION_NOTHING,
+	IG_TW_SEP_SCROLL,
+	IG_FLAME_LIGHT,
+	IG_TW_RAINBOW_SCROLL,
+	IG_TW_RED_SCROLL,
+	IG_TW_ORANGE_SCROLL,
+	IG_TW_YELLOW_SCROLL,
+	IG_SCROLL_OF_DEATH,
+	IG_SCROLL_OF_LIFE,
+	IG_SCROLL_OF_MAGIC,
+	IG_SCROLL_OF_THEWS,
+	IG_SCROLL_OF_DARKNESS,
+	IG_SCROLL_OF_HOLINESS,
+	IG_HORNED_SCROLL,
+	IG_MERCURY_SCROLL,
+	IG_CHALLENGE_KIT,
+	IG_TW_APRIL_SCROLL,
+	IG_TW_OCTOBER_SCROLL_,
+	IG_SUMMER_SCROLL3,
+	IG_C_WING_OF_FLY_3DAY_BOX,
+	IG_RWC_2012_SET_BOX,
+	IG_EX_DEF_POTION_BOX,
+	IG_RWC_SCROLL_2012,
+	IG_OLD_COIN_POCKET,
+	IG_HIGH_COIN_POCKET,
+	IG_MID_COIN_POCKET,
+	IG_LOW_COIN_POCKET,
+	IG_SGRADE_POCKET,
+	IG_AGRADE_POCKET,
+	IG_BGRADE_POCKET,
+	IG_CGRADE_POCKET,
+	IG_DGRADE_POCKET,
+	IG_EGRADE_POCKET,
+	IG_PTOTECTION_SEAGOD_BOX,
+	IG_HAIRTAIL_BOX1,
+	IG_HAIRTAIL_BOX2,
+	IG_SPEARFISH_BOX1,
+	IG_SPEARFISH_BOX2,
+	IG_SAUREL_BOX1,
+	IG_SAUREL_BOX2,
+	IG_TUNA_BOX1,
+	IG_TUNA_BOX2,
+	IG_MALANG_CRAB_BOX1,
+	IG_MALANG_CRAB_BOX2,
+	IG_BRINDLE_EEL_BOX1,
+	IG_BRINDLE_EEL_BOX2,
+	IG_PTOTECTION_SEAGOD_BOX2,
+	IG_PTOTECTION_SEAGOD_BOX3,
+	IG_OCTO_HSTICK_BOX,
+	IG_OCTO_HSTICK_BOX2,
+	IG_OCTO_HSTICK_BOX3,
+	IG_SILVERVINE_FRUIT_BOX10,
+	IG_SILVERVINE_FRUIT_BOX40,
+	IG_SILVERVINE_FRUIT_BOX4,
+	IG_MALANG_WOE_ENCARD_BOX,
+	IG_XMAS_BLESS,
+	IG_FIRE_TYPE_SCROLL,
+	IG_BLUE_SCROLL,
+	IG_GOOD_STUDENT_GIFT_BOX,
+	IG_BAD_STUDENT_GIFT_BOX,
+	IG_INDIGO_SCROLL,
+	IG_VIOLET_SCROLL,
+	IG_BI_HWANG_SCROLL,
+	IG_JUNG_BI_SCROLL,
+	IG_JE_UN_SCROLL,
+	IG_YONG_KWANG_SCROLL,
+	IG_HALLOWEEN_G_BOX,
+	IG_SOLO_CHRISTMAS_GIFT,
+	IG_SG_WEAPON_SUPPLY_BOX,
+	IG_CANDY_HOLDER,
+	IG_LUCKY_BAG,
+	IG_HOLY_EGG_2,
+	IG_ADVENTURER_RETURNS_SUPPORT_BOX,
+	IG_SUPPORT_PACKAGE,
+	IG_SUPPORT_PACKAGE10,
+	IG_EVENT_ALMIGHTY_BOX,
+	IG_EVENT_ALMIGHTY_BOX10,
+	IG_LOTTOBOX1,
+	IG_LOTTOBOX2,
+	IG_LOTTOBOX3,
+	IG_LOTTOBOX4,
+	IG_LOTTOBOX5,
+	IG_SUPPORT_PACKAGE_III,
+	IG_SUPPORT_PACKAGE_III10,
+	IG_UNLIMITED_BOX,
+	IG_UNLIMITED_BOX10,
+	IG_UNLIMITED_BOX_II,
+	IG_UNLIMITED_BOX_II10,
+	IG_THREE_MASTER_PACKAGE_III,
+	IG_THREE_MASTER_PACKAGE_III10,
+	IG_2013_RWC_SCROLL,
+	IG_SUPPORT_PACKAGE_II,
+	IG_SUPPORT_PACKAGE_II10,
+	IG_LEVEL_UP_BOX100,
+	IG_LEVEL_UP_BOX120,
+	IG_LEVEL_UP_BOX130,
+	IG_LEVEL_UP_BOX140,
+	IG_LEVEL_UP_BOX150,
+	IG_LEVEL_UP_BOX160,
+	IG_GIFT_BUFF_SET       ,
+	IG_LUCKY_SILVERVINE_FRUIT_BOX_III10,
+	IG_LUCKY_SILVERVINE_FRUIT_BOX_III110,
+	IG_OLD_ORE_BOX,
+	IG_BLESSING_LUCKY_EGG,
+	IG_SOGRAT_LUCKY_EGG,
+	IG_GARNET_LUCKY_EGG,
+	IG_AMORA_LUCKY_EGG,
+	IG_VENUS_LUCKY_EGG,
+	IG_ERZULIE_LUCKY_EGG,
+	IG_MAJESTIC_LUCKY_EGG,
+	IG_EPIC_HEROES_LUCKY_EGG,
+	IG_HERO_MIDGARD_EGG,
+	IG_MIDGARD_CELEBRATION_LUCKY_EGG,
+	IG_RUNE_MIDGARD_IMORTAL_LUCKY_EGG,
+	IG_RISE_MIDGARD_LUCKY_EGG,
+	IG_TIME_TRAVEL_LUCKY_EGG,
+	IG_SOLARIS_FESTIVAL_SCROLL,
+	IG_MIDGARD_FESTIVAL_EGG,
+	IG_MIDGARD_EGG,
+	IG_SWEET_MIDGARD_EGG,
+	IG_WINTER_MIDGARD_EGG,
+	IG_SPRING_FESTIVAL_LUCKY_EGG,
+	IG_BIRTHDAY_IDRO10TH_SCROLL,
+	IG_REQUIEM_EGG,
+	IG_HOLY_SPIRIT_EGG,
+	IG_MEMORIAL_GARUDA_LUCKY_EGG,
+	IG_MIRACLE_LUCKY_EGG,
+	IG_LEGEND_HERO_LUCKY_EGG,
+	IG_BLESSING_MIDGARD_LUCKY_EGG,
+	IG_CHRONOSIAN_LUCKY_EGG,
+	IG_SANCTUARY_LUCKY_EGG,
+	IG_CYBORG_LUCKY_EGG,
+	IG_UNDINE_LUCKY_EGG,
+	IG_GOD_MATERIAL_BOX,
+	IG_SEALED_MIND_BOX,
+	IG_FROZEN_EGG_COSTUME,
+	IG_HEADGEAR_COSTUME_SCROLL,
+	IG_FLOWER_BLOSSOM_SCROLL,
+	IG_SEASIDE_COSTUME_SCROLL,
+	IG_SMITHY_LUCKY_EGG,
+	IG_GANYMEDE_LUCKY_EGG,
+	IG_LASTANGEL_LUCKYSCROLL,
+	IG_VALKYRIE_LUCKY_EGG,
+	IG_SPLASH_RAINBOW_LUCKY_EGG,
+	IG_SHAPESHIFTER_COSTUME,
+	IG_ALMIGHTY_LUCKY_EGG,
+	IG_BURNING_FEATHER_COSTUME_SCROLL,
+	IG_ANIMAL_COSTUME_SCROLL,
+	IG_MIDGARD_LUCKY_SCROLL,
+	IG_BLESSING_SCARLET_EGG,
+	IG_MYSTICAL_COSTUME_SCROLL,
+	IG_INK_BALL,
+	IG_SOMETHING_CANDY_HOLDER,
+	IG_SHINING_EGG,
+	IG_SHINING_BLUE_LUCKY_EGG,
+	IG_RUNE,
+	IG_ELEMENT,
+	IG_POISON,
+	IG_CASH_FOOD,
+	IG_BOMB,
+	IG_THROWABLE,
+	IG_MERCENARY,
+};
+
 ///Item combo struct
 ///Item combo struct
 struct item_combo
 struct item_combo
 {
 {
@@ -481,14 +870,6 @@ struct item_data* itemdb_exists(unsigned short nameid);
 #define itemdb_traderight(n) (itemdb_search(n)->flag.trade_restriction)
 #define itemdb_traderight(n) (itemdb_search(n)->flag.trade_restriction)
 #define itemdb_viewid(n) (itemdb_search(n)->view_id)
 #define itemdb_viewid(n) (itemdb_search(n)->view_id)
 #define itemdb_autoequip(n) (itemdb_search(n)->flag.autoequip)
 #define itemdb_autoequip(n) (itemdb_search(n)->flag.autoequip)
-#define itemdb_is_rune(n) ((n >= ITEMID_NAUTHIZ && n <= ITEMID_HAGALAZ) || n == ITEMID_LUX_ANIMA)
-#define itemdb_is_element(n) (n >= ITEMID_SCARLET_PTS && n <= ITEMID_LIME_GREEN_PTS)
-#define itemdb_is_spellbook(n) (n >= ITEMID_MAGIC_BOOK_FB && n <= ITEMID_MAGIC_BOOK_DL)
-#define itemdb_is_poison(n) (n >= ITEMID_PARALYSE && n <= ITEMID_VENOMBLEED)
-#define itemid_isgemstone(id) ( (id) >= ITEMID_YELLOW_GEMSTONE && (id) <= ITEMID_BLUE_GEMSTONE )
-#define itemdb_iscashfood(id) ( (id) >= ITEMID_STR_DISH10_ && (id) <= ITEMID_VIT_DISH10_ )
-#define itemdb_is_GNbomb(n) (n >= ITEMID_APPLE_BOMB && n <= ITEMID_VERY_HARD_LUMP)
-#define itemdb_is_GNthrowable(n) (n >= ITEMID_MYSTERIOUS_POWDER && n <= ITEMID_BLACK_THING_TO_THROW)
 const char* itemdb_typename(enum item_types type);
 const char* itemdb_typename(enum item_types type);
 const char *itemdb_typename_ammo (enum e_item_ammo ammo);
 const char *itemdb_typename_ammo (enum e_item_ammo ammo);
 bool itemdb_is_spellbook2(unsigned short nameid);
 bool itemdb_is_spellbook2(unsigned short nameid);
@@ -530,6 +911,7 @@ bool itemdb_isNoEquip(struct item_data *id, uint16 m);
 struct item_combo *itemdb_combo_exists(unsigned short combo_id);
 struct item_combo *itemdb_combo_exists(unsigned short combo_id);
 
 
 struct s_item_group_db *itemdb_group_exists(unsigned short group_id);
 struct s_item_group_db *itemdb_group_exists(unsigned short group_id);
+bool itemdb_group_item_exists(unsigned short group_id, unsigned short nameid);
 char itemdb_pc_get_itemgroup(uint16 group_id, struct map_session_data *sd);
 char itemdb_pc_get_itemgroup(uint16 group_id, struct map_session_data *sd);
 uint16 itemdb_get_randgroupitem_count(uint16 group_id, uint8 sub_group, unsigned short nameid);
 uint16 itemdb_get_randgroupitem_count(uint16 group_id, uint8 sub_group, unsigned short nameid);
 
 

+ 5 - 5
src/map/pc.c

@@ -4728,7 +4728,7 @@ bool pc_isUseitem(struct map_session_data *sd,int n)
 		return false;
 		return false;
 	//Prevent mass item usage. [Skotlex]
 	//Prevent mass item usage. [Skotlex]
 	if( DIFF_TICK(sd->canuseitem_tick,gettick()) > 0 ||
 	if( DIFF_TICK(sd->canuseitem_tick,gettick()) > 0 ||
-		(itemdb_iscashfood(nameid) && DIFF_TICK(sd->canusecashfood_tick,gettick()) > 0)
+		(itemdb_group_item_exists(IG_CASH_FOOD, nameid) && DIFF_TICK(sd->canusecashfood_tick,gettick()) > 0)
 	)
 	)
 		return false;
 		return false;
 
 
@@ -4812,18 +4812,18 @@ bool pc_isUseitem(struct map_session_data *sd,int n)
 			break;
 			break;
 	}
 	}
 
 
-	if( nameid >= ITEMID_BOW_MERCENARY_SCROLL1 && nameid <= ITEMID_SPEARMERCENARY_SCROLL10 && sd->md != NULL )
+	if( itemdb_group_item_exists(IG_MERCENARY, nameid) && sd->md != NULL )
 		return false; // Mercenary Scrolls
 		return false; // Mercenary Scrolls
 
 
 	/**
 	/**
 	 * Only Rune Knights may use runes
 	 * Only Rune Knights may use runes
 	 **/
 	 **/
-	if( itemdb_is_rune(nameid) && (sd->class_&MAPID_THIRDMASK) != MAPID_RUNE_KNIGHT )
+	if( itemdb_group_item_exists(IG_RUNE, nameid) && (sd->class_&MAPID_THIRDMASK) != MAPID_RUNE_KNIGHT )
 		return false;
 		return false;
 	/**
 	/**
 	 * Only GCross may use poisons
 	 * Only GCross may use poisons
 	 **/
 	 **/
-	else if( itemdb_is_poison(nameid) && (sd->class_&MAPID_THIRDMASK) != MAPID_GUILLOTINE_CROSS )
+	else if( itemdb_group_item_exists(IG_POISON, nameid) && (sd->class_&MAPID_THIRDMASK) != MAPID_GUILLOTINE_CROSS )
 		return false;
 		return false;
 
 
 	if( item->flag.group || item->type == IT_CASH) {	//safe check type cash disappear when overweight [Napster]
 	if( item->flag.group || item->type == IT_CASH) {	//safe check type cash disappear when overweight [Napster]
@@ -4982,7 +4982,7 @@ int pc_useitem(struct map_session_data *sd,int n)
 
 
 	//Update item use time.
 	//Update item use time.
 	sd->canuseitem_tick = tick + battle_config.item_use_interval;
 	sd->canuseitem_tick = tick + battle_config.item_use_interval;
-	if( itemdb_iscashfood(nameid) )
+	if( itemdb_group_item_exists(IG_CASH_FOOD, nameid) )
 		sd->canusecashfood_tick = tick + battle_config.cashfood_use_interval;
 		sd->canusecashfood_tick = tick + battle_config.cashfood_use_interval;
 
 
 	run_script(script,0,sd->bl.id,fake_nd->bl.id);
 	run_script(script,0,sd->bl.id,fake_nd->bl.id);

+ 483 - 0
src/map/script_constants.h

@@ -3181,6 +3181,489 @@
 	export_constant(STOR_MODE_GET);
 	export_constant(STOR_MODE_GET);
 	export_constant(STOR_MODE_PUT);
 	export_constant(STOR_MODE_PUT);
 
 
+	/* item groups */
+	export_constant(IG_BLUEBOX);
+	export_constant(IG_VIOLETBOX);
+	export_constant(IG_CARDALBUM);
+	export_constant(IG_GIFTBOX);
+	export_constant(IG_SCROLLBOX);
+	export_constant(IG_FINDINGORE);
+	export_constant(IG_COOKIEBAG);
+	export_constant(IG_FIRSTAID);
+	export_constant(IG_HERB);
+	export_constant(IG_FRUIT);
+	export_constant(IG_MEAT);
+	export_constant(IG_CANDY);
+	export_constant(IG_JUICE);
+	export_constant(IG_FISH);
+	export_constant(IG_BOX);
+	export_constant(IG_GEMSTONE);
+	export_constant(IG_RESIST);
+	export_constant(IG_ORE);
+	export_constant(IG_FOOD);
+	export_constant(IG_RECOVERY);
+	export_constant(IG_MINERAL);
+	export_constant(IG_TAMING);
+	export_constant(IG_SCROLL);
+	export_constant(IG_QUIVER);
+	export_constant(IG_MASK);
+	export_constant(IG_ACCESORY);
+	export_constant(IG_JEWEL);
+	export_constant(IG_GIFTBOX_1);
+	export_constant(IG_GIFTBOX_2);
+	export_constant(IG_GIFTBOX_3);
+	export_constant(IG_GIFTBOX_4);
+	export_constant(IG_EGGBOY);
+	export_constant(IG_EGGGIRL);
+	export_constant(IG_GIFTBOXCHINA);
+	export_constant(IG_LOTTOBOX);
+	export_constant(IG_FOODBAG);
+	export_constant(IG_POTION);
+	export_constant(IG_REDBOX_2);
+	export_constant(IG_BLEUBOX);
+	export_constant(IG_REDBOX);
+	export_constant(IG_GREENBOX);
+	export_constant(IG_YELLOWBOX);
+	export_constant(IG_OLDGIFTBOX);
+	export_constant(IG_MAGICCARDALBUM);
+	export_constant(IG_HOMETOWNGIFT);
+	export_constant(IG_MASQUERADE);
+	export_constant(IG_TRESURE_BOX_WOE);
+	export_constant(IG_MASQUERADE_2);
+	export_constant(IG_EASTER_SCROLL);
+	export_constant(IG_PIERRE_TREASUREBOX);
+	export_constant(IG_CHERISH_BOX);
+	export_constant(IG_CHERISH_BOX_ORI);
+	export_constant(IG_LOUISE_COSTUME_BOX);
+	export_constant(IG_XMAS_GIFT);
+	export_constant(IG_FRUIT_BASKET);
+	export_constant(IG_IMPROVED_COIN_BAG);
+	export_constant(IG_INTERMEDIATE_COIN_BAG);
+	export_constant(IG_MINOR_COIN_BAG);
+	export_constant(IG_S_GRADE_COIN_BAG);
+	export_constant(IG_A_GRADE_COIN_BAG);
+	export_constant(IG_ADVANCED_WEAPONS_BOX);
+	export_constant(IG_SPLENDID_BOX);
+	export_constant(IG_CARDALBUM_ARMOR);
+	export_constant(IG_CARDALBUM_HELM);
+	export_constant(IG_CARDALBUM_ACC);
+	export_constant(IG_CARDALBUM_SHOES);
+	export_constant(IG_CARDALBUM_SHIELD);
+	export_constant(IG_CARDALBUM_WEAPON);
+	export_constant(IG_CARDALBUM_GARMENT);
+	export_constant(IG_FLAMEL_CARD);
+	export_constant(IG_SPECIAL_BOX);
+	export_constant(IG_TRESURE_BOX_WOE_);
+	export_constant(IG_RWC_PARTI_BOX);
+	export_constant(IG_RWC_FINAL_COMP_BOX);
+	export_constant(IG_GIFT_BUNDLE);
+	export_constant(IG_CARACAS_RING_BOX);
+	export_constant(IG_CRUMPLED_PAPER);
+	export_constant(IG_SOLO_GIFT_BASKET);
+	export_constant(IG_COUPLE_EVENT_BASKET);
+	export_constant(IG_GM_WARP_BOX);
+	export_constant(IG_FORTUNE_COOKIE1);
+	export_constant(IG_FORTUNE_COOKIE2);
+	export_constant(IG_FORTUNE_COOKIE3);
+	export_constant(IG_NEW_GIFT_ENVELOPE);
+	export_constant(IG_PASSION_FB_HAT_BOX);
+	export_constant(IG_COOL_FB_HAT_BOX);
+	export_constant(IG_VICTORY_FB_HAT_BOX);
+	export_constant(IG_GLORY_FB_HAT_BOX);
+	export_constant(IG_PASSION_HAT_BOX2);
+	export_constant(IG_COOL_HAT_BOX2);
+	export_constant(IG_VICTORY_HAT_BOX2);
+	export_constant(IG_ASPERSIO_5_SCROLL_BOX);
+	export_constant(IG_PET_EGG_SCROLL_BOX1);
+	export_constant(IG_PET_EGG_SCROLL_BOX2);
+	export_constant(IG_PET_EGG_SCROLL1);
+	export_constant(IG_PET_EGG_SCROLL2);
+	export_constant(IG_PET_EGG_SCROLL_BOX3);
+	export_constant(IG_PET_EGG_SCROLL_BOX4);
+	export_constant(IG_PET_EGG_SCROLL_BOX5);
+	export_constant(IG_PET_EGG_SCROLL3);
+	export_constant(IG_PET_EGG_SCROLL4);
+	export_constant(IG_PET_EGG_SCROLL5);
+	export_constant(IG_INFILTRATOR_BOX);
+	export_constant(IG_MURAMASA_BOX);
+	export_constant(IG_EXCALIBUR_BOX);
+	export_constant(IG_COMBAT_KNIFE_BOX);
+	export_constant(IG_COUNTER_DAGGER_BOX);
+	export_constant(IG_KAISER_KNUCKLE_BOX);
+	export_constant(IG_POLE_AXE_BOX);
+	export_constant(IG_MIGHTY_STAFF_BOX);
+	export_constant(IG_RIGHT_EPSILON_BOX);
+	export_constant(IG_BALISTAR_BOX);
+	export_constant(IG_DIARY_OF_GREAT_SAGE_BOX);
+	export_constant(IG_ASURA_BOX);
+	export_constant(IG_APPLE_OF_ARCHER_BOX);
+	export_constant(IG_BUNNY_BAND_BOX);
+	export_constant(IG_SAHKKAT_BOX);
+	export_constant(IG_LORD_CIRCLET_BOX);
+	export_constant(IG_ELVEN_EARS_BOX);
+	export_constant(IG_STEEL_FLOWER_BOX);
+	export_constant(IG_CRITICAL_RING_BOX);
+	export_constant(IG_EARRING_BOX);
+	export_constant(IG_RING_BOX);
+	export_constant(IG_NECKLACE_BOX);
+	export_constant(IG_GLOVE_BOX);
+	export_constant(IG_BROOCH_BOX);
+	export_constant(IG_ROSARY_BOX);
+	export_constant(IG_SAFETY_RING_BOX);
+	export_constant(IG_VESPER_CORE01_BOX);
+	export_constant(IG_VESPER_CORE02_BOX);
+	export_constant(IG_VESPER_CORE03_BOX);
+	export_constant(IG_VESPER_CORE04_BOX);
+	export_constant(IG_PET_EGG_SCROLL_BOX6);
+	export_constant(IG_PET_EGG_SCROLL_BOX7);
+	export_constant(IG_PET_EGG_SCROLL_BOX8);
+	export_constant(IG_PET_EGG_SCROLL_BOX9);
+	export_constant(IG_PET_EGG_SCROLL_BOX10);
+	export_constant(IG_PET_EGG_SCROLL_BOX11);
+	export_constant(IG_PET_EGG_SCROLL6);
+	export_constant(IG_PET_EGG_SCROLL7);
+	export_constant(IG_PET_EGG_SCROLL8);
+	export_constant(IG_PET_EGG_SCROLL9);
+	export_constant(IG_PET_EGG_SCROLL10);
+	export_constant(IG_PET_EGG_SCROLL11);
+	export_constant(IG_CP_HELM_SCROLL_BOX);
+	export_constant(IG_CP_SHIELD_SCROLL_BOX);
+	export_constant(IG_CP_ARMOR_SCROLL_BOX);
+	export_constant(IG_CP_WEAPON_SCROLL_BOX);
+	export_constant(IG_REPAIR_SCROLL_BOX);
+	export_constant(IG_SUPER_PET_EGG1);
+	export_constant(IG_SUPER_PET_EGG2);
+	export_constant(IG_SUPER_PET_EGG3);
+	export_constant(IG_SUPER_PET_EGG4);
+	export_constant(IG_SUPER_CARD_PET_EGG1);
+	export_constant(IG_SUPER_CARD_PET_EGG2);
+	export_constant(IG_SUPER_CARD_PET_EGG3);
+	export_constant(IG_SUPER_CARD_PET_EGG4);
+	export_constant(IG_VIGORGRA_PACKAGE1);
+	export_constant(IG_VIGORGRA_PACKAGE2);
+	export_constant(IG_VIGORGRA_PACKAGE3);
+	export_constant(IG_VIGORGRA_PACKAGE4);
+	export_constant(IG_VIGORGRA_PACKAGE5);
+	export_constant(IG_VIGORGRA_PACKAGE6);
+	export_constant(IG_VIGORGRA_PACKAGE7);
+	export_constant(IG_VIGORGRA_PACKAGE8);
+	export_constant(IG_VIGORGRA_PACKAGE9);
+	export_constant(IG_VIGORGRA_PACKAGE10);
+	export_constant(IG_VIGORGRA_PACKAGE11);
+	export_constant(IG_VIGORGRA_PACKAGE12);
+	export_constant(IG_PET_EGG_SCROLL12);
+	export_constant(IG_PET_EGG_SCROLL13);
+	export_constant(IG_PET_EGG_SCROLL14);
+	export_constant(IG_SUPER_PET_EGG5);
+	export_constant(IG_SUPER_PET_EGG6);
+	export_constant(IG_SUPER_PET_EGG7);
+	export_constant(IG_SUPER_PET_EGG8);
+	export_constant(IG_PET_EGG_SCROLL_E);
+	export_constant(IG_RAMEN_HAT_BOX);
+	export_constant(IG_MYSTERIOUS_TRAVEL_SACK1);
+	export_constant(IG_MYSTERIOUS_TRAVEL_SACK2);
+	export_constant(IG_MYSTERIOUS_TRAVEL_SACK3);
+	export_constant(IG_MYSTERIOUS_TRAVEL_SACK4);
+	export_constant(IG_MAGICIAN_CARD_BOX);
+	export_constant(IG_ACOLYTE_CARD_BOX);
+	export_constant(IG_ARCHER_CARD_BOX);
+	export_constant(IG_SWORDMAN_CARD_BOX);
+	export_constant(IG_THIEF_CARD_BOX);
+	export_constant(IG_MERCHANT_CARD_BOX);
+	export_constant(IG_HARD_CORE_SET_BOX);
+	export_constant(IG_KITTY_SET_BOX);
+	export_constant(IG_SOFT_CORE_SET_BOX);
+	export_constant(IG_DEVIRUCHI_SET_BOX);
+	export_constant(IG_MVP_HUNT_BOX);
+	export_constant(IG_BREWING_BOX);
+	export_constant(IG_XMAS_PET_SCROLL);
+	export_constant(IG_LUCKY_SCROLL08);
+	export_constant(IG_BR_SWORDPACKAGE);
+	export_constant(IG_BR_MAGEPACKAGE);
+	export_constant(IG_BR_ACOLPACKAGE);
+	export_constant(IG_BR_ARCHERPACKAGE);
+	export_constant(IG_BR_MERPACKAGE);
+	export_constant(IG_BR_THIEFPACKAGE);
+	export_constant(IG_ACIDBOMB_10_BOX);
+	export_constant(IG_BASIC_SIEGE_SUPPLY_BOX);
+	export_constant(IG_ADV_SIEGE_SUPPLY_BOX);
+	export_constant(IG_ELITE_SIEGE_SUPPLY_BOX);
+	export_constant(IG_SAKURA_SCROLL);
+	export_constant(IG_BEHOLDER_RING_BOX);
+	export_constant(IG_HALLOW_RING_BOX);
+	export_constant(IG_CLAMOROUS_RING_BOX);
+	export_constant(IG_CHEMICAL_RING_BOX);
+	export_constant(IG_INSECTICIDE_RING_BOX);
+	export_constant(IG_FISHER_RING_BOX);
+	export_constant(IG_DECUSSATE_RING_BOX);
+	export_constant(IG_BLOODY_RING_BOX);
+	export_constant(IG_SATANIC_RING_BOX);
+	export_constant(IG_DRAGOON_RING_BOX);
+	export_constant(IG_ANGEL_SCROLL);
+	export_constant(IG_DEVIL_SCROLL);
+	export_constant(IG_SURPRISE_SCROLL);
+	export_constant(IG_JULY7_SCROLL);
+	export_constant(IG_BACSOJIN_SCROLL);
+	export_constant(IG_ANIMAL_SCROLL);
+	export_constant(IG_HEART_SCROLL);
+	export_constant(IG_NEW_YEAR_SCROLL);
+	export_constant(IG_VALENTINE_PLEDGE_BOX);
+	export_constant(IG_OX_TAIL_SCROLL);
+	export_constant(IG_BUDDAH_SCROLL);
+	export_constant(IG_EVIL_INCARNATION);
+	export_constant(IG_F_CLOVER_BOX_MOUTH);
+	export_constant(IG_MOUTH_BUBBLE_GUM_BOX);
+	export_constant(IG_F_CLOVER_BOX_MOUTH2);
+	export_constant(IG_F_CLOVER_BOX_MOUTH4);
+	export_constant(IG_BGUM_BOX_IN_MOUTH2);
+	export_constant(IG_BGUM_BOX_IN_MOUTH4);
+	export_constant(IG_TW_OCTOBER_SCROLL);
+	export_constant(IG_MY_SCROLL1);
+	export_constant(IG_TW_NOV_SCROLL);
+	export_constant(IG_MY_SCROLL2);
+	export_constant(IG_PR_RESET_STONE_BOX);
+	export_constant(IG_FPR_RESET_STONE_BOX);
+	export_constant(IG_MAJESTIC_DEVIL_SCROLL);
+	export_constant(IG_LIFE_RIBBON_BOX);
+	export_constant(IG_LIFE_RIBBON_BOX2);
+	export_constant(IG_LIFE_RIBBON_BOX3);
+	export_constant(IG_MAGIC_CANDY_BOX10);
+	export_constant(IG_RWC2010_SUITCASEA);
+	export_constant(IG_RWC2010_SUITCASEB);
+	export_constant(IG_SAGITTARIUS_SCROLL);
+	export_constant(IG_SAGITTARIUS_SCR_BOX);
+	export_constant(IG_SAGITTAR_DIADEM_SCROLL);
+	export_constant(IG_SAGITTAR_DI_SCROLL_BOX);
+	export_constant(IG_CAPRI_CROWN_SCROLL);
+	export_constant(IG_CAPRI_CROWN_SCROLL_BOX);
+	export_constant(IG_CAPRICON_DI_SCROLL);
+	export_constant(IG_CAPRICON_DI_SCROLL_BOX);
+	export_constant(IG_AQUARIUS_DIADEM_SCROLL);
+	export_constant(IG_AQUARIUS_DI_SCROLL_BOX);
+	export_constant(IG_LOVELY_AQUARIUS_SCROLL);
+	export_constant(IG_LOVELY_AQUARIUS_BOX);
+	export_constant(IG_PISCES_DIADEM_SCROLL);
+	export_constant(IG_PISCES_DIADEM_BOX);
+	export_constant(IG_ENERGETIC_PISCES_SCROLL);
+	export_constant(IG_ENERGETIC_PISCES_BOX);
+	export_constant(IG_ARIES_SCROLL);
+	export_constant(IG_ARIES_SCROLL_BOX);
+	export_constant(IG_BOARDING_HALTER_BOX);
+	export_constant(IG_TAURUS_DIADEM_SCROLL);
+	export_constant(IG_TAURUS_DI_SCROLL_BOX);
+	export_constant(IG_UMBALA_SPIRIT_BOX2);
+	export_constant(IG_F_UMBALA_SPIRIT_BOX2);
+	export_constant(IG_TAURUS_CROWN_SCROLL);
+	export_constant(IG_TAURUS_CROWN_SCROLL_BOX);
+	export_constant(IG_GEMI_DIADEM_SCROLL);
+	export_constant(IG_GEMI_DIADEM_SCROLL_BOX);
+	export_constant(IG_SUPER_PET_EGG1_2);
+	export_constant(IG_SUPER_PET_EGG4_2);
+	export_constant(IG_FIRE_BRAND_BOX);
+	export_constant(IG_BR_INDEPENDENCE_SCROLL);
+	export_constant(IG_ALL_IN_ONE_RING_BOX);
+	export_constant(IG_GEMI_CROWN_SCROLL);
+	export_constant(IG_GEMI_CROWN_SCROLL_BOX);
+	export_constant(IG_RWC_SPECIAL_SCROLL);
+	export_constant(IG_RWC_LIMITED_SCROLL);
+	export_constant(IG_ASGARD_SCROLL);
+	export_constant(IG_MS_CANCER_SCROLL);
+	export_constant(IG_RWC_SUPER_SCROLL);
+	export_constant(IG_LEO_SCROLL);
+	export_constant(IG_MS_VIRGO_SCROLL);
+	export_constant(IG_LUCKY_EGG_C6);
+	export_constant(IG_LIBRA_SCROLL);
+	export_constant(IG_HALLO_SCROLL);
+	export_constant(IG_MS_SCORPIO_SCROLL);
+	export_constant(IG_TCG_CARD_SCROLL);
+	export_constant(IG_BOITATA_SCROLL);
+	export_constant(IG_LUCKY_EGG_C2);
+	export_constant(IG_LUCKY_EGG_C6_);
+	export_constant(IG_LUCKY_EGG_C9);
+	export_constant(IG_LUCKY_EGG_C7);
+	export_constant(IG_LUCKY_EGG_C8);
+	export_constant(IG_LUCKY_EGG_C10);
+	export_constant(IG_WIND_TYPE_SCROLL);
+	export_constant(IG_LUCKY_EGG_C3);
+	export_constant(IG_LUCKY_EGG_C4);
+	export_constant(IG_LUCKY_EGG_C5);
+	export_constant(IG_WEATHER_REPORT_BOX);
+	export_constant(IG_COMIN_ACTOR_BOX);
+	export_constant(IG_HEN_SET_BOX);
+	export_constant(IG_LUCKY_EGG_C);
+	export_constant(IG_WATER_TYPE_SCROLL);
+	export_constant(IG_EARTH_TYPE_SCROLL);
+	export_constant(IG_EARTH_TYPE_SCROLL_);
+	export_constant(IG_SPLASH_SCROLL);
+	export_constant(IG_VOCATION_SCROLL);
+	export_constant(IG_WISDOM_SCROLL);
+	export_constant(IG_PATRON_SCROLL);
+	export_constant(IG_HEAVEN_SCROLL);
+	export_constant(IG_TW_AUG_SCROLL);
+	export_constant(IG_TW_NOV_SCROLL2);
+	export_constant(IG_ILLUSION_NOTHING);
+	export_constant(IG_TW_SEP_SCROLL);
+	export_constant(IG_FLAME_LIGHT);
+	export_constant(IG_TW_RAINBOW_SCROLL);
+	export_constant(IG_TW_RED_SCROLL);
+	export_constant(IG_TW_ORANGE_SCROLL);
+	export_constant(IG_TW_YELLOW_SCROLL);
+	export_constant(IG_SCROLL_OF_DEATH);
+	export_constant(IG_SCROLL_OF_LIFE);
+	export_constant(IG_SCROLL_OF_MAGIC);
+	export_constant(IG_SCROLL_OF_THEWS);
+	export_constant(IG_SCROLL_OF_DARKNESS);
+	export_constant(IG_SCROLL_OF_HOLINESS);
+	export_constant(IG_HORNED_SCROLL);
+	export_constant(IG_MERCURY_SCROLL);
+	export_constant(IG_CHALLENGE_KIT);
+	export_constant(IG_TW_APRIL_SCROLL);
+	export_constant(IG_TW_OCTOBER_SCROLL_);
+	export_constant(IG_SUMMER_SCROLL3);
+	export_constant(IG_C_WING_OF_FLY_3DAY_BOX);
+	export_constant(IG_RWC_2012_SET_BOX);
+	export_constant(IG_EX_DEF_POTION_BOX);
+	export_constant(IG_RWC_SCROLL_2012);
+	export_constant(IG_OLD_COIN_POCKET);
+	export_constant(IG_HIGH_COIN_POCKET);
+	export_constant(IG_MID_COIN_POCKET);
+	export_constant(IG_LOW_COIN_POCKET);
+	export_constant(IG_SGRADE_POCKET);
+	export_constant(IG_AGRADE_POCKET);
+	export_constant(IG_BGRADE_POCKET);
+	export_constant(IG_CGRADE_POCKET);
+	export_constant(IG_DGRADE_POCKET);
+	export_constant(IG_EGRADE_POCKET);
+	export_constant(IG_PTOTECTION_SEAGOD_BOX);
+	export_constant(IG_HAIRTAIL_BOX1);
+	export_constant(IG_HAIRTAIL_BOX2);
+	export_constant(IG_SPEARFISH_BOX1);
+	export_constant(IG_SPEARFISH_BOX2);
+	export_constant(IG_SAUREL_BOX1);
+	export_constant(IG_SAUREL_BOX2);
+	export_constant(IG_TUNA_BOX1);
+	export_constant(IG_TUNA_BOX2);
+	export_constant(IG_MALANG_CRAB_BOX1);
+	export_constant(IG_MALANG_CRAB_BOX2);
+	export_constant(IG_BRINDLE_EEL_BOX1);
+	export_constant(IG_BRINDLE_EEL_BOX2);
+	export_constant(IG_PTOTECTION_SEAGOD_BOX2);
+	export_constant(IG_PTOTECTION_SEAGOD_BOX3);
+	export_constant(IG_OCTO_HSTICK_BOX);
+	export_constant(IG_OCTO_HSTICK_BOX2);
+	export_constant(IG_OCTO_HSTICK_BOX3);
+	export_constant(IG_SILVERVINE_FRUIT_BOX10);
+	export_constant(IG_SILVERVINE_FRUIT_BOX40);
+	export_constant(IG_SILVERVINE_FRUIT_BOX4);
+	export_constant(IG_MALANG_WOE_ENCARD_BOX);
+	export_constant(IG_XMAS_BLESS);
+	export_constant(IG_FIRE_TYPE_SCROLL);
+	export_constant(IG_BLUE_SCROLL);
+	export_constant(IG_GOOD_STUDENT_GIFT_BOX);
+	export_constant(IG_BAD_STUDENT_GIFT_BOX);
+	export_constant(IG_INDIGO_SCROLL);
+	export_constant(IG_VIOLET_SCROLL);
+	export_constant(IG_BI_HWANG_SCROLL);
+	export_constant(IG_JUNG_BI_SCROLL);
+	export_constant(IG_JE_UN_SCROLL);
+	export_constant(IG_YONG_KWANG_SCROLL);
+	export_constant(IG_HALLOWEEN_G_BOX);
+	export_constant(IG_SOLO_CHRISTMAS_GIFT);
+	export_constant(IG_SG_WEAPON_SUPPLY_BOX);
+	export_constant(IG_CANDY_HOLDER);
+	export_constant(IG_LUCKY_BAG);
+	export_constant(IG_HOLY_EGG_2);
+	export_constant(IG_ADVENTURER_RETURNS_SUPPORT_BOX);
+	export_constant(IG_SUPPORT_PACKAGE);
+	export_constant(IG_SUPPORT_PACKAGE10);
+	export_constant(IG_EVENT_ALMIGHTY_BOX);
+	export_constant(IG_EVENT_ALMIGHTY_BOX10);
+	export_constant(IG_LOTTOBOX1);
+	export_constant(IG_LOTTOBOX2);
+	export_constant(IG_LOTTOBOX3);
+	export_constant(IG_LOTTOBOX4);
+	export_constant(IG_LOTTOBOX5);
+	export_constant(IG_SUPPORT_PACKAGE_III);
+	export_constant(IG_SUPPORT_PACKAGE_III10);
+	export_constant(IG_UNLIMITED_BOX);
+	export_constant(IG_UNLIMITED_BOX10);
+	export_constant(IG_UNLIMITED_BOX_II);
+	export_constant(IG_UNLIMITED_BOX_II10);
+	export_constant(IG_THREE_MASTER_PACKAGE_III);
+	export_constant(IG_THREE_MASTER_PACKAGE_III10);
+	export_constant(IG_2013_RWC_SCROLL);
+	export_constant(IG_SUPPORT_PACKAGE_II);
+	export_constant(IG_SUPPORT_PACKAGE_II10);
+	export_constant(IG_LEVEL_UP_BOX100);
+	export_constant(IG_LEVEL_UP_BOX120);
+	export_constant(IG_LEVEL_UP_BOX130);
+	export_constant(IG_LEVEL_UP_BOX140);
+	export_constant(IG_LEVEL_UP_BOX150);
+	export_constant(IG_LEVEL_UP_BOX160);
+	export_constant(IG_GIFT_BUFF_SET       );
+	export_constant(IG_LUCKY_SILVERVINE_FRUIT_BOX_III10);
+	export_constant(IG_LUCKY_SILVERVINE_FRUIT_BOX_III110);
+	export_constant(IG_OLD_ORE_BOX);
+	export_constant(IG_BLESSING_LUCKY_EGG);
+	export_constant(IG_SOGRAT_LUCKY_EGG);
+	export_constant(IG_GARNET_LUCKY_EGG);
+	export_constant(IG_AMORA_LUCKY_EGG);
+	export_constant(IG_VENUS_LUCKY_EGG);
+	export_constant(IG_ERZULIE_LUCKY_EGG);
+	export_constant(IG_MAJESTIC_LUCKY_EGG);
+	export_constant(IG_EPIC_HEROES_LUCKY_EGG);
+	export_constant(IG_HERO_MIDGARD_EGG);
+	export_constant(IG_MIDGARD_CELEBRATION_LUCKY_EGG);
+	export_constant(IG_RUNE_MIDGARD_IMORTAL_LUCKY_EGG);
+	export_constant(IG_RISE_MIDGARD_LUCKY_EGG);
+	export_constant(IG_TIME_TRAVEL_LUCKY_EGG);
+	export_constant(IG_SOLARIS_FESTIVAL_SCROLL);
+	export_constant(IG_MIDGARD_FESTIVAL_EGG);
+	export_constant(IG_MIDGARD_EGG);
+	export_constant(IG_SWEET_MIDGARD_EGG);
+	export_constant(IG_WINTER_MIDGARD_EGG);
+	export_constant(IG_SPRING_FESTIVAL_LUCKY_EGG);
+	export_constant(IG_BIRTHDAY_IDRO10TH_SCROLL);
+	export_constant(IG_REQUIEM_EGG);
+	export_constant(IG_HOLY_SPIRIT_EGG);
+	export_constant(IG_MEMORIAL_GARUDA_LUCKY_EGG);
+	export_constant(IG_MIRACLE_LUCKY_EGG);
+	export_constant(IG_LEGEND_HERO_LUCKY_EGG);
+	export_constant(IG_BLESSING_MIDGARD_LUCKY_EGG);
+	export_constant(IG_CHRONOSIAN_LUCKY_EGG);
+	export_constant(IG_SANCTUARY_LUCKY_EGG);
+	export_constant(IG_CYBORG_LUCKY_EGG);
+	export_constant(IG_UNDINE_LUCKY_EGG);
+	export_constant(IG_GOD_MATERIAL_BOX);
+	export_constant(IG_SEALED_MIND_BOX);
+	export_constant(IG_FROZEN_EGG_COSTUME);
+	export_constant(IG_HEADGEAR_COSTUME_SCROLL);
+	export_constant(IG_FLOWER_BLOSSOM_SCROLL);
+	export_constant(IG_SEASIDE_COSTUME_SCROLL);
+	export_constant(IG_SMITHY_LUCKY_EGG);
+	export_constant(IG_GANYMEDE_LUCKY_EGG);
+	export_constant(IG_LASTANGEL_LUCKYSCROLL);
+	export_constant(IG_VALKYRIE_LUCKY_EGG);
+	export_constant(IG_SPLASH_RAINBOW_LUCKY_EGG);
+	export_constant(IG_SHAPESHIFTER_COSTUME);
+	export_constant(IG_ALMIGHTY_LUCKY_EGG);
+	export_constant(IG_BURNING_FEATHER_COSTUME_SCROLL);
+	export_constant(IG_ANIMAL_COSTUME_SCROLL);
+	export_constant(IG_MIDGARD_LUCKY_SCROLL);
+	export_constant(IG_BLESSING_SCARLET_EGG);
+	export_constant(IG_MYSTICAL_COSTUME_SCROLL);
+	export_constant(IG_INK_BALL);
+	export_constant(IG_SOMETHING_CANDY_HOLDER);
+	export_constant(IG_SHINING_EGG);
+	export_constant(IG_SHINING_BLUE_LUCKY_EGG);
+	export_constant(IG_RUNE);
+	export_constant(IG_ELEMENT);
+	export_constant(IG_POISON);
+	export_constant(IG_CASH_FOOD);
+	export_constant(IG_BOMB);
+	export_constant(IG_THROWABLE);
+	export_constant(IG_MERCENARY);
+
 	#undef export_constant
 	#undef export_constant
 
 
 #endif /* _SCRIPT_CONSTANTS_H_ */
 #endif /* _SCRIPT_CONSTANTS_H_ */

+ 7 - 7
src/map/skill.c

@@ -10293,7 +10293,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
 			if( ammo_id <= 0 )
 			if( ammo_id <= 0 )
 				break;
 				break;
 			sd->itemid = ammo_id;
 			sd->itemid = ammo_id;
-			if( itemdb_is_GNbomb(ammo_id) ) {
+			if( itemdb_group_item_exists(IG_BOMB, ammo_id) ) {
 				if(battle_check_target(src,bl,BCT_ENEMY) > 0) {// Only attack if the target is an enemy.
 				if(battle_check_target(src,bl,BCT_ENEMY) > 0) {// Only attack if the target is an enemy.
 					if( ammo_id == ITEMID_PINEAPPLE_BOMB )
 					if( ammo_id == ITEMID_PINEAPPLE_BOMB )
 						map_foreachincell(skill_area_sub,bl->m,bl->x,bl->y,BL_CHAR,src,GN_SLINGITEM_RANGEMELEEATK,skill_lv,tick,flag|BCT_ENEMY|1,skill_castend_damage_id);
 						map_foreachincell(skill_area_sub,bl->m,bl->x,bl->y,BL_CHAR,src,GN_SLINGITEM_RANGEMELEEATK,skill_lv,tick,flag|BCT_ENEMY|1,skill_castend_damage_id);
@@ -10301,7 +10301,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
 						skill_attack(BF_WEAPON,src,src,bl,GN_SLINGITEM_RANGEMELEEATK,skill_lv,tick,flag);
 						skill_attack(BF_WEAPON,src,src,bl,GN_SLINGITEM_RANGEMELEEATK,skill_lv,tick,flag);
 				} else //Otherwise, it fails, shows animation and removes items.
 				} else //Otherwise, it fails, shows animation and removes items.
 					clif_skill_fail(sd,GN_SLINGITEM_RANGEMELEEATK,USESKILL_FAIL,0);
 					clif_skill_fail(sd,GN_SLINGITEM_RANGEMELEEATK,USESKILL_FAIL,0);
-			} else if (itemdb_is_GNthrowable(ammo_id))
+			} else if (itemdb_group_item_exists(IG_THROWABLE, ammo_id))
 				if (dstsd)
 				if (dstsd)
 					run_script(sd->inventory_data[i]->script, 0, dstsd->bl.id, fake_nd->bl.id);
 					run_script(sd->inventory_data[i]->script, 0, dstsd->bl.id, fake_nd->bl.id);
 		}
 		}
@@ -15748,7 +15748,7 @@ void skill_consume_requirement(struct map_session_data *sd, uint16 skill_id, uin
 			if( !require.itemid[i] )
 			if( !require.itemid[i] )
 				continue;
 				continue;
 
 
-			if( itemid_isgemstone(require.itemid[i]) && skill_id != HW_GANBANTEIN && sc && sc->data[SC_SPIRIT] && sc->data[SC_SPIRIT]->val2 == SL_WIZARD )
+			if( itemdb_group_item_exists(IG_GEMSTONE, require.itemid[i]) && skill_id != HW_GANBANTEIN && sc && sc->data[SC_SPIRIT] && sc->data[SC_SPIRIT]->val2 == SL_WIZARD )
 				continue; //Gemstones are checked, but not substracted from inventory.
 				continue; //Gemstones are checked, but not substracted from inventory.
 
 
 			switch( skill_id ){
 			switch( skill_id ){
@@ -15926,11 +15926,11 @@ struct skill_condition skill_get_requirement(struct map_session_data* sd, uint16
 								continue;
 								continue;
 							break;
 							break;
 						case AB_ADORAMUS:
 						case AB_ADORAMUS:
-							if( itemid_isgemstone(skill_db[idx]->require.itemid[i]) && (sd->special_state.no_gemstone == 2 || skill_check_pc_partner(sd,skill_id,&skill_lv, 1, 2)) )
+							if( itemdb_group_item_exists(IG_GEMSTONE, skill_db[idx]->require.itemid[i]) && (sd->special_state.no_gemstone == 2 || skill_check_pc_partner(sd,skill_id,&skill_lv, 1, 2)) )
 								continue;
 								continue;
 							break;
 							break;
 						case WL_COMET:
 						case WL_COMET:
-							if( itemid_isgemstone(skill_db[idx]->require.itemid[i]) && (sd->special_state.no_gemstone == 2 || skill_check_pc_partner(sd,skill_id,&skill_lv, 1, 0)) )
+							if( itemdb_group_item_exists(IG_GEMSTONE, skill_db[idx]->require.itemid[i]) && (sd->special_state.no_gemstone == 2 || skill_check_pc_partner(sd,skill_id,&skill_lv, 1, 0)) )
 								continue;
 								continue;
 							break;
 							break;
 					}
 					}
@@ -15953,7 +15953,7 @@ struct skill_condition skill_get_requirement(struct map_session_data* sd, uint16
 				}
 				}
 
 
 				// Check requirement for gemstone.
 				// Check requirement for gemstone.
-				if (itemid_isgemstone(req.itemid[i])) {
+				if (itemdb_group_item_exists(IG_GEMSTONE, req.itemid[i])) {
 					if( sd->special_state.no_gemstone == 2 ) // Remove all Magic Stone required for all skills for VIP.
 					if( sd->special_state.no_gemstone == 2 ) // Remove all Magic Stone required for all skills for VIP.
 						req.itemid[i] = req.amount[i] = 0;
 						req.itemid[i] = req.amount[i] = 0;
 					else {
 					else {
@@ -19358,7 +19358,7 @@ int skill_magicdecoy(struct map_session_data *sd, unsigned short nameid) {
 	nullpo_ret(sd);
 	nullpo_ret(sd);
 	skill = sd->menuskill_val;
 	skill = sd->menuskill_val;
 
 
-	if( !nameid || !itemdb_is_element(nameid) || (i = pc_search_inventory(sd,nameid)) < 0 || !skill || pc_delitem(sd,i,1,0,0,LOG_TYPE_CONSUME) ) {
+	if( !nameid || !itemdb_group_item_exists(IG_ELEMENT, nameid) || (i = pc_search_inventory(sd,nameid)) < 0 || !skill || pc_delitem(sd,i,1,0,0,LOG_TYPE_CONSUME) ) {
 		clif_skill_fail(sd,NC_MAGICDECOY,USESKILL_FAIL_LEVEL,0);
 		clif_skill_fail(sd,NC_MAGICDECOY,USESKILL_FAIL_LEVEL,0);
 		return 0;
 		return 0;
 	}
 	}

+ 2 - 1
src/map/status.c

@@ -12,6 +12,7 @@
 #include "../common/strlib.h"
 #include "../common/strlib.h"
 
 
 #include "battle.h"
 #include "battle.h"
+#include "itemdb.h"
 #include "map.h"
 #include "map.h"
 #include "path.h"
 #include "path.h"
 #include "pc.h"
 #include "pc.h"
@@ -3490,7 +3491,7 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt)
 		if(sd->inventory_data[index]) { // Arrows
 		if(sd->inventory_data[index]) { // Arrows
 			sd->bonus.arrow_atk += sd->inventory_data[index]->atk;
 			sd->bonus.arrow_atk += sd->inventory_data[index]->atk;
 			sd->state.lr_flag = 2;
 			sd->state.lr_flag = 2;
-			if( !itemdb_is_GNthrowable(sd->inventory_data[index]->nameid) ) // Don't run scripts on throwable items
+			if( !itemdb_group_item_exists(IG_THROWABLE, sd->inventory_data[index]->nameid) ) // Don't run scripts on throwable items
 				run_script(sd->inventory_data[index]->script,0,sd->bl.id,0);
 				run_script(sd->inventory_data[index]->script,0,sd->bl.id,0);
 			sd->state.lr_flag = 0;
 			sd->state.lr_flag = 0;
 			if (!calculating) // Abort, run_script retriggered status_calc_pc. [Skotlex]
 			if (!calculating) // Abort, run_script retriggered status_calc_pc. [Skotlex]