(include "sci.sh")
(use "Main")
(use "Class_255_0")
(use "brain")
(use "SQRoom")
(use "PolyPath")
(use "Class_950_0")
(use "Obj")
(script 525)



(instance public rm525 of SQRoom
    (properties
        picture 525
        style 30
        north 510
        south 541
        west 520
        vanishingX 65336
        vanishingY 65256
    )

    (method (init)
        (switch (global12)
            (case north
                (self:setScript(enterScript 0 (brain:level)))
            )
            (case 541
                (self:setScript(enterScript 0 0))
            )
            (default 
                proc0_3()
            )
        )
        (send gEgo:init())
        (self:setRegions(704))
        (super:init())
        (switch ((brain:level))
            (case 2
                (brain:
                    makePolygon(0 132 57 132 91 189 0 189)
                    makePolygon(65456 38 46 112 65456 112)
                    makePolygon(0 0 319 0 319 189 135 189)
                )
            )
            (case 3
                (brain:
                    makePolygon(0 0 102 0 117 24 0 24)
                    makePolygon(120 0 319 0 319 82 227 22 143 22)
                    makePolygon(65486 37 227 37 390 164 208 164 128 79 65486 76)
                    makePolygon(0 97 124 97 194 183 319 183 319 189 0 189)
                )
            )
        )
        (send (ScriptID(704 4)):
            x(6)
            y(106)
            nsLeft(2)
            nsTop(103)
            nsBottom(109)
            nsRight(11)
            sightAngle(90)
            init()
        )
        (send (ScriptID(704 5)):
            x(70)
            y(63)
            nsLeft(63)
            nsTop(58)
            nsBottom(69)
            nsRight(77)
            sightAngle(90)
            init()
        )
        (roomFeature:init())
    )


    (method (doit)
        (super:doit())
        (if (== (brain:level) 3)
            (if ((send gEgo:inRect(0 0 64 40)))
                (send gEgo:setPri(4))
            )(else
                (send gEgo:setPri(-1))
            )
        )
        (if (script)
        )(else
            (if (proc0_5(gEgo 4))
                (self:setScript(oSS 0 4))
            )(else
                (if (proc0_5(gEgo 16))
                    (self:setScript(oSS 0 16))
                )(else
                    (if (proc0_5(gEgo 32) and (== (brain:level) 2))
                        (self:setScript(exitScript))
                    )(else
                        (if (proc0_5(gEgo 8))
                            (if (== (brain:level) 3)
                                (brain:exitDir(315))
                            )(else
                                (brain:exitDir(150))
                            )
                        )
                    )
                )
            )
        )
    )

)
(instance exitScript of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                proc0_2()
                (send gEgo:setMotion(PolyPath 65528 -1 self))
            )
            (case 1
                (send global2:newRoom(510))
                (self:dispose())
            )
        )
    )

)
(instance enterScript of Script
    (properties)

    (method (changeState newState)
        (var temp0[2], temp2, temp3, temp4, temp5)
        (switch (= state newState)
            (case 0
                proc0_2()
                (switch (register)
                    (case 0
                        = temp2 150
                        = temp3 240
                        = temp4 113
                        = temp5 174
                    )
                    (case 3
                        = temp2 95
                        = temp3 65528
                        = temp4 134
                        = temp5 24
                    )
                    (default 
                        = temp2 65528
                        = temp3 -1
                        = temp4 32
                        = temp5 48
                    )
                )
                (send gEgo:
                    x(temp2)
                    y(temp3)
                    setMotion(PolyPath temp4 temp5 self)
                )
            )
            (case 1
                proc0_3()
                (self:dispose())
            )
        )
    )

)
(instance oSS of Script
    (properties)

    (method (changeState newState)
        (var temp0, temp1)
        (switch (= state newState)
            (case 0
                (if ((send gEgo:mover))
                    = temp0 (send ((send gEgo:mover)):x)
                    = temp1 (send ((send gEgo:mover)):y)
                )(else
                    = temp0 (= temp1 0)
                )
                proc0_2()
                (if ((> temp0 319) or (== temp0 0))
                    (if (== register 16)
                        (send gEgo:setMotion(PolyPath 294 173 self))
                    )(else
                        (send gEgo:setMotion(PolyPath 308 87 self))
                    )
                )(else
                    (send gEgo:setMotion(PolyPath temp0 temp1 self))
                )
            )
            (case 1
                proc0_3()
                (self:dispose())
            )
        )
    )

)
(instance roomFeature of Feature
    (properties
        nsBottom 200
        nsRight 320
        description "super brain computer"
        lookStr "This maze of cables, ducts, pipes, and glowing panels give the super brain computer a sense of being alive..."
    )

    (method (doVerb param1 param2)
        (switch (param1)
            (case 4
                Print("You'd better not.  Something might answer.")
            )
            (default 
                (super:doVerb(param1 rest param2))
            )
        )
    )

)
