(include "sci.sh")
(use "Main")
(use "Class_255_0")
(use "Sound")
(use "Jump")
(use "Cycle")
(use "Game")
(use "InvI")
(use "User")
(use "PV")
(use "Obj")
(script 78)


(local
    local0
    local1
    local2[18]
    gEgoViewer
    newAct
    local22
    newProp_3
    newView
    newProp
    newProp_2
    newProp_4

)
(instance theme of Sound
    (properties)
)
(instance charm of Sound
    (properties)
)
(instance public Room78 of Rm
    (properties
        picture 78
    )

    (method (init)
        = east 78
        = west 77
        = horizon 40
        = global101 0
        (if (global100)
            = picture 178
        )
        (super:init())
        (self:setRegions(513))
        Load(rsVIEW 330)
        Load(rsVIEW 69)
        Load(rsVIEW 59)
        Load(rsVIEW 55)
        Load(rsVIEW 21)
        Load(rsVIEW 515)
        Load(rsVIEW 888)
        Load(rsSOUND 50)
        Load(rsSOUND 39)
        Load(rsSOUND 40)
        Load(rsSOUND 55)
        Load(rsVIEW 508)
        = newProp (Prop:new())
        = newProp_2 (Prop:new())
        (send newProp:
            view(650)
            loop(3)
            cel(1)
            posn(126 88)
            setPri(0)
            setCycle(Fwd)
            init()
        )
        (send newProp_2:
            view(650)
            loop(5)
            cel(0)
            posn(74 143)
            setPri(0)
            setCycle(Fwd)
            init()
        )
        = global105 12
        (switch (gPicture)
            (case west
                ((send gEgo:
                    view(2)
                    loop(0)
                    cel(0)
                    posn(3 167)
                    setCycle(Walk)
                    setScript(boardActions)
                )
  )
            )
            (case 0
                ((send gEgo:
                    view(2)
                    loop(0)
                    cel(0)
                    posn(3 167)
                    setCycle(Walk)
                    setScript(boardActions)
                )
 )
            )
        )
        (send gEgo:
            view(2)
            xStep(2)
            yStep(1)
            init()
        )
        (send gEgo:edgeHit(0))
        = local2[0] 5
        = local2[1] 167
        = local2[2] 27
        = local2[3] 170
        = local2[4] 42
        = local2[5] 167
        = local2[6] 61
        = local2[7] 169
        = local2[8] 79
        = local2[9] 166
        = local2[10] 98
        = local2[11] 169
        = local2[12] 117
        = local2[13] 170
        = local2[14] 124
        = local2[15] 162
        (if ((send ((Inv:at(25))):ownedBy(78)))
            = newProp_3 (Prop:new())
            (send newProp_3:
                view(508)
                posn(187 147)
                setLoop(0)
                cycleSpeed(1)
                setPri(12)
                setScript(fruitActions)
                init()
            )
        )
        = newAct (Act:new())
        (send newAct:
            view(330)
            posn(196 164)
            cel(0)
            setLoop(0)
            setScript(snakeActions)
            init()
        )
        (if ((send ((Inv:at(22))):ownedBy(78)))
            (send (= newView (View:new())):
                view(515)
                cel(0)
                loop(0)
                ignoreActors()
                setPri(12)
                posn(121 169)
                init()
            )
        )
        (send global2:setScript(jump))
        = global205 1
        (User:canInput(1))
    )


    (method (dispose)
        DisposeScript(991)
        (send gSounds:eachElementDo(172))
        (super:dispose())
    )


    (method (handleEvent pEvent)
        (var temp0)
        (asm
            pushi   #claimed
            pushi   0
            lap     pEvent
            send    4
            bnt     code_0360
            ldi     1
            ret     
code_0360:  pushi   #type
            pushi   0
            lap     pEvent
            send    4
            push    
            ldi     128
            eq?     
            bnt     code_0903
            pushi   1
            lofsa   'hop,hop'
            push    
            callk   Said, 2
            bnt     code_0412
            pushi   #x
            pushi   0
            lag     gEgo
            send    4
            push    
            ldi     109
            gt?     
            bnt     code_0395
            pushi   2
            pushi   78
            pushi   0
            calle   Print, 4
            jmp     code_0903
code_0395:  lsl     local0
            ldi     5
            eq?     
            bnt     code_03f0
            pushi   #ownedBy
            pushi   1
            pushi   78
            pushi   #at
            pushi   1
            pushi   22
            class   Inv
            send    6
            send    6
            bnt     code_03f0
            pushi   #inRect
            pushi   4
            pushi   92
            pushi   164
            pushi   109
            pushi   172
            lag     gEgo
            send    12
            bnt     code_03e3
            pushi   #loop
            pushi   0
            lag     gEgo
            send    4
            push    
            ldi     1
            ne?     
            bnt     code_03e3
            pushi   2
            pushi   78
            pushi   1
            calle   Print, 4
            jmp     code_0903
code_03e3:  pushi   #changeState
            pushi   1
            pushi   1
            lofsa   jump
            send    6
            jmp     code_0903
code_03f0:  lsg     global105
            ldi     13
            eq?     
            bnt     code_0405
            pushi   2
            pushi   78
            pushi   2
            calle   Print, 4
            jmp     code_0903
code_0405:  pushi   #changeState
            pushi   1
            pushi   1
            lofsa   jump
            send    6
            jmp     code_0903
code_0412:  pushi   1
            lofsa   'play/flute'
            push    
            callk   Said, 2
            bnt     code_0493
            pushi   #view
            pushi   0
            lag     gEgo
            send    4
            push    
            ldi     2
            eq?     
            bnt     code_0484
            pushi   #has
            pushi   1
            pushi   0
            lag     gEgo
            send    6
            bnt     code_0476
            pushi   #state
            pushi   0
            lofsa   snakeActions
            send    4
            push    
            ldi     20
            eq?     
            bnt     code_0454
            pushi   2
            pushi   78
            pushi   3
            calle   Print, 4
            jmp     code_045f
code_0454:  pushi   #changeState
            pushi   1
            pushi   20
            lofsa   snakeActions
            send    6
code_045f:  lag     global155
            not     
            bnt     code_0903
            pushi   #changeScore
            pushi   1
            pushi   4
            lag     gGame
            send    6
            ldi     1
            sag     global155
            jmp     code_0903
code_0476:  pushi   2
            pushi   800
            pushi   2
            calle   Print, 4
            jmp     code_0903
code_0484:  pushi   2
            pushi   800
            pushi   3
            calle   Print, 4
            jmp     code_0903
code_0493:  pushi   1
            lofsa   'get/fruit'
            push    
            callk   Said, 2
            bnt     code_054b
            pushi   #has
            pushi   1
            pushi   25
            lag     gEgo
            send    6
            bnt     code_04b9
            pushi   2
            pushi   78
            pushi   4
            calle   Print, 4
            jmp     code_0903
code_04b9:  lsl     local22
            ldi     2
            eq?     
            bnt     code_0544
            pushi   #inRect
            pushi   4
            pushi   171
            pushi   157
            pushi   195
            pushi   167
            lag     gEgo
            send    12
            bnt     code_0544
            pushi   #ownedBy
            pushi   1
            pushi   78
            pushi   #at
            pushi   1
            pushi   25
            class   Inv
            send    6
            send    6
            bnt     code_0536
            pushi   2
            pushi   78
            pushi   5
            calle   Print, 4
            pushi   #number
            pushi   1
            pushi   50
            pushi   12
            pushi   1
            pushi   1
            pushi   84
            pushi   0
            pushi   #new
            pushi   0
            class   Sound
            send    4
            send    16
            pushi   #dispose
            pushi   0
            lal     local23
            send    4
            pushi   #moveTo
            pushi   1
            lsg     gEgo
            pushi   #at
            pushi   1
            pushi   25
            class   Inv
            send    6
            send    6
            pushi   #changeScore
            pushi   1
            pushi   10
            lag     gGame
            send    6
            jmp     code_0903
code_0536:  pushi   2
            pushi   78
            pushi   6
            calle   Print, 4
            jmp     code_0903
code_0544:  pushi   0
            callb   proc0_15, 0
            jmp     code_0903
code_054b:  pushi   1
            lofsa   'get/board'
            push    
            callk   Said, 2
            bnt     code_05ca
            pushi   #ownedBy
            pushi   1
            pushi   78
            pushi   #at
            pushi   1
            pushi   22
            class   Inv
            send    6
            send    6
            not     
            bnt     code_057a
            pushi   2
            pushi   78
            pushi   7
            calle   Print, 4
            jmp     code_0903
code_057a:  pushi   #x
            pushi   0
            lag     gEgo
            send    4
            push    
            ldi     109
            gt?     
            bnt     code_0595
            pushi   2
            pushi   78
            pushi   0
            calle   Print, 4
            jmp     code_0903
code_0595:  pushi   #onControl
            pushi   1
            pushi   1
            lag     gEgo
            send    6
            push    
            ldi     1024
            ne?     
            bt      code_05ae
            lsl     local0
            ldi     5
            ne?     
            bnt     code_05bc
code_05ae:  pushi   2
            pushi   78
            pushi   8
            calle   Print, 4
            jmp     code_0903
code_05bc:  pushi   #changeState
            pushi   1
            pushi   10
            lofsa   boardActions
            send    6
            jmp     code_0903
code_05ca:  pushi   1
            lofsa   'lay,place/board'
            push    
            callk   Said, 2
            bnt     code_0639
            pushi   #has
            pushi   1
            pushi   22
            lag     gEgo
            send    6
            not     
            bnt     code_05ea
            pushi   0
            callb   proc0_19, 0
            jmp     code_0903
code_05ea:  pushi   #x
            pushi   0
            lag     gEgo
            send    4
            push    
            ldi     109
            gt?     
            bnt     code_0605
            pushi   2
            pushi   78
            pushi   0
            calle   Print, 4
            jmp     code_0903
code_0605:  pushi   #onControl
            pushi   1
            pushi   1
            lag     gEgo
            send    6
            push    
            ldi     1024
            ne?     
            bt      code_061e
            lsl     local0
            ldi     5
            ne?     
            bnt     code_062c
code_061e:  pushi   2
            pushi   78
            pushi   8
            calle   Print, 4
            jmp     code_0903
code_062c:  pushi   #changeState
            pushi   1
            pushi   1
            lofsa   boardActions
            send    6
            jmp     code_0903
code_0639:  pushi   1
            lofsa   'deliver/*[/cobra]>'
            push    
            callk   Said, 2
            bnt     code_0692
            pushi   #saidMe
            pushi   0
            lag     gInv
            send    4
            sat     temp0
            bnt     code_067b
            pushi   #has
            pushi   1
            pushi   #indexOf
            pushi   1
            push    
            lag     gInv
            send    6
            push    
            lag     gEgo
            send    6
            bnt     code_0674
            pushi   2
            pushi   78
            pushi   9
            calle   Print, 4
            jmp     code_0903
code_0674:  pushi   0
            callb   proc0_19, 0
            jmp     code_0903
code_067b:  pushi   2
            pushi   78
            pushi   10
            calle   Print, 4
            pushi   #claimed
            pushi   1
            pushi   1
            lap     pEvent
            send    6
            jmp     code_0903
code_0692:  pushi   1
            lofsa   'fling/*[/cobra]>'
            push    
            callk   Said, 2
            bnt     code_06da
            pushi   #saidMe
            pushi   0
            lag     gInv
            send    4
            sat     temp0
            bnt     code_06da
            pushi   #has
            pushi   1
            pushi   #indexOf
            pushi   1
            lst     temp0
            lag     gInv
            send    6
            push    
            lag     gEgo
            send    6
            bnt     code_06ce
            pushi   2
            pushi   78
            pushi   11
            calle   Print, 4
            jmp     code_0903
code_06ce:  pushi   #claimed
            pushi   1
            pushi   0
            lap     pEvent
            send    6
            jmp     code_0903
code_06da:  pushi   1
            lofsa   'look>'
            push    
            callk   Said, 2
            bnt     code_086f
            pushi   1
            lofsa   '/cobra'
            push    
            callk   Said, 2
            bnt     code_073e
            pushi   #state
            pushi   0
            lofsa   snakeActions
            send    4
            push    
            ldi     21
            eq?     
            bnt     code_070d
            pushi   2
            pushi   78
            pushi   12
            calle   Print, 4
            jmp     code_0903
code_070d:  pushi   #ownedBy
            pushi   1
            pushi   78
            pushi   #at
            pushi   1
            pushi   25
            class   Inv
            send    6
            send    6
            bnt     code_0730
            pushi   2
            pushi   78
            pushi   13
            calle   Print, 4
            jmp     code_0903
code_0730:  pushi   2
            pushi   78
            pushi   14
            calle   Print, 4
            jmp     code_0903
code_073e:  pushi   1
            lofsa   '/forest'
            push    
            callk   Said, 2
            bnt     code_077a
            pushi   #ownedBy
            pushi   1
            pushi   78
            pushi   #at
            pushi   1
            pushi   25
            class   Inv
            send    6
            send    6
            bnt     code_076c
            pushi   2
            pushi   78
            pushi   15
            calle   Print, 4
            jmp     code_0903
code_076c:  pushi   2
            pushi   78
            pushi   16
            calle   Print, 4
            jmp     code_0903
code_077a:  pushi   1
            lofsa   '/fruit'
            push    
            callk   Said, 2
            bnt     code_07d6
            pushi   #ownedBy
            pushi   1
            pushi   78
            pushi   #at
            pushi   1
            pushi   25
            class   Inv
            send    6
            send    6
            bnt     code_07a8
            pushi   2
            pushi   78
            pushi   17
            calle   Print, 4
            jmp     code_0903
code_07a8:  pushi   #has
            pushi   1
            pushi   25
            lag     gEgo
            send    6
            bnt     code_07c8
            pushi   #showSelf
            pushi   0
            pushi   #at
            pushi   1
            pushi   25
            class   Inv
            send    6
            send    4
            jmp     code_0903
code_07c8:  pushi   2
            pushi   78
            pushi   18
            calle   Print, 4
            jmp     code_0903
code_07d6:  pushi   1
            lofsa   '/island'
            push    
            callk   Said, 2
            bnt     code_0812
            pushi   #ownedBy
            pushi   1
            pushi   78
            pushi   #at
            pushi   1
            pushi   25
            class   Inv
            send    6
            send    6
            bnt     code_0804
            pushi   2
            pushi   78
            pushi   19
            calle   Print, 4
            jmp     code_0903
code_0804:  pushi   2
            pushi   78
            pushi   20
            calle   Print, 4
            jmp     code_0903
code_0812:  pushi   1
            lofsa   '/grass,tuft'
            push    
            callk   Said, 2
            bnt     code_082b
            pushi   2
            pushi   78
            pushi   21
            calle   Print, 4
            jmp     code_0903
code_082b:  pushi   1
            lofsa   '[<around][/marsh,room]'
            push    
            callk   Said, 2
            bnt     code_0903
            pushi   1
            pushi   4
            lea     @global300
            push    
            pushi   78
            pushi   22
            pushi   #ownedBy
            pushi   1
            pushi   78
            pushi   #at
            pushi   1
            pushi   25
            class   Inv
            send    6
            send    6
            bnt     code_085e
            lofsa   "A large, glistening fruit hangs from a small branch."
            jmp     code_0861
code_085e:  lofsa   "LOOKUP_ERROR"
code_0861:  push    
            callk   Format, 8
            push    
            calle   Print, 2
            jmp     code_0903
code_086f:  pushi   1
            lofsa   '*[/cobra]>'
            push    
            callk   Said, 2
            bnt     code_0903
            pushi   1
            lofsa   'converse'
            push    
            callk   Said, 2
            bnt     code_0895
            pushi   2
            pushi   78
            pushi   23
            calle   Print, 4
            ldi     1
            jmp     code_08fe
code_0895:  pushi   1
            lofsa   'kill'
            push    
            callk   Said, 2
            bnt     code_08b0
            pushi   2
            pushi   78
            pushi   24
            calle   Print, 4
            ldi     1
            jmp     code_08fe
code_08b0:  pushi   1
            lofsa   'get,capture/*'
            push    
            callk   Said, 2
            bnt     code_08cb
            pushi   2
            pushi   78
            pushi   25
            calle   Print, 4
            ldi     1
            jmp     code_08fe
code_08cb:  pushi   1
            lofsa   'kiss'
            push    
            callk   Said, 2
            bnt     code_08e6
            pushi   2
            pushi   78
            pushi   26
            calle   Print, 4
            ldi     1
            jmp     code_08fe
code_08e6:  pushi   1
            lofsa   'hit/*'
            push    
            callk   Said, 2
            bnt     code_0903
            pushi   2
            pushi   78
            pushi   27
            calle   Print, 4
            ldi     1
code_08fe:  bnt     code_0903
            ldi     1
code_0903:  ret     
        )
    )

)
(instance jump of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 1
                (
                (if (== (send gEgo:loop()) 0)
                    ++local0
                    = local1 (+ local1 2)
                )(else
                    --local0
                    = local1 (- local1 2)
                )
 
                (if (== local0 -1)
                    (send global2:newRoom(77))
                    return 
                )
 proc0_10() = gEgoViewer (send gEgo:viewer()) (send gEgo:viewer(0)) (send gEgo:
                    view(69)
                    cel(0)
                    setCycle(End self)
                )
  )
            )
            (case 2
                ((send gEgo:setCycle(CT 1 -1 self))  )
            )
            (case 3
                ((send gEgo:
                    xStep(6)
                    yStep(4)
                )
 
                (if (== (send gEgo:loop()) 0)
                    (send gEgo:setMotion(JumpTo local2[local1] local2[(+ (send gEgo:
                            setLoop(2)
                            cel(0)
                            setCycle(End)
                        )
 1)] self))
                )(else
                    (if (== (send gEgo:loop()) 1)
                        (send gEgo:setMotion(JumpTo local2[local1] local2[(+ (send gEgo:
                                setLoop(3)
                                cel(0)
                                setCycle(End)
                            )
 1)] self))
                    )(else
                        (if (== (send gEgo:loop()) 2)
                            (send gEgo:viewer(gEgoViewer))
                            (send gEgo:setMotion(JumpTo (send gEgo:x()) (+ (send gEgo:y()) 6)))
                        )(else
                            (if (== (send gEgo:loop()) 3)
                                (send gEgo:viewer(gEgoViewer))
                                (send gEgo:setMotion(JumpTo (send gEgo:x()) (- (send gEgo:y()) 6)))
                            )
                        )
                    )
                )
 )
            )
            (case 4
                (
                (if (== local0 6)
                    (send gEgo:viewer(gEgoViewer))
                )
 
                (if (== (send gEgo:loop()) 2)
                    (send gEgo:
                        cel(0)
                        setLoop(-1)
                        loop(4)
                        setCycle(End self)
                    )
                )(else
                    (send gEgo:
                        cel(0)
                        setLoop(-1)
                        loop(5)
                        setCycle(End self)
                    )
                )
 )
            )
            (case 5
                (
                (if (== (send gEgo:loop()) 4)
                    (send gEgo:
                        view(2)
                        loop(0)
                        cel(0)
                        xStep(2)
                        yStep(1)
                    )
                )(else
                    (send gEgo:
                        view(2)
                        loop(1)
                        cel(0)
                        xStep(2)
                        yStep(1)
                    )
                )
 proc0_11() (send gEgo:viewer(gEgoViewer)) (send gEgo:
                    view(2)
                    setCycle(Walk)
                )
 
                (if ((== local0 5) and (== local22 0))
                    (snakeActions:changeState(1))
                )
 )
            )
            (case 10
                (Print(78 0) )
            )
        )
    )

)
(instance snakeActions of Script
    (properties)

    (method (doit)
        (super:doit())
        (if ((== local22 1) and (send gEgo:inRect(170 157 217 170)))
            = local22 3
            (snakeActions:changeState(10))
        )
    )


    (method (changeState newState)
        (switch (= state newState)
            (case 1
                ((theme:
                    number(39)
                    init()
                    play()
                )
 (send newAct:setCycle(End self))  )
            )
            (case 2
                ((send newAct:
                    setLoop(1)
                    setCycle(Fwd)
                )
 = local22 1  )
            )
            (case 10
                (proc0_10() (send gSounds:eachElementDo(172)) (theme:
                    number(40)
                    init()
                    play()
                )
 (send gEgo:viewer(0)) 
                (if (< (send gEgo:x()) 194)
                    (send newAct:
                        cel(0)
                        setLoop(2)
                        setCycle(End self)
                    )
                )(else
                    (send newAct:
                        cel(0)
                        setLoop(3)
                        setCycle(End self)
                    )
                )
 )
            )
            (case 11
                ((send gEgo:
                    view(59)
                    illegalBits(0)
                    ignoreActors()
                    cel(0)
                    setCycle(End self)
                )
  )
            )
            (case 12
                (Print(78 28) (send newAct:
                    setLoop(1)
                    setCycle(Fwd)
                )
 = seconds 5  )
            )
            (case 13
                (= global127 1  )
            )
            (case 20
                (proc0_10() = global105 0 (send gEgo:
                    view(55)
                    setMotion(0)
                    loop(0)
                    setCycle(Fwd)
                )
 (send (= newProp_4 (Prop:new())):
                    view(888)
                    setPri(+ (send gEgo:priority()) 1)
                    cycleSpeed(1)
                    setCycle(Fwd)
                    posn(+ (send gEgo:x()) 10 - (send gEgo:y()) 27)
                    init()
                )
 (send gSounds:eachElementDo(172)) (charm:
                    number(55)
                    play(self)
                )
 (send newAct:
                    setLoop(4)
                    setCycle(Fwd)
                )
 = local22 2  )
            )
            (case 21
                (Print(78 29 134 -1 20) (send gEgo:
                    view(2)
                    setCycle(Walk)
                )
 (send newProp_4:dispose()) = global105 12 (send (ScriptID(0 4)):setReal(self 15)) proc0_11()  )
            )
            (case 22
                ((self:changeState(2)) )
            )
        )
    )

)
(instance boardActions of Script
    (properties)

    (method (doit)
        (super:doit())
        (if (== state 3)
            (if ((send gEgo:inRect(101 (- (send newView:y()) 4) 150 (+ (send newView:y()) 4))))
                = global132 1
            )(else
                = global132 0
            )
        )(else
            = global132 0
        )
    )


    (method (changeState newState)
        (switch (= state newState)
            (case 1
                (proc0_10() (send gEgo:
                    view(21)
                    loop(0)
                    cel(0)
                    setCycle(End self)
                )
 
                (if (not global201)
                    = global201 1
                    (send gGame:changeScore(2))
                )
 )
            )
            (case 2
                (= newView (View:new()) (send newView:
                    view(515)
                    cel(0)
                    loop(0)
                    ignoreActors()
                    setPri(12)
                    posn(121 (send gEgo:y()))
                    init()
                )
 (send ((Inv:at(22))):moveTo(78)) (send gEgo:setCycle(Beg self))  )
            )
            (case 3
                ((send gEgo:
                    view(2)
                    setCycle(Walk)
                )
 proc0_11()  )
            )
            (case 10
                (proc0_10() (send gEgo:
                    view(21)
                    loop(0)
                    cel(0)
                    setCycle(End self)
                )
  )
            )
            (case 11
                ((send newView:dispose()) (send ((Inv:at(22))):moveTo(gEgo)) (send gEgo:setCycle(Beg self))  )
            )
            (case 12
                ((send gEgo:
                    view(2)
                    loop(1)
                    setCycle(Walk)
                )
 proc0_11() )
            )
        )
    )

)
(instance fruitActions of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                ((send (ScriptID(0 5)):setReal(self Random(2 10)))  )
            )
            (case 1
                ((send newProp_3:
                    cel(0)
                    setCycle(End self)
                )
  )
            )
            (case 2
                ((send newProp_3:cel(0)) (self:changeState(0)) )
            )
        )
    )

)
