Yeah, it's possible there's a bug in parenthesis code, or too limited a recursion allowed in the formula analysis. Whatever the cause, it can mess ya up from time to time.
For the multiple vehicle thing and the capabilities, just plce the list into an array such that tank1 = 1, tank2 = 2 and so on, along with their saved options;
Data;
-----move?---shoot?---guns?---rockects?---radio?
tank1 no-----yes-------no--------no---------yes
tank2 yes----yes-------no--------no---------yes
tank3 yes----yes------yes--------no---------no
array; tank(4,5)
tank1 --> tank(1,1)=0 : tank(1,2)=1 : tank(1,3)=0 : tank(1,4)=0 : tank(1,5)=1
tank2 --> tank(2,1)=1 : tank(2,2)=1 : tank(2,3)=0 : tank(2,4)=0 : tank(2,5)=1
tank3 --> tank(3,1)=1 : tank(3,2)=1 : tank(3,3)=1: tank(3,4)=0 : tank(3,5)=0
and so on...
remember, it's like a spread sheet which can be as wide or high as you need, such that the vehicle type can change what the values mean in addition to the carrying the options for each device. What you really need to do is decide is what is the object with the largest list of options, and use that for the maximum size of your array list.
good luck,
s.
Any truly great code should be indisguishable from magic.