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;