(include "sci.sh")
(use "Main")
(use "eureka")
(use "Print")
(use "Sound")
(use "Sounds")
(use "Obj")
(script 210)



(class eureka of Rgn
    (properties
        script 0
        number 0
        modNum -1
        noun 0
        timer 0
        keep 0
        initialized 0
        state 0
        destination 0
        curLocation 0
        prevLocation 0
        warnings 0
        hits 0
        gdoor 0
        garbage 0
        puke 0
        damaged 0
    )

    (method (init param1)
        (super:init(rest param1))
        (if (not proc999_5(gGModNum 106 107 200 201 202 203 204 205 206 212 213 215 222 225 226 228 230 240 250 280 290 295))
            (self:curLocation(gEurekaCurLocation))
            (if (proc999_5(gEurekaCurLocation 5 6 3 8 15 14))
                (eureka:state(3))
            )
        )
    )


    (method (doit param1)
        (if ((== gEurekaCurLocation 15) and not (eureka:script))
            (eureka:setScript(sAsteroidNoise))
        )
        (super:doit(rest param1))
    )


    (method (dispose param1)
        (hailSound:dispose())
        (super:dispose(rest param1))
    )


    (method (newRoom param1)
        = keep proc999_5(param1 106 107 200 201 202 203 204 205 206 212 213 215 222 225 226 228 230 240 250 280 290 295)
        = initialized 0
        (super:newRoom(param1))
    )

)
(instance public sLiteSpeedTimer of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                (= seconds register  )
            )
            (case 1
                ((eureka:timer(1)) (self:dispose()) )
            )
        )
    )

)
(instance hailSound of Sound
    (properties)
)
(instance sMessage of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                (
                (if (not proc999_5(gModNum 226 228))
                    (send gSQ5:handsOff())
                )
 (hailSound:
                    number(234)
                    loop(1)
                    play(self)
                )
  )
            )
            (case 1
                ((send gTestMessager:say(11 0 14 5 self 201))  )
            )
            (case 2
                (
                (if (not proc999_5(gModNum 226 228))
                    (send gSQ5:handsOn())
                )
 (self:dispose()) )
            )
        )
    )

)
(instance public sApproachTimer of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                (= seconds register  )
            )
            (case 1
                (
                (if (== gModNum 201)
                    = cycles 1
                    (eureka:timer(2))
                    proc0_3(115)
                )(else
                    (if ((send gRoom:script))
                        = state (- state 2)
                        = register 5
                        = cycles 1
                    )(else
                        (if (proc0_1(37))
                            = gEurekaCurLocation 14
                            (eureka:
                                timer(0)
                                warnings(0)
                                state(3)
                                destination(0)
                                curLocation(14)
                            )
                            proc0_3(37)
                            (if (not proc0_1(39))
                                (send client:setScript(sBlowUpEureka 0 12))
                                (self:dispose())
                            )(else
                                = cycles 1
                            )
                        )(else
                            (if (== gModNum 200)
                                (if (>= (eureka:warnings) 2)
                                    (send gTestMessager:say(11 0 14 3 self 201))
                                    (eureka:
                                        timer(0)
                                        warnings(0)
                                        state(1)
                                        destination(0)
                                    )
                                    proc0_3(38)
                                )(else
                                    (send gTestMessager:say(11 0 14 1 self 201))
                                    (eureka:timer(2))
                                    = register 30
                                    = state (- state 2)
                                )
                            )(else
                                (send gRoom:setScript(sMessage self))
                                proc0_2(115)
                                (eureka:timer(2))
                                = register 30
                                = state (- state 2)
                            )
                        )
                    )
                )
 )
            )
            (case 2
                ((self:dispose()) )
            )
        )
    )

)
(instance public sGoliathTimer of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                (= seconds register  )
            )
            (case 1
                (
                (if (== gModNum 201)
                    (eureka:timer(5))
                    = cycles 1
                )(else
                    (if ((send gRoom:script))
                        = state (- state 2)
                        = register 5
                        = cycles 1
                    )(else
                        (send client:setScript(sBlowUpEureka 0 12))
                        (self:dispose())
                    )
                )
 )
            )
            (case 2
                ((self:dispose()) )
            )
        )
    )

)
(instance public sWD40Timer of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                (= seconds register  )
            )
            (case 1
                (
                (if (== gModNum 201)
                    (eureka:timer(3))
                    = cycles 1
                )(else
                    (if ((send gRoom:script))
                        = register 5
                        = state (- state 2)
                        = cycles 1
                    )(else
                        (if (== (eureka:warnings) 0)
                            (if (== gModNum 200)
                                (send gTestMessager:say(11 0 14 1 self 201))
                            )(else
                                (send gTestMessager:say(11 0 14 5 self 201))
                            )
                            (eureka:
                                timer(3)
                                warnings(0)
                            )
                            = register 30
                            = state (- state 2)
                        )(else
                            (send client:setScript(sBlowUpEureka 0 6))
                            (self:dispose())
                        )
                    )
                )
 )
            )
            (case 2
                ((self:dispose()) )
            )
        )
    )

)
(instance public sTrashRunsTimer of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                (= seconds register  )
            )
            (case 1
                (proc921_0("You didn't complete your mission in time! You're fired!") = cycles 1  )
            )
            (case 2
                ((self:dispose()) )
            )
        )
    )

)
(instance public sEggTimer of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                (proc0_2(84) (send gSq5IconBar:disable(4)) = global136 600 = cycles 1  )
            )
            (case 1
                (= seconds 1  )
            )
            (case 2
                (
                (if ((proc0_1(61) and (<= global136 180)) and (== gModNum 201))
                    (send gSQ5:handsOff())
                    (send client:setScript(ScriptID(208 1)))
                    (self:dispose())
                )
 
                (if (<> gModNum 201)
                    --global136
                )
 
                (if (global136)
                    (if (== global136 60)
                        (send gSq5Music1:
                            number(43)
                            loop(-1)
                            play()
                        )
                    )
                    = state (- state 2)
                )
 = cycles 1  )
            )
            (case 3
                ((send client:setScript(sBlowUpEureka 0 11)) (self:dispose()) )
            )
        )
    )

)
(instance public sBlowUpEureka of Script
    (properties)

    (method (doit param1)
        (switch (state)
            (case 0
                (
                (if (>= Joystick(2) 63)
                    (self:cue())
                )
 )
            )
        )
        (super:doit(rest param1))
    )


    (method (changeState newState)
        (switch (= state newState)
            (case 0
                (Joystick(3) Joystick(0 2100 1) (send gEgo:hide()) (send gSq5Music2:
                    number(203)
                    setLoop(1)
                    play()
                )
 ShakeScreen(6 3)  )
            )
            (case 1
                (proc0_9(register) (self:dispose()) )
            )
        )
    )


    (method (cue param1)
        (self:changeState((+ state 1) rest param1))
    )

)
(instance public sBlobTimer of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                (= seconds register  )
            )
            (case 1
                (
                (if ((== gModNum 201) and (< (eureka:puke) 4))
                    (eureka:timer(6))
                    (self:dispose())
                )(else
                    (if ((send gRoom:script))
                        = state (- state 2)
                        = register 5
                        = cycles 1
                    )(else
                        (if (== (eureka:puke) 1)
                            (send client:setScript(sBlowUpEureka 0 43))
                            (self:dispose())
                        )(else
                            (if (>= (eureka:puke) 2)
                                (send client:setScript(sBlowUpEureka 0 7))
                                (self:dispose())
                            )(else
                                = cycles 1
                            )
                        )
                    )
                )
 )
            )
            (case 2
                ((self:dispose()) )
            )
        )
    )

)
(instance theMusic5 of Sound
    (properties)
)
(instance public sAsteroidNoise of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                (= seconds 4  )
            )
            (case 1
                (ShakeScreen(1 Random(1 3)) (theMusic5:
                    number(202)
                    setLoop(1)
                    play(80)
                )
 = seconds Random(2 20)  )
            )
            (case 2
                (
                (if (not (eureka:destination))
                    = state (- state 2)
                )
 = cycles 1  )
            )
            (case 3
                ((theMusic5:stop()) (self:dispose()) )
            )
        )
    )

)
