From 40a239fcdaa1c6669868f06136b62a95c183e68c Mon Sep 17 00:00:00 2001
From: Andrei Karas <akaras@inbox.ru>
Date: Tue, 18 Nov 2014 01:51:32 +0300
Subject: Add item attribute what prevent item removing on use.

New item attribute: KeepAfterUse
---
 src/map/itemdb.c | 5 ++++-
 src/map/itemdb.h | 1 +
 src/map/pc.c     | 2 +-
 3 files changed, 6 insertions(+), 2 deletions(-)

(limited to 'src')

diff --git a/src/map/itemdb.c b/src/map/itemdb.c
index 67aab7a18..508a0ccec 100644
--- a/src/map/itemdb.c
+++ b/src/map/itemdb.c
@@ -1787,9 +1787,12 @@ int itemdb_readdb_libconfig_sub(config_setting_t *it, int n, const char *source)
 	if ( (t = libconfig->setting_get_member(it, "BuyingStore")) )
 		id.flag.buyingstore = libconfig->setting_get_bool(t) ? 1 : 0;
 
+	if ((t = libconfig->setting_get_member(it, "KeepAfterUse")))
+		id.flag.keepafteruse = libconfig->setting_get_bool(t) ? 1 : 0;
+
 	if (libconfig->setting_lookup_int(it, "Delay", &i32) && i32 >= 0)
 		id.delay = i32;
-	
+
 	if ( (t = libconfig->setting_get_member(it, "Trade")) ) {
 		if (config_setting_is_group(t)) {
 			config_setting_t *tt = NULL;
diff --git a/src/map/itemdb.h b/src/map/itemdb.h
index a1c4d1053..5504d72d9 100644
--- a/src/map/itemdb.h
+++ b/src/map/itemdb.h
@@ -414,6 +414,7 @@ struct item_data {
 		unsigned autoequip: 1;
 		unsigned buyingstore : 1;
 		unsigned bindonequip : 1;
+		unsigned keepafteruse : 1;
 	} flag;
 	struct {// item stacking limitation
 		unsigned short amount;
diff --git a/src/map/pc.c b/src/map/pc.c
index 6ba06c82b..9af5ee5ff 100644
--- a/src/map/pc.c
+++ b/src/map/pc.c
@@ -4519,7 +4519,7 @@ int pc_useitem(struct map_session_data *sd,int n) {
 	if( sd->inventory_data[n]->flag.delay_consume )
 		clif->useitemack(sd,n,amount,true);
 	else {
-		if( sd->status.inventory[n].expire_time == 0 ) {
+		if (sd->status.inventory[n].expire_time == 0 && !(sd->inventory_data[n]->flag.keepafteruse)) {
 			clif->useitemack(sd,n,amount-1,true);
 			pc->delitem(sd,n,1,1,0,LOG_TYPE_CONSUME); // Rental Usable Items are not deleted until expiration
 		} else
-- 
cgit v1.2.3-70-g09d2