Ticket #9225: miscflags-final.patch

File miscflags-final.patch, 2.7 KB (added by SF/segra, 12 years ago)
  • script_v0.cpp

     
    829829        // This flag causes the actor to stop moving (used by script #158, Green Tentacle 'Oomph!')
    830830        if (a->_miscflags & 0x40)
    831831                a->stopActorMoving();
     832        if (a->_miscflags & 0x80)
     833                a->setActorCostume(0);
    832834
    833835        debug(0, "o_setActorBitVar(%d, %d, %d)", act, mask, mod);
    834836}
  • verbs.cpp

     
    168168                return;
    169169
    170170        // verbs disabled for the current actor
    171         ActorC64 *a = (ActorC64 *)derefActor(VAR(VAR_EGO), "switchActor");
    172         if (a->_miscflags & 0x40)
    173                 return;
     171        // Should no longer be required...
     172        //ActorC64 *a = (ActorC64 *)derefActor(VAR(VAR_EGO), "switchActor");
     173        //if (a->_miscflags & 0x40)
     174        //      return;
    174175
    175176        VAR(VAR_EGO) = VAR(97 + slot);
    176177        resetVerbs();
     
    727728}
    728729
    729730void ScummEngine_v0::runObject(int obj, int entry) {
    730         int prev = _v0ObjectInInventory;
     731        bool prev = _v0ObjectInInventory;
    731732
    732733        if (getVerbEntrypoint(obj, entry) == 0) {
    733734                // If nothing was found, attempt to find the 'WHAT-IS' verb script
     
    978979        // We acted on an inventory item
    979980        if (_activeInventory && verbExecutes(_activeInventory, true) && _activeVerb != 3) {
    980981                _v0ObjectInInventory = true;
     982                _activeObject = _activeInventory;
    981983                runObject(_activeInventory, _activeVerb);
    982984
    983985                _verbExecuting = false;
     
    10361038}
    10371039
    10381040void ScummEngine_v0::checkExecVerbs() {
    1039         Actor *a = derefActor(VAR(VAR_EGO), "checkExecVerbs");
     1041        ActorC64 *a = (ActorC64 *)derefActor(VAR(VAR_EGO), "checkExecVerbs");
    10401042        VirtScreen *zone = findVirtScreen(_mouse.y);
    10411043
    10421044        // Is a verb currently executing
     
    11511153                                obj = 0;
    11521154                                objIdx = 0;
    11531155                        }
     1156                       
     1157                        if (a->_miscflags & 0x80) {
     1158                                if (_activeVerb != 7 && over != 7) {
     1159                                        _activeVerb = 0;
     1160                                        over = 0;
     1161                                }
     1162                        }
    11541163
    11551164                        // Handle New Kid verb options
    11561165                        if (_activeVerb == 7 || over == 7) {
    11571166                                // Disable New-Kid (in the secret lab)
    11581167                                if (_currentMode == 2 || _currentMode == 0)
    11591168                                        return;
    1160                                
    1161                                 if (!(((ActorC64 *)a)->_miscflags & 0x80)) {
    1162                                         if (_activeVerb != 7) {
    1163                                                 _activeVerb = over;
    1164                                                 over = 0;
    1165                                         }
    1166                                 }
    11671169
    1168                                 if (over) {
     1170                                if (_activeVerb == 7 && over) {
    11691171                                        _activeVerb = 13;
    11701172                                        switchActor(_verbs[over].verbid - 1);
    11711173                                        return;
    11721174                                }
    11731175
    11741176                                setNewKidVerbs();
     1177                                _activeVerb = 7;
    11751178
    11761179                                return;
    11771180                        }
     
    11871190
    11881191                                if (zone->number == kMainVirtScreen) {
    11891192                                        // Ignore verbs?
    1190                                         if (((ActorC64 *)a)->_miscflags & 0x40) {
     1193                                        if (a->_miscflags & 0x40) {
    11911194                                                resetSentence(false);
    11921195                                                return;
    11931196                                        }