What I meant was you only need to do one foreach loop. You only need to go through the Powers once.
It can't do stacked if's like that. However, one advantage of tags is we can do this:
Code:
if (eachpick.tagis[SPCPower.spcSCFire] + eachpick.tagis[SPCPower.spcSCBeast] +
eachpick.tagis[SPCPower.spcSCBeuty] + eachpick.tagis[SPCPower.spcSCChaos] <> 0) then
Since all you are looking for is if any one of those tags is active.
And then just put in another if statement for the next group of Powers... In your example the second if can go inside the same foreach loop. No need to do a second one.