(include "sci.sh")
(use "Main")
(use "Class_255_0")
(use "Cycle")
(use "Game")
(use "InvI")
(use "PV")
(use "Obj")
(script 21)


(local
    newView
    newProp
    newProp_2
    newProp_3
    gEgoViewer

)
(instance public Room21 of Rm
    (properties
        picture 21
    )

    (method (init)
        = north 15
        = south 27
        = east 22
        = west 20
        = horizon 68
        = global101 0
        (if (global100)
            = picture 121
        )
        (send gEgo:edgeHit(0))
        (super:init())
        (self:setRegions(507 501 512))
        Load(rsVIEW 518)
        Load(rsVIEW 21)
        Load(rsVIEW 23)
        = newProp (Prop:new())
        = newProp_2 (Prop:new())
        = newProp_3 (Prop:new())
        (send newProp:
            isExtra(1)
            view(657)
            loop(0)
            cel(2)
            posn(13 182)
            setPri(0)
            cycleSpeed(1)
            setCycle(Fwd)
            ignoreActors()
            init()
        )
        (send newProp_2:
            isExtra(1)
            view(657)
            loop(1)
            cel(0)
            posn(122 155)
            setPri(0)
            cycleSpeed(1)
            setCycle(Fwd)
            ignoreActors()
            init()
        )
        (send newProp_3:
            isExtra(1)
            view(657)
            loop(2)
            cel(0)
            posn(295 119)
            setPri(0)
            cycleSpeed(1)
            setCycle(Fwd)
            ignoreActors()
            init()
        )
        (if (< (send gEgo:y()) horizon)
            (send gEgo:y((+ horizon 2)))
        )
        (if ((send ((Inv:at(5))):ownedBy(21)))
            (send (= newView (View:new())):
                view(518)
                loop(1)
                cel(0)
                x(164)
                y(130)
                stopUpd()
                init()
            )
        )
        (switch (gPicture)
            (case 0
                ((send gEgo:posn(160 185))  )
            )
            (case 26
                (
                (if (<> (send gEgo:view()) 2)
                    (send gEgo:posn(1 175))
                )(else
                    (if (< (send gEgo:x()) 191)
                        (send gEgo:posn(1 137))
                    )(else
                        (send gEgo:posn(7 187))
                    )
                )
 proc0_20()  )
            )
            (case 22
                (
                (if (<> (send gEgo:view()) 2)
                    (send gEgo:posn(318 117))
                )(else
                    (if (((>= (send gEgo:y()) 105) and (< (send gEgo:y()) 121)) and (== (send gEgo:view()) 2))
                        (send gEgo:posn(318 103))
                    )(else
                        (send gEgo:posn(318 (send gEgo:y())))
                    )
                )
 )
            )
            (case 20
                (
                (if (> (send gEgo:y()) 140)
                    (send gEgo:posn(1 140))
                )(else
                    (send gEgo:posn(1 (send gEgo:y())))
                )
 )
            )
            (case 27
                ((send gEgo:posn((send gEgo:x()) (- 189 (send gEgo:yStep()))))  )
            )
            (case 15
                ((send gEgo:posn((send gEgo:x()) (+ horizon 2))) )
            )
        )
        (send ((send gEgo:viewer())):doit())
        (send gEgo:init())
        (if (== gPicture 0)
            (send gEgo:
                x(180)
                y(188)
            )
        )
    )


    (method (handleEvent pEvent)
        (if ((send pEvent:claimed()))
            return 1
        )
        return 
            (if ((== (send pEvent:type()) 128) and Said('look>'))
                (if (Said('<under/bridge'))
                    (if ((send gEgo:inRect(120 130 195 139)))
                        (send gEgo:setScript(egoActions))
                    )(else
                        (if ((send gEgo:inRect(70 115 254 169)) or (send gEgo:inRect(189 93 318 139)))
                            Print(21 0)
                        )(else
                            Print(800 1)
                        )
                    )
                )(else
                    (if (Said('/bridge'))
                        Print(21 1)
                    )(else
                        (if (Said('[<around][/room]'))
                            Print(21 2)
                        )
                    )
                )
            )(else
                0
            )
    )


    (method (newRoom param1)
        (if ((send gEgo:inRect(65530 166 20 192)))
            (super:newRoom(26))
        )(else
            (super:newRoom(param1))
        )
    )

)
(instance egoActions of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                (proc0_10() (send gEgo:setMotion(MoveTo 141 133 self))  )
            )
            (case 1
                (= gEgoViewer (send gEgo:viewer()) (send gEgo:viewer(0)) (send gEgo:
                    loop(0)
                    view(21)
                    cel(0)
                    setCycle(End self)
                )
  )
            )
            (case 2
                ((send gEgo:
                    view(23)
                    loop(0)
                    cel(0)
                    setCycle(End self)
                )
  )
            )
            (case 3
                (
                (if ((send ((Inv:at(5))):ownedBy(21)))
                    (send newView:dispose())
                    (send gGame:changeScore(2))
                    Print(21 3 166)
                    = global182 1
                    (send ((Inv:at(5))):moveTo(gEgo))
                )(else
                    Print(21 4 166)
                )
 (send gEgo:
                    loop(2)
                    cel(0)
                    setCycle(End self)
                )
  )
            )
            (case 4
                ((send gEgo:
                    view(21)
                    setCel(255)
                    setCycle(Beg self)
                )
  )
            )
            (case 5
                ((send gEgo:
                    view(2)
                    setCycle(Walk)
                )
 (send gEgo:viewer(gEgoViewer)) proc0_11() )
            )
        )
    )

)
