integer l1;
integer x;
integer earflick;
integer earsdown;
vector rot;
default
{
on_rez(integer start_param)
{
if(l1!=0)
llListenRemove(l1);
l1=llListen(1,"",llGetOwner(),"");
if(earflick==TRUE)
{
llSetTimerEvent(2+llFrand(8));
}
else
{
llSetTimerEvent(0);
}
}
state_entry()
{
if(l1!=0)
llListenRemove(l1);
l1=llListen(1,"",llGetOwner(),"");
}
listen(integer channel, string name, key id, string msg)
{
msg=llToLower(msg);
if(msg=="ears up"||msg=="earsup")
{
llSetLocalRot(<-0.29028, 0.00000, 0.00000, 0.95694>);
earsdown=FALSE;
}
else if(msg=="ears down"||msg=="earsdown")
{
llSetLocalRot(<-0.65903, 0.25628, 0.70694, 0.01542>);
earsdown=TRUE;
}
else if(msg=="earflick on"||msg=="eartwitch on")
{
earflick=TRUE;
llSetTimerEvent(2+llFrand(8));
}
else if(msg=="earflick off"||msg=="eartwitch off")
{
earflick=FALSE;
llSetTimerEvent(0);
}
}
timer()
{
if(earsdown==FALSE)
{
for(x=0; x < 4; x++)
{
rot=llRot2Euler(llGetLocalRot());
rot.z=rot.z + 0.1;
rot.x=rot.x - 0.05;
llSetLocalRot(llEuler2Rot(rot));
llSleep(0.01);
}
for(x=0; x < 4; x++)
{
rot=llRot2Euler(llGetLocalRot());
rot.z=rot.z - 0.1;
rot.x=rot.x + 0.05;
llSetLocalRot(llEuler2Rot(rot));
llSleep(0.01);
}
}
llSetTimerEvent(2+llFrand(8));
}
}