(version 2)
(include "sci.sh")
(exports
    0 DwarfStuff
)
(use "Main")
(use "Class_255_0")
(use "Chase")
(use "Timer")
(use "Avoid")
(use "Cycle")
(use "Obj")
(script 804)


(local
    local0

)
(procedure (localproc_034a param1 param2)
    return 
        (if ((send gEgo:has(param1)))
            (send gEgo:put(param1))
            (send gGame:changeScore((- 0 param2)))
            return 1
        )(else
            return 0
        )
)


(instance public DwarfStuff of Script
    (properties)

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


    (method (doit)
        (super:doit())
        (if (proc0_12(1) and not local0)
            = local0 1
            proc255_0(804 5)
            (self:changeState(2))
        )
    )


    (method (changeState newState)
        (switch (= state newState)
            (case 0
                (if (<> (send (ScriptID(0 21)):signal) -1)
                    (send (ScriptID(0 21)):
                        loop(1)
                        fade()
                    )
                )
                (send (ScriptID(0 23)):
                    number(93)
                    loop(-1)
                    play()
                )
                (switch (gGNumber)
                    (case (send global2:east)
                        (send gMenace:posn(319 141))
                    )
                    (case (send global2:west)
                        (send gMenace:posn(1 130))
                    )
                    (default 
                        (if (Random(0 1))
                            (send gMenace:posn(319 141))
                        )(else
                            (send gMenace:posn(1 130))
                        )
                    )
                )
                (send gMenace:
                    view(135)
                    setCycle(Walk)
                    ignoreActors()
                    ignoreHorizon()
                    illegalBits(-32768)
                    init()
                    setStep(4 3)
                    cycleSpeed(0)
                    setAvoider(Avoid 1)
                    setMotion(Chase gEgo 16 self)
                )
            )
            (case 1
                (if (proc0_12(44))
                    (send gMenace:setMotion(0))
                    (self:dispose())
                )(else
                    (send gMenace:setMotion(0))
                    proc255_0(804 6)
                    (if (localproc_034a(16 8))
                    )(else
                        (if (localproc_034a(14 8))
                        )(else
                            (if (localproc_034a(1 8))
                            )(else
                                (if (proc0_12(62) and localproc_034a(11 6))
                                    0
                                )(else
                                    (if (localproc_034a(11 3))
                                        0
                                    )(else
                                        (if (proc0_12(67) and localproc_034a(18 6))
                                            0
                                        )(else
                                            (if (localproc_034a(15 6))
                                                0
                                            )(else
                                                (if (localproc_034a(12 6))
                                                    0
                                                )
                                            )
                                        )
                                    )
                                )
                            )
                        )
                    )
                    (Timer:setCycle(self 2))
                )
            )
            (case 2
                (if (< (send gEgo:heading) 180)
                    (send gMenace:setMotion(MoveTo -20 (send gMenace:y) self))
                )(else
                    (send gMenace:setMotion(MoveTo 330 (send gMenace:y) self))
                )
            )
            (case 3
                (send (ScriptID(0 23)):stop())
                (if (global138)
                    0
                )(else
                    (send gMenace:dispose())
                )
                (self:dispose())
            )
        )
    )


    (method (handleEvent pEvent)
        (if ((send pEvent:claimed))
            return 
        )(else
            (if (Said('look,look/dwarf,man[<little]') or proc255_5(gMenace pEvent 3))
                (send pEvent:claimed(1))
                (if (< state 2)
                    proc255_0(804 1)
                )(else
                    proc255_0(804 2)
                )
            )(else
                (if (Said('talk,speak[/dwarf]'))
                    proc255_0(804 3)
                )(else
                    (if (Said('kill,capture,attack,shoot/dwarf,man[<little]'))
                        proc255_0(804 4)
                    )(else
                        (super:handleEvent(pEvent))
                    )
                )
            )
        )
    )

)
