// swim_g_underwate - Go underwater void fnJump(object oDest) { object oMe=OBJECT_SELF; if (GetArea(oDest)!=GetArea(oMe)||GetDistanceBetween(oMe,oDest)>2.0) { // jump AssignCommand(oMe,ClearAllActions(TRUE)); AssignCommand(oMe,JumpToObject(oDest)); DelayCommand(0.5,fnJump(oDest)); } // jump } // fnJump() void main() { object oPC=GetPCSpeaker(); object oUWDest=GetLocalObject(oPC,"oDest"); if (oUWDest!=OBJECT_INVALID) { // underwater destination exists AssignCommand(oPC,fnJump(oUWDest)); } // underwater destination exists }