Ok, I spent some time paring out all the "other stuff" that my script was doing in order to post just the minimum for this problem.
The goal is this: The object (say a sphere) is just lying on the ground. When you touch it, it gives a bit of instruction and then begins to follow you. If you touch it again it should stop following and fall to the ground. If you say !stop, it should stop following you and fall to the ground.
I know the script isn't perfect, but that's not my goal at this point, I just want it to work.
Also...take note that I've put in some comment-lines that I'll refer to later.
---
string Host_Name = "";
key Host_Key = "";
vector Host_Position;
integer Lost_Counter = 0;
StartSensor()
{
//now start new sensor
llSensorRepeat(Host_Name,Host_Key,AGENT,96,PI,2);
}
default
{
state_entry()
{
llSetStatus(STATUS_PHYSICS, TRUE);
llListen(0,"","",""

;
}
on_rez(integer param)
{
llResetScript();
}
listen(integer channel,string name,key id,string message)
{
if(llGetSubString(message,0,5) == "!stop" && name == Host_Name)
{
llSensorRemove();
}
}
touch_start(integer total_number)
{
if(Host_Name == ""

{
//NOTE 1: In theory, the next line should be FALSE...
llSetStatus(STATUS_PHYSICS, TRUE);
llSay(0,"Wasn't following anyone. Now will follow " + (string)llDetectedName(0));
llInstantMessage(llDetectedKey(0),"Say !stop to make me stop following you."

;
Host_Name = (string)llDetectedName(0);
Host_Key = llDetectedKey(0);
StartSensor();
}
else
{
Host_Name = "";
Host_Key = "";
llSensorRemove();
//NOTE 2: In theory, this should be TRUE
llSetStatus(STATUS_PHYSICS, FALSE);
llSay(0,"Stopped."

;
}
}
sensor(integer total_number)
{
vector Destination = llDetectedPos(0);
Destination.z += 2;
llMoveToTarget(Destination, .1);
Lost_Counter = 0;
}
no_sensor()
{
Lost_Counter++;
if(Lost_Counter >= 10)
{
llSay(0,"Cannot find " + Host_Name + ". Deactivating."

;
llSensorRemove();
llSetStatus(STATUS_PHYSICS, FALSE);
}
}
}
-----
At the comment NOTE 1: You'll see that--if I understand STATUS_PHYSICS, this line should be set to FALSE in order to make it defy gravity. But it doesn't work that way. If I set it to FALSE, the thing just sits there like a lump. However, if I set it to TRUE, it then floats above my head beautifully.
Now we come to comment NOTE 2: Here is where I want gravity to look sharply at the ball and to bring it back to earth. In theory, this should be set to TRUE to make it fall...but it doesn't fall. Thinking that maybe things are working backward (like at NOTE 1), I set it to FALSE...but it still doesn't fall. It stops following nicely enough...it just won't fall down.
So...any ideas now?
---Bahaar Babcock