Added a new item flag for delayed consumption (#2300)
* Added a new item flag for delayed consumption * Fixes #550. * The new flag will never consume the item. * Supports script command itemskill. Thanks to @cydh!
This commit is contained in:
parent
9d6b3d06a9
commit
fe5f1e115d
@ -2,8 +2,10 @@
|
||||
// <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
|
||||
// 4 - GUID item, cannot be stacked even same or stackable item
|
||||
// 8 - Item will be bound item when equipped
|
||||
// 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
|
||||
// 4 - GUID item, cannot be stacked even same or stackable item
|
||||
// 8 - Item will be bound item when equipped
|
||||
// 16 - Special Broadcast: When item dropped by monster and player loot it, will be broadcasted!
|
||||
// 32 - Item will not be removed on consumption. Also supports 'itemskill'
|
||||
// NOTE: For removing flag by import file, use "-" to remove the flag. Example, 604,-1 will removes flag 1 from Branch_Of_Dead_Tree
|
||||
|
@ -7,6 +7,7 @@
|
||||
// 4 - GUID Item: When this item is obtained, will generates GUID that cannot be stacked even same or stackable item
|
||||
// 8 - Item will be bound item when equipped
|
||||
// 16 - Special Broadcast: When item dropped by monster and player loot it, will be broadcasted!
|
||||
// 32 - Item will not be removed on consumption. Also supports 'itemskill'
|
||||
// NOTE: For removing flag by import file, use "-" to remove the flag. Example, 604,-1 will removes flag 1 from Branch_Of_Dead_Tree
|
||||
|
||||
// Logged as Dead Branch item
|
||||
|
@ -6752,7 +6752,7 @@
|
||||
12619,Cgrade_Pocket,C Grade Coin Bag,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getgroupitem(IG_Cgrade_Pocket); },{},{}
|
||||
12620,Dgrade_Pocket,D Grade Coin Bag,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getgroupitem(IG_Dgrade_Pocket); },{},{}
|
||||
12621,Egrade_Pocket,E Grade Coin Bag,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getgroupitem(IG_Egrade_Pocket); },{},{}
|
||||
12622,Boarding_Halter,Reins Of Mount,11,0,,0,,,,,0xFFFFFFFF,63,2,,,,,,{ setmounting(); },{},{ if (ismounting()) setmounting(); }
|
||||
12622,Boarding_Halter,Reins Of Mount,2,0,,0,,,,,0xFFFFFFFF,63,2,,,,,,{ setmounting(); },{},{ if (ismounting()) setmounting(); }
|
||||
12623,High_Weapon_Box,Advanced Weapons Box,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getrandgroupitem(IG_Advanced_Weapons_Box,1); },{},{}
|
||||
12624,Delicious_Jelly,Delicious Jelly,0,20,,50,,,,,0xFFFFFFFF,63,2,,,,,,{ percentheal 3,3; },{},{}
|
||||
12625,Sapa_Feat_Cert_Pack,Sapa Feat Cert Pack,2,0,,0,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{}
|
||||
@ -7007,7 +7007,7 @@
|
||||
12884,Infinite_Concentration_Potion,Infinite Concentration Potion,11,10,,0,,,,0,0xFFFFFFFF,63,2,,,,,,{ sc_start SC_ASPDPOTION0,1800000,4; },{},{}
|
||||
12885,Infinite_Awakening_Potion,Infinite Awakening Potion,11,10,,0,,,,0,0xFFFFFFFF,63,2,,,,,,{ sc_start SC_ASPDPOTION1,1800000,6; },{},{}
|
||||
12886,Infinite_Berserk_Potion,Infinite Berserk Potion,11,10,,0,,,,0,0xFFFFFFFF,63,2,,,,,,{ sc_start SC_ASPDPOTION2,1800000,9; },{},{}
|
||||
12887,C_Wing_Of_Fly,Infinite Flywing,11,0,,0,,,,,0xFFFFFFFF,63,2,,,,,,{ unitskilluseid getcharid(3),"AL_TELEPORT",1; },{},{}
|
||||
12887,C_Wing_Of_Fly,Infinite Flywing,2,0,,0,,,,,0xFFFFFFFF,63,2,,,,,,{ itemskill "AL_TELEPORT",1; },{},{}
|
||||
12888,Siege_Kit_Box,Siege Kit Box,18,0,,100,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{}
|
||||
12889,Weapon_Box_Spear,Weapon Box(Spear),2,10,,200,,,,0,0xFFFFFFFF,63,2,,,,,,{},{},{}
|
||||
12890,Weapon_Box_Mace,Weapon Box(Mace),2,10,,200,,,,0,0xFFFFFFFF,63,2,,,,,,{},{},{}
|
||||
@ -10873,7 +10873,7 @@
|
||||
//===================================================================
|
||||
// New Usable items
|
||||
//===================================================================
|
||||
22508,Para_Team_Mark_,Eden Group Mark,11,0,,0,,,,0,0xFFFFFFFF,63,2,,,,,,{ warp "moc_para01",171,115; },{},{}
|
||||
22508,Para_Team_Mark_,Eden Group Mark,2,0,,0,,,,0,0xFFFFFFFF,63,2,,,,,,{ warp "moc_para01",171,115; },{},{}
|
||||
22507,ShabbyOldScroll,Old Scroll,2,10,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ callfunc "F_22507"; },{},{}
|
||||
22510,King_Wolf_Scroll,King Wolf Scroll,2,10,,10,,,,0,0xFFFFFFFF,63,2,,,,,,{ /*TODO, confirm the rates*/ getitem callfunc("F_Rand",6635,19598,5658,6238,6239),1; },{},{}
|
||||
22511,Fenrirs_Power_Scroll,Fenrir's Power Scroll,2,10,,10,,,,0,0xFFFFFFFF,63,2,,,,,,{ bonus_script "bonus bMatk,25; bonus bFixedCastRate,-50;",300,1025; },{},{}
|
||||
|
@ -7,6 +7,7 @@
|
||||
// 4 - GUID Item: When this item is obtained, will generates GUID that cannot be stacked even same or stackable item
|
||||
// 8 - Item will be bound item when equipped
|
||||
// 16 - Special Broadcast: When item dropped by monster and player loot it, will be broadcasted!
|
||||
// 32 - Item will not be removed on consumption. Also supports 'itemskill'
|
||||
// NOTE: For removing flag by import file, use "-" to remove the flag. Example, 604,-1 will removes flag 1 from Branch_Of_Dead_Tree
|
||||
|
||||
// Logged as Dead Branch item
|
||||
@ -1772,3 +1773,8 @@
|
||||
// Special Broadcast
|
||||
7782,16 //Gold_Key77
|
||||
7783,16 //Silver_Key77
|
||||
|
||||
// Not removed after consumption
|
||||
12622,32 //Boarding_Halter
|
||||
12887,32 //C_Wing_Of_Fly
|
||||
22508,32 //Para_Team_Mark_
|
||||
|
@ -907,6 +907,7 @@ static bool itemdb_read_flag(char* fields[], int columns, int current) {
|
||||
if (flag&4 && itemdb_isstackable2(id)) id->flag.guid = set ? 1 : 0;
|
||||
if (flag&8) id->flag.bindOnEquip = true;
|
||||
if (flag&16) id->flag.broadcast = 1;
|
||||
if (flag&32) id->flag.delay_consume = 2;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -829,7 +829,7 @@ struct item_data
|
||||
unsigned available : 1;
|
||||
uint32 no_equip;
|
||||
unsigned no_refine : 1; // [celest]
|
||||
unsigned delay_consume : 1; // Signifies items that are not consumed immediately upon double-click [Skotlex]
|
||||
unsigned delay_consume : 2; // 1 - Signifies items that are not consumed immediately upon double-click; 2 - Signifies items that are not removed on consumption [Skotlex]
|
||||
unsigned trade_restriction : 9; //Item restrictions mask [Skotlex]
|
||||
unsigned autoequip: 1;
|
||||
unsigned buyingstore : 1;
|
||||
|
@ -14865,7 +14865,7 @@ bool skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_i
|
||||
}
|
||||
//Consume
|
||||
sd->itemid = sd->itemindex = -1;
|
||||
if( skill_id == WZ_EARTHSPIKE && sc && sc->data[SC_EARTHSCROLL] && rnd()%100 > sc->data[SC_EARTHSCROLL]->val2 ) // [marquis007]
|
||||
if( (skill_id == WZ_EARTHSPIKE && sc && sc->data[SC_EARTHSCROLL] && rnd()%100 > sc->data[SC_EARTHSCROLL]->val2) || sd->inventory_data[i]->flag.delay_consume == 2 ) // [marquis007]
|
||||
; //Do not consume item.
|
||||
else if( sd->inventory.u.items_inventory[i].expire_time == 0 )
|
||||
pc_delitem(sd,i,1,0,0,LOG_TYPE_CONSUME); // Rental usable items are not consumed until expiration
|
||||
|
Loading…
x
Reference in New Issue
Block a user