As I was starting to apply this, I found a flaw. the pure helper based elements it worked for.
But things like explods inside helpers, there is a little complication. For some reason if you call a helper and an explod is called inside that helper; your helper position can affect the explod. if youve called the helper at a position to hide it at 9999.9999, the explod wont show up at all i view which doesnt make sense to me. but if you put 0,0 as the position of the helper, the explod will show BUT how it displays will depend on the axis centering/positioning in the sff of that sprite. if the sprite isnt centered on the axis more work will need to go into the explod parameters and depending on how sprite is on the axis, you will have to calculate teamside1 but you will have to eyeball teamside2.
Pure Helpers arent affected by this issue because they are based on a replica of the player and how they are centered on the axix which is always CENTERED.
But if you havent coded your meter yet, and each side has a diff sprite teamside1 sprite should start on 0,0 (right side of axis) and p2 side sprites should be positioned on the left side of the axis. Then you wouldnt have to eyeball. But if both sides share the same sprite, you are going to have to put in work on p2 side positioning if the sprite is on the right side of the axis. If sprite is centered then both sides will have the same number and it will be easier. But you wont be able to do that for the actual energy inside bar of course because the scaling will need the sprite to be at 0,0 on the left or right side of the axis in order to scale properly (full to empty). Most ppl will have their meters set up in different ways so most ppl will probably have to do the work on p2 side. But luckily a char really doesnt have that many meters. So, for a visual:
[State -1, Stun_Meter]
type = helper
trigger1 = RoundState = 2 && !numhelper(24000) && !ishelper
name = "Stun"
ID = 24000
pos = 9999,9999 <-----------comment this out or change it to 0,0 or an onscreen value so that explod will show
postype = Left
facing = ifelse(teamside=1,1,-1)
stateno = 24000
keyctrl = 0
ownpal = 1
persistent = 1
ignorehitpause = 1
supermovetime = 0
pausemovetime = 0
size.xscale = 0.05
size.yscale = 0.05
In the helper:
[State 24000, Stun_Casing]
type = Explod
trigger1 = RoundState = 2 && !numexplod(24000)
ID = 24000
anim = ifelse(teamside=1,24000,24001)
sprpriority = -34
space = screen
postype = Left
pos = IfElse((teamside = 1), ceil((-ScreenPos X)+(((GameWidth)*(0.090625)))), ceil((-ScreenPos X)+floor((GameWidth)-((GameWidth)*(0.090625))*2.9))),58+floor(root,fvar(2)) <----------------------going to have to eyeball that 2.9
Facing = 1
scale = 0.5,0.5
bindtime = -1
ownpal = 1
ontop = 0
removetime = ifelse((RoundState!=2),1,999999999)
supermovetime = 0
pausemovetime = 0
ignorehitpause = 1
But of course, open to more experienced ideas.
EDIT: I probably should be using ScreenWidth and ScreenHeight instead of GAME for the shortened ver code (in place of 320.0 and 240.0 which would remedy that self adapting issue.