Tested addAction conditions with this code:
conditionFunc = {call{call{call{ call {captive cursorObject}}}} and call{call{call{call{alive cursorObject}}}} and call{call{call{call{typeOf cursorObject == 'CAManBase'}}}}}; for "_i" from 1 to 1000 do { //player addAction ["Title", {}, nil, 2, true, true, "", "call{call{call{call{captive cursorObject}}}} and call{call{call{call{alive cursorObject}}}} and call{call{call{call{typeOf cursorObject == 'CAManBase'}}}}"]; player addAction ["Title", {}, nil, 2, true, true, "", "call conditionFunc"]; };
Frame rate of 220 without either, 102 with the separate function and 93 with the string. Not sure whether that's compilation overhead or just the code locality costs of running 1000 different functions. The main takeaway would be "don't add 1000 addActions to the player".