Merge pull request #1217 from Allofich/follow

Fix loading 0-duration Follow and Escort packages
pull/155/head
scrawl 8 years ago committed by GitHub
commit f2174ee9f4

@ -45,8 +45,8 @@ namespace MWMechanics
, mCellY(std::numeric_limits<int>::max())
{
// mDuration isn't saved in the save file, so just giving it "1" for now if the package has a duration.
// The exact value of mDuration only matters for repeating packages
if (mRemainingDuration != 0)
// The exact value of mDuration only matters for repeating packages.
if (mRemainingDuration > 0) // Previously mRemainingDuration could be negative even when mDuration was 0. Checking for > 0 should fix old saves.
mDuration = 1;
else
mDuration = 0;
@ -142,7 +142,8 @@ namespace MWMechanics
void AiEscort::fastForward(const MWWorld::Ptr& actor, AiState &state)
{
// Update duration counter
// Update duration counter if this package has a duration
if (mDuration > 0)
mRemainingDuration--;
}
}

@ -52,9 +52,9 @@ AiFollow::AiFollow(const ESM::AiSequence::AiFollow *follow)
, mActorRefId(follow->mTargetId), mActorId(-1)
, mCellId(follow->mCellId), mActive(follow->mActive), mFollowIndex(mFollowIndexCounter++)
{
// mDuration isn't saved in the save file, so just giving it "1" for now if the package has a duration.
// The exact value of mDuration only matters for repeating packages
if (mRemainingDuration != 0)
// mDuration isn't saved in the save file, so just giving it "1" for now if the package had a duration.
// The exact value of mDuration only matters for repeating packages.
if (mRemainingDuration > 0) // Previously mRemainingDuration could be negative even when mDuration was 0. Checking for > 0 should fix old saves.
mDuration = 1;
else
mDuration = 0;
@ -107,7 +107,7 @@ bool AiFollow::execute (const MWWorld::Ptr& actor, CharacterController& characte
if (!mAlwaysFollow) //Update if you only follow for a bit
{
//Check if we've run out of time
if (mDuration != 0)
if (mDuration > 0)
{
mRemainingDuration -= ((duration*MWBase::Environment::get().getWorld()->getTimeScaleFactor()) / 3600);
if (mRemainingDuration <= 0)
@ -228,7 +228,8 @@ int AiFollow::getFollowIndex() const
void AiFollow::fastForward(const MWWorld::Ptr& actor, AiState &state)
{
// Update duration counter
// Update duration counter if this package has a duration
if (mDuration > 0)
mRemainingDuration--;
}

Loading…
Cancel
Save