Ticket #3075: actorToPrintStrFor_V8.diff

File actorToPrintStrFor_V8.diff, 1.7 KB (added by cyxx, 13 years ago)
  • scumm/actor.cpp

     
    18611861        }
    18621862        if (_actorToPrintStrFor == 0xFF) {
    18631863                setTalkingActor(0xFF);
     1864                _charsetColor = _string[0].color;
    18641865        } else {
    18651866                a = derefActor(_actorToPrintStrFor, "actorTalk");
    18661867                setTalkingActor(a->_number);
    18671868                if (!_string[0].no_talk_anim) {
    18681869                        a->runActorTalkScript(a->_talkStartFrame);
    1869                         _useTalkAnims = true;
    18701870                }
    1871         }
    1872 
    1873         if (getTalkingActor() > 0x7F) {
    1874                 _charsetColor = (byte)_string[0].color;
    1875         } else {
    1876                 a = derefActor(getTalkingActor(), "actorTalk(2)");
    18771871                _charsetColor = a->_talkColor;
    18781872        }
     1873
    18791874        _charsetBufPos = 0;
    18801875        _talkDelay = 0;
    18811876        _haveMsg = 1;
     
    19871982                        a->runActorTalkScript(a->_talkStopFrame);
    19881983                        _useTalkAnims = false;
    19891984                }
    1990                 if (_game.version <= 7 && _game.heversion == 0)
     1985                if (_game.heversion == 0)
    19911986                        setTalkingActor(0xFF);
    19921987                a->_heTalking = false;
    19931988        }
    1994         if (_game.version == 8 || _game.heversion >= 60)
     1989        if (_game.heversion >= 60)
    19951990                setTalkingActor(0);
    19961991        if (_game.version == 8)
    19971992                VAR(VAR_HAVE_MSG) = 0;
  • scumm/script_v8.cpp

     
    466466        switch (b) {
    467467        case 0xC8:              // SO_PRINT_BASEOP
    468468                _string[m].loadDefault();
    469                 if (n)
     469                if (n) {
    470470                        _actorToPrintStrFor = pop();
     471                        // original V8 interpreter uses 0, whereas the existing talking code expects 0xFF
     472                        if (_actorToPrintStrFor == 0)
     473                                _actorToPrintStrFor = 0xFF;
     474                }
    471475                break;
    472476        case 0xC9:              // SO_PRINT_END
    473477                _string[m].saveDefault();