Thank you, especially for the power attack bit.
As for the first point, I know about C's 0 and not 0 behaviour. The issue wasn't so much if 0 == false and 1 == true, but whether the program is expecting a boolean or an integer.
And apparently it is expecting int. If you put in bool, the variable ends up being 0 regardless of whether you made it true or false. Either that or it goes back to default and that default just happened to be 0 on those few variables I tested it on.
Either way... useing int is the correct way to go. No bool in personal_switch.2da.