Thank you Kalphiter. There are no more syntax errors. The script executes, and is enabled. There is one problem though. While I am falling, and my velocity probally has reached less than or equal to -20, I do not tumble. Here is the code, any idea what is not making me tumble?
package TumbleOnFall
{
function Player::onCollision(%this,%obj,%col,%pos,%speed)
{
if(getWord(%obj.onCollision(),2) <= -20)
tumble(%obj,2500);
Parent::onCollision(%this,%obj,%col,%pos,%speed);
}
};
function tumble(%obj, %time)
{
//do not tumble non-players
if(!(%obj.getType() & $TypeMasks::PlayerObjectType))
return;
//do not tumble dead people
if(%obj.getDamageLevel() >= 1.0)
return;
//mount the object on a new deathvehicle for %time milliseconds
%currentVehicle = %obj.getObjectMount();
%client = %obj.client;
%newcar = new WheeledVehicle()
{
dataBlock = deathVehicle;
client = %client;
initialPosition = %posX @ " " @ %posY @ " " @ %posZ;
};
MissionCleanup.add(%newcar);
//%newcar = %client.tumbleVehicle;
%newcar.setVelocity("0 0 0");
if(!%newcar)
return;
//neutralize current velocity
%newcar.applyImpulse( %newcar.getPosition(), vectorScale(%newcar.getVelocity() * -1, %newcar.getDataBlock().mass) );
//error("player tumbling!");
%obj.canDismount = false;
if(%currentVehicle && (%currentVehicle.getDataBlock().getName() $= "skiVehicle") )
{
//%obj.client.setControlObject(%obj);
//match ski vehicle
//neutralize velocity first
%newcar.setTransform(%currentVehicle.getTransform());
%newcar.applyImpulse( %newcar.getPosition(), vectorScale(%currentVehicle.getVelocity(), %newcar.getDataBlock().mass) );
%newcar.mountObject(%obj, 0);
%currentVehicle.setTransform("0 0 -1000");
%currentVehicle.schedule(500, delete);
}
else
{
//match player
//error("transform = ",%obj.getTransform());
%newcar.setTransform(%obj.getTransform());
%newcar.applyImpulse( %newcar.getPosition(), vectorScale(%obj.getVelocity(), %newcar.getDataBlock().mass) );
//%newcar.setTransform(%obj.getTransform());
//%obj.setTransform("0 0 0 0 0 1 0");
%newcar.mountObject(%obj, 0);
//error("not skiing");
//error("transform = ",%obj.getTransform());
}
//definitely delete after 45 seconds
%newcar.schedule(45 * 1000, delete);
%newcar.schedule(2000, tumbleCheck);
%client.camera.setMode("Corpse",%obj);
%client.setControlObject(%client.camera);
//remove %player.istumbling after a we stop
//schedule(%time, %obj, stopTumble, %obj);
//%nextTumbleVehicle = new WheeledVehicle()
//{
// dataBlock = deathVehicle;
// client = %client;
// initialPosition = %posX @ " " @ %posY @ " " @ %posZ;
//};
//%obj.client.tumbleVehicle = %nextTumbleVehicle;
//%nextTumbleVehicle.setTransform("0 0 -90");
//%newcar.schedule(%time, unmountobject, %obj);
//%obj.schedule(%time, setcontrolobject, 0);
//%newcar.schedule(%time + 250, setTransform, "0 0 -90");
}
activatePackage(TumbleOnFall);