First of all, both items and characters can join combat, so there is no inherent need to turn your boulder into a character. On the other hand, I'm not sure if items can move along splines, so if you want to do that, you indeed need a character.
There is one property that determines whether or not a character/item joins in the turn-based order of characters: the CanJoinCombat property. You can enable this in the side bar, and also change it from
Osiris and
behaviour script (search for SetCanJoinCombat on the latter page).
Making an item or character actually do something during combat should be done as much as possible in
behaviour scripts (different link than the previous one). In a behaviour script, if you mark a REACTION as "USAGE COMBAT", it will only become active once the object is inside a combat. Anything you do inside that reaction, such as moving, will only happen during your turn in combat (as long as you joined the combat, see above; if you don't join combats, you keep acting in real time), and it will correctly consume action points.
The reactions that tell the AI to handle the object have a very low priority, so simply set your reaction's priority to 1000, and it will take priority over the default behaviour.
Checking whether anyone is near (within a certain range) from behaviour script can be done using the CharacterGet() query, which you can use as a
CHECK condition for a reaction with an even higher priority than the one that moves your boulder, so that if the CharacterGet finds something, this attack reaction will execute instead). Next, finding everyone that is within a certain radius (rather than only the nearest character) can be done by calling IterateCharactersNear() from that reaction.
One thing to keep in mind: moving characters always use path finding, and you cannot disable this. That means if someone puts a barrel in the way of the boulder, the boulder will walk/roll around it (unless you also have a reaction with an ItemGet() CHECK that moves away/destroys items).