User:BUTTONpUSHER Jones/pet protocol/OBEY
Jump to navigation
Jump to search
// OBEY function
// Any incoming commands are sent to this function. This script determines
// if the command will be obeyed based on values from the pet's behavior
// setup. If the command will be obeyed, it will be sent out to the other
// scripts in the pet.
// there are 5 parameters for the obey variable, each ranging from 0 to 1.
// threat, neutral, prey, owner, other avatar
// if the parameter is 0, the pet will never obey a command from something
// in that class, if it's 1 the pet will always obey that command.
integer DEBUG = TRUE; // if TRUE, chat results to the owner.
obey1 ( string command, string this_pet, string other )
{
// test if commander is a threat
if ( llList2Float(other,fight) > this_pet.flee )
{
if (llList2Float(obey,1) > llFrand(1)) // calculate chance of obeying the command
{
if(DEBUG)llOwnerSay(":OBEY: case 1 passed. fix this logic? passed");
llMessageLinked(command);
}
else
{
if(DEBUG)llOwnerSay(":OBEY: case 1 failed");
}
}
// neutral
if ( other.fight > this_pet.flee )
{
if (llList2Float(obey,2) > llFrand(1)) // calculate chance of obeying the command
{
if(DEBUG)llOwnerSay(":OBEY: case 2 passed. fix this logic? passed");
llMessageLinked(command);
}
else
{
if(DEBUG)llOwnerSay(":OBEY: case 2 failed");
}
}
// prey
else if ( this_pet.fight > other.flee )
{
if (llList2Float(obey,3) > llFrand(1)) // calculate chance of obeying the command
{
if(DEBUG)llOwnerSay(":OBEY: this_pet.fight > other.flee passed");
llMessageLinked(command);
}
else
{
if(DEBUG)llOwnerSay(":OBEY: this_pet.fight > other.flee failed");
}
}
// owner
else if ( other == gOwner )
{
if (llList2Float(obey,4) > llFrand(1)) // calculate chance of obeying the command
{
if(DEBUG)llOwnerSay(":OBEY: other == gOwner");
llMessageLinked(command);
}
else
{
if(DEBUG)llOwnerSay(":OBEY: other == gOwner failed");
}
}
//other
else if ( other != gOwner )
{
if (llList2Float(obey,5) > llFrand(1)) // calculate chance of obeying the command
{
if(DEBUG)llOwnerSay(":OBEY: other != gOwner");
llMessageLinked(command);
}
else
{
if(DEBUG)llOwnerSay(":OBEY: other != gOwner failed");
}
}
}
default
{
state_entry()
{
llOwnerSay(":OBEY scripts started");
}
}