I think your flow is too overkill. Mine is just simple, 3 elements per flow.
See at kaskus
. Later on, I combine both flow into single flow with two triggers. And check add a condition to check which trigger, connected/disconnected will give different speech output. I still maintain the thread, but of course it will be quite quiet there. Since most user probably haunted by the steep learning that tasker set several years ago. They should have tried automagic first.
I used to be the same like you, wanna use a very long phrase for the speech output. But after using for a while, it is not practical. I am waiting too long to hear the battery percentage. That's why I reduced it to very simple statement. In most of the time, keep it simple is the best solution, unless there is a special need.
First lets see the ringer mode vibrate and silent. If you wanna check for those 2 condition, if either is true then store the volume; it is better you just use Ringer Mode Normal and reverse the branch. So, false will store the volume. It is essentially the same, but only using one conditions.
Vibrate True OR Silent True == Normal False.
If the phone now is in vibrate OR silent, the condition will become false, then store the volume. If it is normal, then condition true, skip the store volume action.
But still, you don't have to store the alarm volume. Do you change the alarm volume frequently in a day? If not, no need to store (or restore) the volume, just choosing the stream alarm in the speech output is enough. You can save many elements already if you remove out those above.
Move to Power Connected flow, that Battery level 100% now becomes redundant, since there is no need to restore the volume already. You can still keep the condition higher than 96%, if you want it to speak out every percent from 97% - 100%. But I still think it is redundant, since our smartphone nowadays are very well protected from overcharged. I even prefere to plug my phone whole day if it is possible. If you read my other thread (troubleshooting) at kaskus, you can get more information about the power management, battery, charging and etc.
Power disconnected flow is the same, you can remove the store volume action elements, keeping only the higher than 96% group. Battery Level Check flow will be quite annoying if you really use it. The phone will speak out the battery change for every percent. That means if you charge it and it is up for 30% in 30 minutes, you will get speech output every minute. If you can handle it, then just remove the store volume elements as well.
To combine the Power Connected and Disconnected flow, you can just take all the action from one and copy to another (except the trigger). Add the other trigger, so the trigger now have Power Connected and Power Disconnected. Break the first connection to trigger, and add a new condition to check which trigger, Condition Power Source Connected. The True branch will execute all action block from Power Connected flow, and False branch execute all action from Power Disconnected flow. You can then delete the other redundant flow. Probably i need to update the example at the kaskus there to give the big picture.
As for the battery check level, it can't be combined, since it is a seperated trigger which doesn't toggle well if combined with power connected and disconnected. It is more efficient by keeping it in seperate flow, and then disable/enable it by this combined Power Connected/disconnected flow. Thus removing the Power connected condition at the middle. But still need your confirmation whether you still wanna use it.