(version 2)
(include "sci.sh")
(exports
    0 antMonster
)
(use "Main")
(use "CombatIcon")
(use "Cycle")
(use "View")
(use "Obj")
(script 565)



(instance public antMonster of Monster
    (properties
        x 170
        y 142
        view 562
        roar 904
        primDamage 8
        secDamage 10
        armorValue 6
        monHP 150
        spellHitX 162
        spellHitY 98
    )

    (method (init param1)
        (send global2:picture(560))
        (self:setScript(sFight))
        (abdomen:init())
        (theHead:init())
        (splat:
            init()
            hide()
        )
        (super:init(rest param1))
        (send gLongSong:
            setLoop(-1)
            changeTo(151)
        )
    )


    (method (getHurt)
        (self:setScript(sReact))
        (super:getHurt())
    )


    (method (defenseLevel)
        return 120
    )


    (method (restart)
        (self:setScript(sFight))
    )

)
(instance abdomen of MonsterProp
    (properties
        x 180
        y 124
        view 562
        loop 1
        signal $4000
    )

    (method (cue)
        (self:setCycle(Beg))
        (splat:
            x(188)
            y(95)
            setCel(0)
            show()
            setMotion(MoveTo 128 95 splat)
        )
    )

)
(instance theHead of MonsterProp
    (properties
        x 152
        y 126
        view 562
        loop 3
        cel 2
        signal $4000
    )
)
(instance splat of Actor
    (properties
        x 188
        y 95
        yStep 15
        view 562
        loop 2
        priority 11
        signal $4810
        cycleSpeed 5
        xStep 15
        moveSpeed 0
    )

    (method (cue)
        (if (< cel 2)
            (send gWarriorObj:autoDodge())
            (if (not 
            (if ((== (send gWarriorObj:view) 26) or (== (send gWarriorObj:view) 27))
            )(else
                == (send gWarriorObj:view) 555
            )
)
                (send gWarriorObj:getHurt((send gMonster:secDamage)))
                (self:setCycle(End self))
            )(else
                (self:setMotion(MoveTo (- x 160) y))
            )
        )(else
            (self:hide())
        )
    )

)
(instance sFight of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                = ticks (/ 90 global209)
            )
            (case 1
                (theHead:
                    x(152)
                    y(126)
                    setCycle(CT 2 1 self)
                )
            )
            (case 2
                (send gWarriorObj:autoDodge())
                (if (not 
                (if ((== (send gWarriorObj:view) 26) or (== (send gWarriorObj:view) 27))
                )(else
                    == (send gWarriorObj:view) 555
                )
)
                    (send gWarriorObj:getHurt((send gMonster:primDamage)))
                )(else
                    (send gLongSong2:
                        number(940)
                        play()
                    )
                )
                (if (Random(0 1))
                    (theHead:setCel(3))
                )
                = ticks 60
            )
            (case 3
                (theHead:
                    y(120)
                    setCycle(CT 2 1 self)
                )
            )
            (case 4
                (send gWarriorObj:autoDodge())
                (if (not 
                (if ((== (send gWarriorObj:view) 26) or (== (send gWarriorObj:view) 27))
                )(else
                    == (send gWarriorObj:view) 555
                )
)
                    (send gWarriorObj:getHurt((send gMonster:primDamage)))
                )(else
                    (send gLongSong2:
                        number(940)
                        play()
                    )
                )
                (if (Random(0 1))
                    (theHead:setCel(3))
                )
                = ticks 60
            )
            (case 5
                (theHead:
                    y(126)
                    setCycle(CT 2 1 self)
                )
            )
            (case 6
                (send gWarriorObj:autoDodge())
                (if (not 
                (if ((== (send gWarriorObj:view) 26) or (== (send gWarriorObj:view) 27))
                )(else
                    == (send gWarriorObj:view) 555
                )
)
                    (send gWarriorObj:getHurt((send gMonster:primDamage)))
                )(else
                    (send gLongSong2:
                        number(940)
                        play()
                    )
                )
                (if (Random(0 1))
                    (theHead:setCel(3))
                )
                = ticks (/ 180 global209)
            )
            (case 7
                (abdomen:setCycle(End abdomen))
                = ticks (/ 90 global209)
            )
            (case 8
                (self:init())
            )
        )
    )

)
(instance sReact of Script
    (properties)

    (method (changeState newState)
        (switch (= state newState)
            (case 0
                (theHead:
                    x(174)
                    y(110)
                    setCycle(CT 0 1)
                )
                = ticks 60
            )
            (case 1
                (send gMonster:whimper())
                = ticks (- (/ 180 global209) 59)
            )
            (case 2
                (send gMonster:setScript(sFight))
            )
        )
    )

)
