|
@@ -973,12 +973,11 @@ bool CGameHandler::moveHero(ObjectInstanceID hid, int3 dst, EMovementMode moveme
|
|
|
doMove(TryMoveHero::TELEPORTATION, guardsCheck, DONT_VISIT_DEST, LEAVING_TILE);
|
|
|
|
|
|
// visit town for town portal \ castle gates
|
|
|
- // do not use generic visitObjectOnTile to avoid double-teleporting
|
|
|
- // if this moveHero call was triggered by teleporter
|
|
|
+ // do not visit any other objects, e.g. monoliths to avoid double-teleporting
|
|
|
if (objectToVisit)
|
|
|
{
|
|
|
if (CGTownInstance * town = dynamic_cast<CGTownInstance *>(objectToVisit))
|
|
|
- town->onHeroVisit(h);
|
|
|
+ objectVisited(town, h);
|
|
|
}
|
|
|
|
|
|
return true;
|
|
@@ -2143,10 +2142,13 @@ bool CGameHandler::buildStructure(ObjectInstanceID tid, BuildingID requestedID,
|
|
|
// now when everything is built - reveal tiles for lookout tower
|
|
|
changeFogOfWar(t->getSightCenter(), t->getSightRadius(), t->getOwner(), ETileVisibility::REVEALED);
|
|
|
|
|
|
- if(t->garrisonHero) //garrison hero first - consistent with original H3 Mana Vortex and Battle Scholar Academy levelup windows order
|
|
|
- objectVisited(t, t->garrisonHero);
|
|
|
- if(t->visitingHero)
|
|
|
- objectVisited(t, t->visitingHero);
|
|
|
+ if (!force)
|
|
|
+ {
|
|
|
+ if(t->garrisonHero) //garrison hero first - consistent with original H3 Mana Vortex and Battle Scholar Academy levelup windows order
|
|
|
+ objectVisited(t, t->garrisonHero);
|
|
|
+ if(t->visitingHero)
|
|
|
+ objectVisited(t, t->visitingHero);
|
|
|
+ }
|
|
|
|
|
|
checkVictoryLossConditionsForPlayer(t->tempOwner);
|
|
|
return true;
|