|
|
|
@ -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--;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|