(include "sci.sh")
(use "Main")
(use "Class_255_0")
(use "Sound")
(use "Cycle")
(use "Game")
(use "TheMenuBar")
(use "PV")
(use "Obj")
(script 222)


(local
    local0
    openMusicSignal
    local2[3]
    local5
    local6
    local7
    local8
    local9
    local10
    local11[2]
    local13
    local14[5]
    local19
    local20[4]
    newProp
    local25
    local26[2]
    newProp_2
    newProp_3
    local30
    local31[50]

)
(instance openMusic of Sound
    (properties)
)
(instance wave1 of Prop
    (properties)
)
(instance wave2 of Prop
    (properties)
)
(instance waves of List
    (properties)
)
(instance public Room222 of Rm
    (properties
        picture 25
        style 8
    )

    (method (init)
        Load(rsVIEW 757)
        Load(rsVIEW 755)
        Load(rsVIEW 771)
        Load(rsVIEW 753)
        Load(rsVIEW 765)
        Load(rsPIC 25)
        Load(rsPIC 205)
        Load(rsPIC 209)
        (super:init())
        = global190 0
        (send global2:setScript(RoomActions))
    )


    (method (dispose)
        (send gSounds:eachElementDo(172))
        (super:dispose())
    )


    (method (handleEvent pEvent)
        (if ((== (send pEvent:type()) 4) and (== (send pEvent:message()) 15360))
            = local0 DoSound(4)
            DoSound(4 not local0)
        )(else
            (if ((== (send pEvent:type()) 4) and (== (send pEvent:message()) 13))
                (send gGame:restart())
            )
        )
    )


    (method (newRoom param1)
        (TheMenuBar:draw())
        proc0_23()
        (if (IsObject(waves))
            (waves:dispose())
        )
        = global22 global26
        (super:newRoom(param1))
    )

)
(instance RoomActions of Script
    (properties)

    (method (doit)
        (var temp0[40])
        (super:doit())
        (if (global215)
            Display(Format(@temp0 222 0 state (openMusic:prevSignal()) openMusicSignal) 100 0 0 103 15)
        )
    )


    (method (changeState newState)
        (var temp0[20])
        (switch (= state newState)
            (case 0
                ((openMusic:
                    number(106)
                    loop(6)
                    play(highState)
                )
 (setupRoom25:doit()) = newProp (Prop:new()) (send newProp:
                    posn(229 126)
                    view(680)
                    loop(0)
                    cel(0)
                    setCycle(CT 5 1 self)
                    init()
                )
  )
            )
            (case 1
                ((send newProp:
                    setLoop(0)
                    setCycle(End self)
                )
 = local13 (send ((Prop:new())):
                        view(757)
                        posn(229 126)
                        setLoop(0)
                        cel(0)
                        init()
                        yourself()
                    )
  )
            )
            (case 2
                ((send newProp:dispose()) = local19 (send ((Act:new())):
                        view(755)
                        loop(0)
                        posn(65516 (+ (send global2:horizon()) 40))
                        setPri(15)
                        illegalBits(0)
                        ignoreActors()
                        cycleSpeed(0)
                        setCycle(Fwd)
                        setMotion(MoveTo 260 126)
                        init()
                        yourself()
                    )
 = local9 (send ((Act:new())):
                        view(110)
                        loop(0)
                        posn(65506 (+ (send global2:horizon()) 20))
                        illegalBits(0)
                        setPri(14)
                        ignoreActors()
                        cycleSpeed(0)
                        setCycle(Fwd)
                        setMotion(MoveTo 260 70)
                        init()
                        yourself()
                    )
 = local10 (send ((Act:new())):
                        view(114)
                        loop(0)
                        posn(65496 (+ (send global2:horizon()) 2))
                        setPri(14)
                        ignoreActors()
                        illegalBits(0)
                        cycleSpeed(0)
                        setCycle(Fwd)
                        setMotion(MoveTo 260 85 self)
                        init()
                        yourself()
                    )
  )
            )
            (case 3
                ((send local9:observeBlocks(fairyBlock)) (send local10:observeBlocks(fairyBlock)) (send local13:dispose()) = local13 (send ((Prop:new())):
                        view(757)
                        posn(229 126)
                        setLoop(0)
                        setCel(1)
                        init()
                        yourself()
                    )
 (send local19:
                    setLoop(3)
                    cel(0)
                    stopUpd()
                )
 (send local9:setMotion(Wander)) (send local10:setMotion(Wander)) = local25 Print(222 1 160 "Genesta" 134 100 161 140 200 172) (Timer:setReal(self 12))  )
            )
            (case 4
                ((send local13:dispose()) (send local19:hide()) proc0_23() 
                (if (global190)
                    (send newProp_2:dispose())
                    (send newProp_3:dispose())
                    (waveActions:changeState(10))
                )
 (send local9:dispose()) (send local10:dispose()) (setupRoom209:doit()) = local13 (send ((Act:new())):
                        view(771)
                        loop(0)
                        posn(107 79)
                        cel(0)
                        setPri(15)
                        ignoreActors()
                        stopUpd()
                        forceUpd()
                        init()
                        yourself()
                    )
 (send ((View:new())):
                    view(771)
                    loop(1)
                    cel(3)
                    posn(192 78)
                    setPri(15)
                    ignoreActors()
                    addToPic()
                )
 (Timer:setReal(self 1))  )
            )
            (case 5
                (proc0_23() = local25 Print(222 2 134 50 161 140 200 166 172) (Timer:setReal(self 9))  )
            )
            (case 6
                (proc0_23() (send local13:
                    cycleSpeed(2)
                    setCycle(Fwd)
                    show()
                )
 = local25 Print(222 3 160 "Rosella" 134 1 161 140 200 172) (Timer:setReal(self 12))  )
            )
            (case 7
                (proc0_23() (send local8:dispose()) (send local19:dispose()) (send local13:hide()) (send global2:drawPic(205)) (send ((View:new())):
                    view(765)
                    setLoop(0)
                    posn(200 120)
                    setPri(0)
                    ignoreActors()
                    addToPic()
                )
 = local6 (send ((Act:new())):
                        view(765)
                        loop(2)
                        posn(200 100)
                        setPri(14)
                        ignoreActors()
                        cycleSpeed(3)
                        setCycle(Fwd)
                        init()
                        yourself()
                    )
 (blinkEyes:changeState(0)) = local25 Print(222 4 160 "Genesta" 134 100 140 140 200 172) (Timer:setReal(self 11))  )
            )
            (case 8
                (proc0_23() = local25 Print(222 5 160 "Genesta" 134 70 140 140 239 172) (Timer:setReal(self 11))  )
            )
            (case 9
                ((blinkEyes:changeState(4)) (Timer:setReal(self 14))  )
            )
            (case 10
                (proc0_23() (blinkEyes:changeState(7)) (send local6:dispose()) (setupRoom209:doit()) (send local13:
                    view(771)
                    loop(0)
                    cel(0)
                    posn(107 79)
                    setPri(15)
                    ignoreActors()
                    cycleSpeed(2)
                    show()
                    stopUpd()
                    forceUpd()
                )
 = local19 (send ((Act:new())):
                        view(771)
                        loop(1)
                        posn(192 78)
                        setPri(15)
                        ignoreActors()
                        cycleSpeed(2)
                        setCycle(Fwd)
                        init()
                        yourself()
                    )
 (Timer:setReal(self 2))  )
            )
            (case 11
                (proc0_23() = local25 Print(222 6 160 "Genesta" 134 100 140 140 200 172) (Timer:setReal(self 13))  )
            )
            (case 12
                (proc0_23() = local25 Print(222 7 160 "Genesta" 134 100 140 140 200 172) (Timer:setReal(self 9))  )
            )
            (case 13
                (proc0_23() (send local19:
                    setCel(0)
                    stopUpd()
                )
 (send local13:setCycle(Fwd)) = local25 Print(222 8 160 "Rosella" 134 1 140 140 200 172) (Timer:setReal(self 9))  )
            )
            (case 14
                (proc0_23() (send local13:
                    setCel(0)
                    stopUpd()
                )
 (send local19:setCycle(Fwd)) = local25 Print(222 9 160 "Genesta" 134 100 140 140 200 172) (Timer:setReal(self 14))  )
            )
            (case 15
                (proc0_23() (send local8:dispose()) (send local13:dispose()) (send local19:dispose()) (send global2:drawPic(205)) (send ((View:new())):
                    view(753)
                    setLoop(0)
                    posn(50 120)
                    setPri(0)
                    ignoreActors()
                    addToPic()
                )
 = local6 (send ((Act:new())):
                        view(753)
                        loop(2)
                        posn(50 95)
                        setPri(14)
                        ignoreActors()
                        cycleSpeed(3)
                        setCycle(Fwd)
                        init()
                        yourself()
                    )
 (rosellaBlinks:changeState(0)) proc0_23() = local25 Print(222 10 160 "Rosella" 134 1 140 140 200 172) (Timer:setReal(self 9))  )
            )
            (case 16
                (proc0_23() (send local6:hide()) = local25 Print(222 11 160 "Genesta" 134 100 140 140 200 172) (Timer:setReal(self 12))  )
            )
            (case 17
                (proc0_23() (send local6:show()) = local25 Print(222 12 160 "Rosella" 134 1 140 140 200 172) (Timer:setReal(self 14))  )
            )
            (case 18
                (proc0_23() (rosellaBlinks:changeState(4)) (send gCast:eachElementDo(172)) (setupRoom25:doit()) = local19 (send ((Act:new())):
                        view(755)
                        loop(4)
                        posn(260 126)
                        cel(0)
                        setPri(15)
                        illegalBits(0)
                        ignoreActors()
                        cycleSpeed(5)
                        init()
                        yourself()
                    )
 = local9 (send ((Act:new())):
                        view(110)
                        loop(0)
                        posn(260 70)
                        illegalBits(0)
                        setPri(14)
                        ignoreActors()
                        cycleSpeed(0)
                        setMotion(Wander)
                        setCycle(Fwd)
                        observeBlocks(fairyBlock)
                        init()
                        yourself()
                    )
 = local10 (send ((Act:new())):
                        view(114)
                        loop(0)
                        posn(260 85)
                        setPri(14)
                        ignoreActors()
                        illegalBits(0)
                        cycleSpeed(0)
                        setMotion(Wander)
                        setCycle(Fwd)
                        observeBlocks(fairyBlock)
                        init()
                        yourself()
                    )
 = local13 (send ((Act:new())):
                        view(757)
                        setLoop(0)
                        posn(229 126)
                        cel(1)
                        setPri(14)
                        init()
                        yourself()
                    )
 (Timer:setReal(self 2))  )
            )
            (case 19
                (proc0_23() = local25 Print(222 13 160 "Genesta" 134 100 161 140 200 172) (Timer:setReal(self 7))  )
            )
            (case 20
                ((send local19:setCycle(End)) (Timer:setReal(self 7))  )
            )
            (case 21
                (proc0_23() = local25 Print(222 14 160 "Genesta" 134 80 161 140 220 172) (send local19:
                    loop(3)
                    setCycle(Fwd)
                )
 (Timer:setReal(self 11))  )
            )
            (case 22
                (proc0_23() = local25 Print(222 15 160 "Genesta" 134 80 161 140 220 172) (Timer:setReal(self 10))  )
            )
            (case 23
                (proc0_23() (send local19:
                    loop(2)
                    setCycle(End self)
                )
  )
            )
            (case 24
                (= newProp (send ((Act:new())):
                        view(770)
                        loop(0)
                        cel(0)
                        posn((+ (send local13:x()) 6) (send local13:y()))
                        ignoreActors()
                        setCycle(End self)
                        cycleSpeed(2)
                        setPri(15)
                        init()
                        yourself()
                    )
  )
            )
            (case 25
                ((send newProp:
                    setLoop(1)
                    setCycle(End self)
                )
 (send local13:
                    loop(1)
                    forceUpd()
                )
  )
            )
            (case 26
                ((send newProp:dispose()) proc0_23() = local25 Print(222 16 160 "Rosella" 134 1 161 140 200 172) (send local13:
                    loop(2)
                    setCycle(End)
                    cycleSpeed(4)
                    cel(0)
                )
 (send local19:
                    loop(3)
                    stopUpd()
                    forceUpd()
                )
 (Timer:setReal(self 10))  )
            )
            (case 27
                (proc0_23() = local25 Print(222 17 160 "Genesta" 134 80 161 140 220 172) (Timer:setReal(self 9))  )
            )
            (case 28
                (proc0_23() (send local19:
                    setMotion(MoveTo 65506 + (send global2:horizon()) 1)
                    cycleSpeed(0)
                    setCycle(Fwd self)
                )
 (send local9:ignoreBlocks(fairyBlock)) (send local10:ignoreBlocks(fairyBlock)) (send local9:setMotion(MoveTo 65506 (+ (send global2:horizon()) 1))) (send local10:setMotion(MoveTo 65506 (+ (send global2:horizon()) 1))) proc0_23() = local25 Print(222 18 160 "Genesta" 134 200 161 172) (Timer:setReal(self 7))  )
            )
            (case 29
                ((send local13:
                    setLoop(1)
                    cel(0)
                    forceUpd()
                )
 (Timer:setReal(self 13))  )
            )
            (case 30
                (proc0_23() = local25 Print(222 19 134 -1 161 172) (Timer:setReal(self 4))  )
            )
            (case 31
                (
                (if ((((== openMusicSignal 127) and (== (openMusic:prevSignal()) 93)) or (== (openMusic:signal()) -1)) or ((== (openMusic:prevSignal()) (openMusic:signal())) and (== (openMusic:signal()) 127)))
                    proc0_23()
                    = seconds 5
                )(else
                    --state
                    = cycles 1
                )
 )
            )
            (case 32
                ((openMusic:dispose()) (send gGame:restart()) )
            )
        )
    )

)
(instance stopRosella of Code
    (properties)

    (method (doit)
        (send local13:stopUpd())
    )

)
(instance hideRosella of Code
    (properties)

    (method (doit)
        (send local13:hide())
    )

)
(instance gotHere of Code
    (properties)

    (method (doit)
        Print(222 20)
    )

)
(instance blinkEyes of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                (= local7 (send ((Act:new())):
                        view(765)
                        loop(3)
                        setCel(0)
                        posn(201 68)
                        setPri(14)
                        cycleSpeed(2)
                        ignoreActors()
                        hide()
                        init()
                        yourself()
                    )
 (self:changeState(1))  )
            )
            (case 1
                ((send local7:hide()) (Timer:setReal(self Random(4 7)))  )
            )
            (case 2
                ((send local7:
                    show()
                    setCycle(End self)
                )
  )
            )
            (case 3
                ((self:changeState(1))  )
            )
            (case 4
                (
                (if (timer)
                    (send timer:dispose())
                )
 (send local7:show()) (send local7:
                    setLoop(1)
                    setCycle(End self)
                )
  )
            )
            (case 5
                ((send local7:
                    setLoop(3)
                    hide()
                )
 = local5 (send ((Act:new())):
                        view(765)
                        setLoop(4)
                        init()
                        yourself()
                    )
 (send local5:
                    cel(2)
                    setCel()
                    posn(+ (send local7:x()) 9 + (send local7:y()) 6)
                    setPri(15)
                    ignoreActors()
                    setStep(0 1)
                    setMotion(MoveTo + (send local7:x()) 9 + (send local7:y()) 30 self)
                )
  )
            )
            (case 6
                ((send local5:dispose()) (self:changeState(1))  )
            )
            (case 7
                ((send local7:dispose()) )
            )
        )
    )

)
(instance rosellaBlinks of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                (= local7 (send ((Act:new())):
                        view(753)
                        loop(1)
                        setCel(0)
                        posn(50 65)
                        setPri(14)
                        cycleSpeed(5)
                        ignoreActors()
                        init()
                        yourself()
                    )
 (self:changeState(1))  )
            )
            (case 1
                ((send local7:hide()) (Timer:setReal(self Random(4 7)))  )
            )
            (case 2
                ((send local7:
                    show()
                    setCycle(End self)
                )
  )
            )
            (case 3
                ((self:changeState(1))  )
            )
            (case 4
                (
                (if (timer)
                    (send timer:dispose())
                )
 )
            )
        )
    )

)
(instance setupRoom209 of Code
    (properties)

    (method (doit)
        (send global2:drawPic(209))
        (send ((View:new())):
            view(771)
            cel(0)
            loop(2)
            posn(165 170)
            ignoreActors()
            setPri(1)
            addToPic()
        )
        = local8 (send ((Act:new())):
                view(771)
                loop(3)
                posn(152 105)
                setPri(14)
                ignoreActors()
                cycleSpeed(0)
                setCycle(Fwd)
                init()
                yourself()
            )
    )

)
(instance setupRoom25 of Code
    (properties)

    (method (doit)
        (send global2:drawPic(25))
        (if (global190)
            = newProp_2 (Prop:new())
            = newProp_3 (Prop:new())
            (send newProp_2:
                view(666)
                loop(6)
                cel(1)
                posn(254 183)
                setPri(0)
                ignoreActors()
                setCycle(Fwd)
                init()
            )
            (send newProp_3:
                view(666)
                loop(7)
                cel(1)
                posn(226 165)
                setPri(0)
                ignoreActors()
                setCycle(Fwd)
                init()
            )
            (wave1:
                view(666)
                loop(3)
                cel(3)
                posn(177 75)
                setPri(0)
                ignoreActors()
                setCycle(Fwd)
                cycleSpeed(1)
                init()
            )
            (wave2:
                view(666)
                loop(4)
                cel(3)
                posn(164 117)
                setPri(0)
                ignoreActors()
                setCycle(Fwd)
                cycleSpeed(1)
                init()
            )
            (waves:add(wave1))
            (waves:add(wave2))
            (wave1:setScript(waveActions))
        )
    )

)
(instance fairyBlock of Cage
    (properties
        top 66
        left 152
        bottom 115
        right 319
    )
)
(instance waveActions of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                (= local30 0 (while (< local30 (waves:size()))(send ((View:new())):
                        view((send ((waves:at(local30))):view()))
                        loop((send ((waves:at(local30))):loop()))
                        cel(0)
                        setPri(0)
                        ignoreActors()
                        x((send ((waves:at(local30))):x()))
                        y((send ((waves:at(local30))):y()))
                        init()
                        addToPic()
                        yourself()
                    )
 ++local30  ) = local30 0 (self:changeState(1))  )
            )
            (case 1
                ((send ((waves:at(local30))):
                    cel(0)
                    show()
                    setCycle(End self)
                )
  )
            )
            (case 2
                ((send ((waves:at(local30))):hide()) 
                (if (< local30 (- (waves:size()) 1))
                    ++local30
                )(else
                    = local30 0
                )
 (waveActions:changeState(1))  )
            )
            (case 10
                ((wave2:dispose()) (wave1:
                    setScript(0)
                    dispose()
                )
 )
            )
        )
    )

)
(instance highState of Script
    (properties)

    (method (cue)
        (if (> (openMusic:signal()) openMusicSignal)
            = openMusicSignal (openMusic:signal())
        )
    )

)
