From f28877f6e6b14e4d16c91d3e7d1cfd576737d62a Mon Sep 17 00:00:00 2001
From: shennetsind <ind@henn.et>
Date: Wed, 27 Nov 2013 09:13:29 -0200
Subject: Fixed Bug 7805

Modified @itembound so that it provides feedback in case of bind conditions that fail to meet. pc_additem messages will remain so that any other area that might create a invalid bind item will still be cancelled and provide feedback.
Special Thanks to kyeme.
http://hercules.ws/board/tracker/issue-7805-itembound-console-error-when-no-partyguild/

Signed-off-by: shennetsind <ind@henn.et>
---
 conf/messages.conf  |  3 +++
 src/map/atcommand.c | 25 ++++++++++++++++++++++---
 2 files changed, 25 insertions(+), 3 deletions(-)

diff --git a/conf/messages.conf b/conf/messages.conf
index b6904328f..aae0596af 100644
--- a/conf/messages.conf
+++ b/conf/messages.conf
@@ -1560,6 +1560,9 @@
 1496: Item types on your autoloottype list:
 1497: Your autoloottype list has been reset.
 
+//Item Bind
+1498: You can't add a party bound item to a character without party!
+1499: You can't add a guild bound item to a character without guild!
 
 //Custom translations
 import: conf/import/msg_conf.txt
diff --git a/src/map/atcommand.c b/src/map/atcommand.c
index c87a66b72..5c31155b1 100644
--- a/src/map/atcommand.c
+++ b/src/map/atcommand.c
@@ -1117,9 +1117,28 @@ ACMD(item)
 		return false;
 	}
 	
-	if(!strcmpi(info->command,"itembound") && !(bound >= IBT_MIN && bound <= IBT_MAX) ) {
-		clif->message(fd, msg_txt(298)); // Invalid bound type
-		return false;
+	if(!strcmpi(info->command,"itembound") ) {
+		if( !(bound >= IBT_MIN && bound <= IBT_MAX) ) {
+			clif->message(fd, msg_txt(298)); // Invalid bound type
+			return false;
+		}
+		switch( (enum e_item_bound_type)bound ) {
+			case IBT_CHARACTER:
+			case IBT_ACCOUNT:
+				break; /* no restrictions */
+			case IBT_PARTY:
+				if( !sd->status.party_id ) {
+					clif->message(fd, msg_txt(1498)); //You can't add a party bound item to a character without party!
+					return false;
+				}
+				break;
+			case IBT_GUILD:
+				if( !sd->status.guild_id ) {
+					clif->message(fd, msg_txt(1499)); //You can't add a guild bound item to a character without guild!
+					return false;
+				}
+				break;
+		}
 	}
 
 	item_id = item_data->nameid;
-- 
cgit v1.2.3-70-g09d2