(include "sci.sh")
(use "Main")
(use "Class_255_0")
(use "Sound")
(use "Cycle")
(use "Game")
(use "PV")
(use "Obj")
(script 12)


(local
    newProp_6[13]
    local13
    local14
    newProp
    newProp_2
    newProp_3
    newProp_4
    newProp_5
    newBlk
    newBlk_2

)
(instance walkingMusic of Sound
    (properties)
)
(instance public Room12 of Rm
    (properties
        picture 12
    )

    (method (init)
        = north 6
        = south 18
        = west 11
        = horizon 80
        = global101 0
        (if (global100)
            = picture 112
        )
        (send gEgo:edgeHit(0))
        (super:init())
        = newProp (Prop:new())
        = newProp_2 (Prop:new())
        = newProp_3 (Prop:new())
        = newProp_4 (Prop:new())
        = newProp_5 (Prop:new())
        (send newProp:
            view(688)
            loop(0)
            cel(3)
            posn(265 98)
            setPri(15)
            setCycle(Fwd)
            cycleSpeed(2)
            ignoreActors()
            init()
        )
        (send newProp_2:
            view(688)
            loop(1)
            cel(4)
            posn(12 60)
            setPri(8)
            setCycle(Fwd)
            cycleSpeed(2)
            ignoreActors()
            init()
        )
        (send newProp_3:
            view(688)
            loop(2)
            cel(1)
            posn(210 65)
            setPri(10)
            setCycle(Fwd)
            cycleSpeed(2)
            ignoreActors()
            init()
        )
        (send newProp_4:
            view(688)
            loop(3)
            cel(4)
            posn(154 87)
            setPri(7)
            setCycle(Fwd)
            cycleSpeed(2)
            ignoreActors()
            init()
        )
        (send newProp_5:
            view(688)
            loop(4)
            cel(4)
            posn(98 108)
            setPri(15)
            setCycle(Fwd)
            cycleSpeed(2)
            ignoreActors()
            init()
        )
        (self:setRegions(509 511))
        = local14 1
        (while (< local14 13)
            = newProp_6[local14] (Prop:new())
            ++local14
        )
        (send newProp_6[1]:
            view(695)
            loop(0)
            cel(0)
            posn(29 54)
            setPri(2)
            cycleSpeed(1)
            ignoreActors()
            init()
            stopUpd()
        )
        (send newProp_6[2]:
            view(695)
            loop(1)
            cel(0)
            posn(57 62)
            setPri(2)
            cycleSpeed(1)
            ignoreActors()
            init()
            stopUpd()
        )
        (send newProp_6[3]:
            view(695)
            loop(2)
            cel(0)
            posn(77 61)
            setPri(7)
            cycleSpeed(1)
            ignoreActors()
            init()
            stopUpd()
        )
        (send newProp_6[4]:
            view(695)
            loop(3)
            cel(0)
            posn(147 86)
            setPri(7)
            cycleSpeed(1)
            ignoreActors()
            init()
            stopUpd()
        )
        (send newProp_6[5]:
            view(695)
            loop(4)
            cel(0)
            posn(161 88)
            setPri(7)
            cycleSpeed(1)
            ignoreActors()
            init()
            stopUpd()
        )
        (send newProp_6[6]:
            view(692)
            loop(4)
            cel(0)
            posn(121 70)
            setPri(6)
            cycleSpeed(1)
            ignoreActors()
            init()
            stopUpd()
        )
        (send newProp_6[7]:
            view(696)
            loop(0)
            cel(0)
            posn(206 76)
            setPri(7)
            cycleSpeed(1)
            ignoreActors()
            init()
            stopUpd()
        )
        (send newProp_6[8]:
            view(696)
            loop(1)
            cel(0)
            posn(21 64)
            setPri(7)
            cycleSpeed(1)
            ignoreActors()
            init()
            stopUpd()
        )
        (send newProp_6[9]:
            view(696)
            loop(2)
            cel(0)
            posn(98 125)
            setPri(7)
            cycleSpeed(1)
            ignoreActors()
            init()
            stopUpd()
        )
        (send newProp_6[10]:
            view(696)
            loop(3)
            cel(0)
            posn(231 83)
            setPri(12)
            cycleSpeed(1)
            ignoreActors()
            init()
            stopUpd()
        )
        (send newProp_6[11]:
            view(693)
            loop(2)
            cel(0)
            posn(6 86)
            setPri(12)
            cycleSpeed(1)
            ignoreActors()
            init()
            stopUpd()
        )
        (send newProp_6[12]:
            view(690)
            loop(0)
            cel(0)
            posn(222 94)
            setPri(8)
            cycleSpeed(1)
            ignoreActors()
            init()
            stopUpd()
        )
        (switch (gPicture)
            (case west
                (
                (if (<= (send gEgo:y()) horizon)
                    (send gEgo:posn(1 (+ horizon (+ (send gEgo:yStep()) 1))))
                )(else
                    (send gEgo:posn(1 (send gEgo:y())))
                )
 )
            )
            (case north
                (
                (if (> (send gEgo:x()) 211)
                    (send gEgo:posn(210 (+ horizon 2)))
                )(else
                    (send gEgo:posn((send gEgo:x()) (+ horizon 2)))
                )
 )
            )
            (case south
                (
                (if (> (send gEgo:x()) 77)
                    (send gEgo:posn(189 188))
                )(else
                    (send gEgo:posn(32 188))
                )
 )
            )
            (case 0
                ((send gEgo:
                    x(290)
                    y(160)
                )
 )
            )
        )
        (walkingMusic:
            number(64)
            play()
        )
        (send gEgo:
            init()
            view(2)
        )
        = newBlk (Blk:new())
        = newBlk_2 (Blk:new())
        (send newBlk:
            left(194)
            top(115)
            right(230)
            bottom(118)
        )
        (send newBlk_2:
            left(170)
            top(106)
            right(183)
            bottom(110)
        )
        (send gEgo:observeBlocks(newBlk newBlk_2))
    )


    (method (doit)
        (super:doit())
        (if (not global112 and (== (send global2:script()) 0))
            (if (& (send gEgo:onControl(0)) $0080)
                = local13 1
                = local14 2
                (send global2:setScript(grabbed))
            )(else
                (if (& (send gEgo:onControl(0)) $2000)
                    = local13 1
                    = local14 3
                )(else
                    (if (& (send gEgo:onControl(0)) $0040)
                        = local13 1
                        = local14 6
                        (send global2:setScript(grabbed))
                    )(else
                        (if (& (send gEgo:onControl(0)) $0020)
                            = local13 1
                            = local14 5
                            (send global2:setScript(grabbed))
                        )(else
                            (if (& (send gEgo:onControl(0)) $0100)
                                = local13 2
                                = local14 1
                                (send global2:setScript(grabbed))
                            )(else
                                (if (& (send gEgo:onControl(0)) $1000)
                                    = local13 2
                                    = local14 4
                                    (send global2:setScript(grabbed))
                                )(else
                                    (if (& (send gEgo:onControl(0)) $0010)
                                        = local13 2
                                        = local14 7
                                        (send global2:setScript(grabbed))
                                    )(else
                                        (if (& (send gEgo:onControl(0)) $0200)
                                            = local13 2
                                            = local14 8
                                            (send global2:setScript(grabbed))
                                        )(else
                                            (if (& (send gEgo:onControl(0)) $0800)
                                                = local13 2
                                                = local14 9
                                                (send global2:setScript(grabbed))
                                            )(else
                                                (if (& (send gEgo:onControl(0)) $0004)
                                                    = local13 2
                                                    = local14 10
                                                    (send global2:setScript(grabbed))
                                                )(else
                                                    (if (& (send gEgo:onControl(0)) $0400)
                                                        = local13 2
                                                        = local14 11
                                                        (send global2:setScript(grabbed))
                                                    )(else
                                                        (if (& (send gEgo:onControl(0)) $0008)
                                                            = local13 3
                                                            = local14 12
                                                            (send global2:setScript(grabbed))
                                                        )
                                                    )
                                                )
                                            )
                                        )
                                    )
                                )
                            )
                        )
                    )
                )
            )
        )
    )


    (method (dispose)
        (send gSounds:eachElementDo(172))
        (if (IsObject(newBlk))
            (send newBlk:dispose())
            (send newBlk_2:dispose())
        )
        (super:dispose())
    )


    (method (handleEvent pEvent)
        (if ((send pEvent:claimed()))
            return 1
        )
        return 
            (if ((== (send pEvent:type()) 128) and Said('look[<around,at][/forest,forest,room]'))
                Print(12 0)
            )(else
                0
            )
    )

)
(instance grabbed of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                ((walkingMusic:dispose()) (send ((Sound:new())):
                    number(65)
                    play()
                )
 proc0_10() (send newProp_6[local14]:setCycle(CT local13 1 self))  )
            )
            (case 1
                ((send gEgo:dispose()) (send newProp_6[local14]:setCycle(End self))  )
            )
            (case 2
                (
                (switch (Random(1 6))
                    (case 1
                        (Print(12 1)  )
                    )
                    (case 2
                        (Print(12 2)  )
                    )
                    (case 3
                        (Print(12 3)  )
                    )
                    (case 4
                        (Print(12 4)  )
                    )
                    (case 5
                        (Print(12 5)  )
                    )
                    (case 6
                        (Print(12 6) )
                    )
                )
 = seconds 5  )
            )
            (case 3
                (= global127 1 )
            )
        )
    )

)
