When hero have free boarding bonus there no reason to stop movement.
@@ -308,7 +308,7 @@ void CPlayerInterface::heroMoved(const TryMoveHero & details)
}
- if (details.result != TryMoveHero::SUCCESS) //hero failed to move
+ if(details.stopMovement()) //hero failed to move
{
hero->isStanding = true;
stillMoveHero.setn(STOP_MOVE);
@@ -420,6 +420,11 @@ void TryMoveHero::applyCl(CClient *cl)
CGI->mh->printObject(h);
+bool TryMoveHero::stopMovement() const
+{
+ return result != SUCCESS && result != EMBARK && result != DISEMBARK && result != TELEPORTATION;
+}
+
void NewStructures::applyCl(CClient *cl)
CGTownInstance *town = GS(cl)->getTown(tid);
@@ -634,6 +634,8 @@ struct TryMoveHero : public CPackForClient
bool humanKnows; //used locally during applying to client
+ bool stopMovement() const;
template <typename Handler> void serialize(Handler &h, const int version)
h & id;