CODE
string prey = "A-Life Fish";
float hunger = 0;
float idlespeed = 1; //Rate at which it moves when idle
integer ate;
integer spawn;
integer death;
breed()
{
llRezObject("Shark",llGetPos() + <0,0,.5>,<0,0,0>,<0,0,0,0>,0);
}
default
{
object_rez(key child)
{
llGiveInventory(child, llKey2Name(child));
}
state_entry()
{
llSetBuoyancy(1);
llSensorRepeat(prey,NULL_KEY,ACTIVE|PASSIVE|SCRIPTED,50,PI,1);
llSetTimerEvent(1);
}
timer()
{
hunger = hunger + 1;
llSetText("",<1,1,1>,1);
if (hunger >= 140)
{
death = death + 1;
hunger = 0;
//llDie();
}
}
sensor(integer num_detected)
{
vector detectpos = llDetectedPos(0);
if (hunger >=101)
{
llLookAt(llGetPos() + llGetVel(),1,1);
}
if (hunger <=100)
{
vector mypos = llGetPos();
vector myvel = llGetVel();
llLookAt(<mypos.x + myvel.x,mypos.y + myvel.y, mypos.z>,1,1);
}
vector movevec = detectpos - llGetPos();
if (hunger <=0)
{
hunger = 1;
}
float speed = (3.5 - 100/hunger);
if (speed <=0)
{
speed = 0;
}
movevec = llVecNorm(movevec)*(speed);
llApplyImpulse(movevec,FALSE);
}
no_sensor()
{
//llSetText("No Fish to Eat",<1,1,1>,1);
}
collision_start(integer num_detected) //incase the fish runs into something
{
string hit = llDetectedName(0);
if (hit =="food")
{
hunger = hunger - llRound(llFrand(10));
}
if (hunger <=0)
{
hunger = 0;
}
if (hit == "A-Life Fish")
{
ate = ate + 1;
hunger = hunger - (75 + llRound(llFrand(25)));
if (hunger <=0)
{
hunger = 0;
}
if ((hunger <=30))
{
spawn = spawn + 1;
hunger = hunger + 100;
//breed();
}
//llOwnerSay("Eating fish hunger is now " + (string) hunger);
}
}
}