Temp

From SCI Wiki
Jump to navigationJump to search


Code:
/******************************************************************************
 SCI Template Game VER 1.1a
 By Brian Provinciano
 ******************************************************************************
 main.sc
 Contains the game's main instance and inventory items.
 ******************************************************************************/
(include "sci.sh")
(include "game.sh")
/******************************************************************************/
(script MAIN_SCRIPT)
/******************************************************************************/
(use "controls")
(use "sound")
(use "syswindow")
(use "cycle")
(use "game")
(use "inv")
(use "user")
(use "menubar")
(use "feature")
(use "obj")
(use "disposeload")
/******************************************************************************
 * These are the global variables. You can access them from any script as long
 * as it "use"es this script
 ******************************************************************************/
(local
    gEgo                    // points to the ego's class
    gGame                   /* points to the game instance */
    gRoom                   /* points to the current room instance */
    gSpeed                  /* the game speed (delay each interpreter cycle) */
    gQuitGame = FALSE       /* if set to TRUE, the game will exit */
    
    gCast                   /* points to the cast class (list of actors) */
    gRegions                /* points to the regions class (list of regions) */
    gLocales                /* points to the locales class (list of locales) */
    gTimers                 /* points to the timers class (list of timers) */
    gSounds                 /* points to the sounds class (list of sounds) */
    gInv                    /* points to the inventory class */
    gAddToPics              /* points to the add to pics class */
    gFeatures               /* points to the add to features class */       
    gSFeatures              /* points to the add to sfeatures class */
    
    gRoomNumberExit         /* room number exit */
    gPreviousRoomNumber     /* the number of the previous room */
    gRoomNumber             /* the number of the current room */ 
    gDebugOnExit = FALSE    /* enter debug mode on room exit */ 
    
    gScore = 0              /* the game score */        
    gMaxScore = 0           /* the maximum game score */
    gOldScore               /* previous score */
    
    gCurrentCursor          /* the number of the current cursor */
    gNormalCursor = 999     /* the number of the normal cursor (ie. arrow) */
    gLoadingCursor = 997    /* the number of the loading cursor (ie. hand) */
    
    gDefaultFont = 1        /* the number of the default font */
    gSaveRestoreFont = 0    /* the number of the font for the save/restore dialogs*/
    gDeadFont = 0           /* the number of the font for the dialog when ego dies */
    
    gUserEvent              /* points to the user's event object */
    gPrintDlg               /* points to the current Print() window */
    gVolume                 /* the sound volume */
    gVersion                /* the version string */
    gSaveDirPtr             /* points to the save directory string */
    gCheckAniWait           /* the checkAni delay */
    gSetRegions             /* a flag -- see User:doit() */
    
    gPicAngle               /* the room's pic angle */
    gOverlay = -1           /* whether to overlay the picture when drawing */
    gDefaultPicAni          /* the default pic animation */
    gDefaultPalette         /* the default palette to use for the pictures (0-3) */
    gCastMotionCue          /* if set, the cast's motionCue() is called */
    
    gTheWindow              /* points to the window class */
    gWndColor               /* the colour of the game's windows foreground (ie. text) */
    gWndBack                /* the colour of the game's windows background */

    gOldPort                /* the previous port */
    
    gEgoView                /* ego's current view number */
    
    /* hh:mm:ss | gTimeHours:gTimeMinutes:gTimeSeconds */
    /* the time elapsed since the game started */
    gTimeSeconds            /* the seconds */
    gTimeMinutes            /* the minutes */
    gTimeHours              /* the hours */
    
    gCurrentTime                /* the current time in seconds */
    
    gTheMusic               /* points to the music class */
    gTheSoundFX             /* points to the sound fx class */
    gProgramControl         /* states whether the program has control or the user */
)
/******************************************************************************/
(instance public Hello World of Game
    (properties)
    (method (init)
        // Set up the base window
        = gTheWindow theWindow
        = gWndColor clBLACK
        = gWndBack clWHITE
        (send gTheWindow:
            color(gWndColor)
            back(gWndBack)
        )

        // Initialize
        (super:init())

        /******************************
         * Set your game version here *
         ******************************/
        = gVersion "1.0"
            
        // General initialization stuff
        = gVolume 15
        DoSound(sndVOLUME gVolume)
            
        (SL:code(statusCode))
        (TheMenuBar:init())
    
        (scoreSound:
            owner(self)
            init()
        )
        = gTheMusic theMusic
        (send gTheMusic:
            owner(self)
            init()
        )
        = gTheSoundFX theSoundFX
        (send gTheSoundFX:
            owner(self)
            init()
        )
        
        = gEgo ego
        (User:
            alterEgo(gEgo)
            blocks(0)
            y(150)
        )
            
        Load(rsFONT     gDeadFont)
        Load(rsFONT     gDefaultFont)
        Load(rsFONT     gSaveRestoreFont)
    
        Load(rsCURSOR   gNormalCursor)
        Load(rsCURSOR   gLoadingCursor)
            
        (if(HaveMouse())
            (send gGame:setCursor(gNormalCursor SET_CURSOR_VISIBLE))
        )(else
            (send gGame:setCursor(gNormalCursor SET_CURSOR_VISIBLE 304 174))
        )
            
        /*************************************************
         * Initialize the inventory with it's items here *
         *************************************************/
        (Inv:
            add(
                {Nothing}
                {Test Object}
            )
        )
            
        // Start the room
        (if(GameIsRestarting())
            (self:newRoom(INITROOMS_SCRIPT))
        )(else
            (self:newRoom(TITLESCREEN_SCRIPT))
        )
    )
    (method (doit)
        (super:doit())
        (if(gProgramControl)
            (User:
                canControl(FALSE)
                canInput(FALSE)
            )
        )
        (if(<> gCurrentTime (= gCurrentTime GetTime(gtTIME_OF_DAY)))
            (if(>= ++gTimeSeconds 60)
                = gTimeSeconds 0
                ++ gTimeMinutes
                (if(>= gTimeMinutes 60)
                    = gTimeMinutes 0
                    ++ gTimeHours
                )
            )
        )
        (if(> gOldScore gScore)
                = gOldScore gScore
                (SL:doit())
        )
        (if(< gOldScore gScore)
            = gOldScore gScore
            (SL:doit())
        )
    )
    (method (replay)
        (TheMenuBar:draw())
        (SL:enable())
        
        (if(DoSound(sndSET_SOUND))
            SetMenu(MENU_TOGGLESOUND #text "Turn Off")
        )(else
            SetMenu(MENU_TOGGLESOUND #text "Turn On")
        )
        (super:replay())
    )
    (method (newRoom roomNum picAni)
            DisposePrintDlg()
            Load(rsFONT     gDeadFont)
            Load(rsFONT     gDefaultFont)
            Load(rsFONT     gSaveRestoreFont)

            Load(rsCURSOR   gNormalCursor)
            Load(rsCURSOR   gLoadingCursor)
     
            (super:newRoom(roomNum))
            (if(< paramTotal 2)
                = gDefaultPicAni Random(0 5)
            )(else
                = gDefaultPicAni picAni
            )
    )
    (method (startRoom roomNum)
        DisposeLoad(
            NULL
            FILEIO_SCRIPT JUMP_SCRIPT EXTRA_SCRIPT WINDOW_SCRIPT
                TIMER_SCRIPT FOLLOW_SCRIPT REV_SCRIPT DCICON_SCRIPT
                DOOR_SCRIPT AUTODOOR_SCRIPT WANDER_SCRIPT AVOID_SCRIPT
        )
        DisposeScript(DISPOSELOAD_SCRIPT)
        (if(gDebugOnExit)
            = gDebugOnExit FALSE
            SetDebug()
        )
        (send gTheSoundFX:
            stop()
            number(1)
        )
        (super:startRoom(roomNum))
        (if(== gTheSoundFX 11)
            (send gEgo:baseSetter(NormalBase))
        )
    )
    (method (changeScore addScore)
        = gScore + gScore addScore
        (if(> addScore 0)
            (scoreSound:playMaybe())
        )
    )
    (method (handleEvent pEvent)

        //////////////////////////////////////////////////////////////////////
        // ** This is debug functionality                                   //
        // ** Comment it out if you don't want people to cheat in your game //
        //////////////////////////////////////////////////////////////////////
          (if (== evKEYBOARD (send pEvent:type))
             // Check for ALT keys
             (switch (send pEvent:message)
                (case $2f00 // alt-v
                   Show(1) // Show visual
                )
                (case $2e00 // alt-c
                   Show(4) // Show control
                )
                (case $1900 // alt-p
                   Show(2) // Show priority
                )
                (case $3200 // alt-m
                   // Show memory usage
                      ShowFree()
                      FormatPrint(
                          "Free Heap: %u Bytes\nLargest ptr: %u Bytes\nFreeHunk: %u KBytes\nLargest hunk: %u Bytes"
                          MemoryInfo(miFREEHEAP)
                          MemoryInfo(miLARGESTPTR)
                          (>> MemoryInfo(miFREEHUNK) 6)
                          MemoryInfo(miLARGESTHUNK)
                      )
                )
                (case $1400 // alt-t
                   // teleport to room
                        (send gRoom:newRoom(GetNumber("Which Room Number?")))
                )
                (case $1700 // alt-i
                   // get inventory
                   (send gEgo:get(GetNumber("Which inventory#?")))
                )
                (case $1f00 // alt-s
                   // Show cast
                   (send gCast:eachElementDo(#showSelf))
                )
             )
          )
          ////////////////////////////////////////////////////
          // End of debug functionality                     //
          ////////////////////////////////////////////////////

        (super:handleEvent(pEvent))
        (if((<> (send pEvent:type) evSAID) or (send pEvent:claimed))
            return(TRUE)
        )

        /***********************************/
        /* Add global said statements here */
        /***********************************/
        
        (if(Said('hi'))
            Print("Well hello to you too!")
        )
  
  
        return(FALSE)
    )
)
/******************************************************************************/
(class Iitem of InvI
    (properties
    said 0
    description 0
    owner 0
    view 0
    loop 0
    cel 0
    script 0
    )
(method (showSelf)
    Print(
    description
    #title objectName
    #icon view loop cel // Changed from: #icon view 0 0
    )
  )
)
/******************************************************************************/
(instance statusCode  of Code
    (properties)
    (method (doit param1)
        Format(param1 " Score: %d of %-3d                      Template Game " gScore gMaxScore)
    )
)
/******************************************************************************/
(instance ego of Ego
    (properties
        y 1111
        x 0
        z 0
        heading 0
        yStep 2
        view 0
        loop 0
        cel 0
        priority 0
        underBits 0
        signal $2000
        nsTop 0
        nsLeft 0
        nsBottom 0
        nsRight 0
        lsTop 0
        lsLeft 0
        lsBottom 0
        lsRight 0
        brTop 0
        brLeft 0
        brBottom 0
        brRight 0
        cycleSpeed 0
        script 0
        cycler 0
        timer 0
        illegalBits $8000
        xLast 0
        yLast 0
        xStep 3
        moveSpeed 0
        blocks 0
        baseSetter 0
        mover 0
        looper 0
        viewer 0
        avoider 0
        edgeHit 0
    )
)
/******************************************************************************/
(instance scoreSound of Sound
    (properties
        state 0
        number SCORE_SOUND
        priority 10
        loop 1
        handle 0
        signal 0
        prevSignal 0
        client 0
        owner 0
    )
)
/******************************************************************************/
(instance theMusic  of Sound
    (properties
        state 0
        number 1
        priority 0
        loop 1
        handle 0
        signal 0
        prevSignal 0
        client 0
        owner 0
    )
)
/******************************************************************************/
(instance theSoundFX  of Sound
    (properties
        state 0
        number 1
        priority 5
        loop 1
        handle 0
        signal 0
        prevSignal 0
        client 0
        owner 0
    )
)
/******************************************************************************/
(instance theWindow  of SysWindow
    (properties)
    (method (open)
        (if(< Graph(grGET_COLOURS) 9)
            (if( (< color 7) or (== color 8) )
                = color 0
                = back  15
            )(else
                = color 15
                = back  0
            )
        )
        (super:open())
    )
)
/******************************************************************************/
(instance NormalBase of Code
    (properties)
    (method (doit)
        (var temp0)
        (if(== gRoomNumberExit 253)
            = temp0 22
        )(else
            = temp0 10
        )
        (send gEgo:
            brBottom(
                (+ (send gEgo:y) 1)
            )
        )
        (send gEgo:
            brTop(
                (- (send gEgo:brBottom) (send gEgo:yStep))
            )
        )
        (send gEgo:
            brLeft(
                (- (send gEgo:x) temp0)
            )
        )
        (send gEgo:
            brRight(
                (+ (send gEgo:x) temp0)
            )
        )
    )
)

/******************************************************************************
 * THE PUBLIC PROCEDURES
 ******************************************************************************/
(procedure public (SetUpEgo theLoop theView)
    PlayerControl()
    (send gEgo:edgeHit(EDGE_NONE))
    (switch(paramTotal)
        (case 0
            SetUpActor(gEgo (send gEgo:loop) gEgoView)
        )
        (case 1
            SetUpActor(gEgo theLoop gEgoView)
        )
        (case 2
            SetUpActor(gEgo theLoop theView)
        )
    )
)
/******************************************************************************/
(procedure public (SetUpActor pActor theLoop theView)
    (if(> paramTotal 1)
        (send pActor:loop(theLoop))
    )
    (if(> paramTotal 2)
        (send pActor:view(theView))
    )
    (send pActor:
        setLoop(-1)
        setPri(-1)
        setStep(3 2)
        setCycle(Walk)
        illegalBits($8000)
        cycleSpeed(0)
        moveSpeed(0)
        ignoreActors(0)
    )
)
/******************************************************************************/
(procedure public (ProgramControl)
    (User:
        canControl(FALSE)
        canInput(FALSE)
    )
    (send gEgo:setMotion(NULL))
    = gProgramControl TRUE
)
/******************************************************************************/
(procedure public (PlayerControl)
    (User:
        canControl(TRUE)
        canInput(TRUE)
    )
    (send gEgo:setMotion(NULL))
    = gProgramControl FALSE
)
/******************************************************************************/
(procedure public (DisposePrintDlg)
    (if(gPrintDlg)
        (send gPrintDlg:dispose())
    )
)
/******************************************************************************/
(procedure public (PrintOK)
    Print("O.K.")
)
/******************************************************************************/
(procedure public (PrintItIs)
    Print("It is.")
)
/******************************************************************************/
(procedure public (PrintYouAre)
    Print("You are.")
)
/******************************************************************************/
(procedure public (PrintGoodIdea)
    Print("Good idea. You might try that again later.")
)
/******************************************************************************/
(procedure public (PrintNotCloseEnough)
    Print("You're not close enough.")
)
/******************************************************************************/
(procedure public (PrintAlreadyTookIt)
    Print("You already took it.")
)
/******************************************************************************/
(procedure public (PrintDontHaveIt)
    Print("You don't have it.")
)
/******************************************************************************/
(procedure public (PrintCantDoThat mem)
    (if(> MemoryInfo(miLARGESTPTR) mem)
        return(TRUE)
    )(else
        Print("You can't do that here; at least, not now.")
        return(FALSE)
    )
)
/******************************************************************************/
(procedure public (AddViewToPic pView)
    (var hView)
    (if(pView)
        = hView (View:new())
        (send hView:
            view(send pView:view)
            loop(send pView:loop)
            cel(send pView:cel)
            priority(send pView:priority)
            posn( (send pView:x) (send pView:y) )
            addToPic()
        )
        (send pView:
            posn( (send pView:x) (+ 1000 (send pView:y)) )
        )
    )
)
/******************************************************************************/
(procedure public (SetInvIOwner index owner)
    (var hInvI)
    = hInvI (send gInv:at(index))
    (if(< paramTotal 2)
        (send hInvI:owner(gRoomNumberExit))
    )(else
        (send hInvI:owner(owner))
    )
)


/******************************************************************************
 * THE INVENTORY ITEMS                                                        *
 ******************************************************************************/
(instance Nothing  of Iitem
    (properties)
)
/******************************************************************************/
(instance {Test Object} of Iitem
    (properties
        said 'object'
        description
             "This is a test object in your inventory."
        owner 0
        view 800
        loop 0
        cel 0
        script 0
    )
)
/******************************************************************************/









Sierra After-market

Game 486SBDRV AWESOL DACBLAST E29PATCH GENMIDI GUS32 GUSDRV SB16DRV SBSCI32
Longbow   AWESOL     GENMIDI        
Dr. Brain 2             GUSDRV    
EcoQuest 1   AWESOL     GENMIDI   GUSDRV    
EcoQuest 1 CD               SB16DRV  
EcoQuest 2             GUSDRV    
Freddy Pharkas             GUSDRV    
Gabriel Knight 1   AWESOL DACBLAST       GUS32   SBSCI32
Gabriel Knight 1 CD   AWESOL     GENMIDI   GUS32   SBSCI32
Hoyle 3 486SBDRV AWESOL   E29PATCH GENMIDI        
Hoyle 4             GUSDRV    
KQ6"             GUSDRV    
KQ6CD             GUSDRV SB16DRV  
LB2CD             GUSDRV SB16DRV  
LSL1VGA 486SBDRV AWESOL   E29PATCH GENMIDI        
LSL5 486SBDRV AWESOL   E29PATCH GENMIDI        
LSL6CD   AWESOL     GENMIDI        
Mixed-Up Fairy Tales   AWESOL     GENMIDI        
Pepper             GUSDRV    
PQ1VGA             GUSDRV    
PQ3 486SBDRV     E29PATCH          
PQ4   AWESOL DACBLAST     GUS32     SBSCI32
PQ4 CD   AWESOL              
QfG1VGA               SB16DRV  
QfG4   AWESOL DACBLAST     GUS32     SBSCI32
QfG4CD   AWESOL     GENMIDI        
Slater & Charlie             GUSDRV    
SQ1VGA 486SBDRV AWESOL   E29PATCH GENMIDI        
SQ4   AWESOL     GENMIDI        
SQ4CD               SB16DRV  
SQ5             GUSDRV    

Ravi's Drivers

Game RAVI_GMDRV RAVI_MPUMAP RAVI_MPUMIDI RAVI_NOSND RAVI_NOSND-B
Camelot RAVI_GMDRV RAVI_MPUMAP   RAVI_NOSND  
Hoyle 1 RAVI_GMDRV RAVI_MPUMAP RAVI_MPUMIDI RAVI_NOSND  
Hoyle 2 RAVI_GMDRV RAVI_MPUMAP RAVI_MPUMIDI RAVI_NOSND  
ICEMAN RAVI_GMDRV RAVI_MPUMAP RAVI_MPUMIDI RAVI_NOSND  
KQ1SCI   RAVI_MPUMAP     RAVI_NOSND-B
KQ4 RAVI_GMDRV RAVI_MPUMAP RAVI_MPUMIDI RAVI_NOSND  
LB1 RAVI_GMDRV RAVI_MPUMAP RAVI_MPUMIDI RAVI_NOSND  
LSL2 RAVI_GMDRV RAVI_MPUMAP RAVI_MPUMIDI RAVI_NOSND  
LSL3 RAVI_GMDRV RAVI_MPUMAP RAVI_MPUMIDI RAVI_NOSND  
PQ2 RAVI_GMDRV RAVI_MPUMAP RAVI_MPUMIDI RAVI_NOSND  
Hero RAVI_GMDRV RAVI_MPUMAP RAVI_MPUMIDI RAVI_NOSND  
QfG1EGA RAVI_GMDRV RAVI_MPUMAP RAVI_MPUMIDI RAVI_NOSND  
QfG2   RAVI_MPUMAP     RAVI_NOSND-B
SQ3 RAVI_GMDRV RAVI_MPUMAP RAVI_MPUMIDI RAVI_NOSND  
Xmas Card 88 RAVI_GMDRV RAVI_MPUMAP RAVI_MPUMIDI RAVI_NOSND  
Xmas Card 90 EGA         RAVI_NOSND-B
Xmas Card 90 VGA         RAVI_NOSND-B

Hacked Drivers

Game GMBLAST MTBLAST SNDBLAST
Camelot   MTBLAST SNDBLAST
EcoQuest 1 GMBLAST    
Hoyle 1   MTBLAST SNDBLAST
Hoyle 2   MTBLAST MTBLAST
Hoyle 3 GMBLAST    
ICEMAN   MTBLAST SNDBLAST
KQ1SCI   MTBLAST SNDBLAST
KQ4*   MTBLAST SNDBLAST
LB1   MTBLAST SNDBLAST
LSL1VGA GMBLAST    
LSL2   MTBLAST SNDBLAST
LSL3   MTBLAST SNDBLAST
LSL5 GMBLAST    
Mixed-Up Fairy Tales GMBLAST    
PQ2   MTBLAST SNDBLAST
Hero   MTBLAST SNDBLAST
QfG1EGA   MTBLAST SNDBLAST
QfG2   MTBLAST SNDBLAST
SQ1VGA GMBLAST    
SQ3   MTBLAST SNDBLAST
SQ4 GMBLAST    
Xmas Card 88   MTBLAST SNDBLAST
Xmas Card 90 EGA   MTBLAST SNDBLAST
Xmas Card 90 VGA   MTBLAST SNDBLAST

* no digital sound effects, but stereo music


  • GMBLAST - GMBLAST.zip

Game Specific Hacked Drivers