ソースを参照

Implemented a flagged items database for item groups and Dead Branch type item checks. Credits to @cydh!

aleos89 11 年 前
コミット
c95be2e877

+ 3 - 1
conf/msg_conf/map_msg.conf

@@ -746,7 +746,9 @@
 730: Character cannot be disguised while in monster form.
 731: Transforming into monster is not allowed in Guild Wars.
 
-//732-899 free
+732: Item cannot be openned when your inventory is full.
+
+//733-899 free
 
 //------------------------------------
 // More atcommands message

+ 3 - 1
conf/msg_conf/map_msg_idn.conf

@@ -746,7 +746,9 @@
 730: Karakter tidak dapat disguise ketika sedang berwujud monster.
 731: Perubahan menjadi monster tidak diizinkan dalam Guild Wars.
 
-//732-899 kosong
+732: Item tidak dapat dibuka ketika inventory penuh.
+
+//733-899 kosong
 
 //------------------------------------
 // Pesan dalam perintah atcommand

+ 6 - 0
db/import-tmpl/item_flag.txt

@@ -0,0 +1,6 @@
+// Flagged Items
+// <ItemID>,<Flag>
+//
+// <Flag>:
+// 1 - As Dead Branch item (will be logged at `branchlog` table and cannot be used at 'nobranch' mapflag)
+// 2 - As item group container, check player's inventory and weight before consumed

+ 53 - 0
db/pre-re/item_flag.txt

@@ -0,0 +1,53 @@
+// Flagged Items
+// <ItemID>,<Flag>
+//
+// <Flag>:
+// 1 - As Dead Branch item (will be logged at `branchlog` table and cannot be used at 'nobranch' mapflag)
+// 2 - As item group container, check player's inventory and weight before consumed
+
+// Logged as Dead Branch item
+604,1 //Branch_Of_Dead_Tree
+12103,1 //Bloody_Dead_Branch
+12109,1 //Poring_Box
+12024,1 //Red_Pouch_Of_Surprise
+12258,1 //Bombring_Box
+
+// Item group container
+603,2 //Old_Blue_Box
+616,2 //Old_Card_Album
+617,2 //Old_Violet_Box
+618,2 //Worn_Out_Scroll
+644,2 //Gift_Box
+664,2 //Gift_Box_1
+665,2 //Gift_Box_2
+666,2 //Gift_Box_3
+667,2 //Gift_Box_4
+12023,2 //Giftbox_China
+12025,2 //Egg_Boy
+12026,2 //Egg_Girl
+12038,2 //Lotto_Box04
+12104,2 //Random_Quiver
+12105,2 //Set_Of_Taiming_Item
+12106,2 //Accessory_Box
+12107,2 //Wrapped_Mask
+12108,2 //Bundle_Of_Magic_Scroll
+12110,2 //First_Aid_Kit
+12111,2 //Food_Package
+12130,2 //Cookie_Bag
+12186,2 //Red_Box
+12187,2 //Green_Box
+12189,2 //Red_Box_
+12194,2 //Hometown_Gift
+12240,2 //Old_Yellow_Box
+12244,2 //Old_Gift_Box
+12246,2 //Magic_Card_Album
+12248,2 //Masquerade_Ball_Box
+12281,2 //Tresure_Box_WoE
+12286,2 //Masquerade_Ball_Box2
+12334,2 //Cherish_Box
+12339,2 //Cherish_Box_Ori
+12355,2 //Xmas_Gift
+12356,2 //Louise_Costume_Box
+12702,2 //Old_Bleu_Box
+12714,2 //Easter_Scroll
+14596,2 //Pierre_Treasurebox

+ 368 - 0
db/re/item_flag.txt

@@ -0,0 +1,368 @@
+// Flagged Items
+// <ItemID>,<Flag>
+//
+// <Flag>:
+// 1 - As Dead Branch item (will be logged at `branchlog` table and cannot be used at 'nobranch' mapflag)
+// 2 - As item group container, check player's inventory and weight before consumed
+
+// Logged as Dead Branch item
+604,1 //Branch_Of_Dead_Tree
+12103,1 //Bloody_Dead_Branch
+12109,1 //Poring_Box
+12024,1 //Red_Pouch_Of_Surprise
+12258,1 //Bombring_Box
+
+// Item group container
+603,2 //Old_Blue_Box
+616,2 //Old_Card_Album
+617,2 //Old_Violet_Box
+644,2 //Gift_Box
+664,2 //Gift_Box_1
+665,2 //Gift_Box_2
+666,2 //Gift_Box_3
+667,2 //Gift_Box_4
+12023,2 //Giftbox_China
+12025,2 //Egg_Boy
+12026,2 //Egg_Girl
+12038,2 //Lotto_Box04
+12104,2 //Random_Quiver
+12105,2 //Set_Of_Taiming_Item
+12106,2 //Accessory_Box
+12107,2 //Wrapped_Mask
+12108,2 //Bundle_Of_Magic_Scroll
+12110,2 //First_Aid_Kit
+12111,2 //Food_Package
+12130,2 //Cookie_Bag
+12152,2 //Special_Box
+12186,2 //Red_Box
+12187,2 //Green_Box
+12189,2 //Red_Box_
+12194,2 //Hometown_Gift
+12240,2 //Old_Yellow_Box
+12244,2 //Old_Gift_Box
+12246,2 //Magic_Card_Album
+12248,2 //Masquerade_Ball_Box
+12281,2 //Tresure_Box_WoE
+12286,2 //Masquerade_Ball_Box2
+12334,2 //Cherish_Box
+12339,2 //Cherish_Box_Ori
+12355,2 //Xmas_Gift
+12356,2 //Louise_Costume_Box
+12391,2 //Lucky_Egg_C
+12403,2 //Lucky_Egg_C2
+12416,2 //Lucky_Egg_C3
+12473,2 //RWC_Parti_Box
+12474,2 //RWC_Final_Comp_Box
+12477,2 //Gift_Bundle
+12479,2 //Caracas_Ring_Box
+12492,2 //Crumpled_Paper
+12493,2 //Lucky_Egg_C4
+12537,2 //Solo_Gift_Basket
+12538,2 //Couple_Event_Basket
+12540,2 //GM_Warp_Box
+12541,2 //Fortune_Cookie1
+12542,2 //Fortune_Cookie2
+12543,2 //Fortune_Cookie3
+12545,2 //Lucky_Egg_C5
+12573,2 //Fruit_Basket
+12577,2 //Lucky_Egg_C6
+12595,2 //Lucky_Egg_C7
+12612,2 //Old_Coin_Pocket
+12613,2 //High_Coin_Pocket
+12614,2 //Mid_Coin_Pocket
+12615,2 //Low_Coin_Pocket
+12616,2 //Sgrade_Pocket
+12617,2 //Agrade_Pocket
+12618,2 //Bgrade_Pocket
+12619,2 //Cgrade_Pocket
+12620,2 //Dgrade_Pocket
+12621,2 //Egrade_Pocket
+12623,2 //High_Weapon_Box
+12641,2 //Lucky_Egg_C8
+12654,2 //Lucky_Egg_C9
+12673,2 //Lucky_Egg_C10
+12675,2 //Sg_Weapon_Supply_Box
+12690,2 //Old_C_Album_Helm
+12691,2 //Old_C_Album_Armor
+12692,2 //Old_C_Album_Shield
+12693,2 //Old_C_Album_Garment
+12694,2 //Old_C_Album_Shoes
+12695,2 //Old_C_Album_Acc
+12698,2 //Old_C_Album_Weapon
+12702,2 //Old_Bleu_Box
+12703,2 //Holy_Egg_2
+12714,2 //Easter_Scroll
+12756,2 //New_Gift_Envelope
+12767,2 //Passion_FB_Hat_Box
+12768,2 //Cool_FB_Hat_Box
+12769,2 //Victory_FB_Hat_Box
+12770,2 //Glory_FB_Hat_Box
+12771,2 //Passion_Hat_Box2
+12772,2 //Cool_Hat_Box2
+12773,2 //Victory_Hat_Box2
+12826,2 //Wind_Type_Scroll
+12827,2 //Water_Type_Scroll
+12828,2 //Fire_Type_Scroll
+12829,2 //Earth_Type_Scroll
+12850,2 //Heaven_Scroll
+12851,2 //Vocation_Scroll
+12852,2 //Wisdom_Scroll
+12853,2 //Patron_Scroll
+12915,2 //Aspersio_5_Scroll_Box
+12923,2 //Pet_Egg_Scroll_Box1
+12924,2 //Pet_Egg_Scroll_Box2
+12925,2 //Pet_Egg_Scroll1
+12926,2 //Pet_Egg_Scroll2
+12929,2 //Pet_Egg_Scroll_Box3
+12930,2 //Pet_Egg_Scroll_Box4
+12931,2 //Pet_Egg_Scroll_Box5
+12932,2 //Pet_Egg_Scroll3
+12933,2 //Pet_Egg_Scroll4
+12934,2 //Pet_Egg_Scroll5
+12935,2 //Infiltrator_Box
+12936,2 //Muramasa_Box
+12937,2 //Excalibur_Box
+12938,2 //Combat_Knife_Box
+12939,2 //Counter_Dagger_Box
+12940,2 //Kaiser_Knuckle_Box
+12941,2 //Pole_Axe_Box
+12942,2 //Mighty_Staff_Box
+12943,2 //Right_Epsilon_Box
+12944,2 //Balistar_Box
+12945,2 //Diary_Of_Great_Sage_Box
+12946,2 //Asura_Box
+12947,2 //Apple_Of_Archer_Box
+12948,2 //Bunny_Band_Box
+12949,2 //Sahkkat_Box
+12950,2 //Lord_Circlet_Box
+12951,2 //Elven_Ears_Box
+12952,2 //Steel_Flower_Box
+12953,2 //Critical_Ring_Box
+12954,2 //Earring_Box
+12955,2 //Ring_Box
+12956,2 //Necklace_Box
+12957,2 //Glove_Box
+12958,2 //Brooch_Box
+12959,2 //Rosary_Box
+12960,2 //Safety_Ring_Box
+12961,2 //Vesper_Core01_Box
+12962,2 //Vesper_Core02_Box
+12963,2 //Vesper_Core03_Box
+12964,2 //Vesper_Core04_Box
+12983,2 //Pet_Egg_Scroll_Box6
+12984,2 //Pet_Egg_Scroll_Box7
+12985,2 //Pet_Egg_Scroll_Box8
+12986,2 //Pet_Egg_Scroll_Box9
+12987,2 //Pet_Egg_Scroll_Box10
+12988,2 //Pet_Egg_Scroll_Box11
+12989,2 //Pet_Egg_Scroll6
+12990,2 //Pet_Egg_Scroll7
+12991,2 //Pet_Egg_Scroll8
+12992,2 //Pet_Egg_Scroll9
+12993,2 //Pet_Egg_Scroll10
+12994,2 //Pet_Egg_Scroll11
+13543,2 //CP_Helm_Scroll_Box
+13544,2 //CP_Shield_Scroll_Box
+13545,2 //CP_Armor_Scroll_Box
+13546,2 //CP_Weapon_Scroll_Box
+13547,2 //Repair_Scroll_Box
+13617,2 //Super_Pet_Egg1
+13618,2 //Super_Pet_Egg2
+13619,2 //Super_Pet_Egg3
+13620,2 //Super_Pet_Egg4
+13630,2 //Super_Card_Pet_Egg1
+13631,2 //Super_Card_Pet_Egg2
+13632,2 //Super_Card_Pet_Egg3
+13633,2 //Super_Card_Pet_Egg4
+13634,2 //Vigorgra_Package1
+13635,2 //Vigorgra_Package2
+13636,2 //Vigorgra_Package3
+13637,2 //Vigorgra_Package4
+13638,2 //Vigorgra_Package5
+13639,2 //Vigorgra_Package6
+13640,2 //Vigorgra_Package7
+13641,2 //Vigorgra_Package8
+13642,2 //Vigorgra_Package9
+13643,2 //Vigorgra_Package10
+13644,2 //Vigorgra_Package11
+13645,2 //Vigorgra_Package12
+13701,2 //Pet_Egg_Scroll12
+13702,2 //Pet_Egg_Scroll13
+13703,2 //Pet_Egg_Scroll14
+13704,2 //Super_Pet_Egg5
+13705,2 //Super_Pet_Egg6
+13706,2 //Super_Pet_Egg7
+13707,2 //Super_Pet_Egg8
+13708,2 //Pet_Egg_Scroll_E
+13725,2 //Ramen_Hat_Box
+13773,2 //Fire_Brand_Box
+13845,2 //Mysterious_Travel_Sack1
+13846,2 //Mysterious_Travel_Sack2
+13847,2 //Mysterious_Travel_Sack3
+13848,2 //Mysterious_Travel_Sack4
+13871,2 //Magician_Card_Box
+13872,2 //Acolyte_Card_Box
+13873,2 //Archer_Card_Box
+13874,2 //Swordman_Card_Box
+13875,2 //Thief_Card_Box
+13876,2 //Merchant_Card_Box
+13905,2 //Hard_Core_Set_Box
+13906,2 //Kitty_Set_Box
+13907,2 //Soft_Core_Set_Box
+13908,2 //Deviruchi_Set_Box
+13909,2 //MVP_Hunt_Box
+13910,2 //Brewing_Box
+13911,2 //Christmas_Pet_Scroll
+13953,2 //All_In_One_Ring_Box
+13989,2 //Acidbomb_10_Box
+14001,2 //Basic_Siege_Supply_Box
+14002,2 //Adv_Siege_Supply_Box
+14003,2 //Elite_Siege_Supply_Box
+14242,2 //Beholder_Ring_Box
+14243,2 //Hallow_Ring_Box
+14244,2 //Clamorous_Ring_Box
+14245,2 //Chemical_Ring_Box
+14246,2 //Insecticide_Ring_Box
+14247,2 //Fisher_Ring_Box
+14248,2 //Decussate_Ring_Box
+14249,2 //Bloody_Ring_Box
+14250,2 //Satanic_Ring_Box
+14251,2 //Dragoon_Ring_Box
+14296,2 //Angel_Scroll
+14297,2 //Devil_Scroll
+14298,2 //Surprise_Scroll
+14306,2 //RWC_Special_Scroll
+14307,2 //RWC_Limited_Scroll
+14316,2 //July7_Scroll
+14317,2 //Bacsojin_Scroll
+14345,2 //Animal_Scroll
+14363,2 //Heart_Scroll
+14408,2 //New_Year_Scroll
+14466,2 //Valentine_Pledge_Box
+14469,2 //Ox_Tail_Scroll
+14596,2 //Pierre_Treasurebox
+14613,2 //RWC_Scroll_2012
+14626,2 //Indigo_Scroll
+14643,2 //Violet_Scroll
+14664,2 //Bi_Hwang_Scroll
+14665,2 //Jung_Bi_Scroll
+14666,2 //Je_Un_Scroll
+14667,2 //Yong_Kwang_Scroll
+16245,2 //Tw_April_Scroll
+16257,2 //Buddah_Scroll
+16304,2 //Evil_Incarnation
+16371,2 //Tw_Aug_Scroll
+16372,2 //F_Clover_Box_Mouth
+16374,2 //Mouth_Bubble_Gum_Box
+16385,2 //F_Clover_Box_Mouth2
+16386,2 //F_Clover_Box_Mouth4
+16389,2 //BGum_Box_In_Mouth2
+16390,2 //BGum_Box_In_Mouth4
+16409,2 //Tw_Sep_Scroll
+16446,2 //Tw_October_Scroll
+16456,2 //My_Scroll1
+16457,2 //Tw_Nov_Scroll
+16466,2 //My_Scroll2
+16542,2 //Xmas_Bless
+16555,2 //Pr_Reset_Stone_Box
+16556,2 //FPr_Reset_Stone_Box
+16562,2 //Majestic_Devil_Scroll
+16576,2 //Illusion_Nothing
+16638,2 //Life_Ribbon_Box
+16639,2 //Life_Ribbon_Box2
+16640,2 //Life_Ribbon_Box3
+16652,2 //Flame_Light
+16666,2 //Magic_Candy_Box10
+16673,2 //Libra_Scroll
+16675,2 //Splash_Scroll
+16681,2 //BR_Independence_Scroll
+16682,2 //Boarding_Halter_Box
+16687,2 //RWC2010_SuitcaseA
+16688,2 //RWC2010_SuitcaseB
+16741,2 //Hairtail_Box1
+16742,2 //Hairtail_Box2
+16743,2 //Spearfish_Box1
+16744,2 //Spearfish_Box2
+16745,2 //Saurel_Box1
+16746,2 //Saurel_Box2
+16747,2 //Tuna_Box1
+16748,2 //Tuna_Box2
+16749,2 //Malang_Crab_Box1
+16750,2 //Malang_Crab_Box2
+16751,2 //Brindle_Eel_Box1
+16752,2 //Brindle_Eel_Box2
+16757,2 //Hallo_Scroll
+16760,2 //Umbala_Spirit_Box2
+16761,2 //F_Umbala_Spirit_Box2
+16763,2 //Ptotection_Seagod_Box2
+16764,2 //Ptotection_Seagod_Box3
+16765,2 //Octo_Hstick_Box
+16766,2 //Octo_Hstick_Box2
+16767,2 //Octo_Hstick_Box3
+16770,2 //Silvervine_Fruit_Box10
+16771,2 //Silvervine_Fruit_Box40
+16774,2 //Asgard_Scroll
+16775,2 //Sagittarius_Scroll
+16826,2 //Sagittarius_Scr_Box
+16972,2 //Weather_Report_Box
+16974,2 //Comin_Actor_Box
+16976,2 //Hen_Set_Box
+16979,2 //Silvervine_Fruit_Box4
+16990,2 //Sagittar_Diadem_Scroll
+16991,2 //Sagittar_Di_Scroll_Box
+16996,2 //Capri_Crown_Scroll
+16997,2 //Capri_Crown_Scroll_Box
+17011,2 //Capricon_Di_Scroll
+17012,2 //Capricon_Di_Scroll_Box
+17013,2 //Malang_Woe_Encard_Box
+17016,2 //Aquarius_Diadem_Scroll
+17017,2 //Aquarius_Di_Scroll_Box
+17020,2 //Tw_Nov_Scroll2
+17021,2 //Summer_Scroll3
+17022,2 //Super_Pet_Egg1_2
+17023,2 //Super_Pet_Egg4_2
+17024,2 //Lovely_Aquarius_Scroll
+17025,2 //Lovely_Aquarius_Box
+17026,2 //Boitata_Scroll
+17028,2 //Pisces_Diadem_Scroll
+17029,2 //Pisces_Diadem_Box
+17035,2 //Energetic_Pisces_Scroll
+17036,2 //Energetic_Pisces_Box
+17050,2 //Aries_Scroll
+17051,2 //Aries_Scroll_Box
+17062,2 //Taurus_Diadem_Scroll
+17063,2 //Taurus_Di_Scroll_Box
+17077,2 //Taurus_Crown_Scroll
+17078,2 //Taurus_Crown_Scroll_Box
+17082,2 //Gemi_Diadem_Scroll
+17083,2 //Gemi_Diadem_Scroll_Box
+17107,2 //Gemi_Crown_Scroll
+17108,2 //Gemi_Crown_Scroll_Box
+17138,2 //Ms_Cancer_Scroll
+17139,2 //RWC_Super_Scroll
+17140,2 //Leo_Scroll
+17141,2 //Ms_Virgo_Scroll
+17143,2 //Ms_Scorpio_Scroll
+17156,2 //TCG_Card_Scroll
+17165,2 //Challenge_Kit
+17209,2 //Tw_Rainbow_Scroll
+17210,2 //Tw_Red_Scroll
+17211,2 //Tw_Orange_Scroll
+17212,2 //Tw_Yellow_Scroll
+17233,2 //Scroll_Of_Death
+17234,2 //Scroll_Of_Life
+17235,2 //Scroll_Of_Magic
+17236,2 //Scroll_Of_Thews
+17237,2 //Scroll_Of_Darkness
+17238,2 //Scroll_Of_Holiness
+17239,2 //Horned_Scroll
+17240,2 //Mercury_Scroll
+17251,2 //C_Wing_Of_Fly_3Day_Box
+17252,2 //RWC_2012_Set_Box
+17256,2 //Good_Student_Gift_Box
+17257,2 //Bad_Student_Gift_Box
+17262,2 //Ex_Def_Potion_Box
+22514,2 //Candy_Holder
+22558,2 //Lucky_Bag
+22669,2 //HALLOWEEN_G_BOX
+22685,2 //Solo_Christmas_Gift

+ 24 - 0
src/map/itemdb.c

@@ -976,6 +976,29 @@ static bool itemdb_read_nouse(char* fields[], int columns, int current) {
 	return true;
 }
 
+/** Misc Item flags
+* <item_id>,<flag>
+* &1 - Log as dead branch
+* &2 - As item container
+*/
+static bool itemdb_read_flag(char* fields[], int columns, int current) {
+	uint16 nameid = atoi(fields[0]);
+	uint8 flag = atoi(fields[1]);
+	struct item_data *id;
+
+	if (!(id = itemdb_exists(nameid))) {
+		ShowError("itemdb_read_flag: Invalid item item with id %d\n", nameid);
+		return true;
+	}
+
+	if (flag&1)
+		id->flag.dead_branch = 1;
+	if (flag&2)
+		id->flag.group = 1;
+
+	return true;
+}
+
 /**
  * @return: amount of retrieved entries.
  **/
@@ -1595,6 +1618,7 @@ static void itemdb_read(void) {
 		sv_readdb(dbsubpath2, "item_trade.txt",         ',', 3, 3, -1, &itemdb_read_itemtrade, i);
 		sv_readdb(dbsubpath2, "item_delay.txt",         ',', 2, 2, -1, &itemdb_read_itemdelay, i);
 		sv_readdb(dbsubpath2, "item_buyingstore.txt",   ',', 1, 1, -1, &itemdb_read_buyingstore, i);
+		sv_readdb(dbsubpath2, "item_flag.txt",          ',', 2, 2, -1, &itemdb_read_flag, i);
 		aFree(dbsubpath1);
 		aFree(dbsubpath2);
 	}

+ 2 - 5
src/map/itemdb.h

@@ -46,7 +46,6 @@ enum item_itemid {
 	ITEMID_WHITE_SLIM_POTION			= 547,
 	ITEMID_WING_OF_FLY					= 601,
 	ITEMID_WING_OF_BUTTERFLY			= 602,
-	ITEMID_BRANCH_OF_DEAD_TREE			= 604,
 	ITEMID_ANODYNE						= 605,
 	ITEMID_ALOEBERA						= 606,
 	ITEMID_EMPTY_BOTTLE					= 713,
@@ -86,9 +85,6 @@ enum item_itemid {
 	ITEMID_SKULL_						= 7420,
 	ITEMID_TOKEN_OF_SIEGFRIED			= 7621,
 	ITEMID_TRAP_ALLOY					= 7940,
-	ITEMID_RED_POUCH_OF_SURPRISE		= 12024,
-	ITEMID_BLOODY_DEAD_BRANCH			= 12103,
-	ITEMID_PORING_BOX					= 12109,
 	ITEMID_MERCENARY_RED_POTION			= 12184,
 	ITEMID_MERCENARY_BLUE_POTION		= 12185,
 	ITEMID_BATTLE_MANUAL				= 12208,
@@ -105,7 +101,6 @@ enum item_itemid {
 	ITEMID_REINS_OF_MOUNT				= 12622,
 	ITEMID_COMP_BUBBLE_GUM				= 12264,
 	ITEMID_NOBLE_NAMEPLATE				= 12705,
-	ITEMID_TREASURE_CHEST_SUMMONED_II	= 12863,
 	ITEMID_DUN_TELE_SCROLL1				= 14527,
 	ITEMID_BATTLE_MANUAL25				= 14532,
 	ITEMID_BATTLE_MANUAL100				= 14533,
@@ -369,6 +364,8 @@ struct item_data {
 		unsigned trade_restriction : 9;	//Item restrictions mask [Skotlex]
 		unsigned autoequip: 1;
 		unsigned buyingstore : 1;
+		unsigned dead_branch : 1; // As dead branch item. Logged at `branchlog` table and cannot be used at 'nobranch' mapflag [Cydh]
+		unsigned group : 1; // As item group container [Cydh]
 	} flag;
 	struct {// item stacking limitation
 		unsigned short amount;

+ 9 - 14
src/map/pc.c

@@ -4321,6 +4321,9 @@ int pc_isUseitem(struct map_session_data *sd,int n)
 		return 0; // You cannot use this item while storage is open.
 	}
 
+	if (item->flag.dead_branch && (map[sd->bl.m].flag.nobranch || map_flag_gvg(sd->bl.m)))
+		return 0;
+
 	switch( nameid ) {
 		case ITEMID_ANODYNE:
 			if( map_flag_gvg(sd->bl.m) )
@@ -4351,14 +4354,6 @@ int pc_isUseitem(struct map_session_data *sd,int n)
 			if( nameid != 601 && nameid != 12212 && map[sd->bl.m].flag.noreturn )
 				return 0;
 			break;
-		case ITEMID_BRANCH_OF_DEAD_TREE:
-		case ITEMID_RED_POUCH_OF_SURPRISE:
-		case ITEMID_BLOODY_DEAD_BRANCH:
-		case ITEMID_PORING_BOX:
-		case ITEMID_TREASURE_CHEST_SUMMONED_II:
-			if( map[sd->bl.m].flag.nobranch || map_flag_gvg(sd->bl.m) )
-				return 0;
-			break;
 		case ITEMID_BUBBLE_GUM:
 		case ITEMID_COMP_BUBBLE_GUM:
 			if( sd->sc.data[SC_ITEMBOOST] )
@@ -4413,16 +4408,16 @@ int pc_isUseitem(struct map_session_data *sd,int n)
 	else if( itemdb_is_poison(nameid) && (sd->class_&MAPID_THIRDMASK) != MAPID_GUILLOTINE_CROSS )
 		return 0;
 
-	/*if( item->group ) { //@TODO
+	if( item->flag.group ) {
 		if( pc_is90overweight(sd) ) {
-			clif_msgtable(sd->fd,ITEM_CANT_OBTAIN_WEIGHT);
+			clif_msgtable(sd->fd, ITEM_CANT_OBTAIN_WEIGHT);
 			return 0;
 		}
 		if( !pc_inventoryblank(sd) ) {
-			clif_colormes(sd,color_table[COLOR_RED],msg_txt(1477)); //Item cannot be open when inventory is full
+			clif_colormes(sd, color_table[COLOR_RED], msg_txt(sd, 1477)); //Item cannot be open when inventory is full
 			return 0;
 		}
-	}*/
+	}
 
 	//Gender check
 	if(item->sex != 2 && sd->status.sex != item->sex)
@@ -4459,8 +4454,8 @@ int pc_isUseitem(struct map_session_data *sd,int n)
 	if (!pc_isItemClass(sd,item))
 		return 0;
 
-	//Dead Branch & Bloody Branch & Porings Box
-	if( nameid == ITEMID_BRANCH_OF_DEAD_TREE || nameid == ITEMID_BLOODY_DEAD_BRANCH || nameid == ITEMID_PORING_BOX || nameid == ITEMID_TREASURE_CHEST_SUMMONED_II )
+	//Dead Branch items
+	if( item->flag.dead_branch )
 		log_branch(sd);
 
 	return 1;