(version 2)
(include "sci.sh")
(exports
    0 rm330
    1 rajahTalker
)
(use "Main")
(use "TellerIcon")
(use "OccasionalCycle")
(use "Blink")
(use "CueObj")
(use "n958")
(use "Timer")
(use "Cycle")
(use "Game")
(use "View")
(use "Obj")
(script 330)


(local
    local0
    flame2Cel
    local2
    local3
    local4
    local5
    local6
    local7
    local8[20] = (0 -9 -26 -45 -4 -8 -28 -32 -33 -40 -11 -12 -34 -39 -5 -13 -29 -35 -38 999 )
    local28[11] = (0 -16 -6 -19 -24 -17 -14 -15 -30 -44 999 )
    local39[4] = (0 11 18 999 )
    local43[4]
    local47[5]
    local52[3] = (0 -14 999 )

)
(instance public rm330 of Rm
    (properties
        noun 11
        picture 330
        vanishingY 1
    )

    (method (init)
        proc958_0(130 924 928)
        proc958_0(128 961)
        = local43[0] @local8
        = local47[0] @local28
        = local47[1] @local39
        (send gOwner:noun(2))
        (egoPic:
            init()
            actions(tell)
        )
        (tell:init(gOwner @local8 @local43))
        (rajahTeller:init(rajah @local28 @local47 @local52))
        (rajah:
            init()
            setCycle(OccasionalCycle self 5 70 180)
        )
        (rajahRightArm:
            init()
            setCycle(OccasionalCycle self 1 70 180)
        )
        (localRakeesh:init())
        (cheeseCake1:
            init()
            setCycle(OccasionalCycle self 1 30 100)
        )
        (cheeseCake2:init())
        (flame1:
            init()
            setCycle(Fwd)
        )
        (flame2:
            init()
            setCycle(OccasionalCycle self 1 30 80)
        )
        (lightglobe:init())
        (spittoon:init())
        (hieroglyphics:init())
        (incenseburner:init())
        (send gQg3Walkers:addToFront(self))
        (super:init())
        (send gLongSong:
            number(330)
            setLoop(-1)
            play(127)
        )
        (if (proc0_6(48))
            (send global2:setScript(situationTwo))
        )(else
            proc0_4(48)
            (send global2:setScript(situationOne))
        )
    )


    (method (dispose)
        (send ((send gOwner:actions)):dispose())
        (send gOwner:actions(0))
        (send gQg3Walkers:delete(self))
        (send gTimers:
            eachElementDo(111)
            eachElementDo(81)
            release()
        )
        UnLoad(128 961)
        proc958_0(0 35)
        (super:dispose())
    )


    (method (doVerb theVerb)
        (if (== theVerb 3)
            (send global2:newRoom(320))
        )(else
            (super:doVerb(theVerb))
        )
    )

)
(instance situationOne of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                proc0_13()
                = cycles 5
            )
            (case 1
                = local3 1
                (send gQg3Messager:say(1 2 1 0 self))
            )
            (case 2
                (send ((Timer:new())):setReal(self 10))
            )
            (case 3
                = local3 2
                (send gQg3Messager:say(1 2 7 1 self))
            )
            (case 4
                (send gQg3Messager:say(1 2 7 (+ global125 2) self))
            )
            (case 5
                (send ((Timer:new())):setReal(self 10))
            )
            (case 6
                (if (& local3 $0400)
                    (send ((Timer:new())):setReal(self 5))
                )(else
                    (self:cue())
                )
            )
            (case 7
                (if (register)
                    = register 0
                )(else
                    = local5 1
                    (send gOwner:addHonor(-10))
                )
                = local3 4
                (send gQg3Messager:say(1 2 10 0 self))
            )
            (case 8
                (send ((Timer:new())):setReal(self 5))
            )
            (case 9
                = local3 8
                (send gQg3Messager:say(1 2 20 0 self))
            )
            (case 10
                (send ((Timer:new())):setReal(self 10))
            )
            (case 11
                (if (< local6 1)
                    (send gQg3Messager:say(1 2 21 0 self))
                )(else
                    (if (== local6 3)
                        (send gQg3Messager:say(1 2 22 0 self))
                    )(else
                        (self:cue())
                    )
                )
            )
            (case 12
                (if (register)
                    = register 0
                )(else
                    = local5 1
                    (send gOwner:addHonor(-10))
                )
                = local3 16
                (send gMainIconBar:enable(1))
                (send gQg3Messager:say(1 2 23 1 self))
            )
            (case 13
                (send ((Timer:new())):setReal(self 10))
            )
            (case 14
                (if (register and not local4)
                    = register 0
                    (send gOwner:addHonor(10))
                    (self:cue())
                )(else
                    = local5 1
                    (send gOwner:addHonor(-10))
                    (send gQg3Messager:say(1 6 49 0 self))
                )
            )
            (case 15
                (if (== local5 0)
                    (send gOwner:addHonor(25))
                    (send gOwner:solvePuzzle(249 2 8))
                )
                (send global2:newRoom(320))
            )
        )
    )

)
(instance situationTwo of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                proc0_13()
                = cycles 5
            )
            (case 1
                = local3 64
                (send gQg3Messager:say(3 2 28 0 self))
            )
            (case 2
                (send ((Timer:new())):setReal(self 10))
            )
            (case 3
                = register 0
                = local3 128
                (send gQg3Messager:say(1 2 31 0 self))
            )
            (case 4
                (send ((Timer:new())):setReal(self 10))
            )
            (case 5
                (if (register)
                    = register 0
                    (self:cue())
                )(else
                    (send gOwner:addHonor(-10))
                    (send gQg3Messager:say(1 2 36 0 self))
                )
            )
            (case 6
                = local3 256
                (send gQg3Messager:say(1 2 37 0 self))
            )
            (case 7
                (send ((Timer:new())):setReal(self 10))
            )
            (case 8
                (if (< local6 1)
                    (send gOwner:addHonor(-10))
                    (send gQg3Messager:say(1 2 42 0 self))
                )(else
                    (if (== local6 3)
                        (send gQg3Messager:say(1 2 22 0 self))
                    )(else
                        (self:cue())
                    )
                )
            )
            (case 9
                = local3 512
                (send gQg3Messager:say(1 2 43 0 self))
            )
            (case 10
                (send ((Timer:new())):setReal(self 5))
            )
            (case 11
                (if (register and not local4)
                    = register 0
                    (send gOwner:addHonor(10))
                    (self:cue())
                )(else
                    (send gOwner:addHonor(-10))
                    (send gQg3Messager:say(1 6 49 0 self))
                )
            )
            (case 12
                proc0_2()
                (send gGQg3KDHandler:eachElementDo(102))
                (send global2:drawPic(0))
                = cycles 30
            )
            (case 13
                (send gQg3Messager:say(1 2 48 1 self))
            )
            (case 14
                = global122 3
                = global120 1300
                (send global2:newRoom(150))
            )
        )
    )

)
(instance rajahTeller of Teller
    (properties)

    (method (showDialog)
        (super:showDialog(-6 (& local3 $0007) -16 (& local3 $0108) -17 (& local3 $0108) -14 (& local3 $0108) -15 (& local3 $0108) -19 (& local3 $0010) -24 (& local3 $0020) -30 (& local3 $00c0) -44 (& local3 $0200)))
    )


    (method (doChild param1)
        (var temp0, temp1)
        (if (== param1 -6)
            = local5 1
            (send gOwner:addHonor(-10))
            = temp0 1
        )(else
            (if (((== param1 -16) or (== param1 -17)) or (== param1 -15))
                (if (> local6 2)
                    = temp0 1
                    = temp1 1
                )(else
                    ++local6
                )
            )(else
                (if (== param1 -14)
                    (super:doChild(param1))
                    (if (> local6 2)
                        = temp1 1
                        = temp0 1
                    )(else
                        ++local6
                    )
                )(else
                    (if (== param1 -19)
                        = local5 1
                        (send gOwner:addHonor(-10))
                        = local3 32
                    )(else
                        (if (== param1 -24)
                            = local5 1
                            (send gOwner:addHonor(-10))
                            = temp0 1
                        )(else
                            (if (== param1 -30)
                                = local5 1
                                (send gOwner:addHonor(-10))
                                = temp0 1
                            )(else
                                (if (== param1 -44)
                                    (send gOwner:addHonor(-10))
                                    (if (not local4)
                                        = local4 1
                                    )(else
                                        = temp0 1
                                        = temp1 1
                                    )
                                )
                            )
                        )
                    )
                )
            )
        )
        (if (== temp0 1)
            (send ((send global2:script)):
                register(1)
                cycles(2)
            )
            (if (IsObject((send ((send global2:script)):timer)))
                (send ((send ((send global2:script)):timer)):dispose())
            )
            = temp0 0
        )
        return 
            (if (== temp1 1)
                = temp1 0
            )(else
                return 1
            )
    )

)
(instance rajah of Prop
    (properties
        x 164
        y 104
        noun 1
        onMeCheck $0002
        view 332
        loop 2
        signal $0010
    )

    (method (onMe param1 param2)
        (var temp0, temp1)
        (if (IsObject(param1))
            = temp0 (send param1:x)
            = temp1 (send param1:y)
        )(else
            = temp0 param1
            = temp1 param2
        )
        return & onMeCheck OnControl(4 temp0 temp1)
    )

)
(instance egoPic of Feature
    (properties
        x 5
        y 5
        noun 2
        onMeCheck $0008
    )

    (method (doVerb theVerb)
        (send gOwner:doVerb(theVerb))
    )

)
(instance rajahRightArm of Prop
    (properties
        x 201
        y 78
        view 332
        loop 1
    )

    (method (doVerb theVerb)
        (rajah:doVerb(theVerb))
    )

)
(instance localRakeesh of Feature
    (properties
        x 18
        y 189
        onMeCheck $0004
    )

    (method (doVerb theVerb)
        (var temp0)
        return 
            (switch (theVerb)
                (case 2
                    (if (& local3 $0007)
                        = local5 1
                        (send gOwner:addHonor(-10))
                        = temp0 1
                        (send gQg3Messager:say(3 5 6))
                    )(else
                        (if (& local3 $0008)
                            = local5 1
                            (send gOwner:addHonor(-10))
                            = local6 999
                            = temp0 1
                            (send gQg3Messager:say(3 5 19))
                        )(else
                            (if (& local3 $0010)
                                = local5 1
                                (send gOwner:addHonor(-10))
                                = temp0 0
                                (send gQg3Messager:say(3 5 24))
                                = local3 32
                            )(else
                                (if (& local3 $0020)
                                    = local4 1
                                    = temp0 1
                                    (send gQg3Messager:say(3 5 25))
                                )(else
                                    (if ((& local3 $0040) or (& local3 $0080))
                                        (send gOwner:addHonor(-10))
                                        = temp0 1
                                        (send gQg3Messager:say(3 5 30))
                                    )(else
                                        (if (& local3 $0100)
                                            = local6 999
                                            (send gOwner:addHonor(-10))
                                            = temp0 1
                                            (send gQg3Messager:say(3 5 30))
                                        )(else
                                            (if (& local3 $0300)
                                                (if (not local4)
                                                    = local4 1
                                                    (send gOwner:addHonor(-10))
                                                    = temp0 0
                                                    (send gQg3Messager:say(1 2 27))
                                                )(else
                                                    = temp0 1
                                                )
                                            )
                                        )
                                    )
                                )
                            )
                        )
                    )
                    (if (temp0)
                        (send ((send global2:script)):
                            register(1)
                            cycles(2)
                        )
                        (if (IsObject((send ((send global2:script)):timer)))
                            (send ((send ((send global2:script)):timer)):dispose())
                        )
                    )
                    return 1
                )
                (case 1
                    (send gQg3Messager:say(3 1 0))
                )
                (default 
                    (super:doVerb(theVerb))
                )
            )
    )

)
(instance cheeseCake1 of Prop
    (properties
        x 116
        y 91
        noun 10
        onMeCheck $0010
        view 331
        loop 1
        priority 5
        signal $0010
        cycleSpeed 12
    )

    (method (doVerb theVerb)
        (var temp0)
        return 
            (switch (theVerb)
                (case 2
                    (if (& local3 $0007)
                        = local5 1
                        (send gOwner:addHonor(-10))
                        = temp0 1
                        (send gQg3Messager:say(4 5 6))
                    )(else
                        (if (& local3 $0008)
                            = local6 999
                            = local5 1
                            (send gOwner:addHonor(-10))
                            = temp0 1
                            (send gQg3Messager:say(4 5 19))
                        )(else
                            (if (& local3 $0010)
                                = local5 1
                                (send gOwner:addHonor(-10))
                                = temp0 0
                                (send gQg3Messager:say(4 5 24))
                                = local3 32
                            )(else
                                (if (& local3 $0020)
                                    = temp0 1
                                    = local4 1
                                    (send gQg3Messager:say(4 5 25))
                                )(else
                                    (if ((& local3 $0040) or (& local3 $0080))
                                        (send gOwner:addHonor(-10))
                                        = temp0 1
                                        (send gQg3Messager:say(4 5 30))
                                    )(else
                                        (if (& local3 $0100)
                                            = local6 999
                                            (send gOwner:addHonor(-10))
                                            = temp0 1
                                            (send gQg3Messager:say(4 5 30))
                                        )(else
                                            (if (& local3 $0200)
                                                (if (not local4)
                                                    = local4 1
                                                    = temp0 0
                                                    (send gOwner:addHonor(-10))
                                                    (send gQg3Messager:say(1 2 27))
                                                )(else
                                                    = temp0 1
                                                )
                                            )
                                        )
                                    )
                                )
                            )
                        )
                    )
                    (if (temp0)
                        (send ((send global2:script)):
                            register(1)
                            cycles(2)
                        )
                        (if (IsObject((send ((send global2:script)):timer)))
                            (send ((send ((send global2:script)):timer)):dispose())
                        )
                    )
                    return 1
                )
                (case 1
                    (send gQg3Messager:say(4 1 0))
                )
                (default 
                    (super:doVerb(theVerb))
                )
            )
    )


    (method (onMe param1 param2)
        (var temp0, temp1)
        (if (IsObject(param1))
            = temp0 (send param1:x)
            = temp1 (send param1:y)
        )(else
            = temp0 param1
            = temp1 param2
        )
        return & onMeCheck OnControl(4 temp0 temp1)
    )

)
(instance cheeseCake2 of Feature
    (properties
        x 238
        y 170
        onMeCheck $0020
    )

    (method (doVerb theVerb)
        (cheeseCake1:doVerb(rest theVerb))
    )


    (method (onMe param1 param2)
        (var temp0, temp1)
        (if (IsObject(param1))
            = temp0 (send param1:x)
            = temp1 (send param1:y)
        )(else
            = temp0 param1
            = temp1 param2
        )
        return & onMeCheck OnControl(4 temp0 temp1)
    )

)
(instance tell of Teller
    (properties)

    (method (showDialog)
        (super:showDialog(-4 (& local3 $0003) -5 (& local3 $0007) -9 (& local3 $0002) -8 (& local3 $0400) -11 (& local3 $0004) -12 (& local3 $0008) -13 (& local3 $0008) -26 (& local3 $0030) -28 (& local3 $0040) -32 (& local3 $0080) -33 (& local3 $0080) -29 (& local3 $0040) -34 (& local3 $0080) -35 (& local3 $0080) -40 (& local3 $0100) -39 (& local3 $0100) -38 (& local3 $0100) -45 (& local3 $0200)))
    )


    (method (doChild param1)
        (var temp0, temp1)
        (if (== param1 -4)
            (if (& local3 $0002)
                = local3 1024
            )(else
                (send gOwner:addHonor(5))
            )
            = temp0 1
        )(else
            (if (== param1 -5)
                = local5 1
                (send gOwner:addHonor(-10))
                = temp0 1
            )(else
                (if (== param1 -9)
                    (send gQg3Messager:say(2 5 9 1))
                    (if (<= (send gOwner:trySkill(13 120)) 0)
                        (send gQg3Messager:say(2 5 9 2))
                    )(else
                        (send gOwner:addHonor(5))
                        (send gQg3Messager:say(2 5 9 3))
                    )
                    = temp1 1
                    = temp0 1
                )(else
                    (if (== param1 -8)
                        = temp0 1
                    )(else
                        (if (== param1 -11)
                            (send gOwner:
                                addHonor(20)
                                solvePuzzle(250 2 8)
                            )
                            = temp0 1
                        )(else
                            (if (== param1 -12)
                                = local6 999
                                (send gQg3Messager:say(2 5 12 1))
                                (if (< gGOwnerMaxStamina[13] 120)
                                    (send gQg3Messager:say(2 5 12 2))
                                )(else
                                    (send gQg3Messager:say(2 5 12 3))
                                    (send gOwner:addHonor(20))
                                )
                                = temp1 1
                                = temp0 1
                            )(else
                                (if (== param1 -13)
                                    = local6 999
                                    (if (< gGOwnerMaxStamina[13] 120)
                                        (send gQg3Messager:say(2 5 13 2))
                                    )(else
                                        (send gQg3Messager:say(2 5 13 3))
                                    )
                                    = temp1 1
                                    = temp0 1
                                )(else
                                    (if (== param1 -26)
                                        (send gOwner:addHonor(3))
                                        = temp0 1
                                    )(else
                                        (if (== param1 -28)
                                            (send gOwner:addHonor(5))
                                            = temp0 1
                                        )(else
                                            (if (== param1 -29)
                                                = local5 1
                                                (send gOwner:addHonor(-10))
                                                = temp0 1
                                            )(else
                                                (if (== param1 -32)
                                                    = temp0 1
                                                )(else
                                                    (if (== param1 -35)
                                                        = local5 1
                                                        (send gOwner:addHonor(-10))
                                                        = temp0 1
                                                    )(else
                                                        (if (== param1 -34)
                                                            (send gOwner:addHonor(20))
                                                            = temp0 1
                                                        )(else
                                                            (if (== param1 -33)
                                                                (send gOwner:addHonor(20))
                                                                = temp0 1
                                                            )(else
                                                                (if (== param1 -40)
                                                                    = local6 999
                                                                    = temp0 1
                                                                )(else
                                                                    (if (== param1 -38)
                                                                        = local6 999
                                                                        (send gOwner:addHonor(-10))
                                                                        = temp0 1
                                                                    )(else
                                                                        (if (== param1 -39)
                                                                            = local6 999
                                                                            (send gOwner:addHonor(20))
                                                                            = temp0 1
                                                                        )(else
                                                                            (if (== param1 -45)
                                                                                (send gOwner:addHonor(3))
                                                                                = temp0 1
                                                                            )
                                                                        )
                                                                    )
                                                                )
                                                            )
                                                        )
                                                    )
                                                )
                                            )
                                        )
                                    )
                                )
                            )
                        )
                    )
                )
            )
        )
        (if (temp0)
            (send ((send global2:script)):
                register(1)
                cycles(2)
            )
            (if (IsObject((send ((send global2:script)):timer)))
                (send ((send ((send global2:script)):timer)):dispose())
            )
            = temp0 0
        )
        return 
            (if (== temp1 1)
                = temp1 0
            )(else
                return 1
            )
    )

)
(instance flame1 of Prop
    (properties
        x 45
        y 21
        view 330
        priority 14
        signal $0010
    )

    (method (doVerb theVerb)
        (if (== theVerb 1)
            (lightglobe:doVerb(theVerb))
        )(else
            (super:doVerb(theVerb))
        )
    )

)
(instance flame2 of Prop
    (properties
        x 286
        y 53
        view 330
        loop 1
        priority 14
        signal $0010
    )
)
(instance public rajahTalker of Talker
    (properties
        x 226
        y 14
        view 339
        loop 1
        talkWidth 260
        color 41
        back 57
        textX -195
        textY 150
    )

    (method (init param1)
        (super:init(rajahBust rajahEyes rajahMouth rest param1))
        = local7 0
    )


    (method (doit)
        (if (not % ++local7 40)
            (if (> ++local0 7)
                = local0 0
            )
            (if (local2)
                (if (> ++flame2Cel 10)
                    = flame2Cel 0
                    = local2 0
                )
            )(else
                (if (<> (flame2:cel) 0)
                    = local2 1
                    = flame2Cel (flame2:cel)
                )(else
                    (if (not Random(0 19))
                        = local2 1
                        = flame2Cel 0
                    )
                )
            )
            (flame1:cel(local0))
            (flame2:cel(flame2Cel))
            Animate((send gGQg3KDHandler:elements) 0)
        )
        (super:doit())
    )

)
(instance rajahMouth of Prop
    (properties
        view 339
    )
)
(instance rajahBust of Prop
    (properties
        view 339
        loop 3
    )
)
(instance rajahEyes of Prop
    (properties
        view 339
        loop 2
    )
)
(instance lightglobe of Feature
    (properties
        x 43
        y 18
        noun 6
        nsTop 5
        nsLeft 28
        nsBottom 32
        nsRight 58
    )
)
(instance spittoon of Feature
    (properties
        x 191
        y 153
        noun 7
        nsTop 143
        nsLeft 171
        nsBottom 164
        nsRight 211
    )
)
(instance hieroglyphics of Feature
    (properties
        x 76
        y 33
        noun 8
        nsLeft 65
        nsBottom 66
        nsRight 88
    )
)
(instance incenseburner of Feature
    (properties
        x 292
        y 58
        noun 9
        nsTop 41
        nsLeft 278
        nsBottom 75
        nsRight 307
    )
)
