(version 2)
(include "sci.sh")
(exports
    0 SorcStuff
)
(use "Main")
(use "Class_255_0")
(use "Chase")
(use "Avoid")
(use "Cycle")
(use "Obj")
(script 800)



(instance public SorcStuff of Script
    (properties)

    (method (init param1)
        (super:init(rest param1))
        proc255_0(800 0)
    )


    (method (changeState newState)
        (switch (= state newState)
            (case 0
                (send (ScriptID(0 23)):
                    number(34)
                    loop(-1)
                    play()
                )
                (send gMenace:
                    view(100)
                    setAvoider(Avoid)
                    setCycle(Walk)
                    setCel(-1)
                    illegalBits(-28672)
                    setStep(4 3)
                    init()
                )
                (switch (gGNumber)
                    (case (send global2:west)
                        (send gMenace:
                            posn(330 158)
                            setMotion(MoveTo 314 155 self)
                        )
                    )
                    (case (send global2:east)
                        (send gMenace:
                            posn(-10 147)
                            setMotion(MoveTo 6 143 self)
                        )
                    )
                    (default 
                        (if (Random(0 1))
                            (send gMenace:
                                posn(330 158)
                                setMotion(MoveTo 314 155 self)
                            )
                        )(else
                            (send gMenace:
                                posn(-10 147)
                                setMotion(MoveTo 46 143 self)
                            )
                        )
                    )
                )
            )
            (case 1
                (send gMenace:setMotion(Chase gEgo 30 self))
            )
            (case 2
                (if (not proc0_12(44) and (== gNewRoomNumber gNumber))
                    proc0_2()
                    (if (== (send gEgo:view) 
                    (if (proc0_12(0))
                        23
                    )(else
                        16
                    )
)
                        SetMenu(769 113 0 110 " Duck" 109 'duck')
                    )
                    proc0_15(gMenace gEgo)
                    (send (ScriptID(0 21)):
                        number(26)
                        loop(1)
                        play()
                    )
                    (send gMenace:
                        setMotion(0)
                        view(101)
                        cel(0)
                        cycleSpeed(1)
                        setCycle(End self)
                    )
                    (if (proc0_12(1))
                        proc255_0(800 4)
                    )
                )(else
                    (self:dispose())
                )
            )
            (case 3
                (send gEgo:
                    cycleSpeed(1)
                    view(28)
                    cel(0)
                    loop(0)
                    setMotion(0)
                    setCycle(End self)
                )
            )
            (case 4
                proc255_0(800 5)
                (send (ScriptID(0 21)):
                    number(90)
                    loop(-1)
                    play()
                )
                (send gMenace:
                    view(102)
                    cel(11)
                    setCycle(Beg)
                )
                (send gEgo:
                    loop(1)
                    cel(0)
                    cycleSpeed(2)
                    setCycle(End)
                )
                (if (proc0_12(1))
                    proc255_0(800 6)
                    proc0_11(1)
                )
                (if (global138)
                    (send gEgo:setScript(ScriptID(602 2)))
                    (if (== global138 803)
                        (self:dispose())
                    )
                )(else
                    = seconds 12
                )
            )
            (case 5
                (send (ScriptID(0 23)):stop())
                (send gEgo:
                    loop(2)
                    cel(0)
                    cycleSpeed(40)
                    setCycle(End self)
                )
                (send gMenace:
                    setCycle(0)
                    hide()
                )
            )
            (case 6
                (send (ScriptID(0 21)):
                    loop(1)
                    fade()
                )
                proc0_1()
                (send gEgo:loop(2))
                = cycles 5
            )
            (case 7
                proc255_0(800 7)
                proc0_3()
                (self:dispose())
            )
        )
    )


    (method (handleEvent pEvent)
        (if ((send pEvent:claimed))
            return 
        )(else
            (if (Said('look,look/sorcerer,man') or proc255_5(gMenace pEvent 3))
                proc255_0(800 1)
                (send pEvent:claimed(1))
            )(else
                (if (Said('talk,speak[/sorcerer]'))
                    proc255_0(800 2)
                )(else
                    (if (Said('kill/sorcerer,man'))
                        proc255_0(800 3)
                    )(else
                        (super:handleEvent(pEvent))
                    )
                )
            )
        )
    )

)
