(version 2)
(include "sci.sh")
(exports
    0 rm074
)
(use "Main")
(use "Class_255_0")
(use "Cycle")
(use "Game")
(use "User")
(use "Obj")
(script 74)


(local
    local0
    local1

)
(instance public rm074 of Rm
    (properties
        picture 74
        south 72
        west 73
    )

    (method (init)
        (var temp0[50])
        (User:
            canInput(1)
            canControl(1)
        )
        (self:setRegions(600))
        Load(128 68)
        Load(128 97)
        (super:init())
        (switch (gNorth)
            (case 72
                (send gEgo:
                    init()
                    illegalBits(16384)
                    setPri(14)
                    posn(225 187)
                )
            )
            (case 73
                (if (global255)
                    (send global2:setScript(UpStairs))
                )(else
                    (send gEgo:
                        posn(2 (send gEgo:y))
                        init()
                    )
                )
            )
            (case 75
                (if (global256)
                    (send gLongSong:
                        number(71)
                        loop(-1)
                        priority(0)
                        play()
                    )
                )(else
                    (send gLongSong:
                        number(51)
                        loop(-1)
                        priority(0)
                        play()
                    )
                )
                (send global2:setScript(DownLadder))
            )
        )
    )


    (method (doit)
        (var temp0)
        (super:doit())
        (if (local0)
            (send global2:newRoom(73))
        )
        (if (local1)
            (send global2:newRoom(75))
        )
        (if (== (send gEgo:view) 68)
            (if (> (send gEgo:y) 174)
                (send gEgo:setPri(13))
            )(else
                (send gEgo:setPri(-1))
            )
        )
        (if ((not (send global2:script) and (== (send gEgo:onControl()) 5)) and (<> (send gEgo:view) 68))
            (self:setScript(DownStairs))
        )
    )


    (method (handleEvent pEvent)
        (super:handleEvent(pEvent))
        (if ((<> (send pEvent:type) 128) or (send pEvent:claimed))
            return 
        )
        (if (Said('look>'))
            (if (Said('[/area,around]'))
                (if (== (send gEgo:view) 0)
                    proc255_0(74 0)
                )(else
                    proc255_0(74 1)
                )
            )(else
                (if (Said('/lava'))
                    proc255_0(74 2)
                )(else
                    (if (Said('/ladder'))
                        proc255_0(74 3)
                    )(else
                        (if (Said('/stair'))
                            proc255_0(74 4)
                        )(else
                            (if (Said('/banister'))
                                proc255_0(74 5)
                            )(else
                                (if (Said('/device,building,generator'))
                                    (if (not global256)
                                        (if (global170)
                                            proc255_0(74 6)
                                        )(else
                                            proc255_0(74 7)
                                        )
                                    )(else
                                        (if (global170)
                                            proc255_0(74 8)
                                        )(else
                                            proc255_0(74 9)
                                        )
                                    )
                                )(else
                                    (if (Said('/beam'))
                                        (if (not global256)
                                            (if (global170)
                                                proc255_0(74 10)
                                            )(else
                                                proc255_0(74 11)
                                            )
                                        )(else
                                            proc255_0(74 12)
                                        )
                                    )(else
                                        (if (Said('/pedestal'))
                                            proc255_0(74 13)
                                        )
                                    )
                                )
                            )
                        )
                    )
                )
            )
        )(else
            (if (Said('up,climb,(climb[<up])[/ladder]'))
                (if ((send gEgo:inRect(146 108 163 112)))
                    (send global2:setScript(UpLadder))
                )(else
                    proc255_0(74 14)
                )
            )
        )
    )


    (method (newRoom newRoomNumber)
        (if (not script)
            (if (local0)
                = global255 1
            )(else
                = global255 0
            )
            (if (global256)
                ++global593
            )
            (super:newRoom(newRoomNumber))
        )
    )

)
(instance DownStairs of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                proc0_2()
                (send gEgo:
                    setLoop(1)
                    illegalBits(0)
                    setMotion(MoveTo 88 216 self)
                )
            )
            (case 1
                = local0 1
                proc0_3()
                (send global2:setScript(0))
            )
        )
    )

)
(instance UpStairs of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                proc0_2()
                (send gEgo:
                    view(0)
                    posn(88 216)
                    setLoop(0)
                    setPri(14)
                    setStep(3 2)
                    illegalBits(0)
                    init()
                )
                = cycles 2
            )
            (case 1
                (send gEgo:setMotion(MoveTo 138 175 self))
            )
            (case 2
                (send gEgo:
                    setLoop(-1)
                    illegalBits(16384)
                )
                proc0_3()
                (send global2:setScript(0))
            )
        )
    )

)
(instance UpLadder of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                proc0_2()
                (send gEgo:illegalBits(0))
                proc0_10()
                (send gEgo:
                    posn(154 107)
                    view(97)
                    setLoop(0)
                    setMotion(MoveTo 154 65 self)
                )
            )
            (case 1
                (send gEgo:
                    posn(153 65)
                    setMotion(MoveTo 153 31 self)
                )
            )
            (case 2
                (send gEgo:
                    posn(152 31)
                    setMotion(MoveTo 152 13 self)
                )
            )
            (case 3
                (send gEgo:
                    posn(151 13)
                    setMotion(MoveTo 151 -2 self)
                )
            )
            (case 4
                proc0_3()
                = local1 1
                (send global2:setScript(0))
            )
        )
    )

)
(instance DownLadder of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                proc0_2()
                (send gEgo:
                    init()
                    posn(151 -2)
                    view(97)
                    illegalBits(0)
                    setLoop(0)
                    setMotion(MoveTo 151 13 self)
                )
            )
            (case 1
                (send gEgo:
                    posn(152 13)
                    setMotion(MoveTo 152 31 self)
                )
            )
            (case 2
                (send gEgo:
                    posn(153 31)
                    setMotion(MoveTo 153 65 self)
                )
            )
            (case 3
                (send gEgo:
                    posn(154 65)
                    setMotion(MoveTo 154 109 self)
                )
            )
            (case 4
                (send gEgo:
                    view(68)
                    setLoop(-1)
                    setStep(2 2)
                    illegalBits(-32768)
                )
                = cycles 2
            )
            (case 5
                (send gEgo:loop(3))
                proc0_3()
                (send global2:setScript(0))
            )
        )
    )

)
