(include "sci.sh")
(use "Main")
(use "Class_255_0")
(use "Cycle")
(use "Game")
(use "PV")
(use "Obj")
(script 53)


(local
    newView_18
    newView_19
    newView_20
    newView_21
    newView_22
    newView_23
    newView_24
    newView
    newView_2
    newView_3
    newView_4
    newView_5
    newView_6
    newView_7
    newView_8
    newView_9
    newView_10
    newView_11
    newView_12
    newView_13
    newView_14
    newView_15
    newView_16
    newView_17
    local24[2]
    newAct
    local27

)
(instance public Room53 of Rm
    (properties
        picture 53
        style 16
    )

    (method (init)
        Load(rsVIEW 676)
        Load(rsVIEW 290)
        (self:setRegions(601))
        = global189 1
        (super:init())
        (send ((View:new())):
            view(676)
            loop(3)
            cel(0)
            posn(230 77)
            setPri(4)
            addToPic()
        )
        (send ((View:new())):
            view(676)
            loop(3)
            cel(1)
            posn(42 88)
            setPri(10)
            addToPic()
        )
        (if ((== gPicture 54) or (== gPicture 0))
            (send gEgo:
                posn(72 132)
                view(4)
                setStep(4 1)
                illegalBits(32768)
                init()
            )
        )
        (if (global115)
            (self:setScript(cleanBedroom))
        )
        (if (not global102)
            Load(rsVIEW 675)
            Load(rsVIEW 676)
            Load(rsVIEW 63)
            Load(rsVIEW 678)
            Load(rsSOUND 62)
            (send (= newAct (Act:new())):
                view(290)
                illegalBits(0)
                loop(0)
                setCycle(Walk)
                posn(72 1132)
                illegalBits(0)
                ignoreActors(1)
                setCycle(Walk)
                setScript(chaseEgo)
                init()
            )
            (send (= newView (View:new())):
                view(676)
                loop(0)
                cel(0)
                posn(102 89)
                ignoreActors(1)
                stopUpd()
                init()
            )
            (send (= newView_2 (View:new())):
                view(676)
                loop(0)
                cel(1)
                posn(261 125)
                ignoreActors(1)
                stopUpd()
                init()
            )
            (send (= newView_3 (View:new())):
                view(676)
                loop(0)
                cel(2)
                posn(246 136)
                ignoreActors(1)
                stopUpd()
                init()
            )
            (send (= newView_4 (View:new())):
                view(676)
                loop(0)
                cel(3)
                posn(101 112)
                ignoreActors(1)
                stopUpd()
                init()
            )
            (send (= newView_5 (View:new())):
                view(676)
                loop(0)
                cel(4)
                posn(198 107)
                ignoreActors(1)
                stopUpd()
                init()
            )
            (send (= newView_6 (View:new())):
                view(676)
                loop(0)
                cel(5)
                posn(97 150)
                ignoreActors(1)
                stopUpd()
                init()
            )
            (send (= newView_7 (View:new())):
                view(676)
                loop(0)
                cel(6)
                posn(174 147)
                ignoreActors(1)
                setPri(13)
                stopUpd()
                init()
            )
            (send (= newView_8 (View:new())):
                view(676)
                loop(1)
                cel(0)
                posn(275 150)
                ignoreActors(1)
                setPri(11)
                stopUpd()
                init()
            )
            (send (= newView_9 (View:new())):
                view(676)
                loop(1)
                cel(1)
                posn(255 147)
                ignoreActors(1)
                setPri(11)
                stopUpd()
                init()
            )
            (send (= newView_10 (View:new())):
                view(676)
                loop(1)
                cel(2)
                posn(201 147)
                ignoreActors(1)
                setPri(13)
                stopUpd()
                init()
            )
            (send (= newView_11 (View:new())):
                view(676)
                loop(1)
                cel(3)
                posn(195 84)
                ignoreActors(1)
                stopUpd()
                init()
            )
            (send (= newView_12 (View:new())):
                view(676)
                loop(2)
                cel(0)
                posn(182 126)
                ignoreActors(1)
                stopUpd()
                init()
            )
            (send (= newView_13 (View:new())):
                view(676)
                loop(2)
                cel(1)
                posn(17 147)
                ignoreActors(1)
                stopUpd()
                init()
            )
            (send (= newView_14 (View:new())):
                view(676)
                loop(2)
                cel(2)
                posn(24 137)
                ignoreActors(1)
                stopUpd()
                init()
            )
            (send (= newView_15 (View:new())):
                view(676)
                loop(2)
                cel(3)
                posn(292 140)
                ignoreActors(1)
                stopUpd()
                init()
            )
            (send (= newView_16 (View:new())):
                view(676)
                loop(2)
                cel(4)
                posn(264 134)
                ignoreActors(1)
                stopUpd()
                init()
            )
            (send (= newView_17 (View:new())):
                view(676)
                loop(2)
                cel(5)
                posn(270 136)
                ignoreActors(1)
                stopUpd()
                init()
            )
            (send (= newView_18 (View:new())):
                view(675)
                loop(0)
                cel(0)
                posn(128 93)
                ignoreActors(1)
                stopUpd()
                init()
            )
            (send (= newView_19 (View:new())):
                view(675)
                loop(0)
                cel(1)
                posn(178 92)
                ignoreActors(1)
                stopUpd()
                init()
            )
            (send (= newView_20 (View:new())):
                view(675)
                loop(0)
                cel(2)
                posn(130 118)
                ignoreActors(1)
                stopUpd()
                init()
            )
            (send (= newView_21 (View:new())):
                view(675)
                loop(0)
                cel(3)
                posn(177 121)
                ignoreActors(1)
                stopUpd()
                init()
            )
            (send (= newView_22 (View:new())):
                view(675)
                loop(0)
                cel(4)
                posn(237 121)
                ignoreActors(1)
                stopUpd()
                init()
            )
            (send (= newView_23 (View:new())):
                view(675)
                loop(0)
                cel(5)
                posn(132 157)
                ignoreActors(1)
                setPri(13)
                stopUpd()
                init()
            )
            (send (= newView_24 (View:new())):
                view(675)
                loop(0)
                cel(6)
                posn(173 157)
                ignoreActors(1)
                setPri(13)
                stopUpd()
                init()
            )
        )
    )


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


    (method (handleEvent pEvent)
        (super:handleEvent(pEvent))
        (if ((<> (send pEvent:type()) 128) or (send pEvent:claimed()))
            return 
        )
        (if (Said('clean/room') or Said('clean[/!*]'))
            (if (<> global102 1)
                (self:setScript(cleanBedroom))
            )(else
                Print(53 0)
            )
        )(else
            (if (Said('look>'))
                (if (Said('/bed'))
                    Print(53 1)
                )(else
                    (if (Said('/stair'))
                        Print(53 2)
                    )(else
                        (if (Said('<under/bed'))
                            Print(53 3)
                        )(else
                            (if (Said('/window'))
                                (if ((send gEgo:inRect(211 125 271 146)))
                                    Print(53 4)
                                )(else
                                    Print(800 1)
                                )
                            )(else
                                (if (Said('<in/chest,dresser,drawer'))
                                    Print(53 5)
                                )(else
                                    (if (Said('/chest,dresser'))
                                        Print(53 6)
                                    )(else
                                        (if (Said('/mirror'))
                                            (if ((send gEgo:inRect(217 142 295 161)))
                                                Print(53 7)
                                            )(else
                                                proc0_15()
                                            )
                                        )(else
                                            (if (Said('/shelf'))
                                                Print(53 8)
                                            )(else
                                                (if (Said('/wall'))
                                                    Print(53 9)
                                                )(else
                                                    (if (Said('/dirt') or Said('<down'))
                                                        Print(53 10)
                                                    )(else
                                                        (if (Said('/carpet,carpet'))
                                                            Print(53 11)
                                                        )(else
                                                            (if (Said('look[<around][/room]'))
                                                                Print(Format(@global300 53 12 
                                                                        (if (not global102)
                                                                            "My goodness, these dwarfs are sloppy!"
                                                                        )(else
                                                                            " "
                                                                        )
))
                                                            )
                                                        )
                                                    )
                                                )
                                            )
                                        )
                                    )
                                )
                            )
                        )
                    )
                )
            )(else
                (if (Said('create/bed') or Said('dust,sweep[/room,dirt,furniture]'))
                    (if (global102)
                        Print(53 0)
                    )(else
                        Print(53 13)
                    )
                )(else
                    (if (Said('close,close/drawer,dresser,chest'))
                        Print(53 14)
                    )(else
                        (if (Said('open/chest,dresser,drawer'))
                            Print(53 5)
                        )(else
                            (if (Said('get<in,on/bed') or Said('sleep,lay[<down,on,in]'))
                                Print(53 15)
                            )
                        )
                    )
                )
            )
        )
    )

)
(instance cleanBedroom of Script
    (properties)

    (method (init param1)
        (super:init(param1))
        (send gEgo:
            illegalBits(0)
            ignoreActors(1)
            setCycle(Walk)
            setLoop(-1)
        )
    )


    (method (doit)
        (super:doit())
    )


    (method (changeState newState)
        (super:changeState(newState))
        (switch (= state newState)
            (case 0
                (proc0_10() = global205 1 
                (if (not global115)
                    proc0_12(601 1)
                    = global115 1
                )
 (send gEgo:
                    setCycle(Walk)
                    setMotion(MoveTo 137 131 self)
                )
  )
            )
            (case 1
                ((send gEgo:setMotion(MoveTo 130 145 self))  )
            )
            (case 2
                ((send gEgo:
                    view(63)
                    setCycle(Fwd)
                )
 = seconds 2  )
            )
            (case 3
                ((send newView_23:dispose()) (send newView_6:dispose()) (send gEgo:
                    view(4)
                    setMotion(MoveTo 185 145 self)
                )
  )
            )
            (case 4
                ((send gEgo:
                    view(63)
                    loop(2)
                    setCycle(Fwd)
                )
 = seconds 2  )
            )
            (case 5
                ((send newView_24:dispose()) (send newView_7:dispose()) (send newView_10:dispose()) (send gEgo:
                    view(4)
                    setMotion(MoveTo 231 145 self)
                )
  )
            )
            (case 6
                ((self:cue())  )
            )
            (case 7
                ((send gEgo:
                    view(4)
                    setMotion(MoveTo 237 157 self)
                )
  )
            )
            (case 8
                ((send gEgo:
                    view(63)
                    loop(0)
                    setCycle(Fwd)
                )
 = seconds 2  )
            )
            (case 9
                ((send newView_17:dispose()) (send newView_16:dispose()) (send newView_15:dispose()) (send newView_9:dispose()) (send newView_8:dispose()) (send gEgo:
                    view(4)
                    setMotion(MoveTo 232 130 self)
                )
  )
            )
            (case 10
                ((send gEgo:
                    view(63)
                    loop(0)
                    setCycle(Fwd)
                )
 = seconds 2  )
            )
            (case 11
                ((send newView_22:dispose()) (send newView_2:dispose()) (send newView_3:dispose()) (send gEgo:
                    view(4)
                    setMotion(MoveTo 187 126 self)
                )
  )
            )
            (case 12
                ((send gEgo:
                    view(63)
                    loop(3)
                    setCycle(Fwd)
                )
 = seconds 2  )
            )
            (case 13
                ((send newView_19:dispose()) (send newView_21:dispose()) (send newView_5:dispose()) (send newView_11:dispose()) (send newView_12:dispose()) (send gEgo:
                    view(4)
                    setMotion(MoveTo 115 126 self)
                )
  )
            )
            (case 14
                ((send gEgo:
                    view(63)
                    loop(3)
                    setCycle(Fwd)
                )
 = seconds 2  )
            )
            (case 15
                ((send newView_18:dispose()) (send newView_20:dispose()) (send newView:dispose()) (send newView_4:dispose()) (send gEgo:
                    view(4)
                    setMotion(MoveTo 41 151 self)
                )
  )
            )
            (case 16
                ((send gEgo:
                    view(63)
                    loop(1)
                    setCycle(Fwd)
                )
 = seconds 2  )
            )
            (case 17
                ((send newView_13:dispose()) (send newView_14:dispose()) (send gEgo:
                    view(4)
                    setLoop(-1)
                    setMotion(MoveTo 91 133 self)
                )
  )
            )
            (case 18
                (= global204 0 (send gEgo:setMotion(MoveTo 71 133 self))  )
            )
            (case 19
                ((send global2:newRoom(54)) )
            )
        )
    )

)
(instance chaseEgo of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                (= seconds 60  )
            )
            (case 1
                (
                (if ((((global115 or global122) or global204) or global102) or not (send gEgo:inRect(95 127 241 145)))
                    --state
                    = seconds 5
                )(else
                    (send newAct:
                        setAvoider(Avoid)
                        posn(55 131)
                        setMotion(MoveTo 78 131 self)
                    )
                    proc0_10()
                    = global204 0
                    = global205 1
                    = global122 1
                )
 )
            )
            (case 2
                (Print(53 16) (send gEgo:
                    illegalBits(0)
                    setAvoider(Avoid)
                    setMotion(MoveTo 75 135 self)
                )
  )
            )
            (case 3
                ((send newAct:setMotion(Follow gEgo 20)) (send gEgo:setMotion(MoveTo 10 135 self)) )
            )
        )
    )

)
