Dance Script

Written by Kitsune
list dances = [ "BackFlip","dance1", "dance2", "dance3", "dance4" ];
integer WHICH = 0;
integer TOTAL = 5;
integer PERMS = 0;
integer ON = FALSE;

default
{
    state_entry()
    {
        llRequestPermissions(llGetOwner(), PERMISSION_TRIGGER_ANIMATION);
        llSetTimerEvent(1.0);
        llListen(0, "", llGetOwner(), "");
    }

    timer()
    {
        PERMS = llGetPermissions();
        if (PERMS & PERMISSION_TRIGGER_ANIMATION)
        {
            if (ON == TRUE)
            {
                llStopAnimation(llList2String(dances, WHICH - 1));
                llStartAnimation(llList2String(dances, WHICH));
                WHICH++;
                if (WHICH >= TOTAL)
                {
                    WHICH = 0;
                }
            } else if (ON == 2)
            {
                llStopAnimation(llList2String(dances, WHICH - 1));
                WHICH = (integer)llFrand(TOTAL + 0.999);
                llStartAnimation(llList2String(dances, WHICH));
            }
        }
    }
    
    listen(integer channel, string name, key id, string message)
    {
        if (channel == 0 && id == llGetOwner())
        {
            if (message == "doff")
            {
                ON = FALSE;
            } else if (ON == FALSE && message == "don")
            {
                if (!(PERMS & PERMISSION_TRIGGER_ANIMATION))
                {
                    llRequestPermissions(llGetOwner(), PERMISSION_TRIGGER_ANIMATION);
                }
                ON = TRUE;
            } else if (ON == FALSE && message == "dancer")
            {
                if (!(PERMS & PERMISSION_TRIGGER_ANIMATION))
                {
                    llRequestPermissions(llGetOwner(), PERMISSION_TRIGGER_ANIMATION);
                }
                ON = 2;
            }
        }
    }
}