Wow, that's super weird, great work finding out about that one. Alongside a
console window, I made a simple parallel process event that would print out the difference in time since the event last ran (making sure to initialize the global variable prior to it):
now = Time.now
puts now - $prev
$prev = now
The times between each call increases by 0.025 seconds = 1 frame, if the game is running at 40FPS.
I had to put a lot of debug calls throughout the MMW script until I finally found what was causing it, indicated between the lines I marked below:
class Interpreter
def setup(*args)
drg128_setup(*args)
# index of window for the message
@msgindex = 0
$game_temp.message_text, $game_temp.message_proc = [],[]
#-----------------------------------------------------------------
if @list.size > 1
templist = @list.pop
@list << RPG::EventCommand.new(106,0,[1]) << templist
end
#-----------------------------------------------------------------
# whether multiple messages are displaying
@multi_message = false
end
What this is doing is, before running the event, it adds a "Wait 1 frame" event command to the end of the list. A parallel process will call this
setup every time it runs, so your event list keeps getting longer and longer, filled with Wait commands.
Obviously this was not intentional for parallel process events, so it was probably designed for the on-trigger type events. I'm not sure why it arbitrarily adds a 1 frame wait at the end to every event...
but we can make sure that it only ever does it once:
if @list.size > 1 && @list[-2].code != 106
templist = @list.pop
@list << RPG::EventCommand.new(106,0,[1]) << templist
end