(version 2)
(include "sci.sh")
(exports
    0 rgClouds
    1 proc610_1
)
(use "Main")
(use "Class_255_0")
(use "n958")
(use "Cycle")
(use "Game")
(use "User")
(use "PicView")
(use "Obj")
(script 610)



(procedure public (proc610_1 param1 param2 param3 param4 param5 param6 param7 param8 param9)
    (var theGGNumber)
    = theGGNumber gGNumber
    (if (proc999_5(theGGNumber 0 -1 777))
        = theGGNumber (send global2:param9)
    )
    (switch (theGGNumber)
        (case (send global2:north)
            (send gEgo:posn(param1[0] param1[1]))
            (send global2:style(5))
        )
        (case (send global2:south)
            (send gEgo:posn(param1[2] param1[3]))
            (send global2:style(4))
        )
        (case (send global2:east)
            (send gEgo:posn(param1[4] param1[5]))
            (send global2:style(2))
        )
        (case (send global2:west)
            (send gEgo:posn(param1[6] param1[7]))
            (send global2:style(3))
        )
    )
)


(class cloudRoom of Rm
    (properties
        script 0
        number 0
        timer 0
        keep 0
        initialized 0
        picture 0
        style $ffff
        horizon 0
        controls 0
        north 0
        east 0
        south 0
        west 0
        curPic 0
        picAngle 0
        vanishingX 160
        vanishingY -30000
    )

    (method (init)
        proc958_0(128 4 7 8 34 63 67)
        proc958_0(132 95 17)
        (if ((send gEgo:has(5)))
            proc958_0(128 38 39)
        )
        (if ((send gEgo:has(0)))
            Load(rsVIEW 53)
        )
        proc0_10(0)
        proc0_1()
        (super:init())
    )


    (method (doit)
        (var temp0)
        (if (script)
            (send script:doit())
        )(else
            = temp0 
                (switch ((send ((User:alterEgo)):edgeHit))
                    (case 1
                        north
                    )
                    (case 2
                        east
                    )
                    (case 3
                        south
                    )
                    (case 4
                        west
                    )
                )
            (if (temp0)
                (self:newRoom((= temp0 
                        (switch ((send ((User:alterEgo)):edgeHit))
                            (case 1
                                north
                            )
                            (case 2
                                east
                            )
                            (case 3
                                south
                            )
                            (case 4
                                west
                            )
                        )
)))
            )
        )
    )


    (method (dispose)
        proc0_11(0)
        (super:dispose())
    )

)
(instance public rgClouds of Rgn
    (properties)

    (method (init)
        (if (((== gNumber 56) or (== gNumber 72)) or (== gNumber 82))
            (if (<> (send (ScriptID(0 23)):number) 4)
                Load(rsSOUND 4)
                (send (ScriptID(0 23)):
                    number(4)
                    loop(-1)
                    play()
                )
            )
        )(else
            (if ((((== gGNumber 69) or (== gGNumber 58)) or (<> (send (ScriptID(0 23)):number) 54)) or (== (send (ScriptID(0 23)):prevSignal) -1))
                Load(rsSOUND 54)
                (send (ScriptID(0 23)):
                    number(54)
                    loop(-1)
                    play()
                )
            )
        )
        proc958_0(129 80 81 27)
        (super:init())
    )


    (method (doit)
        (super:doit())
        (if ((not (send global2:script) and ((& (send gEgo:onControl()) $0020) or ((& (send gEgo:onControl()) $0002) and not gGNumber_4))) and (== gNewRoomNumber gNumber))
            (send global2:setScript(egoFallThruClouds))
        )
    )


    (method (handleEvent pEvent)
        return 
            (if ((super:handleEvent(pEvent)))
                return 1
            )(else
                (if (Said('get,get/boulder,pebble,pebble'))
                    proc255_0(610 0)
                )(else
                    (if (Said('look,look>'))
                        (if (Said('[<at,around][/around,room,cloud]'))
                            (if (== gNumber 58)
                                proc255_0(610 1)
                            )(else
                                proc255_0(610 2)
                            )
                        )(else
                            (if (Said('/ceder'))
                                proc255_0(610 3)
                            )
                        )
                    )
                )
            )
    )

)
(instance egoFallThruClouds of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                proc0_2()
                (send (ScriptID(0 23)):fade())
                (send (ScriptID(0 21)):
                    number(17)
                    loop(1)
                    play()
                )
                (if (proc0_12(1))
                    proc255_0(610 4)
                )
                (send gEgo:
                    view(63)
                    cel(0)
                    cycleSpeed(1)
                    setCycle(End self)
                )
            )
            (case 1
                (send gCast:eachElementDo(#hide))
                (send global2:drawPic(80 5))
                (if ((send gEgo:blocks))
                    (send ((send gEgo:blocks)):dispose())
                    (send gEgo:blocks(0))
                )
                (send gEgo:
                    view(8)
                    setLoop(5)
                    cel(0)
                    setCycle(Fwd)
                    cycleSpeed(1)
                    ignoreActors()
                    illegalBits(0)
                    setStep(4 6)
                    setPri(14)
                    y(-5)
                    setMotion(MoveTo (send gEgo:x) 220 self)
                    show()
                )
            )
            (case 2
                (send global2:drawPic(81 5))
                (send gEgo:
                    y(-5)
                    setStep(4 8)
                    setMotion(MoveTo (send gEgo:x) 220 self)
                )
            )
            (case 3
                (send global2:drawPic(27 5))
                (send gEgo:
                    view(34)
                    setCycle(0)
                    setLoop(4)
                    setPri(12)
                    posn(210 -5)
                    setStep(2 15)
                    setMotion(MoveTo 210 151 self)
                )
            )
            (case 4
                (crater:init())
                (send (ScriptID(0 21)):
                    number(95)
                    play()
                )
                (self:cue())
            )
            (case 5
                (send gEgo:
                    loop(2)
                    cel(0)
                    cycleSpeed(1)
                    posn(210 161)
                )
                proc0_7()
                ShakeScreen(6)
                (send gEgo:setCycle(End self))
            )
            (case 6
                proc0_3()
                proc0_16(610 5)
                (self:dispose())
            )
        )
    )

)
(instance crater of View
    (properties
        x 210
        y 161
        description 1701
        view 34
    )
)
