1. If you want to use macros to locate tokens, make sure they have different names. Otherwise it's difficult to find them, macros will get confused, and so on.
2. The functions you're looking for are
Wiki: setLayer() and/or
Wiki: setVisible(). Use
Wiki: findToken() to get a token's ID by searching for a token's name.
This macro will toggle hiding/unhiding a token named Barney:
Code:
[H: tokenName = "Barney"]
[H: tokenID = findToken(tokenName)]
[H: isVisible = getVisible(tokenID)]
[H: setVisible(!isVisible, tokenID)]
You could make a list of targets to toggle visibility this way:
Code:
[H: tokenNameList = "Barney, Fred, Wilma, Betty"]
[H, FOREACH(tokenName, tokenNameList), CODE: {
[H: tokenID = findToken(tokenName)]
[H: isVisible = getVisible(tokenID)]
[H: setVisible(!isVisible, tokenID)]
}]
3. Don't think I have anything in the tool that messes with visibilities.
4. Yes, powers in my framework reference which target defense they are aiming for, but they do not compare the attack versus the defense and automatically arbitrate damage. I leave that to be done manually, because sometimes people like it, sometimes they want to interrupt the damage, and sometimes it's difficult to know how to deal with the damage (does the target have resistance? how do players set resistance? what if someone forgets to set their resistance, leaves it on too long, etc.?). Rumble's framework DOES arbitrate, though, so you might want to check out that.
5. Not sure what you mean by real health bar. Do you mean the text "30 / 50 hp", for example? If so, then that's found on the pop-up stat sheet in addition to a green bar that shows a percentage of remaining health (and healing surges). You can even turn the green bar off and rely totally on the stat-sheet HP if so inclined.