(version 2)
(include "sci.sh")
(exports
    0 Room41
)
(use "Main")
(use "Class_255_0")
(use "Cycle")
(use "Game")
(use "Feature")
(script 41)



(instance public Room41 of Rm
    (properties
        picture 41
    )

    (method (init)
        = east 42
        = south 45
        = west 44
        = north 54
        = horizon 85
        (super:init())
        = global109 0
        = global591 0
        (send gEgo:init())
        (switch (global12)
            (case 54
                proc0_1()
                (send gEgo:
                    view(0)
                    posn((send gEgo:x) + horizon 2)
                )
            )
            (case 45
                proc0_1()
                = global104 0
                (send gEgo:
                    view(0)
                    posn((send gEgo:x) 188)
                )
            )
            (case 42
                proc0_1()
                (send gEgo:
                    view(0)
                    posn(318 (send gEgo:y))
                )
            )
            (case 44
                proc0_1()
                (send gEgo:
                    view(0)
                    posn(1 (send gEgo:y))
                )
            )
            (default 
                (send gEgo:
                    view(0)
                    posn(160 188)
                )
            )
        )
        (send gEgo:init())
        (self:setRegions(501))
        (switch (global110)
            (case 1
                (if (== Random(1 4) 3)
                    = gNewAct (Act:new())
                    (send gNewAct:
                        posn(1000 1000)
                        init()
                    )
                    = global114 Random(2 12)
                )
            )
            (case 2
                = gNewAct (Act:new())
                (send gNewAct:
                    posn(1000 1000)
                    init()
                )
                = global114 3
            )
        )
        (if ((send global5:contains(gNewAct)))
            (send gNewAct:
                view(106)
                setCycle(Walk)
                observeControl(2)
                posn(1000 1000)
                init()
            )
            (switch (global12)
                (case east
                    (send gNewAct:posn(359 130))
                )
                (case west
                    (send gNewAct:posn(-40 130))
                )
                (case south
                    (send gNewAct:posn(160 249))
                )
                (case north
                    (send gNewAct:posn(160 (+ horizon 2)))
                )
            )
            = global110 1
            (send (ScriptID(501 0)):notify(1))
        )(else
            (send (ScriptID(501 0)):notify(4))
        )
    )


    (method (doit)
        (super:doit())
    )


    (method (handleEvent pEvent)
        (if ((send pEvent:claimed))
            return 1
        )
        return 
            (if ((== (send pEvent:type) 128) and Said('look>'))
                (if ((Said('/area') or Said('/around')) or Said('[<around][/!*]'))
                    proc255_0(41 0)
                )(else
                    (if (Said('/dune'))
                        proc255_0(41 1)
                    )
                )
            )(else
                0
            )
    )


    (method (newRoom newRoomNumber)
        (if ((send global5:contains(gNewAct)) and (< (send gEgo:distanceTo(gNewAct)) 120))
            = global110 2
        )
        (if (not global155)
            (super:newRoom(newRoomNumber))
        )
    )

)
