Skip to content
Permalink
Browse files

Possibly fixed #1583 and other issues concerning players capturing to…

…wns.
  • Loading branch information
DjWarmonger committed Oct 24, 2015
1 parent 3c4f7ec commit 61692ba168bafa5f08df9bbd7526bf21339b0dcb
Showing with 17 additions and 9 deletions.
  1. +17 −9 server/CGameHandler.cpp
@@ -1937,18 +1937,26 @@ void CGameHandler::setOwner(const CGObjectInstance * obj, PlayerColor owner)
std::set<PlayerColor> playerColors = {owner, oldOwner};
checkVictoryLossConditions(playerColors);

if(owner < PlayerColor::PLAYER_LIMIT && dynamic_cast<const CGTownInstance *>(obj)) //town captured
if(dynamic_cast<const CGTownInstance *>(obj)) //town captured
{
const CGTownInstance * town = dynamic_cast<const CGTownInstance *>(obj);
if (town->hasBuilt(BuildingID::PORTAL_OF_SUMMON, ETownType::DUNGEON))
setPortalDwelling(town, true, false);
if (owner < PlayerColor::PLAYER_LIMIT) //new owner is real player
{
const CGTownInstance * town = dynamic_cast<const CGTownInstance *>(obj);
if (town->hasBuilt(BuildingID::PORTAL_OF_SUMMON, ETownType::DUNGEON))
setPortalDwelling(town, true, false);

gs->getPlayer(owner)->daysWithoutCastle = boost::none; // reset counter
}

if (!gs->getPlayer(owner)->towns.size())//player lost last town
if (oldOwner < PlayerColor::PLAYER_LIMIT) //old owner is real player
{
InfoWindow iw;
iw.player = oldOwner;
iw.text.addTxt(MetaString::GENERAL_TXT, 6); //%s, you have lost your last town. If you do not conquer another town in the next week, you will be eliminated.
sendAndApply(&iw);
if (gs->getPlayer(oldOwner)->towns.empty())//previous player lost last last town
{
InfoWindow iw;
iw.player = oldOwner;
iw.text.addTxt (MetaString::GENERAL_TXT, 6); //%s, you have lost your last town. If you do not conquer another town in the next week, you will be eliminated.
sendAndApply(&iw);
}
}
}

0 comments on commit 61692ba

Please sign in to comment.
You can’t perform that action at this time.