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


(local
    local0
    local1
    gEgoViewer
    local3
    newProp
    newProp_2

)
(instance wave1 of Prop
    (properties)
)
(instance wave2 of Prop
    (properties)
)
(instance waves of List
    (properties)
)
(instance public Room25 of Rm
    (properties
        picture 25
    )

    (method (init)
        = north 19
        = south 1
        = east 26
        = west 31
        = horizon 84
        = global101 0
        (if (global100)
            = picture 125
        )
        (send gEgo:edgeHit(0))
        (super:init())
        (self:setRegions(504 501 503 506))
        Load(rsVIEW 2)
        Load(rsVIEW 5)
        Load(rsVIEW 6)
        Load(rsVIEW 7)
        Load(rsVIEW 8)
        Load(rsVIEW 21)
        (wave1:
            isExtra(1)
            view(666)
            loop(3)
            cel(3)
            posn(177 75)
            setPri(0)
            ignoreActors()
            setCycle(Fwd)
            cycleSpeed(1)
            init()
        )
        (wave2:
            isExtra(1)
            view(666)
            loop(4)
            cel(3)
            posn(164 117)
            setPri(0)
            ignoreActors()
            setCycle(Fwd)
            cycleSpeed(1)
            init()
        )
        = newProp (Prop:new())
        = newProp_2 (Prop:new())
        (send newProp:
            view(666)
            loop(6)
            cel(1)
            posn(254 183)
            setPri(0)
            ignoreActors()
            setCycle(Fwd)
            init()
        )
        (send newProp_2:
            view(666)
            loop(7)
            cel(1)
            posn(226 165)
            setPri(0)
            ignoreActors()
            setCycle(Fwd)
            init()
        )
        (waves:add(wave1 wave2))
        (wave1:setScript(waveActions))
        (if ((== gPicture 222) or (== (send gEgo:view()) 2))
            = global105 0
        )
        (switch (global105)
            (case 0
                (
                (switch (gPicture)
                    (case 1
                        (
                        (if (== global105 4)
                            (send gEgo:posn(60 188))
                        )(else
                            (send gEgo:posn(217 188))
                        )
 )
                    )
                    (case 19
                        (
                        (if (> (send gEgo:x()) 265)
                            (send gEgo:posn(239 (+ horizon (+ (send gEgo:yStep()) 1))))
                        )(else
                            (send gEgo:
                                x(185)
                                y(+ horizon (+ (send gEgo:yStep()) 1))
                            )
                        )
 )
                    )
                    (case 26
                        (
                        (if (<= (send gEgo:y()) horizon)
                            (send gEgo:posn(318 (+ horizon 1)))
                        )(else
                            (send gEgo:posn(318 (send gEgo:y())))
                        )
 )
                    )
                    (case 31
                        ((send gEgo:posn(1 (send gEgo:y())))  )
                    )
                    (default 
                        ((send gEgo:
                            posn(229 126)
                            setMotion(0)
                            loop(1)
                        )
 )
                    )
                )
  )
            )
            (case 1
                (
                (switch (gPicture)
                    (case 1
                        ((send gEgo:
                            x(126)
                            y(188)
                        )
  )
                    )
                    (case 19
                        ((send gEgo:
                            x(166)
                            y(+ horizon (+ (send gEgo:yStep()) 1))
                        )
  )
                    )
                    (case 26
                        ((send gEgo:posn(318 (send gEgo:y()))) )
                    )
                )
  )
            )
            (case 2
                (
                (switch (gPicture)
                    (case 1
                        ((send gEgo:
                            x(126)
                            y(188)
                        )
  )
                    )
                    (case 19
                        ((send gEgo:
                            x(157)
                            y(+ horizon (+ (send gEgo:yStep()) 1))
                        )
  )
                    )
                    (case 26
                        ((send gEgo:posn(318 (send gEgo:y()))) )
                    )
                )
  )
            )
            (case 3
                (
                (switch (gPicture)
                    (case 1
                        ((send gEgo:
                            x(126)
                            y(188)
                        )
  )
                    )
                    (case 19
                        ((send gEgo:
                            x(146)
                            y(+ horizon (+ (send gEgo:yStep()) 1))
                        )
  )
                    )
                    (case 26
                        ((send gEgo:posn(318 (send gEgo:y()))) )
                    )
                )
  )
            )
            (case 4
                (
                (switch (gPicture)
                    (case 1
                        ((send gEgo:
                            x(48)
                            y(188)
                        )
  )
                    )
                    (case 19
                        ((send gEgo:posn(88 (+ horizon (+ (send gEgo:yStep()) 1))))  )
                    )
                    (case 31
                        (
                        (if (< (send gEgo:y()) horizon)
                            (send gEgo:y((+ horizon (+ (send gEgo:yStep()) 1))))
                        )
 )
                    )
                )
 )
            )
        )
        (send gEgo:
            xStep(2)
            yStep(1)
            init()
        )
        proc0_11()
        = gEgoViewer (send gEgo:viewer())
    )


    (method (dispose)
        (waves:dispose())
        (super:dispose())
    )


    (method (handleEvent pEvent)
        (if ((send pEvent:claimed()))
            return 1
        )
        return 
            (if (== (send pEvent:type()) 128)
                (if (Said('look>'))
                    (if (Said('/brook'))
                        Print(25 0)
                    )(else
                        (if (Said('/grass'))
                            Print(25 1)
                        )(else
                            (if (Said('[<around][/around,room,beach]'))
                                Print(25 2)
                            )
                        )
                    )
                )(else
                    (if (Said('drink[/water]') or Said('get/drink'))
                        (if ((send gEgo:inRect(185 150 319 180)))
                            (if (<> global105 0)
                                Print(25 3)
                            )(else
                                (if ((((& (= local1 proc0_2(gEgo 12)) $0008) or (& local1 $0800)) or (& local1 $0002)) or (& local1 $0200))
                                    = gGEgoScript (send gEgo:script())
                                    (send gEgo:setScript(riverActions))
                                )(else
                                    Print(25 4)
                                )
                            )
                        )(else
                            (send pEvent:claimed(0))
                        )
                    )
                )
            )(else
                0
            )
    )

)
(instance riverActions of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                (proc0_10() = gEgoViewer (send gEgo:viewer()) (send gEgo:
                    viewer(0)
                    view(21)
                    cel(0)
                    setCycle(End self)
                )
  )
            )
            (case 1
                ((Timer:setReal(self 5)) = global120 Print(25 3 134 -1 20 172)  )
            )
            (case 2
                ((send gEgo:setCycle(Beg self))  )
            )
            (case 3
                (proc0_23() proc0_11() (send gEgo:
                    view(2)
                    setCycle(Walk)
                )
 (send gEgo:
                    script(gGEgoScript)
                    viewer(gEgoViewer)
                )
 )
            )
        )
    )

)
(instance waveActions of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                (= local3 0 (while (< local3 (waves:size()))(send ((View:new())):
                        view((send ((waves:at(local3))):view()))
                        loop((send ((waves:at(local3))):loop()))
                        cel(0)
                        setPri(0)
                        ignoreActors()
                        x((send ((waves:at(local3))):x()))
                        y((send ((waves:at(local3))):y()))
                        init()
                        addToPic()
                        yourself()
                    )
 ++local3  ) = local3 0 (self:changeState(1))  )
            )
            (case 1
                ((send ((waves:at(local3))):
                    cel(0)
                    show()
                    setCycle(End self)
                )
  )
            )
            (case 2
                ((send ((waves:at(local3))):hide()) 
                (if (< local3 (- (waves:size()) 1))
                    ++local3
                )(else
                    = local3 0
                )
 (waveActions:changeState(1)) )
            )
        )
    )

)
