From 4cb98e7e8d1d8112c9e54a370a7314ea45bf95e9 Mon Sep 17 00:00:00 2001
From: ArseniyShestakov <ArseniyShestakov@users.noreply.github.com>
Date: Wed, 24 Dec 2014 20:48:37 +0300
Subject: [PATCH] Use isTradable and fix issue 1392

This change make it possible to sell spell scrolls in Artifacts Merchant.
---
 client/widgets/CArtifactHolder.cpp | 2 +-
 client/windows/CTradeWindow.cpp    | 5 ++---
 server/CGameHandler.cpp            | 2 +-
 3 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/client/widgets/CArtifactHolder.cpp b/client/widgets/CArtifactHolder.cpp
index 8a20d862b..2737d6e8d 100644
--- a/client/widgets/CArtifactHolder.cpp
+++ b/client/widgets/CArtifactHolder.cpp
@@ -105,7 +105,7 @@ void CArtPlace::clickLeft(tribool down, bool previousState)
 	{
 		if(down)
 		{
-			if(ourArt->artType->id < 7) //War Machine or Spellbook
+			if(!ourArt->artType->isTradable()) //War Machine or Spellbook
 			{
 				LOCPLINT->showInfoDialog(CGI->generaltexth->allTexts[21]); //This item can't be traded.
 			}
diff --git a/client/windows/CTradeWindow.cpp b/client/windows/CTradeWindow.cpp
index 8f03d8e67..d76a279b1 100644
--- a/client/windows/CTradeWindow.cpp
+++ b/client/windows/CTradeWindow.cpp
@@ -1459,8 +1459,7 @@ void CAltarWindow::showAll(SDL_Surface * to)
 
 bool CAltarWindow::putOnAltar(CTradeableItem* altarSlot, const CArtifactInstance *art)
 {
-	int artID = art->artType->id;
-	if(artID != ArtifactID::SPELL_SCROLL && artID < 7) //special art
+	if(!art->artType->isTradable()) //special art
 	{
         logGlobal->warnStream() << "Cannot put special artifact on altar!";
 		return false;
@@ -1478,7 +1477,7 @@ bool CAltarWindow::putOnAltar(CTradeableItem* altarSlot, const CArtifactInstance
 	}
 
 	int dmp, val;
-	market->getOffer(artID, 0, dmp, val, EMarketMode::ARTIFACT_EXP);
+	market->getOffer(art->artType->id, 0, dmp, val, EMarketMode::ARTIFACT_EXP);
 
 	arts->artifactsOnAltar.insert(art);
 	altarSlot->setArtInstance(art);
diff --git a/server/CGameHandler.cpp b/server/CGameHandler.cpp
index cc94f8e1e..943a87dbc 100644
--- a/server/CGameHandler.cpp
+++ b/server/CGameHandler.cpp
@@ -2971,7 +2971,7 @@ bool CGameHandler::sellArtifact( const IMarket *m, const CGHeroInstance *h, Arti
 	const CArtifactInstance *art = h->getArtByInstanceId(aid);
 	if(!art)
 		COMPLAIN_RET("There is no artifact to sell!");
-	if(art->artType->id < 7)
+	if(!art->artType->isTradable())
 		COMPLAIN_RET("Cannot sell a war machine or spellbook!");
 
 	int resVal = 0, dump = 1;