From 127c13bbdd6c1fb5b708605fc4f6a7f44bc2398d Mon Sep 17 00:00:00 2001 From: aleos89 Date: Tue, 22 Nov 2016 08:52:11 -0500 Subject: [PATCH] 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. --- db/const.txt | 476 ------------------------------ db/item_findingore.txt | 40 +-- db/pre-re/item_misc.txt | 95 ++++++ db/re/item_misc.txt | 96 ++++++ src/map/clif.c | 4 +- src/map/itemdb.c | 21 ++ src/map/itemdb.h | 588 ++++++++++++++++++++++++++++++------- src/map/pc.c | 10 +- src/map/script_constants.h | 483 ++++++++++++++++++++++++++++++ src/map/skill.c | 14 +- src/map/status.c | 3 +- 11 files changed, 1216 insertions(+), 614 deletions(-) diff --git a/db/const.txt b/db/const.txt index 653760d765..c789755fdd 100644 --- a/db/const.txt +++ b/db/const.txt @@ -14,482 +14,6 @@ // 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). -//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_HIT1 0 EF_HIT2 1 diff --git a/db/item_findingore.txt b/db/item_findingore.txt index 3dbfd36bf5..feaae21a45 100644 --- a/db/item_findingore.txt +++ b/db/item_findingore.txt @@ -3,23 +3,23 @@ // Structure of Database: // 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 diff --git a/db/pre-re/item_misc.txt b/db/pre-re/item_misc.txt index 80f78bbcff..abccebd159 100644 --- a/db/pre-re/item_misc.txt +++ b/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,14546,6 // Fire_Cracker_Love 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 diff --git a/db/re/item_misc.txt b/db/re/item_misc.txt index d2927d67fa..fc6fa4b7e2 100644 --- a/db/re/item_misc.txt +++ b/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,7091,5 //Rough_Billows 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 diff --git a/src/map/clif.c b/src/map/clif.c index 05a711793c..ada6b3fc35 100644 --- a/src/map/clif.c +++ b/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] 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; 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] 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; c ++; } diff --git a/src/map/itemdb.c b/src/map/itemdb.c index c238170662..28b39e8502 100644 --- a/src/map/itemdb.c +++ b/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); } +/** + * 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 * name = item alias, so we should find items aliases first. if not found then look for "jname" (full name) diff --git a/src/map/itemdb.h b/src/map/itemdb.h index 0ed0feaa9d..3d98b8e1df 100644 --- a/src/map/itemdb.h +++ b/src/map/itemdb.h @@ -19,10 +19,6 @@ ///Maximum amount of items a combo may require #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_ROULETTE_LEVEL 7 /** client-defined value **/ @@ -57,7 +53,6 @@ enum item_itemid ITEMID_POISON_BOTTLE = 678, ITEMID_EMPTY_BOTTLE = 713, ITEMID_EMPERIUM = 714, - ITEMID_YELLOW_GEMSTONE = 715, ITEMID_RED_GEMSTONE = 716, ITEMID_BLUE_GEMSTONE = 717, ITEMID_ORIDECON_STONE = 756, @@ -126,41 +121,6 @@ enum item_itemid 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 enum rune_item_list { @@ -231,28 +191,6 @@ enum genetic_item_list ITEMID_BLACK_HARD_LUMP, ITEMID_VERY_HARD_LUMP, 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 @@ -268,39 +206,6 @@ enum poison_item_list 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 enum item_nouse_list { @@ -335,6 +240,490 @@ enum e_item_ammo #define AMMO_TYPE_ALL ((1<flag.trade_restriction) #define itemdb_viewid(n) (itemdb_search(n)->view_id) #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_ammo (enum e_item_ammo ammo); 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 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); uint16 itemdb_get_randgroupitem_count(uint16 group_id, uint8 sub_group, unsigned short nameid); diff --git a/src/map/pc.c b/src/map/pc.c index 4ac1630f76..da29fdc67c 100755 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -4728,7 +4728,7 @@ bool pc_isUseitem(struct map_session_data *sd,int n) return false; //Prevent mass item usage. [Skotlex] 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; @@ -4812,18 +4812,18 @@ bool pc_isUseitem(struct map_session_data *sd,int n) 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 /** * 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; /** * 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; 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. 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; run_script(script,0,sd->bl.id,fake_nd->bl.id); diff --git a/src/map/script_constants.h b/src/map/script_constants.h index b757db2162..a7bed2669c 100644 --- a/src/map/script_constants.h +++ b/src/map/script_constants.h @@ -3181,6 +3181,489 @@ export_constant(STOR_MODE_GET); 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 #endif /* _SCRIPT_CONSTANTS_H_ */ diff --git a/src/map/skill.c b/src/map/skill.c index db8cc49825..ee4b585626 100755 --- a/src/map/skill.c +++ b/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 ) break; 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( 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); @@ -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); } else //Otherwise, it fails, shows animation and removes items. 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) 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] ) 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. switch( skill_id ){ @@ -15926,11 +15926,11 @@ struct skill_condition skill_get_requirement(struct map_session_data* sd, uint16 continue; break; 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; break; 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; break; } @@ -15953,7 +15953,7 @@ struct skill_condition skill_get_requirement(struct map_session_data* sd, uint16 } // 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. req.itemid[i] = req.amount[i] = 0; else { @@ -19358,7 +19358,7 @@ int skill_magicdecoy(struct map_session_data *sd, unsigned short nameid) { nullpo_ret(sd); 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); return 0; } diff --git a/src/map/status.c b/src/map/status.c index 1522cf1dc7..429577200e 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -12,6 +12,7 @@ #include "../common/strlib.h" #include "battle.h" +#include "itemdb.h" #include "map.h" #include "path.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 sd->bonus.arrow_atk += sd->inventory_data[index]->atk; 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); sd->state.lr_flag = 0; if (!calculating) // Abort, run_script retriggered status_calc_pc. [Skotlex]