(version 2)
(include "sci.sh")
(exports
    0 rm110
)
(use "Main")
(use "FPRoom")
(use "Class_255_0")
(use "Print")
(use "n958")
(use "SysWindow")
(use "View")
(use "Obj")
(script 110)


(local
    local0 =     1
    local1
    local2 =     10
    local3
    local4
    local5
    local6 =     1

)
(instance public rm110 of FPRoom
    (properties
        picture 190
        style $000a
    )

    (method (init)
        (send gIconBar:disable())
        (send gOldKH:addToFront(self))
        (send gOldMH:addToFront(self))
        (send gGame:setCursor(996 1))
        (send gGameMusic1:
            number(104)
            flags(1)
            loop(1)
            prevSignal(0)
            play(self)
        )
        (titleView1:
            init()
            hide()
        )
        (titleView2:
            init()
            hide()
        )
        proc958_0(143 0 110)
        (super:init())
        (self:setScript(sTownScript))
    )


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


    (method (handleEvent pEvent)
        (if ((send pEvent:type) and not local6)
            = local6 1
            (send pEvent:claimed(1))
            (sTownScript:changeState(6))
        )
    )

)
(instance sTownScript of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                (if (== (send gGameMusic1:prevSignal) 10)
                    = cycles 1
                )(else
                    --state
                    = cycles 1
                )
            )
            (case 1
                = local6 0
                (yellSound:
                    number(2918)
                    flags(1)
                    loop(1)
                    play()
                )
                (titleView1:
                    setScale(10)
                    setScale()
                    setPri(15)
                    setLoop(0)
                    setStep(5 5)
                )
                = local2 10
                (while (< local2 129)
                    Animate((send gOldCast:elements) 1)
                    (titleView1:
                        scaleX(local2)
                        scaleY(local2)
                        show()
                    )
                    = local2 (+ local2 6)
                )
                = cycles 1
            )
            (case 2
                = local4 1
                (if (== (send gGameMusic1:prevSignal) 20)
                    = cycles 1
                )(else
                    --state
                    = cycles 1
                )
            )
            (case 3
                (titleView1:stopUpd())
                (titleView2:
                    setScale(10)
                    setScale()
                    setPri(15)
                    setLoop(1)
                    setStep(5 5)
                )
                = local2 10
                (while (< local2 129)
                    Animate((send gOldCast:elements) 1)
                    (titleView2:
                        scaleX(local2)
                        scaleY(local2)
                        show()
                    )
                    = local2 (+ local2 3)
                )
                = cycles 1
            )
            (case 4
                = local5 1
                (titleView2:stopUpd())
                = seconds 3
            )
            (case 5
                (if (== (send gGameMusic1:prevSignal) 30)
                    = local3 1
                    = cycles 1
                )(else
                    --state
                    = cycles 1
                )
            )
            (case 6
                = local6 1
                (if (not local4)
                    (titleView1:
                        scaleSignal(0)
                        show()
                        stopUpd()
                    )
                )
                (if (not local5)
                    (titleView2:
                        scaleSignal(0)
                        show()
                        stopUpd()
                    )
                )
                = cycles 1
            )
            (case 7
                (send gGame:setCursor(999 1 74 175))
                (send gGameMusic1:pause(0))
                (switch ((Print:
                    dialog(TBDialog)
                    font(gFont)
                    posn(46 160)
                    addButton(1 19 0 0 1 0 0 0)
                    addButton(2 19 0 0 6 55 0 0)
                    addButton(3 19 0 0 3 110 0 0)
                    addButton(4 19 0 0 4 149 0 0)
                    addButton(0 19 0 0 5 188 0 0)
                    init()
                )
)
                    (case 0
                        = local0 0
                        = global4 1
                    )
                    (case 1
                        (send gGameMusic1:pause(1))
                        (send gGame:restore())
                    )
                    (case 2
                        = local0 0
                        (send gGameMusic1:fade())
                        (send global2:newRoom(150))
                    )
                    (case 3
                        = local0 0
                        (send gGameMusic1:fade())
                        (send global2:newRoom(26))
                    )
                    (case 4
                        (send gGameMusic1:pause(1))
                        (send gGameMusic2:
                            number(620)
                            flags(1)
                            loop(-1)
                            play()
                        )
                        = local1 1
                    )
                )
                = cycles 1
            )
            (case 8
                (if (local1)
                    (switch ((Print:
                        window(SysWindow)
                        font(gFont)
                        addTitle(17 0 0 1 110)
                        addButton(1 4 0 0 1 0 0 110)
                        addButton(2 5 0 0 1 0 17 110)
                        addButton(3 6 0 0 1 0 34 110)
                        addButton(4 7 0 0 1 0 51 110)
                        addButton(5 8 0 0 1 0 68 110)
                        addButton(6 9 0 0 1 0 85 110)
                        addButton(0 10 0 0 1 0 102 110)
                        init()
                    )
)
                        (case 0
                            = local0 1
                            = local1 0
                            (send gGameMusic2:stop())
                            (send gGameMusic1:pause(0))
                            = cycles 1
                        )
                        (case 1
                            (send gFpMessager:say(11 0 0 0 self))
                        )
                        (case 2
                            (send gFpMessager:say(12 0 0 0 self))
                        )
                        (case 3
                            (send gFpMessager:say(13 0 0 0 self))
                        )
                        (case 4
                            (send gFpMessager:say(14 0 0 0 self))
                        )
                        (case 5
                            (send gFpMessager:say(15 0 0 0 self))
                        )
                        (case 6
                            (send gFpMessager:say(16 0 0 0 self))
                        )
                    )
                )(else
                    = cycles 1
                )
            )
            (case 9
                (if (local1)
                    (self:changeState(8))
                )(else
                    = cycles 1
                )
            )
            (case 10
                (if (local0)
                    (self:changeState(7))
                )(else
                    = cycles 1
                )
            )
            (case 11
                (send gGame:setCursor(996 1))
                (self:dispose())
            )
        )
    )

)
(instance TBDialog of Dialog
    (properties)

    (method (doit param1)
        (var temp0, temp1, temp2)
        (asm
            lsg     global86
            pushi   0
            callk   GetTime, 0
            add     
            sag     gB_moveCnt
            ldi     0
            sat     temp2
            pushi   #eachElementDo
            pushi   1
            pushi   110
            self    6
            pToa    theItem
            bnt     code_0585
            pushi   #select
            pushi   1
            pushi   0
            send    6
code_0585:  lap     paramTotal
            bnt     code_0591
            lap     param1
            bnt     code_0591
            lap     param1
            jmp     code_059a
code_0591:  pushi   #firstTrue
            pushi   2
            pushi   191
            pushi   1
            self    8
code_059a:  aTop    theItem
            pToa    theItem
            bnt     code_05a7
            pushi   #select
            pushi   1
            pushi   1
            send    6
code_05a7:  pToa    theItem
            not     
            bnt     code_05b8
            lag     gEatTheMice
            aTop    eatTheMice
            pushi   0
            callk   GetTime, 0
            aTop    lastTicks
            jmp     code_05bc
code_05b8:  ldi     0
            aTop    eatTheMice
code_05bc:  ldi     0
            sat     temp1
code_05c0:  lat     temp1
            not     
            bnt     code_067f
            lsg     global86
            pushi   0
            callk   GetTime, 0
            add     
            sag     gB_moveCnt
            pushi   #eachElementDo
            pushi   1
            pushi   192
            self    6
            pushi   #localize
            pushi   0
            pushi   #new
            pushi   0
            class   Event
            send    4
            send    4
            sat     temp0
            pToa    eatTheMice
            bnt     code_0614
            dpToa   eatTheMice
            pushi   #type
            pushi   0
            lat     temp0
            send    4
            push    
            ldi     1
            eq?     
            bnt     code_0601
            pushi   #type
            pushi   1
            pushi   0
            lat     temp0
            send    6
code_0601:  pTos    lastTicks
            pushi   0
            callk   GetTime, 0
            eq?     
            bnt     code_060e
            jmp     code_0601
            jmp     code_0601
code_060e:  pushi   0
            callk   GetTime, 0
            aTop    lastTicks
code_0614:  pushi   #eachElementDo
            pushi   4
            pushi   96
            lofsa   checkHiliteCode
            push    
            pushSelf
            lst     temp0
            self    12
            pushi   #handleEvent
            pushi   1
            lst     temp0
            self    6
            sat     temp1
            pushi   #dispose
            pushi   0
            lat     temp0
            send    4
            pushi   #check
            pushi   0
            self    4
            bnt     code_063e
            jmp     code_067f
code_063e:  lst     temp1
            ldi     65534
            eq?     
            bnt     code_0652
            ldi     0
            sat     temp1
            pushi   2
            pTos    theItem
            pushi   0
            callk   EditControl, 4
            jmp     code_067f
code_0652:  pushi   #eachElementDo
            pushi   1
            pushi   180
            lag     gSounds
            send    6
            pushi   1
            pushi   1
            callk   Wait, 2
            pushi   #prevSignal
            pushi   0
            lag     gGameMusic1
            send    4
            push    
            ldi     65535
            eq?     
            bnt     code_05c0
            pushi   1
            pushi   101
            callb   proc0_3, 2
            ldi     2
            sat     temp1
            jmp     code_067f
            jmp     code_05c0
code_067f:  lat     temp1
            ret     
        )
    )

)
(instance checkHiliteCode of Code
    (properties)

    (method (doit param1 param2 param3)
        (if (((& (send param1:state) $0001) and (send param1:check(param3))) and not (& (send param1:state) $0008))
            (send ((send param2:theItem)):select(0))
            (send param2:theItem(param1))
            (send param1:select(1))
        )
    )

)
(instance titleView1 of Actor
    (properties
        x 160
        y 60
        view 190
        signal $4000
    )
)
(instance titleView2 of Actor
    (properties
        x 160
        y 120
        view 190
        loop 1
        signal $4000
    )
)
(instance yellSound of FPSound
    (properties
        flags $0001
    )
)
