@@ -561,38 +561,16 @@ void RivenSimpleCommand::storeMovieOpcode(uint16 op, uint16 argc, uint16 *argv)
561
561
// time of a specified movie. However, every use in the game is for
562
562
// delaying an activateSLST opcode.
563
563
564
- uint32 scriptSize = 6 + (argc - 4 ) * 2 ;
565
-
566
- // Create our dummy script
567
- byte *scriptBuf = (byte *)malloc (scriptSize);
568
- WRITE_BE_UINT16 (scriptBuf, 1 ); // One command
569
- WRITE_BE_UINT16 (scriptBuf + 2 , argv[3 ]); // One opcode
570
- WRITE_BE_UINT16 (scriptBuf + 4 , argc - 4 ); // argc - 4 args
571
-
572
- for (int i = 0 ; i < argc - 4 ; i++)
573
- WRITE_BE_UINT16 (scriptBuf + 6 + (i * 2 ), argv[i + 4 ]);
574
-
575
- // Build a script out of 'er
576
- Common::SeekableReadStream *scriptStream = new Common::MemoryReadStream (scriptBuf, scriptSize, DisposeAfterUse::YES);
577
- RivenScriptPtr script = _vm->_scriptMan ->readScript (scriptStream);
578
-
579
564
uint32 delayTime = (argv[1 ] << 16 ) + argv[2 ];
580
565
581
- if (delayTime > 0 ) {
582
- // Store the script
583
- RivenScriptManager::StoredMovieOpcode storedOp;
584
- storedOp.script = script;
585
- storedOp.time = delayTime;
586
- storedOp.id = argv[0 ];
587
-
588
- // Store the opcode for later
589
- _vm->_scriptMan ->setStoredMovieOpcode (storedOp);
590
- } else {
591
- // Run immediately if we have no delay
592
- _vm->_scriptMan ->runScript (script, false );
593
- }
566
+ // Store the script
567
+ RivenScriptManager::StoredMovieOpcode storedOp;
568
+ storedOp.script = _vm->_scriptMan ->createScriptFromData (1 , argv[3 ], 1 , argv[4 ]);
569
+ storedOp.time = delayTime;
570
+ storedOp.id = argv[0 ];
594
571
595
- delete scriptStream;
572
+ // Store the opcode for later
573
+ _vm->_scriptMan ->setStoredMovieOpcode (storedOp);
596
574
}
597
575
598
576
// Command 39: activate PLST record (card picture lists)
0 commit comments