mirror of
				https://github.com/vcmi/vcmi.git
				synced 2025-10-31 00:07:39 +02:00 
			
		
		
		
	Tower: use bonus system for lookout tower and grail extra sight radius
Skyship code in GH::newTurn can be also dropped since darkness will never cover tiles team have sight over.
This commit is contained in:
		| @@ -59,7 +59,7 @@ void CPrivilagedInfoCallback::getTilesInRange(std::unordered_set<int3, ShashInt3 | ||||
| 		logGlobal->error("Illegal call to getTilesInRange!"); | ||||
| 		return; | ||||
| 	} | ||||
| 	if (radious == -1) //reveal entire map | ||||
| 	if (radious > 5000) //reveal entire map | ||||
| 		getAllTiles (tiles, player, -1, 0); | ||||
| 	else | ||||
| 	{ | ||||
|   | ||||
| @@ -434,14 +434,7 @@ void CGDwelling::serializeJsonOptions(JsonSerializeFormat & handler) | ||||
|  | ||||
| int CGTownInstance::getSightRadius() const //returns sight distance | ||||
| { | ||||
| 	if (subID == ETownType::TOWER) | ||||
| 	{ | ||||
| 		if (hasBuilt(BuildingID::GRAIL)) //skyship | ||||
| 			return -1; //entire map | ||||
| 		if (hasBuilt(BuildingID::LOOKOUT_TOWER)) //lookout tower | ||||
| 			return 20; | ||||
| 	} | ||||
| 	return 5; | ||||
| 	return 5 + valOfBonuses(Bonus::SIGHT_RADIOUS); | ||||
| } | ||||
|  | ||||
| void CGTownInstance::setPropertyDer(ui8 what, ui32 val) | ||||
| @@ -1089,6 +1082,8 @@ void CGTownInstance::recreateBuildingsBonuses() | ||||
| 	} | ||||
| 	else if(subID == ETownType::TOWER) //tower | ||||
| 	{ | ||||
| 		addBonusIfBuilt(BuildingID::LOOKOUT_TOWER, Bonus::SIGHT_RADIOUS, +20); | ||||
| 		addBonusIfBuilt(BuildingID::GRAIL, Bonus::SIGHT_RADIOUS, +5001); //more than 5000 reveal entire map | ||||
| 		addBonusIfBuilt(BuildingID::GRAIL, Bonus::PRIMARY_SKILL, +15, PrimarySkill::KNOWLEDGE); //grail | ||||
| 	} | ||||
| 	else if(subID == ETownType::INFERNO) //Inferno | ||||
|   | ||||
| @@ -1698,26 +1698,6 @@ void CGameHandler::newTurn() | ||||
| 		{ | ||||
| 			n.res[player] = n.res[player] + t->dailyIncome(); | ||||
| 		} | ||||
| 		if (t->hasBuilt(BuildingID::GRAIL, ETownType::TOWER)) | ||||
| 		{ | ||||
| 			// Skyship, probably easier to handle same as Veil of darkness | ||||
| 			//do it every new day after veils apply | ||||
| 			if (player != PlayerColor::NEUTRAL) //do not reveal fow for neutral player | ||||
| 			{ | ||||
| 				FoWChange fw; | ||||
| 				fw.mode = FoWChange::REVEALED; | ||||
| 				fw.player = player; | ||||
| 				// find all hidden tiles | ||||
| 				const auto & fow = getPlayerTeam(player)->fogOfWarMap; | ||||
| 				for (size_t i=0; i<fow.size(); i++) | ||||
| 					for (size_t j=0; j<fow.at(i).size(); j++) | ||||
| 						for (size_t k=0; k<fow.at(i).at(j).size(); k++) | ||||
| 							if (!fow.at(i).at(j).at(k)) | ||||
| 								fw.tiles.insert(int3(i,j,k)); | ||||
|  | ||||
| 				sendAndApply (&fw); | ||||
| 			} | ||||
| 		} | ||||
| 		if (t->hasBonusOfType (Bonus::DARKNESS)) | ||||
| 		{ | ||||
| 			for (auto & player : gs->players) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user