(version 2)
(include "sci.sh")
(exports
    0 rm170
)
(use "Main")
(use "FPRoom")
(use "Print")
(use "MCyc")
(use "Cycle")
(use "View")
(use "Obj")
(script 170)


(local
    local0
    local1 =     85
    local2
    local3
    local4 =     1
    local5
    local6
    theGGameMusic1PrevSignal
    local8 =     8
    local9 =     12
    local10 =     15
    local11 =     1
    local12
    local13[25] = (0 0 0 126 0 1 0 121 0 2 0 118 0 3 0 121 0 4 0 126 0 5 0 130 -32768 )
    local38[105] = (55 125 183 219 243 90 141 208 251 46 78 151 151 205 244 275 275 136 176 210 240 99 151 201 253 26 52 113 146 197 242 280 280 125 159 194 219 108 134 169 214 38 63 103 119 173 217 278 278 120 179 228 253 93 138 180 227 37 67 109 140 195 243 279 279 103 128 128 161 196 219 219 219 84 113 142 199 216 228 241 86 122 146 146 180 215 237 237 237 99 122 148 190 216 216 216 216 216 216 216 216 325 325 325 325 )
    local143[100]
    local243[100]
    local343[200]

)
(procedure (localproc_077f)
    (if (<= global87 local9)
        (vignette:setLoop((+ (vignette:loop) 1)))
    )(else
        (vignette1:
            moveSpeed(0)
            setMotion(MoveTo 280 75)
        )
        (vignette:
            setLoop(+ (vignette1:loop) 1)
            moveSpeed(0)
            setMotion(MoveTo 160 75)
        )
    )
)


(procedure (localproc_07dc)
    (if (<= global87 local9)
        (vignette:setLoop((+ (vignette:loop) 1)))
    )(else
        (vignette:
            moveSpeed(0)
            setMotion(MoveTo 40 75)
        )
        (vignette1:
            setLoop(+ (vignette:loop) 1)
            moveSpeed(0)
            setMotion(MoveTo 160 75)
        )
    )
)


(instance public rm170 of FPRoom
    (properties
        picture 150
        style $000a
    )

    (method (init)
        (send gOldKH:addToFront(self))
        (send gOldMH:addToFront(self))
        (send gIconBar:disable())
        (send gGame:
            handsOff()
            setCursor(996 1)
        )
        (balladText:init())
        (vignette:init())
        (vignette1:init())
        (super:init())
        (if (<= global15 939)
            Message(msgGET 170 2 0 0 2 @local243)
        )(else
            (if ((>= global15 940) and (<= global15 998))
                Message(msgGET 170 2 0 0 3 @local243)
            )(else
                (if (>= global15 999)
                    Message(msgGET 170 2 0 0 4 @local243)
                )
            )
        )
        Message(msgGET 170 2 0 0 1 @local143)
        Format(@local343 "%s %d %s\n" @local143 global15 @local243)
        SetQuitStr(@local343)
        (send global2:setScript(sStartMusic))
    )


    (method (doit)
        (var gGameMusic1PrevSignal, temp1[8], temp9[64])
        (super:doit())
        = gGameMusic1PrevSignal (send gGameMusic1:prevSignal)
        (if (script)
        )(else
            (if (== gGameMusic1PrevSignal theGGameMusic1PrevSignal)
                0
            )(else
                (if (proc999_5(gGameMusic1PrevSignal 143 147 151 159 163 167 175 179 183 191 195 199 207 215 222 231))
                    = theGGameMusic1PrevSignal gGameMusic1PrevSignal
                    ++local6
                    Display("" 108 local11)
                    Message(msgGET 170 1 0 0 local6 @temp9)
                    = local11 Display(@temp9 100 35 137 102 41 105 150 101 1 106 320 107)
                    (if (== gGameMusic1PrevSignal 143)
                        (if ((<= global87 local8) or (== Platform(4) 2))
                            0
                        )(else
                            (if (>= global87 local10)
                                (bouncingBall:
                                    moveSpeed(4)
                                    cycleSpeed(4)
                                    init()
                                )
                            )(else
                                (bouncingBall:init())
                            )
                        )
                    )(else
                        (if (== gGameMusic1PrevSignal 159)
                            localproc_07dc()
                        )(else
                            (if (== gGameMusic1PrevSignal 175)
                                localproc_077f()
                            )(else
                                (if (== gGameMusic1PrevSignal 191)
                                    localproc_07dc()
                                )(else
                                    (if (== gGameMusic1PrevSignal 207)
                                        localproc_077f()
                                    )
                                )
                            )
                        )
                    )
                )(else
                    (if (== gGameMusic1PrevSignal 138)
                        (balladText:dispose())
                        UnLoad(128 171)
                    )(else
                        (if (== gGameMusic1PrevSignal 140)
                            (if (<= global87 local9)
                                (vignette:
                                    x(160)
                                    y(75)
                                    show()
                                )
                            )(else
                                (vignette:
                                    setLoop(0)
                                    moveSpeed(5)
                                    setMotion(MoveTo 160 75)
                                    show()
                                )
                            )
                            (vignette1:show())
                        )(else
                            (if (== gGameMusic1PrevSignal 243)
                                (if (<= global87 local9)
                                    (vignette:hide())
                                    (vignette1:hide())
                                )(else
                                    (vignette:setMotion(MoveTo 40 75))
                                )
                                Display("" 108 local11)
                                = local12 1
                            )(else
                                (if (== gGameMusic1PrevSignal 245)
                                    UnLoad(128 170)
                                    (send gOldCast:eachElementDo(#dispose))
                                    (send global2:setScript(sHalfDome))
                                )(else
                                    (if (local12 and (== gGameMusic1PrevSignal -1))
                                        (send global2:setScript(sTheEnd))
                                    )
                                )
                            )
                        )
                    )
                )
            )
        )
    )


    (method (dispose)
        (super:dispose())
        (send gOldKH:delete(self))
        (send gOldMH:delete(self))
    )


    (method (handleEvent pEvent)
        (if ((send pEvent:type) and (== gNumber gNewRoomNumber))
            (send gGameMusic1:pause(1))
            (send pEvent:claimed(1))
            (send gGame:setCursor(999 1 198 175))
            (switch ((Print:
                posn(50 160)
                addButton(1 3 0 0 1 0 0 170)
                addButton(2 3 0 0 2 60 0 170)
                addButton(0 3 0 0 3 120 0 170)
                addButton(3 3 0 0 4 179 0 170)
                init()
            )
)
                (case 0
                    (send gGameMusic1:pause(0))
                )
                (case 1
                    (send gGame:restore())
                    (send gGameMusic1:pause(0))
                )
                (case 2
                    (send gGame:restart())
                    (send gGameMusic1:pause(0))
                )
                (case 3
                    = global4 1
                )
            )
            (send gGame:setCursor(996 1))
        )
    )


    (method (cue)
        (var temp0[20])
        (if (((> (send gGameMusic1:prevSignal) 141) and (< (send gGameMusic1:prevSignal) 244)) and (> global87 local8))
            = local2 local38[local0]
            = local3 (- local2 local1)
            = local13[2] (+ local1 (/ local3 10))
            = local13[6] (+ local1 (/ (* local3 3) 10))
            = local13[10] (+ local1 (/ local3 2))
            = local13[14] (- local2 (/ (* local3 3) 10))
            = local13[18] (- local2 (/ local3 10))
            = local13[22] local2
            (bouncingBall:setCycle(MCyc @local13))
            ++local0
            = local1 local2
        )
    )

)
(instance sStartMusic of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                = cycles 1
            )
            (case 1
                (if (== Platform(4) 2)
                    (send gGameMusic1:
                        number(152)
                        flags(1)
                        loop(1)
                        prevSignal(0)
                        play()
                    )
                )(else
                    (send gGameMusic1:
                        number(152)
                        flags(1)
                        loop(1)
                        prevSignal(0)
                        play(global2)
                    )
                )
                (self:dispose())
            )
        )
    )

)
(instance sHalfDome of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                proc0_15(1 3 self)
            )
            (case 1
                (horseAndFreddy:init())
                (send global2:
                    style(100)
                    drawPic(180)
                )
                = cycles 1
            )
            (case 2
                proc0_15(0 3 self)
            )
            (case 3
                (horseAndFreddy:setCycle(End self))
            )
            (case 4
                (horseSound:play())
                (horseAndFreddy:
                    setLoop(1)
                    setCel(0)
                    setCycle(Fwd)
                )
                = cycles 1
            )
            (case 5
                (freddyHead:
                    init()
                    setPri(15)
                )
                PalVary(pvINIT 180 10)
                = cycles 1
            )
            (case 6
                (if ((== (send gGameMusic1:prevSignal) 20) and not (freddyHead:cycler))
                    (freddyHead:setCycle(End self))
                )(else
                    --state
                    = cycles 1
                )
            )
            (case 7
                (freddyHead:cel(0))
                (if ((== (send gGameMusic1:prevSignal) 30) and (<> (freddyHead:loop) 3))
                    (freddyHead:
                        loop(3)
                        cel(0)
                        setCycle(End self)
                    )
                )(else
                    --state
                    = cycles 1
                )
            )
            (case 8
                (freddyHead:dispose())
                (self:dispose())
            )
        )
    )

)
(instance sTheEnd of Script
    (properties)

    (method (doit)
        (super:doit())
        (if (local5 and (== PalVary(pvGET_CURRENT_STEP) 64))
            (self:cue())
            = local5 0
        )
    )


    (method (changeState newState)
        (switch (= state newState)
            (case 0
                (horseAndFreddy:stopUpd())
                (theEndView:
                    setScale(10)
                    setScale()
                    setPri(15)
                    setStep(5 5)
                    init()
                    hide()
                )
                = cycles 3
            )
            (case 1
                = local0 10
                (while (< local0 129)
                    Animate((send gOldCast:elements) 1)
                    (theEndView:
                        scaleX(local0)
                        scaleY(local0)
                        show()
                    )
                    = local0 (+ local0 6)
                )
                = cycles 1
            )
            (case 2
                = local5 1
                PalVary(pvUNINIT)
                PalVary(pvINIT 170 5)
            )
            (case 3
                proc0_15(1 0 self)
            )
            (case 4
                PalVary(pvUNINIT)
                (send global2:newRoom(790))
                (self:dispose())
            )
        )
    )

)
(instance vignette of Actor
    (properties
        x 40
        y 75
        view 170
        priority 6
        signal $4010
        xStep 15
        moveSpeed 0
    )
)
(instance vignette1 of Actor
    (properties
        x 280
        y 75
        view 170
        priority 6
        signal $4010
        xStep 15
        moveSpeed 0
    )
)
(instance bouncingBall of Actor
    (properties
        x 85
        y 130
        view 160
        priority 14
        signal $4010
        cycleSpeed 0
        moveSpeed 0
    )
)
(instance theEndView of Actor
    (properties
        x 152
        y 126
        view 175
        loop 4
    )
)
(instance horseAndFreddy of Prop
    (properties
        x 157
        y 81
        view 175
        cycleSpeed 12
    )
)
(instance freddyHead of Prop
    (properties
        x 155
        y 35
        view 175
        loop 2
        signal $4000
    )
)
(instance balladText of View
    (properties
        x 160
        y 90
        view 171
        priority 13
        signal $0010
    )
)
(instance horseSound of FPSound
    (properties
        flags $0001
        number 2114
    )
)
