I've tried it - event pointer are saved and loaded correctly. For finding why it did not work in your case, try the following:

Manually set the event after loading. You can do that by letting the action permanently set the event again:

Code:
action grass()
{
   while(1) {
	my.emask |= ENABLE_IMPACT;
	my.event = battle;
	wait(1);
   }
}



Now save and check if the event now works after loading. If so, then the original event pointer loaded from the .sav file was wrong for some reason. Please let me know the outcome of this test.