Playing KQ8: Crash of Eternity on Win 7 64-bit

Is the game being a ROYAL pain? Need a hint? Got a problem? This is the place to discuss King's Quest!
Post Reply
Dale Mahalko
Noob
Posts: 3
Joined: Sat Dec 15, 2012 4:53 pm
Location: USA
Gender: Not Specified

Playing KQ8: Crash of Eternity on Win 7 64-bit

Post by Dale Mahalko »

Well I've just completed KQ8: Crash of Eternity.



This game just barely works on Windows 7, and due to the instant-death nature of the game, plus the fact that it freezes and bombs about every five minutes, I find it risky to walk more than 20 feet without saving again. Saving again. Saving again. Saved about ... 170 times I think.

Here are some fixes, for anyone else trying to suffer through this game, using the 2011 "new installer":



1. Turn off ALL shadow effects in Graphics seems to really help a lot with stability.

No, it ain't mah 3D card's fault -- Dual GTX 680 1gig in SLI mode, runs GTA4 with max quality and the ocean splashing on the beach smooth as glass.

It's too bad this game can't somehow be forced to run at 1600x1200 with the bitmaps scaled up and bicubic interpolated, to match the higher resolution.



2. You can make the video cutscenes work, without downloading anything.

For whatever reason, Microsoft continues to include the antique Indeo 5 codec in Windows 7 64-bit, but they don't register the DLL's so this codec doesn't normally do anything. So no you don't need to hunt all across the web for Indoe 5 video drivers. You already have them, just need to enable them. Enabling them requires running the DLL registration program as an administrator:
- Click START menu/button
- Type CMD and wait a few seconds
- An icon for CMD appears in start menu
- Right-click on the icon and choose Run as Administrator
- Yes to security warning
- Welcome to the command prompt! Ah, it's just like running MSDOS again.

For Windows 7 32-bit: (note, this is not tested but most likely valid)
- Type C: and press ENTER
- Type CD C:\WINDOWS\SYSTEM32 and press ENTER
- Type REGSVR32 IR50_32.DLL and press ENTER

For Windows 7 64-bit:
- Type C: and press ENTER
- Type CD C:\WINDOWS\SYSWOW64 and press ENTER
- Type REGSVR32 IR50_32.DLL and press ENTER

Either click the [X] to close the command prompt, or type EXIT and press Enter



3a. To force-quit the game you need to use the Task Manager. But when Mask is running you technically only see the upper right corner of your desktop, so if the Task Manager is not already up in the upper-left corner, it's going to be hard to force quit. So BEFORE running Crash of Eternity, open the Task Manager and put it in the upper left corner of your desktop.

3b. To force-quit the game when the Task Manager is off somewhere else... well you still can do it but it is harder:
- Ctrl-Alt-Del
- Start Task Manager
- Press ALT key
- Press ENTER key
- You will see a disembodied menu pop up on the far right of the screen.
- Press RIGHT arrow until a menu with "Move" appears
- Press DOWN arrow to highlight "Move" and press ENTER
- Use the LEFT arrow and UP arrow key to move Task Manager into view from the right side of your screen
- When it's on screen, now you can go to the Processes tab, select MASK.EXE and Click END PROCESS
Easy! (Heh.)



4. There's a dialog hang in the Barrens, talking to the merchant that helps you kill the basilisk.

At the end of meeting the merchant for the first time, Conner says "Let me ponder that." ... and the mask dialog icon spins, and spins, and spins, and spins, and spins, and spins, and spins. PLEASE WILL YOU STOP PONDERING THAT??? The only solution is to force quit the game as above, but you can't get past this step and the game is broken and unusable.

It looks like there's an error in the character dialog file, but you can solve it using the "cheat console" and without cheating.

Any time before you meet the merchant:
- Press Ctrl-Shift-7 to bring up the console
- Type this, EXACTLY AS SHOWN: set Barren::Seller::metConnor 1
- Press Ctrl-Shift-7 to close the console

You can now talk with the merchant, and at the end when Conner says "Let me ponder that" you get control back and can continue playing normally.



5. There's another script bug that happens at the end of the Barrens. When getting the mask piece from the chest near the jail, Conner gets the same mask piece twice.

Conner walks up to the chest and opens it, but it suddenly disappears when opening it. The minion appears. Conner turns to face the minion ... and the chest reappears.... and spins around with Conner so the chest is between Conner and the minion, and Conner opens the chest again.

,
User avatar
Collector
Grand Poobah
Posts: 12013
Joined: Wed Oct 08, 2008 12:57 am
Location: Sierraland
Contact:

Re: Playing KQ8: Crash of Eternity on Win 7 64-bit

Post by Collector »

Did you try the installer from here?
01000010 01111001 01110100 01100101 00100000 01101101 01100101 00100001

Image
Dale Mahalko
Noob
Posts: 3
Joined: Sat Dec 15, 2012 4:53 pm
Location: USA
Gender: Not Specified

Re: Playing KQ8: Crash of Eternity on Win 7 64-bit

Post by Dale Mahalko »

Yes, used: http://www.sierrahelp.com/Files/NewInst ... kSetup.exe
Downloaded Dec 9, 2012

Using my original Sierra MoE CD.
User avatar
Tawmis
Grand Poobah's Servant
Posts: 20943
Joined: Wed Oct 08, 2008 1:19 am
Gender: Not Specified
Contact:

Re: Playing KQ8: Crash of Eternity on Win 7 64-bit

Post by Tawmis »

Dale Mahalko wrote:Well I've just completed KQ8: Crash of Eternity.
OMG. I could not stop laughing...
Aroenai
Sierra Obsessed
Posts: 121
Joined: Thu Feb 26, 2009 10:42 pm
Location: Colorado
Gender: Male

Re: Playing KQ8: Crash of Eternity on Win 7 64-bit

Post by Aroenai »

I've been able to play for hours on Win 7 x64... or at least boredom forces me to quit.
Dale Mahalko wrote:No, it ain't mah 3D card's fault -- Dual GTX 680 1gig in SLI mode, runs GTA4 with max quality and the ocean splashing on the beach smooth as glass.

It's too bad this game can't somehow be forced to run at 1600x1200 with the bitmaps scaled up and bicubic interpolated, to match the higher resolution.
There's your problem, although the glide wrapper is also very old and wasn't made for today's computers. (I think the GeForce 5900 was the best at the time, and that was the last to still have hardware support for 256 color textures.)

Software mode can, heck the game can even be run in widescreen under software if you change a few bytes in hex. A lot of the menus get broken though.

2. Still need to take a look at Windows 8 and see if they removed that codec yet or not, otherwise there's always this. (videos using the xvid codec)

3a. Ctrl-Shift-Esc -> Taskmanager. Though you only need that if the game is completely locked up (graphics, sound, etc.), if it's just sitting there on a spinning mask screen do Ctrl-Shift-7, "quit", enter.

4. I gave collector a fix for this back on April 1st but he still hasn't added it to the installer... the file is tw_weird.cs. which you can also find in my installer.

5. First time I've heard of this, do you still have the game save so I can look into it?
User avatar
Collector
Grand Poobah
Posts: 12013
Joined: Wed Oct 08, 2008 12:57 am
Location: Sierraland
Contact:

Re: Playing KQ8: Crash of Eternity on Win 7 64-bit

Post by Collector »

I have been involved in a large project had have not had time to do much with the installers. It may be a while before I can get back to it, but this is not forgotten.
01000010 01111001 01110100 01100101 00100000 01101101 01100101 00100001

Image
Dale Mahalko
Noob
Posts: 3
Joined: Sat Dec 15, 2012 4:53 pm
Location: USA
Gender: Not Specified

Re: Playing KQ8: Crash of Eternity on Win 7 64-bit

Post by Dale Mahalko »

I can see why no one wants to try to fix script bugs. The scripts are ridiculously complicated. The interpreter engine apparently doesn't support
- IF x OR y THEN
- IF x AND y THEN
- CASE

So instead you have a literally 25-level deep IF structure.

Also the indenting of the script files is all screwed up, as if the programmers only had a window that was 80 characters wide, and they could not indent everything properly. I manually indented this one by hand in Windows Notepad, just to try to figure out the Weirdling vendor hang:

TW_WEIRD.CS

Code: Select all

echo $1 $2 $3 $4 $5 $6 $7
if test $2 == Init
   set WeirdCam1 140500 132600 3100 -.2 0 -2.22
   set WeirdCam2 145050 133700 3094 -.2 0  2.35
   set WeirdCam5 142800 131550 3194 -.4 0 -1.81
   set WeirdCam6 143850 132150 3294 -.3 0  2.11
else
   if test $2 == ConnorAction
      if test $4 == do
         if test $Barren::Seller::puzzleState == both
            if test $Barren::Seller::state ==  2
               KQMonster::speak $1 Connor 5000 3 14 3 1 2
            else
               KQMonster::speak $1 Connor 5000 $Barren::Seller::Noun $Barren::Seller::Verb $Barren::Seller::Context $Barren::Seller::Start $Barren::Seller::End
            endif
         else
            KQMonster::speak $1 Connor 5000 $Barren::Seller::Noun $Barren::Seller::Verb $Barren::Seller::Context $Barren::Seller::Start $Barren::Seller::End
         endif
      else
         if test $4 == INVITEM_SilverCoins
            if test $Barren::Seller::nameSelected == 0
               KQMonster::speak $1 Connor 5000 $Barren::Seller::Noun $Barren::Seller::Verb $Barren::Seller::Context $Barren::Seller::Start $Barren::Seller::End
            else
               getConInventory
               if test $ConInv::Short != $Barren::Seller::ConnorOwnsShortType
                  # test for Battle Ax
                  if test $ConInv::Short == 1070
                     KQConner::pay SilverCoins $Barren::Seller::costSelected
                     if test $Console::Return == 1
                        #delete Connors weapon
                        KQMonster::setState $1 special payst2,grabright
                        KQMonster::clearSpeak $1
                        KQMonster::speak $1 Connor 5000 1 8 41 1 2
                        set Barren::Seller::ConnorOwnsShortType $ConInv::Short
                        inc Barren::Seller::count
                     else
                        # the click will cause weapon to send a Cue message
                        set Barren::Seller::ClickFromCode 1
                        conClickItem $Barren::Seller::ConnorOwnsShortName
                        set Barren::Seller::ClickFromCode 0
                        KQMonster::setState $1 special "payst2"
                        KQMonster::clearSpeak $1
                        KQMonster::speak $1 Connor 5000 1 0 105 1 1
                     endif
                  endif
               else
                  if test $ConInv::Long != $Barren::Seller::ConnorOwnsLongType
                     # test for long bow
                     if test $ConInv::Long == 1170
                        KQConner::pay SilverCoins $Barren::Seller::costSelected
                        if test $Console::Return == 1
                           KQMonster::setState $1 special "payst2"
                           KQMonster::clearSpeak $1
                           KQMonster::clearSpeak $1
                           KQMonster::speak $1 Connor 5000 1 8 41 1 2
                           set Barren::Seller::ConnorOwnsLongType $ConInv::Long
                           checkDistance $1 $Barren::Seller::ConnorOwnsLongName 1000
                           if test $Console::Return == 1
                              KQMonster::setState $1 Special grab
                           else
                              KQMonster::setState $1 Special grableft
                           endif
                           inc Barren::Seller::count
                        else
                           # the click will cause weapon to send a Cue message
                           set Barren::Seller::ClickFromCode 1
                           conClickItem $Barren::Seller::ConnorOwnsLongName
                           set Barren::Seller::ClickFromCode 0
                           KQMonster::setState $1 special "payst2"
                           KQMonster::clearSpeak $1
                           KQMonster::speak $1 Connor 5000 1 0 105 1 1
                        endif
                        # test for cross bow
                     else
                        if test $ConInv::Long == 1190
                           KQConner::pay SilverCoins $Barren::Seller::costSelected
                           if test $Console::Return == 1
                              KQMonster::setState $1 special "payst2"
                              KQMonster::clearSpeak $1
                              KQMonster::speak $1 Connor 5000 1 8 41 1 2
                              set Barren::Seller::ConnorOwnsLongType $ConInv::Long
                              checkDistance $1 $Barren::Seller::ConnorOwnsLongName 1000
                              if test $Console::Return == 1
                                 KQMonster::setState $1 Special grab
                              else
                                 KQMonster::setState $1 Special grableft
                              endif
                              inc Barren::Seller::count
                           else
                              # the click will cause weapon to send a Cue message
                              set Barren::Seller::ClickFromCode 1
                              conClickItem $Barren::Seller::ConnorOwnsLongName
                              set Barren::Seller::ClickFromCode 0
                              KQMonster::setState $1 special "payst2"
                              KQMonster::clearSpeak $1
                              KQMonster::speak $1 Connor 5000 1 0 105 1 1
                           endif
                        endif
                     endif
                  else
                     if test $Barren::Seller::nameSelected == Pike
                        KQMonster::clearSpeak $1
                        KQConner::pay SilverCoins $Barren::Seller::costSelected
                        if test $Console::Return == 1
                           KQMonster::clearSpeak $1
                           KQMonster::speak $1 Connor 5000 1 8 9 1 2
                        else
                           KQMonster::setState $1 special "payst2"
                           KQMonster::speak $1 Connor 5000 1 0 105 1 1
                        endif
                     endif
                  endif
               endif
               setcontx.cs
            endif
         else
            if test $4 == INVITEM_BlackDiamond
               if test $Barren::Seller::puzzleState == shaftonly
                  set Barren::Seller::puzzleState both
                  KQMonster::clearSpeak $1
                  KQMonster::speak $1 Connor 5000 1 25 99 1 3
                  sendEvent 0 $1 KQCueEvent 20
               else
                  if test $Barren::Seller::puzzleState == neither
                     set Barren::Seller::puzzleState diamondonly
                     KQMonster::clearSpeak $1
                     KQMonster::speak $1 Connor 5000 1 25 5 1 3
                  endif
               endif
               deleteObject $3
               setcontx.cs
            else
               if test $4 == INVITEM_MetalShaft
                  if test $Barren::Seller::puzzleState == diamondonly
                     set Barren::Seller::puzzleState both
                     KQMonster::clearSpeak $1
                     KQMonster::speak $1 Connor 5000 1 39 102 1 3
                     sendEvent 0 $1 KQCueEvent 20
                  else
                     if test $Barren::Seller::puzzleState == neither
                        set Barren::Seller::puzzleState shaftonly
                        KQMonster::clearSpeak $1
                        KQMonster::speak $1 Connor 5000 1 39 103 1 3
                     endif
                  endif
                  deleteObject $3
                  setcontx.cs
               else
                  if test $4 == INVITEM_BasiliskTongue
                     KQMonster::speak $1 Connor 5000 1 52 109 1 1
                  else
                     KQMonster::speak $1 Connor 5000 1 49 110 1 1
                  endif
               endif
            endif
         endif
      endif
   else
      if test $2 == Cue
         # 10 is message from trap
         if test $3 == 10
            if test $5 == On
               KQObject::preloadResources $1
               if test $Barren::Seller::metConnor == 0
                  KQMusic::push mweird.aud
                  setThirdPerson
                  getEndLoop Connor $1 1
                  if test $Barren::Basilisk::Dead == 1
                     KQMonster::checkInventory World BattleAx axName
                     if test $axName != null
                        KQObject::setHidden $axName 0
                     endif
                     if test $Barren::Tunnel::beenThere == 1
                        set Barren::Seller::puzzleState foundtunnel
                     else
                        set Barren::Seller::puzzleState basiliskdead
                     endif
                  endif
                  setcontx.cs
                  KQMonster::stateChangeNotify $1 $1
                  getConInventory
                  set Barren::Seller::ConnorOwnsShortType $ConInv::Short
                  set Barren::Seller::ConnorOwnsLongType  $ConInv::Long
                  KQMonster::checkInventory Connor $ConInv::Short Barren::Seller::ConnorOwnsShortName
                  if test $Console::Return == 1
                     # if short weapon exists
                     KQObject::setScript  $Barren::Seller::ConnorOwnsShortName myweapon.cs
#................    KQObject::setAccepts $Barren::Seller::ConnorOwnsShortName INVITEM_SilverCoins
                  endif
                  KQMonster::checkInventory Connor $ConInv::Long Barren::Seller::ConnorOwnsLongName
                  if test $Console::Return == 1
                     # if long weapon exists
                     KQObject::setScript  $Barren::Seller::ConnorOwnsLongName myweapon.cs
#................    KQObject::setAccepts $Barren::Seller::ConnorOwnsLongName INVITEM_SilverCoins
                  endif
                  handsOff 1
                  KQCamera::follow none
                  KQMonster::stateChangeNotify $1 Connor
                  KQConner::getDoMode
                  if test $Console::Return != 4
          	     KQConner::setDoMode 4
                  else
                     tw_weird.cs $1 StateChange 0 32
                  endif
               else
                  checkDistance Connor $1 6000
                  if test $Console::Return == 1
                     KQMonster::clearSpeak $1
                  endif
                  getConInventory
                  if test $ConInv::Long != $Barren::Seller::ConnorOwnsLongType
                     KQMonster::speak $1 Connor 5000 1 0 46 1 1
                     # the click will cause weapon to send a Cue message
                     set Barren::Seller::ClickFromCode 1
                     conClickItem $Barren::Seller::ConnorOwnsLongName
                     set Barren::Seller::ClickFromCode 0
                  endif
                  if test $ConInv::Short != $Barren::Seller::ConnorOwnsShortType
                     KQMonster::speak $1 Connor 5000 1 0 46 1 1
                     # the click will cause weapon to send a Cue message
                     if test $Barren::Seller::ConnorOwnsShortType == 1280 #fists
                        KQMonster::dropItem Connor INVITEM_BattleAx $AxLoc
                     else
                        set Barren::Seller::ClickFromCode 1
                        conClickItem $Barren::Seller::ConnorOwnsShortName
                        set Barren::Seller::ClickFromCode 0
                     endif
                  endif
               endif
            else
               if test $5 == Off
                  set Barren::Seller::sayNoThanks 1
               endif
            endif
         else
            if test $3 == 11
               if test $5 == On
                  if test $Barren::Seller::metConnor == 1
                     KQMusic::pop mweird.aud
                     getEndLoop Connor $1 0
                     setThirdPerson
                  endif
                  set Barren::Seller::metConnor 0
                  set Barren::Seller::sayNoThanks 0
                  set Barren::Seller::nameSelected 0
                  set Barren::Seller::typeSelected 0
                  set Barren::Seller::costSelected 0
                  # strip script from connors weapons
                  KQMonster::checkInventory Connor $ConInv::Long Barren::Seller::ConnorOwnsLongName
                  if test $Console::Return == 1
                     KQObject::setScript $Barren::Seller::ConnorOwnsLongName NONE
                  endif
                  KQMonster::checkInventory Connor $ConInv::Short      Barren::Seller::ConnorOwnsShortName
                  if test $Console::Return == 1
                     KQObject::setScript $Barren::Seller::ConnorOwnsShortName NONE
                  endif
               else
                  if test $4 == Off
                  endif
               endif
            else
               if test $3 == 15 # cue to start setup for hello speech
                  KQConner::walkTo 142000 131300 $1 16 0
                  move KQCamera 0 $WeirdCam1
               else
                  if test $3 == 16 # cue to say hello
                     if test $Barren::Seller::puzzleState == start
                        KQMonster::clearSpeak $1
                        KQMonster::speak $1 Connor 5000 1 0 1 1 10
#...................    KQMonster::speak $1 Connor 5000 1 0 1 10 10
                     else
                        KQMonster::speak $1 Connor 5000 1 0 98 1 1
                        handsOff 0
                        KQCamera::follow Connor
                        set Barren::Seller::metConnor 1
                     endif
                  else
                     if test $3 == 20 # cue to start the pike sale
                        set Barren::Seller::costSelected 10
                        set Barren::Seller::nameSelected Pike
                        set Barren::Seller::typeSelected Pike
                        set Barren::Seller::Noun 1
                        set Barren::Seller::Verb 14
                        set Barren::Seller::Context 148
                        set Barren::Seller::Start 1
                        set Barren::Seller::End 1
                     else
                        if test $3 == 80
                           getConInventory
                           # comes from grab anims see anm file
                           if test $5 == right
                              deleteObject $Barren::Seller::ConnorOwnsShortName
                              KQMonster::checkInventory Connor $ConInv::Short Barren::Seller::ConnorOwnsShortName
                              KQObject::setScript $Barren::Seller::ConnorOwnsShortName myweapon.cs
                           else
                              deleteObject $Barren::Seller::ConnorOwnsLongName
                              KQMonster::checkInventory Connor $ConInv::Long Barren::Seller::ConnorOwnsLongName
                              KQObject::setScript $Barren::Seller::ConnorOwnsLongName myweapon.cs
                           endif
                        else
                           if test $3 == 90 # cues from pikeanim.anm
                              if test $4 == 90
                                 KQMonster::setState Connor Special 'AnimList=pikeanim.anm,AnimListOn,cget'
                              else
                                 if test $4 == 103
                                    move KQCamera 0 144500 132200 2750 0 0 2.2
                                 endif
                              endif
                           else
                              if test $3 == 100
                                 handsOff 1
                                 KQCamera::follow none
                                 preloadShape tw_turn.kqs
                                 preloadShape tw_grind.kqs
                                 preloadShape tw_hammr.kqs
                                 preloadShape tw_coals.kqs
                                 preloadShape tw_fini.kqs
                                 preloadShape c_bpget.kqs
                                 KQMonster::setState $1 Special 'AnimList=pikeanim.anm,AnimListOn,pike0,pike1,pike2,pike3,pike4'
                              else
                                 if test $3 == 300
                                    if test $5 == cget
                                       handsOff 0
                                       KQCamera::follow Connor
                                       give Pike 1
                                       sendEvent 0 Connor KQStatsChangeRequestEvent 0 0 0 0 20000
                                       set Barren::Seller::puzzleState boughtpike
                                       setcontx.cs
                                       getConInventory
                                       set Barren::Seller::ConnorOwnsShortType $ConInv::Short
                                       KQMonster::checkInventory Connor $ConInv::Short Barren::Seller::ConnorOwnsShortName
                                       if test $Console::Return == 1
                                          # if short weapon exists
                                          KQObject::setScript  $Barren::Seller::ConnorOwnsShortName myweapon.cs
                                       endif
                                       set Barren::Seller::nameSelected 0
                                       set Barren::Seller::typeSelected 0
                                       set Barren::Seller::costSelected 0
                                       KQMonster::speak $1 Connor 5000 1 0 149 1 1
                                    else
                                       if test $5 == out
                                          KQConner::getDoMode
                                          if test $Console::Return != 4
                                             KQSound::play no.aud
                                             KQConner::setDoMode 4
#.......................................     KQMonster::speak $1 Connor 5000 1 56 0 1 1
#.......................................     handsOff 1
                                          endif
#....................................  else 
#....................................     if test $5 == away
#....................................        handsOff 0
#....................................     endif
                                       endif
                                    endif
                                 endif
                              endif
                           endif
                        endif
                     endif
                  endif
               endif
            endif
         endif
      else
         if test $2 == StateChange
            if test $4 == 32
               KQMonster::clearStateChangeNotify $1 Connor
               sendEvent 0 $1 KQCueEvent 15
            endif
         else
            if test $2 == EndLoop
               if test $3 == pike0
                  move KQCamera 0 144750 131200 2450 0 0 .3
                  sendEvent 0 grinder KQAnimPlayEvent grind
                  move Connor 0 142750 131200 1744 0 0 1.57
                  # hide the ax so connor cant buy it and thereby lose the pike
                  set axname null
                  KQMonster::checkInventory World BattleAx axName
                  if test $axName != null
                     KQObject::setHidden $axName 1
                  endif
               else
                  if test $3 == pike1
                     sendEvent 0 grinder KQAnimPlayEvent stop
                     move KQCamera 0 145500 130700 2750 -.2 0 .3
                  else
                     if test $3 == pike2
                        move KQCamera 0 144000 132000 2250 0 0 -2.8
                     else
                        if test $3 == pike3
                           move KQCamera 0 142250 130200 2750 -.1 0 -0.8
                        else
                           if test $3 == pike4
                           endif
	                endif
                     endif
                  endif
               endif
            else
               if test $2 == TalkComplete
	          if eval KQMonster::testMessage $3 $4 $5 $6 $7 5000 1 0 1 1
                     move KQCamera 0 $WeirdCam2
                  else
                     if eval KQMonster::testMessage $3 $4 $5 $6 $7 5000 1 0 1 2
                        move KQCamera 0 $WeirdCam1
                     else
                        if eval KQMonster::testMessage $3 $4 $5 $6 $7 5000 1 0 1 3
                           move KQCamera 0 $WeirdCam2
                        else
                           if eval KQMonster::testMessage $3 $4 $5 $6 $7 5000 1 0 1 4
                              move KQCamera 0 $WeirdCam1
                           else
                              if eval KQMonster::testMessage $3 $4 $5 $6 $7 5000 1 0 1 5
                                 move KQCamera 0 $WeirdCam2
                              else
                                 if eval KQMonster::testMessage $3 $4 $5 $6 $7 5000 1 0 1 6
                                    move KQCamera 0 $WeirdCam1
                                 else
                                    if eval KQMonster::testMessage $3 $4 $5 $6 $7 5000 1 0 1 7
                                       move KQCamera 0 $WeirdCam6
                                    else
                                       if eval KQMonster::testMessage $3 $4 $5 $6 $7 5000 1 0 1 8
                                          move KQCamera 0 $WeirdCam5
                                       else
                                          if eval KQMonster::testMessage $3 $4 $5 $6 $7 5000 1 0 1 9
                                             move KQCamera 0 $WeirdCam2
                                          else
                                             if eval KQMonster::testMessage $3 $4 $5 $6 $7 5000 1 0 1 10
                                                set Barren::Seller::metConnor 1
                                                set Barren::Seller::puzzleState neither
                                                set Barren::Seller::Noun 1
                                                set Barren::Seller::Verb 14
                                                set Barren::Seller::Context 101
                                                set Barren::Seller::Start 1
                                                set Barren::Seller::End 2
                                                sendEvent 0 Connor KQStatsChangeRequestEvent 0 0 0 0 25000
                                                handsOff 0
                                                KQCamera::follow Connor
                                             else
                                                if eval KQMonster::testMessage $3 $4 $5 0 1 5000 10 14 0 1
                                                   # make sure hand stays out for message about battleax
                                                   KQMonster::setState $1 special payst
                                                else
                                                   if eval KQMonster::testMessage $3 $4 $5 0 1 5000 4 14 0 1
                                                      # make sure hand stays out for message about heavy crossbow
                                                      KQMonster::setState $1 special payst
                                                   else
                                                      if eval KQMonster::testMessage $3 $4 $5 0 1 5000 2 14 0 1
                                                         # make sure hand stays out for message about heavy longbow
                                                         KQMonster::setState $1 special payst
                                                      else
                                                         if eval KQMonster::testMessage $3 $4 $5 $6 $7 5000 1 10 7 1
                                                            # make sure hand stays out for message about heavy longbow
                                                            KQMonster::setState $1 special payst
                                                         else
                                                            if eval KQMonster::testMessage $3 $4 $5 $6 $7 5000 3 14 3 1
                                                               if test $Barren::Seller::state == 2
                                                                  # if some other item is selected put hand down first
                                                                  KQMonster::setState Weirdling special "pay,payst"
                                                               endif
                                                            else
                                                               if eval KQMonster::testMessage $3 $4 $5 $6 $7 5000 3 14 3 2
                                                                  sendEvent 0 $1 KQCueEvent 20
                                                                  # make sure hand stays out for message about pike
                                                                  KQMonster::setState $1 special payst
                                                               else
                                                                  if eval KQMonster::testMessage $3 $4 $5 $6 $7 5000 1 14 148 1
                                                                     # make sure hand stays out for message about pike
                                                                     KQMonster::setState $1 special payst
                                                                  else
                                                                     if eval KQMonster::testMessage $3 $4 $5 $6 $7 5000 1 25 99 2
                                                                        if test $Barren::Seller::state == 2
                                                                           # if some other item is selected put hand down first
                                                                           KQMonster::setState Weirdling special "pay,payst"
                                                                        endif
                                                                     else
                                                                        if eval KQMonster::testMessage $3 $4 $5 $6 $7 5000 1 25 99 3
                                                                           # make sure hand stays out for message about pike
                                                                           KQMonster::setState $1 special payst
                                                                        else
                                                                           if eval KQMonster::testMessage $3 $4 $5 $6 $7 5000 1 39 102 2
                                                                              if test $Barren::Seller::state == 2
                                                                                 # if some other item is selected put hand down first
                                                                                 KQMonster::setState Weirdling special "pay,payst"
                                                                              endif
                                                                           else
                                                                              if eval KQMonster::testMessage $3 $4 $5 $6 $7 5000 1 39 102 3
                                                                                 # make sure hand stays out for message about pike
                                                                                 KQMonster::setState $1 special payst
                                                                              else
                                                                                 if eval KQMonster::testMessage $3 $4 $5 $6 $7 5000 1 8 9 1
                                                                                    # start pike anim
                                                                                    sendEvent 0 $1 KQCueEvent 100 0
#.............................................................................   else
#.............................................................................      if eval KQMonster::testMessage $3 $4 $5 $6 $7 5000 1 56 0 1
#................................................................................      KQConner::setDoMode 4
#................................................................................   endif
                                                                                 endif
                                                                              endif
                                                                           endif
                                                                        endif
                                                                     endif
                                                                  endif
                                                               endif
                                                            endif
                                                         endif
                                                      endif
                                                   endif
                                                endif
                                             endif
                                          endif
                                       endif
                                    endif
                                 endif
                              endif
                           endif
                        endif
                     endif
                  endif
               else
                  if test $2 == StateChange
                     if test $3 == $1
                        set Barren::Seller::state $5
                     endif
                  endif
               endif
            endif
         endif
      endif
   endif
endif
Dayum, that IF/THEN structure is just nuts.
Aroenai
Sierra Obsessed
Posts: 121
Joined: Thu Feb 26, 2009 10:42 pm
Location: Colorado
Gender: Male

Re: Playing KQ8: Crash of Eternity on Win 7 64-bit

Post by Aroenai »

It has nothing to do with the if structure, there's a bug in the talkcomplete function so anything can be randomly skipped. The current way around this is to rewrite the script to advance after a set amount of time for the most common trouble spots. The disadvantage of this is it can still happen anywhere in the game unless you rewrite every script and it'd only be timed correctly for whichever language you used as reference.
Lounge Lizard
Sierra Enthusiast
Posts: 30
Joined: Tue Mar 06, 2012 1:31 am
Location: CT
Gender: Male

Re: Playing KQ8: Crash of Eternity on Win 7 64-bit

Post by Lounge Lizard »

Does you strategy work the same for the GOG KQ8 on a Windows XP Lenovo laptop? It so irritates me that a GOG sold game would crash on my system before I can even play it.
User avatar
Tawmis
Grand Poobah's Servant
Posts: 20943
Joined: Wed Oct 08, 2008 1:19 am
Gender: Not Specified
Contact:

Re: Playing KQ8: Crash of Eternity on Win 7 64-bit

Post by Tawmis »

Lounge Lizard wrote:Does you strategy work the same for the GOG KQ8 on a Windows XP Lenovo laptop? It so irritates me that a GOG sold game would crash on my system before I can even play it.
If you're playing it on a laptop; my first guess would be the video card.
Red
Noob
Posts: 1
Joined: Tue Oct 22, 2013 12:20 am
Location: Aus
Gender: Not Specified

Re: Playing KQ8: Crash of Eternity on Win 7 64-bit

Post by Red »

Hello Guys, came across you a few weeks back by accident. Quite surprised to see this game can run in wins7 so thought OK will give it a go in 32 bit might try 64 later if I ever get to the end this round.

In this thread I'm posting in I have had the same lock up as Dale so tried to follow his work-around and failed?

So I then downloaded a save from here - *sheesh* how can you guys use so many potions and how do you manage to by-pass everything? I think I have used in total 10 mushrooms (the entire game so far) so I just lost heart playing this game, about to delete it when it hit me----------

Connor is spelt with 1 (one) n for nut not 2 once I removed the spelling error this has worked so back I go to meet "whatshisname".

I love whoever did the big clean up job it has been like playing a new game not an old one.

Should also mention F2 is very erratic in Barren works sometimes then refuses to and all of a sudden Conor has this thing about just walking any where on his own, you have no control of stopping him till you come across an enemy.
Post Reply

Return to “The King's Quest Series”