// Reducing Script
//
// Kimm Paulino
// Written for Stewart Bosatsu, Sept 2010
 
integer TIMER_STEPS = 18;
float   REDUCING_STEPS = 20;        // If this >= TIMER_STEPS then prim will disappear
float   TIMER_INTERVAL = 2.0;       // In seconds
integer gCount;
vector  gReducingFactor;
 
default
{
    on_rez (integer start_param)
    {
        llResetScript();
    }
 
    state_entry()
    {
        gCount = 0;
        vector size = llGetScale();
        float scaling = 1.0 / REDUCING_STEPS;
        gReducingFactor = size * scaling;
 
    }
 
    touch_start(integer total_number)
    {
        llSetTimerEvent (TIMER_INTERVAL);
    }
 
    timer ()
    {
        // Reduce the size by 1/TIMER_STEPS % each time
        gCount ++;
        if (gCount > TIMER_STEPS)
        {
            // disable and quit
            llSetTimerEvent (0.0);
            llDie();
            return;
        }
 
        // Reduce prim
        vector size = llGetScale();
 
        size = size - gReducingFactor;
        llSetScale (size);
    }
}