(version 2)
(include "sci.sh")
(exports
    0 Room49
)
(use "Main")
(use "Class_255_0")
(use "Sound")
(use "Cycle")
(use "Game")
(use "Feature")
(use "Obj")
(script 49)


(local
    local0
    newSound

)
(instance public Room49 of Rm
    (properties
        picture 49
    )

    (method (init)
        = east 50
        = west 52
        = north 45
        = south 53
        = horizon 72
        = global109 0
        Load(132 31)
        Load(132 32)
        Load(128 63)
        (super:init())
        (lightning:init())
        (send gEgo:init())
        proc0_1()
        = global104 0
        (switch (global12)
            (case 50
                (if (< (send gEgo:y) 94)
                    (send gEgo:
                        view(0)
                        posn(318 (send gEgo:y))
                    )
                )(else
                    (if (== global104 0)
                        (send gEgo:
                            view(63)
                            posn(317 (send gEgo:y))
                        )
                    )
                )
            )
            (case 45
                proc0_1()
                (send gEgo:
                    view(63)
                    posn((send gEgo:x) + horizon 2)
                )
            )
            (case 52
                (switch (global104)
                    (case 0
                        (send gEgo:
                            posn(1 (send gEgo:y))
                            view(63)
                            setPri(-1)
                        )
                    )
                    (case 1
                        proc0_1()
                        (send gEgo:
                            posn(1 80)
                            view(0)
                        )
                    )
                    (case 2
                        proc0_1()
                        (send gEgo:
                            posn(1 80)
                            view(0)
                        )
                    )
                )
            )
            (case 53
                proc0_1()
                proc0_3()
                (send gEgo:
                    view(0)
                    posn((send gEgo:x) 188)
                )
            )
            (case 40
                proc0_1()
                = global100 0
                proc0_3()
                (send gEgo:
                    view(63)
                    posn(184 174)
                    loop(2)
                    init()
                )
            )
            (case 14
                (send gEgo:view(63))
                (send global2:setScript(Actions))
                (send gLongSong:
                    owner(-1)
                    number(22)
                    priority(1)
                    loop(-1)
                    play()
                )
                = global100 1
            )
            (default 
                (send gEgo:
                    view(63)
                    posn(160 187)
                    init()
                )
            )
        )
        (if ((((<> global155 1) and (<> global12 45)) and (send gEgo:inRect(-5 0 324 94))) and (<> (send global2:script) termCatch))
            (send gEgo:view(0))
        )(else
            (if (<> (send global2:script) termCatch)
                (send gEgo:view(63))
            )
        )
        (self:setRegions(501))
    )


    (method (doit)
        (super:doit())
        (if (<> global11 global13)
            return 
        )
        (if ((((== global110 1) or (== global110 2)) and not (send global5:contains(gNewAct))) and (& (send gEgo:onControl(1)) $0004))
            (send global2:setScript(termCatch))
        )
        (if (((& (send gEgo:onControl()) $4000) and (== script 0)) and not (send global5:contains(gNewAct)))
            (send global2:newRoom(14))
        )
    )


    (method (handleEvent pEvent)
        (if ((send pEvent:claimed))
            return 1
        )
        return 
            (if (== (send pEvent:type) 128)
                (if (Said('look>'))
                    (if ((Said('/area') or Said('/around')) or Said('[<around][/!*]'))
                        proc255_0(49 0)
                    )(else
                        (if (Said('/craft,aluminum,aluminum'))
                            proc255_0(49 1)
                        )
                    )
                )(else
                    (if (Said('enter/craft'))
                        proc255_0(49 2)
                    )
                )
            )(else
                0
            )
    )


    (method (newRoom newRoomNumber)
        proc0_1()
        DisposeScript(988)
        (if (== newRoomNumber 14)
            (send gLongSong:fade())
        )
        (if (not global155 or (== newRoomNumber 40))
            (super:newRoom(newRoomNumber))
        )
    )

)
(instance Actions of Script
    (properties)

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


    (method (changeState newState)
        (switch (= state newState)
            (case 0
                proc0_2()
                (send gEgo:
                    posn(157 143)
                    setMotion(MoveTo 184 174 self)
                )
            )
            (case 1
                proc255_0(49 3)
                proc0_10()
                (if (== global118 0)
                    = global118 1
                    proc255_0(49 4 91)
                    = seconds 5
                )(else
                    proc0_3()
                )
            )
            (case 2
                proc0_12()
                (send global2:newRoom(40))
            )
        )
    )

)
(instance flash of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                = seconds Random(10 20)
            )
            (case 1
                (lightning:
                    cel(255)
                    setCycle(End self)
                )
            )
            (case 2
                (lightning:cel(0))
                = seconds Random(2 5)
            )
            (case 3
                (thunder:
                    priority(2)
                    number(Random(31 32))
                    play(self)
                )
            )
            (case 4
                (self:init())
            )
        )
    )

)
(instance termCatch of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                proc0_2()
                = gNewAct (Act:new())
                (send gNewAct:
                    view(106)
                    setPri((send gEgo:priority))
                    observeControl(16384)
                    setLoop(8)
                    setCycle(Fwd)
                    init()
                )
                (send gNewAct:posn((send gEgo:x) (send gEgo:y)))
                = newSound (Sound:new())
                (send newSound:
                    number(97)
                    loop(-1)
                    priority(99)
                    play()
                )
                (send gEgo:
                    illegalBits(0)
                    ignoreActors()
                    hide()
                )
                = seconds 7
            )
            (case 1
                (send newSound:stop())
                proc0_17(901 0 14 16)
            )
        )
    )

)
(instance lightning of Prop
    (properties
        y 54
        x 48
        view 69
        loop 4
    )

    (method (init)
        (super:init())
        (self:setScript(flash))
    )

)
(instance thunder of Sound
    (properties)
)
