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


(local
    local0
    newAct

)
(instance public rm007 of Rm
    (properties
        picture 7
        style 0
        horizon 10
        west 6
    )

    (method (init)
        (var temp0[50])
        (if (== global12 11)
            Load(128 258)
            Load(132 76)
        )(else
            (self:setLocales(700))
            Load(128 0)
            Load(128 6)
            Load(128 14)
            Load(128 17)
            Load(132 45)
        )
        (if (== global149 global11)
            Load(128 36)
            (motivator:init())
        )
        (if (== global12 6)
            (send gEgo:view(0))
        )(else
            Load(132 56)
        )
        (super:init())
        (self:setScript(rmScript))
    )


    (method (doit)
        (if ((== (send gEgo:view) 0) or (== (send gEgo:view) 6))
            (if ((== (send gEgo:onControl(0)) 4) or (== (send gEgo:onControl(0)) 5))
                (send gEgo:view(6))
            )(else
                (if (== (send gEgo:onControl(0)) 1)
                    (send gEgo:view(0))
                )
            )
        )
        (super:doit())
    )


    (method (handleEvent pEvent)
        (if ((<> (send pEvent:type) 128) or (send pEvent:claimed))
            return 
        )
        (if (Said('look>'))
            (if (Said('[<at,around,in][/area,!*]'))
                proc255_0(7 0)
            )(else
                (if (Said('<in,at,in,in/craft,stage,wreck'))
                    proc255_0(7 1)
                )(else
                    (if (Said('/craft,stage,wreck'))
                        proc255_0(7 2)
                    )(else
                        (if (Said('/head,android,artifact,helmet'))
                            proc255_0(7 3)
                        )(else
                            (if (Said('/eye[<broken,glass,android]'))
                                proc255_0(7 4)
                            )(else
                                (if (Said('<in,in,in/android,eye[<broken,glass]'))
                                    proc255_0(7 5)
                                )(else
                                    (if (Said('[<at,in,through,in]/grate'))
                                        proc255_0(7 6)
                                    )(else
                                        (if (Said('/whip,(programmer<dense,metallic)'))
                                            proc255_0(7 7)
                                        )(else
                                            (if (Said('[<down,below,at]/dirt,deck') or Said('<down,below,at[/dirt,deck]'))
                                                proc255_0(7 8)
                                            )(else
                                                (if (Said('/down,(edge[<deck])'))
                                                    (if ((send gEgo:inRect(32 156 192 189)))
                                                        proc255_0(7 9)
                                                    )(else
                                                        proc0_5()
                                                    )
                                                )
                                            )
                                        )
                                    )
                                )
                            )
                        )
                    )
                )
            )
        )(else
            (if (Said('craft'))
                proc255_0(7 10)
            )(else
                (if (Said('enter,climb,crawl,go[<on,in,in,through,up,in][/android,eye,head,pane[<broken,to]]'))
                    (if ((send gEgo:inRect(160 163 178 180)))
                        (rmScript:changeState(4))
                    )(else
                        proc255_0(7 11)
                    )
                )(else
                    (if (Said('enter,climb[<in,in,up,in]/grate[<android]'))
                        proc255_0(7 12)
                    )(else
                        (if (Said('manipulate,press,drag,hoist/head,android,helmet'))
                            proc255_0(7 13)
                        )(else
                            (if (Said('climb<down'))
                                proc255_0(7 14)
                            )(else
                                (if (Said('get/head'))
                                    proc255_0(7 15)
                                )(else
                                    (if (Said('give/head'))
                                        proc255_0(7 16)
                                    )(else
                                        (if (Said('break,remove/android,eye[<broken,glass]'))
                                            proc255_0(7 17)
                                        )
                                    )
                                )
                            )
                        )
                    )
                )
            )
        )
    )


    (method (newRoom newRoomNumber)
        (super:newRoom(newRoomNumber))
    )

)
(instance rmScript of Script
    (properties)

    (method (doit)
        (if ((== (send gEgo:onControl(0)) 2) and (<> (send gEgo:view) 17))
            (self:changeState(1))
        )
        (super:doit())
    )


    (method (changeState newState)
        (switch (= state newState)
            (case 0
                (if (== global12 11)
                    (self:setScript(grabScript))
                )(else
                    (send gEgo:setStep(-1 2))
                    (if (== global12 8)
                        (send gEgo:
                            view(14)
                            cel((send gEgo:lastCel()))
                            illegalBits(0)
                            posn(195 171)
                            setPri(13)
                            init()
                            cycleSpeed(1)
                        )
                        (self:changeState(6))
                    )(else
                        (send gEgo:
                            posn(9 113)
                            init()
                        )
                    )
                )
            )
            (case 1
                proc0_2()
                (send gEgo:
                    illegalBits(0)
                    view(17)
                    cel(0)
                    setLoop(2)
                    cycleSpeed(2)
                    setCycle(End self)
                    setMotion(0)
                )
            )
            (case 2
                (thump:
                    number(45)
                    play()
                )
                (send gEgo:
                    setCycle(0)
                    setStep(-1 15)
                    setMotion(MoveTo (send gEgo:x) 240 self)
                )
            )
            (case 3
                proc255_0(7 18)
                proc0_17(901 0 0 1)
                return 
            )
            (case 4
                proc0_2()
                (send gEgo:
                    illegalBits(0)
                    view(14)
                    cel(0)
                    posn(195 171)
                    setPri(13)
                    setCycle(End self)
                    setMotion(0)
                    cycleSpeed(1)
                )
            )
            (case 5
                (if (not global596)
                    = global596 1
                    (send global1:changeScore(5))
                )
                (send global2:newRoom(8))
            )
            (case 6
                (send gEgo:
                    cycleSpeed(1)
                    setCycle(Beg self)
                )
            )
            (case 7
                (thump:
                    number(56)
                    play()
                )
                proc0_3()
                (send gEgo:
                    view(0)
                    setLoop(-1)
                    setPri(-1)
                    posn(168 169)
                    loop(2)
                    cel(0)
                    setCycle(Walk)
                    setStep(3 2)
                    illegalBits(-32768)
                    moveSpeed(0)
                    cycleSpeed(0)
                )
            )
        )
    )

)
(instance motivator of Act
    (properties)

    (method (init)
        (super:init())
        (self:
            view(36)
            setLoop(0)
            setCel(0)
            setStep(1 1)
            illegalBits(0)
            x(
                (if (== global135 1)
                    217
                )(else
                    119
                )
)
            y(81)
            setPri(4)
            stopUpd()
        )
    )


    (method (handleEvent pEvent)
        (super:handleEvent(pEvent))
        (if ((<> (send pEvent:type) 128) or (send pEvent:claimed))
            return 
        )
        (if (Said('look>'))
            (if (Said('/motivator,artifact,device'))
                (if (global186)
                    proc255_0(7 19)
                )(else
                    proc255_0(7 20)
                )
            )(else
                (if (Said('/plug[<modular,8,spaceware]') or Said('/spaceware[<8]'))
                    proc255_0(7 21)
                )(else
                    (if (Said('[<down,below,at][/dirt,deck]'))
                        proc255_0(7 22)
                    )
                )
            )
        )(else
            (if (Said('remove,get,manipulate,press,roll,drag/motivator,artifact,device'))
                proc255_0(7 23)
            )(else
                (if (Said('(turn<on),begin/motivator,artifact,device'))
                    proc255_0(7 24)
                )(else
                    (if (Said('remove,press,drag,get/plug[<modular,8,spaceware]'))
                        proc255_0(7 25)
                    )
                )
            )
        )
    )

)
(instance grabScript of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                = newAct (Act:new())
                (send newAct:
                    name("Claw")
                    view(258)
                    setLoop(
                        (if (== global135 3)
                            2
                        )(else
                            0
                        )
)
                    setPri(5)
                    setStep(1 2)
                    x(
                        (if (global147)
                            202
                        )(else
                            105
                        )
)
                    y(-19)
                    illegalBits(0)
                    ignoreHorizon(1)
                    ignoreActors(1)
                    init()
                    setCycle(Fwd)
                    setMotion(MoveTo 
                        (if (global147)
                            202
                        )(else
                            105
                        )
 65 self)
                )
            )
            (case 1
                (Timer:set(self 2))
            )
            (case 2
                (if (== global135 3)
                    = global148 4
                    = global135 global147
                    (motivator:init())
                    = global149 global11
                    (send gLongSong:
                        number(76)
                        loop(1)
                        play()
                    )
                    (send global1:changeScore(-15))
                    proc0_10()
                    proc255_0(7 26)
                )(else
                    (if ((== global149 global11) and (== global135 global147))
                        (send newAct:setLoop(2))
                        (motivator:hide())
                        = global149 0
                        = global135 3
                        = global148 5
                        (send gLongSong:
                            number(76)
                            loop(1)
                            play()
                        )
                        (send global1:changeScore(15))
                        proc0_10()
                        proc255_0(7 27)
                    )(else
                        proc255_0(7 28)
                        = global148 4
                    )
                )
                (self:changeState(3))
            )
            (case 3
                (send newAct:
                    setLoop(
                        (if (== global135 3)
                            2
                        )(else
                            0
                        )
)
                    setMotion(MoveTo (send newAct:x) -19 self)
                )
            )
            (case 4
                (send global2:newRoom(11))
            )
        )
    )

)
(instance thump of Sound
    (properties
        number 56
        priority 5
    )
)
