// - if no frame-skipping is required and so we have exactly one Animationframe per game tick
// or
// - if we load from a savegame where the new variables are not stored (we don't want to break savegame compatiblity because of smoother rendering of one animation)
if(RelevantFramesForDistributing<=0)
returnstd::max(0,CurrentFrame);
returnstd::max<int8_t>(0,CurrentFrame);
if(CurrentFrame>=RelevantFramesForDistributing)
returnCurrentFrame;
@ -33,7 +33,7 @@ int AnimationInfo::GetFrameToUseForRendering() const
// we don't use the processed game ticks alone but also the fraction of the next game tick (if a rendering happens between game ticks). This helps to smooth the animations.
std::swap(ActiveMonsters[activeIndex],ActiveMonsters[ActiveMonsterCount]);// This ensures alive monsters are before ActiveMonsterCount in the array and any deleted monster after
// The combination of Faster and Fast Attack doesn't result in more skipped skipped frames, cause the secound frame skip of Faster Attack is not triggered.
skippedAnimationFrames=2;
@ -478,7 +478,7 @@ void StartRangeAttack(int pnum, Direction d, WorldTileCoord cx, WorldTileCoord c
if(HasAllOf(player._pIFlags,ZenFlags)){// if multiple hitrecovery modes are present the skipping of frames can go so far, that they skip frames that would skip. so the additional skipping thats skipped. that means we can't add the different modes together.