(version 2)
(include "sci.sh")
(exports
    0 rm801
)
(use "Main")
(use "InterView")
(use "Sync")
(use "Sound")
(use "Cycle")
(use "Game")
(use "View")
(use "Obj")
(script 801)

(local
    local0
    local1
    local2
    local3
    local4
    local5
    local6
    local7[10] = (0 0 53 41 268 41 62 146 267 147 )
    local17

)
(instance public rm801 of Rm
    (properties
        picture 111
        style $000a
    )

    (method (init)
        (var temp0[10])
        (super:init())
        Load(rsSCRIPT 929)
        (if (<> global12 13)
            (send gLongSong3:
                number(110)
                loop(-1)
                play(10)
                fade(127 10 30 0)
            )
        )
        (send global80:mapKeyToDir(0))
        (send gKH:addToFront(self))
        (send gMH:addToFront(self))
        (readToMe:init())
        (letMePlay:init())
        (quitSlater:init())
        (more:init())
        (mySlater:init())
        (myCharlie:init())
        (if (global121)
            (send global2:setScript(doTheAnimation))
        )(else
            = global121 1
            (send global2:setScript(slaterScript))
        )
    )


    (method (dispose)
        (mySound:dispose())
        (my2Sound:dispose())
        DisposeScript(929)
        (send gKH:delete(self))
        (send gMH:delete(self))
        (send global80:mapKeyToDir(1))
        (super:dispose())
    )


    (method (handleEvent pEvent)
        (if ((send pEvent:claimed))
            return 1
        )
        return 
            (switch ((send pEvent:type))
                (case evKEYBOARD
                    (send pEvent:claimed(1))
                    (switch ((send pEvent:message))
                        (case KEY_NUMPAD2
                            (if (> ++local6 4)
                                = local6 1
                            )
                            (send global1:setCursor(999 1 local7[(* local6 2)] local7[(+ (* local6 2) 1)]))
                        )
                        (case KEY_TAB
                            (if (> ++local6 4)
                                = local6 1
                            )
                            (send global1:setCursor(999 1 local7[(* local6 2)] local7[(+ (* local6 2) 1)]))
                        )
                        (case KEY_UP
                            (if (< --local6 1)
                                = local6 4
                            )
                            (send global1:setCursor(999 1 local7[(* local6 2)] local7[(+ (* local6 2) 1)]))
                        )
                        (case KEY_SHIFTTAB
                            (if (< --local6 1)
                                = local6 4
                            )
                            (send global1:setCursor(999 1 local7[(* local6 2)] local7[(+ (* local6 2) 1)]))
                        )
                        (case KEY_NUMPAD4
                            (if (< --local6 1)
                                = local6 4
                            )
                            (send global1:setCursor(999 1 local7[(* local6 2)] local7[(+ (* local6 2) 1)]))
                        )
                        (case KEY_RIGHT
                            (if (> ++local6 4)
                                = local6 1
                            )
                            (send global1:setCursor(999 1 local7[(* local6 2)] local7[(+ (* local6 2) 1)]))
                        )
                        (default 
                            (send pEvent:claimed(0))
                            (super:handleEvent(pEvent))
                        )
                    )
                )
                (default 
                    (super:handleEvent(pEvent))
                )
            )
    )


    (method (doVerb)
        return 0
    )


    (method (newRoom newRoomNumber)
        (if (== global12 13)
            (send gLongSong:fade(0 10 30 1))
        )(else
            (send gLongSong3:fade(0 10 30 1))
        )
        (super:newRoom(newRoomNumber))
    )

)
(instance slaterScript of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                (send global1:handsOff())
                = ticks 60
            )
            (case 1
                (send global1:handsOff())
                (myCharlie:
                    setLoop(4)
                    setCel(0)
                    setCycle(CT 2 1 self)
                )
                Load(rsVIEW 992)
            )
            (case 2
                (if (DoSound(sndGET_AUDIO_CAPABILITY))
                    (cHead:
                        view(992)
                        setLoop(1)
                        setPri(15)
                        init()
                        setCycle(MouthSync 801 0 0 0 1)
                    )
                )
                DoAudio(2 801 0 0 0 1)
                = ticks 86
            )
            (case 3
                (if (DoSound(sndGET_AUDIO_CAPABILITY))
                    (cHead:
                        setCycle(0)
                        setCel(0)
                    )
                )
                = ticks 25
            )
            (case 4
                (readToMe:setCel(1))
                = cycles 1
            )
            (case 5
                (mySound:
                    number(910)
                    setLoop(1)
                    play(self)
                )
            )
            (case 6
                (myCharlie:setCycle(Beg self))
                (cHead:
                    setCycle(0)
                    setCel(0)
                    hide()
                    dispose()
                )
                (readToMe:setCel(0))
            )
            (case 7
                = ticks 50
            )
            (case 8
                (mySlater:setCycle(CT 2 1 self))
                Load(rsVIEW 991)
            )
            (case 9
                (myCharlie:stopUpd())
                (mySlater:setCel(3))
                (sHead:
                    init()
                    setCel(0)
                    setLoop(2)
                    ignoreActors()
                    setPri(15)
                    setCycle(MouthSync 801 0 0 0 2)
                )
                DoAudio(2 801 0 0 0 2)
                = ticks 46
            )
            (case 10
                (if (DoSound(sndGET_AUDIO_CAPABILITY))
                    (sHead:
                        setCycle(0)
                        setCel(0)
                    )
                )
                = ticks 25
            )
            (case 11
                (letMePlay:setCel(1))
                = cycles 1
            )
            (case 12
                (mySound:
                    number(910)
                    setLoop(1)
                    play(self)
                )
            )
            (case 13
                (sHead:dispose())
                (mySlater:
                    setCel(2)
                    setCycle(Beg self)
                )
                (letMePlay:setCel(0))
            )
            (case 14
                (mySlater:stopUpd())
                (self:setScript(doTheAnimation))
            )
        )
    )

)
(instance doTheAnimation of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                (send global1:handsOn())
                = ticks 250
            )
            (case 1
                (mySlater:
                    setLoop(0)
                    setCel(0)
                    setCycle(End self)
                )
            )
            (case 2
                (mySlater:
                    setLoop(2)
                    setCel(0)
                    cycleSpeed(6)
                    setCycle(Fwd)
                )
                = ticks 250
            )
            (case 3
                (myCharlie:
                    setLoop(0)
                    setCel(0)
                    setCycle(End self)
                )
            )
            (case 4
                (myCharlie:
                    setLoop(1)
                    setCel(0)
                    setCycle(Fwd)
                )
                = ticks 250
            )
            (case 5
                (self:cue())
            )
            (case 6
                (switch (= local0 Random(1 6))
                    (case 1
                        (self:changeState(11))
                    )
                    (case 2
                        (self:changeState(7))
                    )
                    (case 3
                        (self:changeState(11))
                    )
                    (case 4
                        (self:changeState(7))
                    )
                    (case 5
                        (self:changeState(11))
                    )
                    (case 6
                        (self:changeState(7))
                    )
                )
            )
            (case 7
                (self:cue())
            )
            (case 8
                = local17 Random(1 2)
                = local4 Random(1 2)
                (if (== local17 1)
                    = local17 1144
                )(else
                    = local17 1145
                )
                (if (== local4 1)
                    = local4 3
                )(else
                    = local4 2
                    (mySound:
                        number(local17)
                        setLoop(1)
                        play()
                    )
                )
                (myCharlie:
                    setLoop(local4)
                    setCel(0)
                    cycleSpeed(12)
                    setCycle(Fwd)
                )
                (if (== local4 3)
                    = ticks 100
                )(else
                    (self:cue())
                )
            )
            (case 9
                = ticks 25
            )
            (case 10
                (myCharlie:
                    setLoop(1)
                    setCel(0)
                    cycleSpeed(6)
                    setCycle(Fwd)
                )
                (self:changeState(5))
            )
            (case 11
                = ticks 6
            )
            (case 12
                = local3 Random(2 3)
                (mySlater:
                    setLoop(local3)
                    setCel(0)
                    cycleSpeed(12)
                    setCycle(End self)
                )
            )
            (case 13
                (mySlater:
                    setLoop(1)
                    setCel(0)
                    setCycle(End self)
                )
            )
            (case 14
                (mySlater:
                    setLoop(2)
                    setCel(0)
                    setCycle(Fwd)
                )
                (self:changeState(5))
            )
        )
    )

)
(instance sayOkScript of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                (send global1:handsOff())
                (mySound:stop())
                (my2Sound:stop())
                = ticks 6
            )
            (case 1
                (switch (local5)
                    (case 1
                        (readToMe:setCel(1))
                    )
                    (case 2
                        (letMePlay:setCel(1))
                    )
                    (case 3
                        (quitSlater:setCel(1))
                    )
                    (case 4
                        (more:setCel(1))
                    )
                )
                = cycles 1
            )
            (case 2
                (mySound:
                    number(910)
                    setLoop(1)
                    play(self)
                )
                (if ((> (myCharlie:loop) 0) and (< (myCharlie:loop) 4))
                    (mySlater:
                        setLoop(0)
                        setCel(6)
                        setCycle(Beg)
                    )
                    (myCharlie:
                        setLoop(0)
                        setCel(10)
                        setCycle(Beg self)
                    )
                )(else
                    (if ((> (mySlater:loop) 0) and (< (mySlater:loop) 4))
                        (mySlater:
                            setLoop(0)
                            setCel(6)
                            setCycle(Beg self)
                        )
                        (myCharlie:
                            setLoop(4)
                            setCel(0)
                            setCycle(0)
                        )
                    )(else
                        (mySlater:
                            setLoop(4)
                            setCel(0)
                            setCycle(0)
                        )
                        (myCharlie:
                            setLoop(4)
                            setCel(0)
                            setCycle(0)
                        )
                        (self:cue())
                    )
                )
            )
            (case 3
            )
            (case 4
                (switch (local5)
                    (case 1
                        (readToMe:
                            setCel(0)
                            stopUpd()
                        )
                    )
                    (case 2
                        (letMePlay:
                            setCel(0)
                            stopUpd()
                        )
                    )
                    (case 3
                        (quitSlater:
                            setCel(0)
                            stopUpd()
                        )
                    )
                    (case 4
                        (more:
                            setCel(0)
                            stopUpd()
                        )
                    )
                )
                = cycles 2
            )
            (case 5
                (if (DoSound(sndGET_AUDIO_CAPABILITY))
                    (sHead:
                        setLoop(1)
                        setCel(0)
                        posn(187 73)
                        setPri(15)
                        init()
                        setCycle(CT 2 1)
                    )
                    (cHead:
                        setLoop(0)
                        setCel(0)
                        posn(137 85)
                        setPri(15)
                        init()
                        setCycle(CT 2 1)
                    )
                )
                (mySound:
                    number(1146)
                    setLoop(1)
                    play(self)
                )
            )
            (case 6
                (cHead:
                    setCycle(0)
                    setCel(0)
                    dispose()
                )
                (sHead:
                    setCycle(0)
                    setCel(0)
                    dispose()
                )
                = ticks 6
            )
            (case 7
                (if (local2)
                    (send global2:newRoom(803))
                )(else
                    (if (local1)
                        (send global2:newRoom(802))
                    )(else
                        (if (== local5 1)
                            = global106 1
                            (send global2:newRoom(1))
                        )(else
                            (send global2:newRoom(global106))
                        )
                    )
                )
            )
            (case 8
                (send global1:handsOn())
                (self:dispose())
            )
        )
    )

)
(instance readToMe of InterView
    (properties
        x 55
        y 51
        view 4
        priority 2
        signal $0010
    )

    (method (doVerb)
        (send global1:handsOff())
        = global120 1
        = local5 1
        (send global2:setScript(sayOkScript))
    )

)
(instance letMePlay of InterView
    (properties
        x 262
        y 55
        view 4
        loop 1
        priority 2
        signal $0010
    )

    (method (doVerb)
        = global120 0
        (send global1:handsOff())
        = local5 2
        (send global2:setScript(sayOkScript))
    )

)
(instance quitSlater of InterView
    (properties
        x 263
        y 165
        view 4
        loop 2
        priority 2
        signal $0010
    )

    (method (doVerb)
        (send global1:handsOff())
        = local2 1
        = local5 3
        (send global2:setScript(sayOkScript))
    )

)
(instance more of InterView
    (properties
        x 64
        y 162
        view 4
        loop 3
        priority 2
        signal $0010
    )

    (method (doVerb)
        (send global1:handsOff())
        = local1 1
        = local5 4
        (send global2:setScript(sayOkScript))
    )

)
(instance mySlater of Prop
    (properties
        x 194
        y 115
        view 3
        loop 4
        priority 6
        signal $0010
    )
)
(instance sHead of Prop
    (properties
        x 176
        y 55
        view 991
        loop 2
        priority 15
        signal $4010
    )
)
(instance myCharlie of Prop
    (properties
        x 139
        y 117
        view 7
        loop 4
        priority 6
        signal $0010
    )
)
(instance cHead of Prop
    (properties
        x 130
        y 71
        view 992
        priority 15
        signal $4010
    )
)
(instance mySound of Sound
    (properties)
)
(instance my2Sound of Sound
    (properties)
)
