1
0
mirror of https://github.com/vcmi/vcmi.git synced 2024-12-24 22:14:36 +02:00
This commit is contained in:
Michał W. Urbańczyk 2013-01-06 04:48:05 +00:00
parent 4bc2fd5519
commit d4c30667b8
2 changed files with 9 additions and 8 deletions

View File

@ -3355,7 +3355,7 @@ TSubgoal CGoal::whatToDoToAchieve()
auto heroDummy = hero;
erase_if(otherHeroes, [heroDummy](const CGHeroInstance * h)
{
return (h == heroDummy.h || !ai->isAccessibleForHero(heroDummy->pos, h, true) || !ai->canGetArmy(heroDummy.h, h));
return (h == heroDummy.h || !ai->isAccessibleForHero(heroDummy->visitablePos(), h, true) || !ai->canGetArmy(heroDummy.h, h));
});
if (otherHeroes.size())
{
@ -3363,9 +3363,9 @@ TSubgoal CGoal::whatToDoToAchieve()
int primaryPath, secondaryPath;
auto h = otherHeroes.back();
cb->setSelection(hero.h);
primaryPath = cb->getPathInfo(h->pos)->turns; //FIXME: investigate crash at this line
primaryPath = cb->getPathInfo(h->visitablePos())->turns;
cb->setSelection(h);
secondaryPath = cb->getPathInfo(hero->pos)->turns;
secondaryPath = cb->getPathInfo(hero->visitablePos())->turns;
if (primaryPath < secondaryPath)
return CGoal(VISIT_HERO).setisAbstract(true).setobjid(h->id).sethero(hero); //go to the other hero if we are faster
@ -3533,7 +3533,7 @@ void SectorMap::exploreNewSector(crint3 pos, int num)
}
});
if(t->visitable && vstd::contains(ai->knownSubterraneanGates, t->visitableObjects.front()))
toVisit.push(ai->knownSubterraneanGates[t->visitableObjects.front()]->pos);
toVisit.push(ai->knownSubterraneanGates[t->visitableObjects.front()]->visitablePos());
}
}
}
@ -3805,7 +3805,7 @@ int3 SectorMap::firstTileToGet(HeroPtr h, crint3 dst)
else
{
//TODO pick best shipyard to take over
return shipyards.front()->o->pos;
return shipyards.front()->o->visitablePos();
}
}
}

View File

@ -1918,19 +1918,20 @@ void CGameHandler::takeCreatures(int objid, const std::vector<CStackBasicDescrip
TQuantity collected = 0;
while(collected < sbd.count)
{
TSlots::const_iterator i = obj->Slots().begin();
for(; i != obj->Slots().end(); i++)
bool foundSth = false;
for(auto i = obj->Slots().begin(); i != obj->Slots().end(); i++)
{
if(i->second->type == sbd.type)
{
TQuantity take = std::min(sbd.count - collected, i->second->count); //collect as much cres as we can
changeStackCount(StackLocation(obj, i->first), -take, false);
collected += take;
foundSth = true;
break;
}
}
if(i == obj->Slots().end()) //we went through the whole loop and haven't found appropriate cres
if(!foundSth) //we went through the whole loop and haven't found appropriate cres
{
complain("Unexpected failure during taking creatures!");
return;