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


(local
    newAct
    newAct_2
    newAct_3
    newView

)
(instance uniTheme of Sound
    (properties)
)
(instance henchTheme of Sound
    (properties)
)
(instance public Room333 of Rm
    (properties)

    (method (init)
        (User:
            canControl(0)
            canInput(0)
        )
        = picture gPicture
        (if (global100)
            = picture (+ picture 100)
        )
        (send gEgo:edgeHit(0))
        (send gEgo:
            xStep(4)
            init()
        )
        (super:init())
        Load(rsPIC 30)
        Load(rsPIC 29)
        Load(rsPIC 28)
        Load(rsPIC 20)
        Load(rsPIC 26)
        Load(rsPIC 27)
        Load(rsVIEW 142)
        Load(rsVIEW 143)
        Load(rsVIEW 144)
        Load(rsVIEW 146)
        Load(rsVIEW 140)
        Load(rsVIEW 390)
        Load(rsVIEW 387)
        Load(rsVIEW 60)
        Load(rsVIEW 80)
        (send gEgo:baseSetter(ScriptID(0 1)))
        = newView (View:new())
        (self:setScript(turnUnicorn))
    )


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

)
(instance from20 of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                ((send gEgo:setMotion(MoveTo 369 180 self))  )
            )
            (case 1
                (
                (if (global100)
                    (send global2:drawPic(127))
                )(else
                    (send global2:drawPic(27))
                )
 (send gEgo:posn(30 97)) (send gEgo:setMotion(MoveTo 369 100 self))  )
            )
            (case 2
                (
                (if (global100)
                    (send newView:
                        view(600)
                        loop(0)
                        cel(0)
                        setPri(10)
                        posn(289 139)
                        init()
                        stopUpd()
                    )
                    (send global2:drawPic(128))
                )(else
                    (send global2:drawPic(28))
                    (send newView:
                        view(600)
                        loop(1)
                        cel(0)
                        setPri(9)
                        posn(283 139)
                        ignoreActors()
                        init()
                        stopUpd()
                    )
                )
 (send gEgo:posn(30 187)) (send global2:setScript(from28)) )
            )
        )
    )

)
(instance from26 of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                ((send gEgo:setMotion(MoveTo 369 162 self))  )
            )
            (case 1
                (
                (if (global100)
                    (send global2:drawPic(127))
                )(else
                    (send global2:drawPic(27))
                )
 (send gEgo:posn(30 155)) (send gEgo:setMotion(MoveTo 369 169 self))  )
            )
            (case 2
                (
                (if (global100)
                    (send newView:
                        view(600)
                        loop(0)
                        cel(0)
                        setPri(10)
                        posn(289 139)
                        init()
                        stopUpd()
                    )
                    (send global2:drawPic(128))
                )(else
                    (send global2:drawPic(28))
                    (send newView:
                        view(600)
                        loop(1)
                        cel(0)
                        setPri(9)
                        posn(283 139)
                        ignoreActors()
                        init()
                        stopUpd()
                    )
                )
 (send global2:setScript(from28)) )
            )
        )
    )

)
(instance from27 of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                ((send gEgo:setMotion(MoveTo 369 162 self))  )
            )
            (case 1
                (
                (if (global100)
                    (send newView:
                        view(600)
                        loop(0)
                        cel(0)
                        setPri(10)
                        posn(289 139)
                        init()
                        stopUpd()
                    )
                    (send global2:drawPic(128))
                )(else
                    (send global2:drawPic(28))
                    (send newView:
                        view(600)
                        loop(1)
                        cel(0)
                        setPri(9)
                        posn(283 139)
                        ignoreActors()
                        init()
                        stopUpd()
                    )
                )
 (send global2:setScript(from28)) )
            )
        )
    )

)
(instance from28 of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                ((send gEgo:
                    posn(30 187)
                    setMotion(MoveTo 369 187 self)
                )
  )
            )
            (case 1
                (
                (if (global100)
                    (send global2:drawPic(129))
                )(else
                    (send global2:drawPic(29))
                )
 (send newView:dispose()) (send gEgo:
                    posn(30 187)
                    setMotion(MoveTo 369 187 self)
                )
  )
            )
            (case 2
                (
                (if (global100)
                    (send global2:drawPic(130))
                )(else
                    (send global2:drawPic(30))
                )
 (send gEgo:
                    posn(30 124)
                    setMotion(MoveTo 194 129 self)
                )
  )
            )
            (case 3
                ((send gEgo:setMotion(MoveTo 369 98 self))  )
            )
            (case 4
                (
                (if (global100)
                    (send global2:drawPic(179))
                )(else
                    (send global2:drawPic(79))
                )
 (send gEgo:posn(65 186)) (in79:changeState(1)) )
            )
        )
    )

)
(instance in79 of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 1
                (= newAct (Act:new()) (h1Actions:changeState(1)) = global120 Print(333 0 134 -1 20 172)  )
            )
            (case 2
                (= gNewAct (Act:new()) (send gNewAct:
                    posn(- (send gEgo:x()) 7 (send gEgo:y()))
                    view(381)
                    loop(0)
                    cel(0)
                    setPri((send gEgo:priority()))
                    ignoreActors()
                    init()
                )
 (send gEgo:
                    view(60)
                    setLoop(0)
                    cel(0)
                    posn(- (send gNewAct:x()) 4 - (send gNewAct:y()) 25)
                    setPri(14)
                    ignoreActors()
                    setCycle(End self)
                )
 (send newAct_2:hide()) (send newAct_3:hide())  )
            )
            (case 3
                ((send gEgo:
                    view(80)
                    setLoop(5)
                    setCycle(Fwd)
                    setMotion(MoveTo 24 60 self)
                )
  )
            )
            (case 4
                ((send gEgo:setLoop(3)) (Timer:setReal(self 2))  )
            )
            (case 5
                ((send gEgo:setLoop(2)) (Timer:setReal(self 2))  )
            )
            (case 6
                ((send gEgo:
                    setLoop(1)
                    setMotion(MoveTo 72 29)
                )
 (Timer:setReal(self 2))  )
            )
            (case 7
                ((send gEgo:
                    setLoop(0)
                    setMotion(MoveTo 72 29 self)
                )
  )
            )
            (case 8
                ((send gEgo:
                    setLoop(-1)
                    setCel(-1)
                )
 (User:canControl(1)) (User:canInput(1)) (send global2:newRoom(92)) )
            )
        )
    )

)
(instance h1Actions of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 1
                ((uniTheme:dispose()) (henchTheme:
                    number(29)
                    play()
                )
 (send newAct:
                    ignoreHorizon()
                    posn(57 7)
                    view(142)
                    setCycle(Walk)
                    setMotion(MoveTo 65526 22 self)
                    ignoreActors()
                    illegalBits(0)
                    setPri(13)
                    init()
                )
  )
            )
            (case 2
                (
                (if (gTheNewDialog)
                    (send gTheNewDialog:dispose())
                )
 (send newAct:
                    xStep(4)
                    yStep(3)
                    setMotion(MoveTo 65526 50 self)
                )
 = newAct_2 (Act:new()) (send newAct_2:setScript(h2Actions))  )
            )
            (case 3
                ((send newAct:
                    view(143)
                    xStep(6)
                    yStep(4)
                    setMotion(MoveTo 252 66 self)
                )
  )
            )
            (case 4
                ((send newAct:
                    view(144)
                    xStep(8)
                    yStep(6)
                    setMotion(MoveTo 89 178 self)
                )
 (h2Actions:changeState(1))  )
            )
            (case 5
                ((send newAct:
                    view(146)
                    loop(1)
                    cel(0)
                    setCycle(End self)
                )
 )
            )
        )
    )

)
(instance h2Actions of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 1
                ((send newAct_2:
                    ignoreHorizon()
                    posn(57 7)
                    view(142)
                    setCycle(Walk)
                    xStep(4)
                    yStep(3)
                    setMotion(MoveTo 26 65 self)
                    ignoreActors()
                    illegalBits(0)
                    setPri(15)
                    init()
                )
  )
            )
            (case 2
                ((send newAct_2:
                    view(143)
                    xStep(6)
                    yStep(4)
                    setMotion(MoveTo 42 120 self)
                )
 = newAct_3 (Act:new()) (send newAct_3:setScript(h3Actions)) (h3Actions:changeState(1))  )
            )
            (case 3
                ((send newAct_2:
                    view(144)
                    xStep(8)
                    yStep(6)
                    setMotion(MoveTo 10 185 self)
                )
  )
            )
            (case 4
                ((send newAct_2:
                    xStep(8)
                    yStep(6)
                    setMotion(MoveTo + (send gEgo:x()) 21 - (send gEgo:y()) 28 self)
                )
  )
            )
            (case 5
                (proc0_3(newAct_2 gEgo) (send newAct_2:setCycle(Fwd)) )
            )
        )
    )

)
(instance h3Actions of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 1
                ((send newAct_3:
                    ignoreHorizon()
                    posn(57 7)
                    view(142)
                    setCycle(Walk)
                    xStep(4)
                    yStep(3)
                    setMotion(MoveTo 26 65 self)
                    ignoreActors()
                    illegalBits(0)
                    setPri(15)
                    init()
                )
  )
            )
            (case 2
                ((send newAct_3:
                    view(143)
                    xStep(6)
                    yStep(4)
                    setMotion(MoveTo 42 120 self)
                )
  )
            )
            (case 3
                ((send newAct_3:
                    view(144)
                    xStep(8)
                    yStep(6)
                    setMotion(MoveTo 10 185 self)
                )
  )
            )
            (case 4
                ((send newAct_3:setMotion(MoveTo (- (send gEgo:x()) 15) (- (send gEgo:y()) 25) self))  )
            )
            (case 5
                ((in79:changeState(2)) )
            )
        )
    )

)
(instance turnUnicorn of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                ((User:
                    canControl(0)
                    canInput(0)
                )
 (send gEgo:setCycle(End self)) (uniTheme:
                    number(32)
                    loop(1)
                    play()
                )
  )
            )
            (case 1
                (Print(333 1) 
                (if (== (send gEgo:loop()) 1)
                    (send gEgo:
                        view(390)
                        cel(0)
                        loop(0)
                        setCycle(End self)
                    )
                )(else
                    (self:changeState(2))
                )
 )
            )
            (case 2
                (= global124 999 (send gEgo:
                    view(387)
                    setCycle(Walk)
                )
 
                (switch (gPicture)
                    (case 20
                        ((send global2:setScript(from20))  )
                    )
                    (case 26
                        ((send global2:setScript(from26))  )
                    )
                    (case 27
                        ((send global2:setScript(from27)) )
                    )
                )
 )
            )
        )
    )

)
