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


(local
    newAct_5
    newAct_4
    newAct_3
    local3[5]
    newAct_2
    local9
    newAct
    local11
    newProp
    newProp_2
    newProp_3
    newProp_4
    local16
    newView

)
(instance public Room56 of Rm
    (properties
        picture 56
        style 16
        west 55
    )

    (method (init)
        (self:setRegions(600))
        Load(rsVIEW 516)
        Load(rsVIEW 283)
        Load(rsVIEW 286)
        Load(rsVIEW 287)
        Load(rsVIEW 4)
        Load(rsVIEW 518)
        (super:init())
        = global101 1
        (send gEgo:
            view(4)
            posn(65 140)
            init()
        )
        (if ((send ((Inv:at(1))):ownedBy(gEgo)))
            Load(rsVIEW 288)
            Load(rsVIEW 281)
            Load(rsVIEW 523)
            (send ((View:new())):
                view(287)
                loop(3)
                cel(0)
                posn(118 69)
                addToPic()
            )
            (send ((View:new())):
                view(286)
                loop(4)
                cel(0)
                posn(70 71)
                addToPic()
            )
            (send ((View:new())):
                view(283)
                loop(1)
                cel(0)
                posn(211 100)
                addToPic()
            )
            (send ((View:new())):
                view(516)
                loop(0)
                cel(0)
                posn(234 119)
                addToPic()
            )
            (send (= newAct (Act:new())):
                view(287)
                setLoop(1)
                illegalBits(0)
                posn(118 53)
                setCycle(Fwd)
                init()
            )
            (send (= newAct_2 (Act:new())):
                view(286)
                illegalBits(0)
                posn(70 55)
                setLoop(2)
                setCycle(Fwd)
                init()
            )
            (send (= newAct_3 (Act:new())):
                view(283)
                setLoop(0)
                illegalBits(0)
                posn(211 90)
                setCycle(Fwd)
                init()
            )
            (send (= newAct_4 (Act:new())):
                view(281)
                loop(4)
                cel(0)
                illegalBits(0)
                posn(233 130)
                setPri(-1)
                init()
                stopUpd()
            )
            (send (= newAct_5 (Act:new())):
                view(281)
                illegalBits(0)
                posn((send newAct_4:x()) - (send newAct_4:y()) 18)
                ignoreActors(1)
                init()
                setPri(kernel[101]((send newAct_4:y())))
                setLoop(0)
                setCycle(Fwd)
            )
            (if (not (send gEgo:has(3)))
                (send (= newView (View:new())):
                    view(523)
                    loop(1)
                    posn(- (send newAct_4:x()) 18 - (send newAct_4:y()) 1)
                    init()
                    stopUpd()
                )
            )
            (send newAct_5:setScript(dwarvesMove))
        )(else
            Load(rsVIEW 280)
            (send ((View:new())):
                view(283)
                loop(1)
                cel(0)
                posn(82 71)
                addToPic()
            )
            (send ((View:new())):
                view(286)
                loop(4)
                cel(0)
                posn(83 122)
                addToPic()
            )
            (send ((View:new())):
                view(287)
                loop(2)
                cel(0)
                posn(109 121)
                addToPic()
            )
            (send ((View:new())):
                view(516)
                loop(0)
                cel(0)
                posn(99 73)
                addToPic()
            )
            (send (= newAct_4 (View:new())):
                view(280)
                loop(4)
                cel(0)
                posn(211 99)
                setPri(-1)
                init()
                stopUpd()
            )
            (send (= newAct_5 (Act:new())):
                view(280)
                illegalBits(0)
                posn((send newAct_4:x()) - (send newAct_4:y()) 18)
                setLoop(1)
                ignoreActors(1)
                setPri(kernel[101]((send newAct_4:y())))
                setCycle(Fwd)
                init()
            )
            (send (= newAct_3 (Act:new())):
                view(283)
                setLoop(0)
                illegalBits(0)
                posn(82 61)
                setCycle(Fwd)
                init()
            )
            (send (= newAct_2 (Act:new())):
                view(286)
                setLoop(2)
                illegalBits(0)
                posn(89 106)
                setPri(8)
                setCycle(Fwd)
                init()
            )
            (send (= newAct (Act:new())):
                view(287)
                setLoop(0)
                illegalBits(0)
                posn(110 107)
                setPri(8)
                setCycle(Fwd)
                init()
            )
            (send newAct_5:setScript(dwarvesMove))
        )
        (send (= newProp (Prop:new())):
            view(518)
            cel(2)
            posn(86 155)
            setPri(15)
            cycleSpeed(1)
            setLoop(3)
            init()
            ignoreActors(1)
            stopUpd()
        )
        (send (= newProp_2 (Prop:new())):
            view(518)
            cel(1)
            posn(261 118)
            setPri(15)
            setLoop(3)
            init()
            ignoreActors(1)
            stopUpd()
        )
        (send (= newProp_3 (Prop:new())):
            view(518)
            posn(212 119)
            cycleSpeed(1)
            setPri(9)
            setLoop(3)
            init()
            ignoreActors(1)
            stopUpd()
        )
        (send (= newProp_4 (Prop:new())):
            view(518)
            cel(3)
            posn(136 49)
            setLoop(3)
            init()
            ignoreActors(1)
            stopUpd()
        )
        (send newProp:setScript(sparkle))
    )


    (method (doit)
        (super:doit())
        (if (& (send gEgo:onControl(0)) $0040)
            (send global2:newRoom(55))
        )
    )


    (method (handleEvent pEvent)
        return 
            (if ((send pEvent:claimed()))
                return 1
            )(else
                (if (== (send pEvent:type()) 128)
                    (if (Said('deliver,return/pouch,diamond[/dwarf]') or Said('deliver,return/dwarf/pouch,diamond'))
                        (if ((== (send ((Inv:at(1))):owner()) gEgo) and (<> (send ((Inv:at(3))):owner()) gEgo))
                            (if (< (send gEgo:distanceTo(newAct_4)) 20)
                                proc0_10()
                                (send gEgo:setScript(handOff))
                            )(else
                                Print(800 1)
                            )
                        )(else
                            Print(56 0)
                        )
                    )(else
                        (if ((Said('look[<around][/!*]') or Said('look[<around]/room')) or Said('look[<around]/mine[<diamond]'))
                            Print(56 1)
                        )(else
                            (if (Said('look>'))
                                (if (Said('/dwarf'))
                                    Print(56 2)
                                )(else
                                    (if (Said('/bucket'))
                                        Print(56 3)
                                    )
                                )
                            )(else
                                (if ((< (send gEgo:distanceTo(newAct_4)) 30) and Said('converse[/dwarf]'))
                                    (if ((send gEgo:has(1)) and not (send gEgo:has(3)))
                                        (answer1:cue())
                                    )(else
                                        Print(56 4)
                                    )
                                )(else
                                    (if ((< (send gEgo:distanceTo(newAct_4)) 20) and (Said('kiss/dwarf') or Said('kiss[/!*]')))
                                        Print(56 5)
                                    )(else
                                        (if (Said('get,rob/bucket'))
                                            Print(56 6)
                                        )(else
                                            (if (Said('rob/lantern'))
                                                Print(56 7)
                                            )
                                        )
                                    )
                                )
                            )
                        )
                    )
                )
            )
    )

)
(instance dwarvesMove of Script
    (properties)

    (method (changeState newState)
        (var temp0)
        (switch (= state newState)
            (case 0
                (
                (switch (= temp0 Random(1 6))
                    (case 1
                        ((send newAct_2:setCycle(End self))  )
                    )
                    (case 2
                        ((send newAct_5:
                            loop(3)
                            cycleSpeed(2)
                            setCycle(End self)
                        )
 (send newAct_4:setLoop(5))  )
                    )
                    (case 3
                        ((send newAct:
                            setLoop(1)
                            setCycle(End self)
                        )
  )
                    )
                    (case 4
                        ((send newAct_2:setCycle(End self))  )
                    )
                    (case 5
                        ((send newAct:
                            setLoop(1)
                            setCycle(End self)
                        )
  )
                    )
                    (case 6
                        ((send newAct_5:
                            loop(1)
                            cycleSpeed(0)
                            setCycle(End self)
                        )
 (send newAct_4:setLoop(5))  )
                    )
                    (default 
                        ((self:cue()) )
                    )
                )
  )
            )
            (case 1
                ((send newAct_5:
                    setMotion(0)
                    stopUpd()
                )
 (send newAct_2:
                    setMotion(0)
                    stopUpd()
                )
 (send newAct:
                    setMotion(0)
                    stopUpd()
                )
 (self:changeState(0)) )
            )
        )
    )

)
(instance sparkle of Script
    (properties)

    (method (changeState newState)
        (var temp0)
        (switch (= state newState)
            (case 0
                (
                (switch (Random(1 4))
                    (case 1
                        ((send newProp:
                            startUpd()
                            setCycle(End self)
                        )
  )
                    )
                    (case 2
                        ((send newProp_2:
                            startUpd()
                            setCycle(End self)
                        )
  )
                    )
                    (case 3
                        ((send newProp_3:
                            startUpd()
                            setCycle(End self)
                        )
  )
                    )
                    (case 4
                        ((send newProp_4:
                            startUpd()
                            setCycle(End self)
                        )
 )
                    )
                )
  )
            )
            (case 1
                ((send newProp:stopUpd()) (send newProp_2:stopUpd()) (send newProp_3:stopUpd()) (send newProp_4:stopUpd()) = state -1 (self:cue()) )
            )
        )
    )

)
(instance answer1 of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                (Print(56 8)  )
            )
            (case 1
                (Print(56 9)  )
            )
            (case 2
                (Print(56 10) = state 1 )
            )
        )
    )

)
(instance handOff of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                ((dwarvesMove:changeState(2)) (sparkle:changeState(2)) (send newAct:
                    dispose()
                    delete()
                )
 (send newAct_2:
                    dispose()
                    delete()
                )
 (send newProp_4:
                    dispose()
                    delete()
                )
 proc0_11() (send newAct_5:
                    view(288)
                    loop(0)
                    setCycle(End)
                )
 Print(56 11 134 -1 15 140 290 66 global23 166) (self:cue())  )
            )
            (case 1
                ((send newAct_5:
                    loop(1)
                    cycleSpeed(1)
                    setCycle(End self)
                )
  )
            )
            (case 2
                ((send newAct_5:hide()) (send newView:dispose()) (send newAct_4:
                    view(288)
                    loop(2)
                    cel(0)
                    cycleSpeed(1)
                    setCycle(End self)
                )
 (send gEgo:get(3)) (send gGame:changeScore(3))  )
            )
            (case 3
                ((send (= newAct (Act:new())):
                    view(287)
                    setLoop(1)
                    illegalBits(0)
                    posn(118 53)
                    setCycle(Fwd)
                    init()
                )
 (send (= newAct_2 (Act:new())):
                    view(286)
                    illegalBits(0)
                    posn(70 55)
                    setLoop(2)
                    setCycle(Fwd)
                    init()
                )
 (send (= newProp_4 (Prop:new())):
                    view(518)
                    cel(3)
                    posn(136 49)
                    setLoop(3)
                    init()
                    ignoreActors(1)
                    stopUpd()
                )
 (dwarvesMove:changeState(0)) (sparkle:changeState(0)) (send newAct_5:
                    view(281)
                    loop(3)
                    cel(0)
                    cycleSpeed(0)
                    show()
                )
 (send newAct_4:
                    view(281)
                    loop(5)
                    cel(0)
                    stopUpd()
                    ignoreActors(0)
                    init()
                )
 = seconds 3  )
            )
            (case 4
                ((User:
                    canControl(1)
                    canInput(1)
                )
 (send client:setScript(0)) )
            )
        )
    )

)
