(version 2)
(include "sci.sh")
(exports
    0 rm340
    1 speakerTalker
    2 warriorTalker
    3 proc340_3
    4 motherTalker
    5 haramiTalker
)
(use "Main")
(use "GloryWindow")
(use "OccasionalCycle")
(use "GloryTalker")
(use "Messager")
(use "Blink")
(use "IconI")
(use "n958")
(use "GameControls")
(use "Cycle")
(use "Game")
(use "View")
(use "Obj")
(script 340)


(local
    local0
    local1
    local2

)
(procedure public (proc340_3 param1)
    (send gOwner:hold(1 3 110))
    (super:init(rest param1))
    (self:setScript(doEvent2))
)


(procedure (localproc_048a)
    (rajah:init())
    (yWarrior:init())
    (mother:init())
    (youth:init())
    (kreesha:init())
    (priestess:init())
    (warriorTail:
        init()
        setCycle(OccasionalCycle self 1 70 180)
    )
    (speaker:init())
    (speakerStuff:
        init()
        setCycle(OccasionalCycle self 1 70 180)
    )
)


(procedure (localproc_04f1)
    (var temp0, theGCursorNumber)
    = theGCursorNumber gCursorNumber
    = temp0 Message(2 340 11 60 51 1)
    = local1 Memory(2 temp0)
    Message(0 340 11 60 51 1 local1)
    = temp0 Message(2 340 11 60 52 1)
    = local2 Memory(2 temp0)
    Message(0 340 11 60 52 1 local2)
    (quest:
        init()
        show()
        dispose()
    )
    Memory(3 local1)
    Memory(3 local2)
    (send gGame:setCursor(theGCursorNumber))
)


(class Head of View
    (properties
        x 0
        y 0
        z 0
        heading 0
        noun 0
        modNum -1
        nsTop 0
        nsLeft 0
        nsBottom 0
        nsRight 0
        sightAngle 26505
        actions 0
        onMeCheck $6789
        approachX 0
        approachY 0
        approachDist 0
        _approachVerbs 0
        yStep 2
        view -1
        loop 0
        cel 0
        priority 0
        underBits 0
        signal $0101
        lsTop 0
        lsLeft 0
        lsBottom 0
        lsRight 0
        brTop 0
        brLeft 0
        brBottom 0
        brRight 0
        palette 0
        scaleSignal $0000
        scaleX 128
        scaleY 128
        maxScale 128
        face 2
    )

    (method (init param1)
        = face cel
        (super:init(rest param1))
    )


    (method (back)
        (heads:eachElementDo(156 (self:face)))
        Animate((heads:elements) 0)
    )


    (method (cue param1)
        (heads:eachElementDo(156 param1))
        Animate((heads:elements) 0)
    )

)
(instance myMessager of Messager
    (properties)

    (method (say param1 param2)
        (switch (param1)
            (case 5
                (speaker:cue(0))
            )
            (case 8
                (priestess:cue(1))
            )
            (case 9
                (mother:cue(2))
            )
            (case 1
                (speaker:cue(3))
            )
            (case 7
                (kreesha:cue(5))
            )
            (case 4
                (yWarrior:cue(6))
            )
            (default 
                (speaker:back())
            )
        )
        (send gQg3Messager:say(param1 rest param2))
    )

)
(instance heads of List
    (properties)
)
(instance public rm340 of Rm
    (properties
        picture 340
    )

    (method (init param1)
        proc0_2()
        (heads:
            add(priestess mother speaker youth kreesha yWarrior)
            init()
        )
        (send ((Prop:new())):
            view(340)
            loop(0)
            cel(1)
            x(103)
            y(41)
            init()
            setCycle(Fwd)
        )
        (send ((Prop:new())):
            view(340)
            loop(0)
            cel(1)
            x(210)
            y(41)
            init()
            setCycle(Fwd)
        )
        (if ((== gGClientModNum 230) or (== gGClientModNum 240))
            proc0_4(36)
            localproc_048a()
            (send gOwner:
                view(5)
                loop(6)
                yStep(2)
                x(28)
                y(240)
                init()
                setCycle(Walk)
                setScale(175)
            )
            (localHarami:
                init()
                setScale(175)
            )
            (super:init(rest param1))
            (self:setScript(doEvent1))
        )(else
            (if ((== gGClientModNum 310) and not proc0_6(12))
                (send gLongSong:
                    setLoop(-1)
                    number(340)
                    play(127)
                )
                proc0_4(35)
                localproc_048a()
                (rajah:
                    init()
                    stopUpd()
                )
                (send (ScriptID(35 1)):
                    loop(3)
                    x(162)
                    y(165)
                    init()
                    setScale(175)
                )
                (send gOwner:
                    x(185)
                    y(169)
                    loop(3)
                    init()
                    setScale(175)
                    normalize()
                )
                (super:init(rest param1))
                (self:setScript(doEvent2))
            )(else
                (send gLongSong:
                    setLoop(-1)
                    number(340)
                    play(127)
                )
                localproc_048a()
                (send (ScriptID(35 1)):
                    x(30)
                    y(213)
                    loop(3)
                    init()
                    setScale(175)
                    addToPic()
                )
                (send gOwner:
                    x(50)
                    y(223)
                    setCel(0)
                    loop(3)
                    yStep(4)
                    init()
                    normalize()
                    setScale(175)
                    solvePuzzle(252 20)
                )
                (leopardman:
                    init()
                    stopUpd()
                )
                (simbani:
                    init()
                    stopUpd()
                )
                (yesufU:
                    init()
                    setScale(175)
                )
                (super:init(rest param1))
                (self:setScript(doEvent3))
            )
        )
    )


    (method (dispose)
        proc958_0(0 35 42 48 49)
        (heads:dispose())
        (super:dispose())
    )

)
(instance doEvent1 of Script
    (properties)

    (method (changeState newState)
        (var temp0)
        (switch (= state newState)
            (case 0
                (if (<> global100 0)
                    (send gOwner:changeGait(0 0))
                )
                = cycles 10
            )
            (case 1
                (send gQg3Messager:say(3 6 1 0 self))
            )
            (case 2
                (myMessager:say(1 6 1 0 rajah))
            )
            (case 3
                (myMessager:say(2 6 3 0 rajah))
            )
            (case 4
                (myMessager:say(1 6 4 0 rajah))
            )
            (case 5
                (localHarami:
                    setLoop(2)
                    setCycle(Walk)
                    setMotion(MoveTo (localHarami:x) 215 self)
                )
            )
            (case 6
                (localHarami:dispose())
                (myMessager:say(1 6 5 0 rajah))
            )
            (case 7
                (send gOwner:
                    view(0)
                    setLoop(-1)
                    setCycle(Walk)
                    setMotion(MoveTo (send gOwner:x) + (send gOwner:y) 35 self)
                )
            )
            (case 8
                (send gOwner:normalize())
                = seconds 1
            )
            (case 9
                (send gOwner:
                    posn(150 260)
                    setMotion(MoveTo 150 180 self)
                )
            )
            (case 10
                = temp0 0
                (if (proc0_6(24))
                    = temp0 1
                )(else
                    (if (proc0_6(25) and not proc0_6(28))
                        (send global2:setScript(thiefSolution))
                    )(else
                        (if (proc0_6(27) or proc0_6(26))
                            (send global2:setScript(magicSolution))
                        )(else
                            (if (proc0_6(23))
                                (send global2:setScript(chaseHarami))
                            )(else
                                (myMessager:say(1 6 32 0 rajah))
                            )
                        )
                    )
                )
                (if (temp0)
                    (send global2:setScript(doEvent1Alt self))
                )
            )
            (case 11
                (myMessager:say(5 6 9 0 rajah))
            )
            (case 12
                (send global2:newRoom(330))
            )
        )
    )

)
(instance chaseHarami of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                (myMessager:say(4 6 7 0 rajah))
            )
            (case 1
                (myMessager:say(1 6 8 0 rajah))
            )
            (case 2
                (myMessager:say(5 6 9 0 rajah))
            )
            (case 3
                (send global2:newRoom(330))
            )
        )
    )

)
(instance thiefSolution of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                (myMessager:say(4 6 27 0 rajah))
            )
            (case 1
                (myMessager:say(1 6 28 0 rajah))
            )
            (case 2
                (myMessager:say(8 6 29 0 rajah))
            )
            (case 3
                (myMessager:say(1 6 30 0 rajah))
            )
            (case 4
                (myMessager:say(5 6 31 0 rajah))
            )
            (case 5
                (send global2:newRoom(330))
            )
        )
    )

)
(instance magicSolution of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                (myMessager:say(4 6 16 0 rajah))
            )
            (case 1
                (myMessager:say(1 6 17 0 rajah))
            )
            (case 2
                (myMessager:say(7 6 18 0 rajah))
            )
            (case 3
                (if (proc0_6(28))
                    (send gQg3Messager:say(4 6 26 0 rajah))
                )(else
                    (send global2:setScript(solution2))
                )
            )
            (case 4
                (send global2:setScript(forbidden))
            )
        )
    )

)
(instance solution2 of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                (if (proc0_6(27))
                    (send gQg3Messager:say(4 6 26 0 rajah))
                )(else
                    (myMessager:say(4 6 19 0 rajah))
                )
            )
            (case 1
                (if (proc0_6(27))
                    (send global2:setScript(forbidden))
                )(else
                    (myMessager:say(8 6 19 0 rajah))
                )
            )
            (case 2
                (myMessager:say(1 6 19 0 rajah))
            )
            (case 3
                (send global2:setScript(forbidden))
            )
        )
    )

)
(instance forbidden of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                (myMessager:say(1 6 20 0 rajah))
            )
            (case 1
                (myMessager:say(7 6 21 0 rajah))
            )
            (case 2
                (myMessager:say(1 6 22 0 rajah))
            )
            (case 3
                (send gQg3Messager:say(3 6 23 0 self))
            )
            (case 4
                (myMessager:say(1 6 24 0 rajah))
            )
            (case 5
                (myMessager:say(5 6 31 0 rajah))
            )
            (case 6
                (send global2:newRoom(330))
            )
        )
    )

)
(instance doEvent1Alt of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                (myMessager:say(4 6 10 0 rajah))
                (send (ScriptID(35 1)):
                    loop(3)
                    x(180)
                    y(280)
                    init()
                    setScale(175)
                )
            )
            (case 1
                (myMessager:say(1 6 11 0 rajah))
            )
            (case 2
                (myMessager:say(6 6 12 0 rajah))
            )
            (case 3
                (send (ScriptID(35 1)):
                    setCycle(Walk)
                    setMotion(MoveTo 190 185 self)
                )
            )
            (case 4
                (myMessager:say(1 6 13 0 rajah))
            )
            (case 5
                (myMessager:say(5 6 14 0 rajah))
            )
            (case 6
                (myMessager:say(6 6 15 0 rajah))
            )
            (case 7
                (send global2:newRoom(330))
            )
        )
    )

)
(instance doEvent2 of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                proc0_5(6)
                = cycles 10
            )
            (case 1
                (myMessager:say(1 6 33 0 rajah))
            )
            (case 2
                (myMessager:say(4 6 34 0 rajah))
            )
            (case 3
                (myMessager:say(8 6 35 0 rajah))
            )
            (case 4
                (myMessager:say(9 6 36 0 rajah))
            )
            (case 5
                (myMessager:say(4 6 37 0 rajah))
            )
            (case 6
                (myMessager:say(6 6 38 0 rajah))
            )
            (case 7
                (myMessager:say(7 6 38 0 rajah))
            )
            (case 8
                (myMessager:say(6 6 39 0 rajah))
            )
            (case 9
                (myMessager:say(1 6 40 0 rajah))
            )
            (case 10
                localproc_04f1()
                (if (local0)
                    (send gOwner:
                        addHonor(40)
                        solvePuzzle(251 5 8)
                    )
                )(else
                    (send gOwner:addHonor(-100))
                    proc0_4(19)
                )
                = cycles 1
            )
            (case 11
                (myMessager:say(1 6 41 0 rajah))
            )
            (case 12
                (myMessager:say(5 6 42 0 rajah))
            )
            (case 13
                proc0_4(48)
                proc0_4(6)
                (send global2:newRoom(330))
            )
        )
    )

)
(instance doEvent3 of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                (yesufU:setScale())
                (send (ScriptID(35 1)):setScale())
                = cycles 10
            )
            (case 1
                (send gQg3Messager:say(3 6 43 0 self))
                (yesufU:stopUpd())
            )
            (case 2
                (myMessager:say(1 6 44 0 rajah))
            )
            (case 3
                (myMessager:say(10 6 45 0 rajah))
            )
            (case 4
                (simbani:
                    startUpd()
                    loop(0)
                    setCel(0)
                    setCycle(End self)
                )
            )
            (case 5
                (if (proc0_6(150))
                    (send gQg3Messager:say(3 6 46 0 self))
                )(else
                    = cycles 1
                )
            )
            (case 6
                (myMessager:say(6 6 47 0 rajah))
            )
            (case 7
                (leopardman:
                    startUpd()
                    loop(0)
                    setCel(0)
                    setCycle(End self)
                )
            )
            (case 8
                = seconds 1
            )
            (case 9
                (leopardman:
                    loop(1)
                    setCel(0)
                    setCycle(End self)
                )
                (send gLongSong2:
                    number(900)
                    play(127)
                )
            )
            (case 10
                (leopardman:setCel(0))
                (yesufU:forceUpd())
                = cycles 1
            )
            (case 11
                (simbani:
                    loop(1)
                    setCel(0)
                    setCycle(End self)
                )
            )
            (case 12
                (yesufU:
                    view(984)
                    setLoop(3)
                    setCel(0)
                    setCycle(End self)
                )
                (send gLongSong2:
                    number(916)
                    play(127)
                )
                (simbani:stopUpd())
            )
            (case 13
                (leopardman:
                    setLoop(2)
                    setCel(0)
                    setCycle(End self)
                )
                (send gLongSong2:
                    number(920)
                    play(127)
                )
                (yesufU:stopUpd())
            )
            (case 14
                (leopardman:
                    setLoop(3)
                    setCel(0)
                    setCycle(End self)
                )
            )
            (case 15
                = seconds 2
            )
            (case 16
                (leopardman:
                    setLoop(4)
                    setCel(0)
                    setCycle(End self)
                )
                (send gLongSong2:
                    number(918)
                    play(127)
                )
            )
            (case 17
                (myMessager:say(6 6 48 0 self))
            )
            (case 18
                (rajah:
                    startUpd()
                    setCycle(End self)
                )
                (leopardman:stopUpd())
            )
            (case 19
                (send gQg3Messager:say(5 6 49 0 self))
                (rajah:stopUpd())
            )
            (case 20
                (send gQg3Messager:say(6 6 50 0 self))
            )
            (case 21
                (send gOwner:
                    view(1)
                    setLoop(4)
                    setCycle(Walk)
                    setMotion(MoveTo + (send gOwner:x) 5 + (send gOwner:y) 10 self)
                )
            )
            (case 22
                proc0_4(43)
                (send global2:newRoom(210))
            )
        )
    )

)
(instance rajah of Prop
    (properties
        x 160
        y 79
        view 334
    )

    (method (cue)
        (speaker:back())
        (send global2:cue())
    )

)
(instance localHarami of Actor
    (properties
        x 162
        y 152
        view 950
        loop 3
        signal $4000
    )
)
(instance leopardman of Prop
    (properties
        x 123
        y 165
        view 346
        loop 1
        signal $4000
    )
)
(instance simbani of Prop
    (properties
        x 196
        y 169
        view 347
    )
)
(instance yesufU of Prop
    (properties
        x 261
        y 189
        view 980
        loop 4
        cel 3
    )
)
(instance yWarrior of Head
    (properties
        x 240
        y 131
        view 335
        loop 1
        cel 1
        priority 15
        signal $0010
    )
)
(instance warriorTail of Prop
    (properties
        x 273
        y 145
        view 335
    )
)
(instance speaker of Head
    (properties
        x 140
        y 91
        view 337
        loop 1
        cel 5
    )
)
(instance speakerStuff of Prop
    (properties
        x 146
        y 89
        view 337
        cel 4
    )
)
(instance mother of Head
    (properties
        x 117
        y 107
        view 341
        cel 1
    )
)
(instance youth of Head
    (properties
        x 184
        y 94
        view 344
        cel 1
    )
)
(instance kreesha of Head
    (properties
        x 202
        y 107
        view 348
        cel 1
        priority 14
        signal $0010
    )
)
(instance priestess of Head
    (properties
        x 75
        y 131
        view 357
        cel 5
        priority 14
        signal $0010
    )
)
(instance public haramiTalker of GloryTalker
    (properties
        x 200
        y 2
        view 951
        loop 1
        talkWidth 260
        back 57
        textX -175
        textY 150
        backColor 26
    )

    (method (init param1)
        (super:init(haramiBust haramiEyes haramiMouth rest param1))
    )

)
(instance haramiMouth of Prop
    (properties
        nsTop 45
        nsLeft 26
        view 951
    )
)
(instance haramiEyes of Prop
    (properties
        nsTop 30
        nsLeft 24
        view 951
        loop 2
    )
)
(instance haramiBust of View
    (properties
        nsTop 20
        nsLeft 23
        view 951
        loop 3
    )
)
(instance public speakerTalker of GloryTalker
    (properties
        x 5
        y 2
        view 338
        loop 1
        talkWidth 260
        back 57
        textX 20
        textY 150
        backColor 50
    )

    (method (init param1)
        (super:init(speakerBust speakerEyes speakerMouth rest param1))
    )

)
(instance speakerMouth of Prop
    (properties
        nsTop 47
        nsLeft 31
        view 338
    )
)
(instance speakerEyes of Prop
    (properties
        nsTop 38
        nsLeft 34
        view 338
        loop 2
    )
)
(instance speakerBust of View
    (properties
        nsTop 28
        nsLeft 33
        view 338
        loop 3
    )
)
(instance public warriorTalker of GloryTalker
    (properties
        x 5
        y 2
        view 336
        loop 1
        talkWidth 260
        back 57
        textX 20
        textY 150
        backColor 9
    )

    (method (init param1)
        (super:init(warriorBust warriorEyes warriorMouth rest param1))
    )

)
(instance warriorMouth of Prop
    (properties
        nsTop 57
        nsLeft 46
        view 336
    )
)
(instance warriorEyes of Prop
    (properties
        nsTop 40
        nsLeft 44
        view 336
        loop 2
    )
)
(instance warriorBust of View
    (properties
        nsTop 28
        nsLeft 48
        view 336
        loop 3
    )
)
(instance public motherTalker of Narrator
    (properties
        back 57
    )
)
(instance quest of GameControls
    (properties)

    (method (init param1)
        (send gGame:setCursor(999))
        (send (= window (GloryWindow:new())):
            top(60)
            left(95)
            bottom(105)
            right(225)
            priority(15)
            yourself()
        )
        (self:add(titleIcon yesIcon noIcon))
        (super:init(rest param1))
    )

)
(instance titleIcon of IconI
    (properties
        view 935
        loop 2
        cel 0
        nsTop 0
        signal $0004
        maskView 361
        maskLoop 3
    )

    (method (show)
        (var temp0[20])
        Message(0 340 11 60 53 1 @temp0)
        Display(@temp0 100 5 3 102 17)
    )

)
(instance yesIcon of IconI
    (properties
        view 935
        loop 2
        cel 0
        nsTop 15
        signal $0101
        maskView 361
        maskLoop 3
    )

    (method (show)
        = nsRight 80
        = nsBottom (+ nsTop 15)
        DrawCel(view loop cel nsLeft nsTop -1)
        Display(local1 100 20 + nsTop 3 102 17)
        (if (& signal $0004)
            (self:mask())
        )
        (if (gPseudoMouse and (send gPseudoMouse:respondsTo(#stop)))
            (send gPseudoMouse:stop())
        )
    )


    (method (select)
        = local0 1
        (quest:state((& (quest:state) $ffdf)))
    )


    (method (highlight param1)
        (var temp0)
        (if (param1)
            DrawCel(view loop 1 nsLeft nsTop -1)
            = temp0 46
        )(else
            DrawCel(view loop 0 nsLeft nsTop -1)
            = temp0 17
        )
        Display(local1 100 20 + nsTop 3 102 temp0)
    )

)
(instance noIcon of IconI
    (properties
        view 935
        loop 2
        cel 0
        nsTop 30
        signal $0101
        maskView 361
        maskLoop 3
    )

    (method (show)
        (var temp0[15])
        = nsRight 80
        = nsBottom (+ nsTop 15)
        DrawCel(view loop cel nsLeft nsTop -1)
        Display(local2 100 20 + nsTop 3 102 17)
        (if (& signal $0004)
            (self:mask())
        )
        (if (gPseudoMouse and (send gPseudoMouse:respondsTo(#stop)))
            (send gPseudoMouse:stop())
        )
    )


    (method (select)
        = local0 0
        (quest:state((& (quest:state) $ffdf)))
    )


    (method (highlight param1)
        (var temp0)
        (if (param1)
            DrawCel(view loop 1 nsLeft nsTop -1)
            = temp0 46
        )(else
            DrawCel(view loop 0 nsLeft nsTop -1)
            = temp0 17
        )
        Display(local2 100 20 + nsTop 3 102 temp0)
    )

)
