how to make a health bar like rivals of aether game?
Can you please post an image of what you’re looking for?
Like this
a health bar represented by a percentage rather than a traditional health gauge. The percentage indicates how much damage a character has taken, and as the percentage increases, the character becomes more susceptible to being knocked off the stage.
When the percentage reaches higher levels, attacks have a greater impact and can send the character flying farther. The goal is to knock opponents off the stage to score a point rather than deplete a health bar to zero.
I’m no expert here but I see that no one has answered this yet, so he’s my go… The only way I can think of how to do it would be to make a sprite with 100 different animations, e.g., 0-100%. Link the animations to a global variable of some sort, and then if a collision (attack) occurs you can reduce the global variable and change the animation.
You go with
Player.Variable(HPBefore) < HP before damage is inflicted
Player.Variable(HP) < actual current HP
Player.Variable(HPMax) < i let you guess what it is
Enemy.Variable(Attack) < how much damage will be inflicted
Now action goes like this
Change variable HPBefore of player set to round(100/Player.Variable(HPMax)*Player.Variable(HP))
Change player variable HP subtract Enemy.Variable(Attack)
Create text object text
Change text of text object to ToString(Player.Variable(HPBefore)-(round(100/Player.Variable(HPMax)*Player.Variable(HP))))
And it will display how much % of max HP was lost
AND NOT how much damage was inflicted
but how to make When the percentage reaches higher levels, attacks have a greater impact and can send the character flying farther?
What you have above will display LAST % of HP lost
So if in this turn you lost 12% HP it will display 12%
But if in next turn you lose 4% HP
It will display 4% and not 16%
So use actions from my previous post to add to another variable
You get how much % of HP was lost which is just a number
So if you lost 12% of HP from last attack it is just a number 12 with % added in text object on the end
So you could make object variable called KnockChance
And when battle starts you change Player.Variable(KnockChance) set to 0
Now using that % number from my previous post not only you print it to text but also
In action under printing it to text add that number to Player.Variable(KnockChance)
So if you got hit and lost 5% of HP then KnockChance variable is now 5
If in next round you lost 8% of HP then KnockChance variable is now 13
And you make another variable called RNG you set to RandomInRange(1,100) when hit is made (which basically picks random number from 1 to 100)
In another event you check if variable RNG is equal or lower to Player.Variable(KnockChance)
And if yes you do whatever you want to your player
Basically imagine this
You run RNG variable to pick number from 1 to 100
Let’s say it picked 27
Now Player.Variable(KnockChance) is at 21
So RNG variable is not equal or lower than KnockChance variable
So nothing happens
But more KnockChance variable go up like imagine now KnockChance var is at 54
Them more chance you have that RNG variable will be lower than it and so trigger knockback or whatever you want
That all is if you want to do it legit way by % chance
Since you said more % lost HP is higher chance is to get knocked
BUT my advice and more simple solution
Keep RNG variable
And with each hit simply add SOME number to Player.Variable(KnockChance)
Like add 5 per hit or 10 or whatever
And it will fill with each hit
a way more simple solution
Thank you for guidance