Browse Source

Fix issue 1877. Allow to buy heroes in ally towns

Also removed TODO because check already implemented in CGameHandler::hireHero
ArseniyShestakov 10 years ago
parent
commit
0d83f6fedd
1 changed files with 3 additions and 4 deletions
  1. 3 4
      server/NetPacksServer.cpp

+ 3 - 4
server/NetPacksServer.cpp

@@ -209,10 +209,9 @@ bool SetFormation::applyGh( CGameHandler *gh )
 bool HireHero::applyGh( CGameHandler *gh )
 {
 	const CGObjectInstance *obj = gh->getObj(tid);
-
-	if(obj->ID == Obj::TOWN)
-		ERROR_IF_NOT_OWNS(tid);
-	//TODO check for visiting hero
+	const CGTownInstance *town = dynamic_cast<const CGTownInstance *>(obj);
+	if(town && PlayerRelations::ENEMIES == gh->getPlayerRelations(obj->tempOwner, gh->getPlayerAt(c)))
+		COMPLAIN_AND_RETURN("Can't buy hero in enemy town!");
 
 	return gh->hireHero(obj, hid,player);
 }