Banners don't animate in stormy weather as they do in the original game
Banners (activators using the script OutsideBanner) don't flap in stormy weather the way they do in the original engine.
The heavy blowing animation used in stormy weather is "idle3." In OpenMW a banner will keep repeating idle3 from the "start" frame to the "stop" frame. In the original engine, a banner will often repeat its middle frames (there are "loop start" and "loop stop" frames defined mid-animation) a few times before proceeding to the stop frame. Therefore, banners in the original engine blow with some randomness and are out of sync with each other, while in OpenMW they are nearly simultaneous, playing the animation from start to stop again and again.
From script OutsideBanner
set ran to random 100
if ( ran < 30 ) ;30% chance the flag does something new
;this will check the weather in the future if (GetCurrentWeather >= 5 ) ;thunder, ash, or blight LoopGroup, Idle3, 5 endif ;the last anim called in this script is the one it will play if ( ran <= 10 ) PlayGroup, Idle elseif ( GetCurrentWeather < 5 ) PlayGroup, Idle2 endif
endif (This script is modified in bloodmoon.esm but the changes are for snow and don't affect this issue)
OpenMW will correctly loop the middle frames if you use "togglescripts" to turn off the OutsideBanner script and manually give a "playgroup, Idle3" or "loopgroup, Idle3, 5" command through the console.
When the "OutsideBanner" script is running (and the weather is stormy), the banner will be rapidly switching between loopgroup Idle3 and playgroup Idle (depending on the value of "ran").
My guess of what might be happening is that the original engine is ignoring the playgroup and loopgroup commands until the object has finished whatever loopgroup iteration it is on. Once the iteration finishes it then begins accepting commands again and has a chance of running either loopgroup idle3 or playgroup idle.
Since OpenMW never loops, perhaps the first time it gets a command different from what it is doing (a "playgroup idle" interrupting its "loopgroup idle3") it gives the new command priority and cuts the loop short, but this is just my speculation.
P.S.
I don't know that these are directly related to the issue, I haven't seen that they cause problems and I'm not reporting these as "bugs," but I will mention them just in case they aren't already known.
-
In the original engine, "loopgroup, (animation), x" will play the animation, then loop it x times. So, "loopgroup idle3 1" will play up to the "loop stop" frame, then loop one time from the "loop start" frame. In OpenMW, x is how many times the animation plays, not how many times it repeats, and so "1" makes the animation play from start to finish one time, without any looping. In other words, the original game's behavior is x + 1 compared to OpenMW's behavior.
-
In the original engine, "playgroup (animation)" will always loop the animation. In OpenMW, the animation only seems to loop if the "loop start" and "loop stop" frames are different from the "start" and "stop" frames in that animation. In the idle3 animation of banners the "loop start" and "loop stop" frames are different from the "start" and "stop" frames, so it will loop in OpenMW with the playgroup command, but in the idle2 animation the "loop start" and "loop end" frames are the same as the "start" and "end" frames (according to the TES Construction Set), and the idle2 animation will not loop like it will in the original engine.
Tested on the latest win7 64bit nightly (964ea783) using only morrowind.esm. For convenience I'll attach saves of banners in stormy weather.
(RM-3385 from redmine: created on 2016-05-06 by R. D., , closed on 2016-08-24 by R. D.)
Attachments: bannertest.omwsave bannerte0000.ess