diff --git a/server/NetPacksServer.cpp b/server/NetPacksServer.cpp index a14a067ef..209b17195 100644 --- a/server/NetPacksServer.cpp +++ b/server/NetPacksServer.cpp @@ -199,10 +199,14 @@ bool TradeOnMarketplace::applyGh(CGameHandler * gh) if(player >= PlayerColor::PLAYER_LIMIT) throwAndComplain(gh, "No player can use this market!"); - if(hero && (player != hero->tempOwner || hero->visitablePos() != market->visitablePos())) + bool allyTownSkillTrade = (mode == EMarketMode::RESOURCE_SKILL && gh->getPlayerRelations(player, hero->tempOwner) == PlayerRelations::ALLIES); + + if(hero && (!(player == hero->tempOwner || allyTownSkillTrade) + || hero->visitablePos() != market->visitablePos())) throwAndComplain(gh, "This hero can't use this marketplace!"); - throwOnWrongPlayer(gh, player); + if(!allyTownSkillTrade) + throwOnWrongPlayer(gh, player); bool result = true;