[VX ACE] WHITE WIND
Posts
Pages:
1
I have a skill that's basically White Wind from Final Fantasy; it heals the party equal to the caster's current HP.
I'm using the simple damage forumula of "a.hp" for this. However, while it works at first, as it goes down the line of characters and heals them, after it passes the caster, the spell heals the rest of the party more, as it's basing it off of the caster's now healed HP rather than the HP they had when they cast it, if that makes sense.
Is there a way to fix this, or is this an oddity of the ability that I'll just have to live with?
Thanks in advance :D
I'm using the simple damage forumula of "a.hp" for this. However, while it works at first, as it goes down the line of characters and heals them, after it passes the caster, the spell heals the rest of the party more, as it's basing it off of the caster's now healed HP rather than the HP they had when they cast it, if that makes sense.
Is there a way to fix this, or is this an oddity of the ability that I'll just have to live with?
Thanks in advance :D
I guess what you could do is call a Common Event that stores the current HP of the caster, then do a Restore HP event command, set to recover the party, and set the amount to the variable.
Now, how to get the current HP of the caster...
*Edit: This... might be a bad idea. Or, at least, it's giving me waaaaay to many headaches to figure this out. I mean, we probably want to see something like $game_actors[X].hp for party members, and $game_troop[X].hp for enemies. However, yeeeaaah, we still need to know how to find "X".
*Edit2: There is...
...in Scene_Skill, which might get us on the right track. However, there is no $game_skill[skill_id].user, or like variable to call. Though, I seriously doubt that would be the right way to call that function anyway.
*Edit3: Oh yeah. I guess the Scene_Skill reference wouldn't even happen for enemies. Still, it seems like a good enough lead as any to getting this to function properly.
Now, how to get the current HP of the caster...
*Edit: This... might be a bad idea. Or, at least, it's giving me waaaaay to many headaches to figure this out. I mean, we probably want to see something like $game_actors[X].hp for party members, and $game_troop[X].hp for enemies. However, yeeeaaah, we still need to know how to find "X".
*Edit2: There is...
#-------------------------------------------------------------------------- # * Get Skill's User #-------------------------------------------------------------------------- def user @actor end
...in Scene_Skill, which might get us on the right track. However, there is no $game_skill[skill_id].user, or like variable to call. Though, I seriously doubt that would be the right way to call that function anyway.
*Edit3: Oh yeah. I guess the Scene_Skill reference wouldn't even happen for enemies. Still, it seems like a good enough lead as any to getting this to function properly.
But this is the usual behaviour of White Wind in Final Fantasy! At least as far as I can remember.
Do you really intend to stray from it?
Do you really intend to stray from it?
author=JosephSeraph
But this is the usual behaviour of White Wind in Final Fantasy! At least as far as I can remember.
Do you really intend to stray from it?
It is? Here's the event from Final Fantasy, as I remember.
You have Bartz, Lenna, Faris, and Galuf.
Lenna has 300 HP. She casts White Wind. The whole party gets 300 HP.
----
Now, here's how it's working for me.
Lenna has 300 HP. She casts White Wind. Even though it's a heal-all spell, VX Ace calculates it one character at a time.
So Bartz gets 300 HP. Lenna gets 300 HP. But now, Lenna's total HP is 600. So Faris gets 600 HP, and so does Galuf. Unless I'm misremembering, this is not how it happens in FF.
It happened like this in tactics Advance and Advance 2 for rather obvious reasons, and I think I saw it happening on FFVIII and FFX as well, but I can't quite remember! >_<
Oh!
There are a few targetting scripts for RMVXA, perhaps if you can make the skill target the user last...?
Oh!
There are a few targetting scripts for RMVXA, perhaps if you can make the skill target the user last...?
My quick and dirty way would be to use a global to track the state of the move as it executes since proper White Wind isn't going to happen with vanilla Ace. Set the skill to eval its (or another if it needs some tags in its notebox) notebox and put this in the skill's notebox:
Untested since I'm at work. It should find how much it's healing when calculating the healing amount on the first target (the user's current HP before any HP is changed), track when its healing the last target so it clears how much its healing so it'll work next time around, and heal on the user's original HP. This should work for both actors and enemies but again this is completely untested and done from memory. I can try it out and fix it when I get home.
e: oops, got my a's and b's mixed up
if $white_wind.nil? $white_wind = a.hp $white_wind_count = b.is_a? Game_Actor ? $game_party.members.length : $game_troop.members.length end $white_wind_count -= 1 heal = $white_wind $white_wind = nil if $white_wind_count == 0 heal
Untested since I'm at work. It should find how much it's healing when calculating the healing amount on the first target (the user's current HP before any HP is changed), track when its healing the last target so it clears how much its healing so it'll work next time around, and heal on the user's original HP. This should work for both actors and enemies but again this is completely untested and done from memory. I can try it out and fix it when I get home.
e: oops, got my a's and b's mixed up
Thank you, GreatRedSpirit! :D
I hate to be a newbie, but I have a couple of questions: To make a skill Eval it's notetag, do I write something in the skill's forumla?
And, do I need to define $white_wind somewhere else in the editor or will it work fine just as is?
Thanks, and I apologize for not knowing how to make code work ^^;;
I hate to be a newbie, but I have a couple of questions: To make a skill Eval it's notetag, do I write something in the skill's forumla?
And, do I need to define $white_wind somewhere else in the editor or will it work fine just as is?
Thanks, and I apologize for not knowing how to make code work ^^;;
Or you could take the coward's way out and do this through eventing:
Start a common event:
-Control variable: set variable x to actor's hp.
-Force action: have that character restore everyone with the damage formula set to variable x.
So, you'd have two skills: the initial skill has the spell's text and just runs the common event. The second skill is silent and is the actual restore based on the variable that your first skill determined.
Start a common event:
-Control variable: set variable x to actor's hp.
-Force action: have that character restore everyone with the damage formula set to variable x.
So, you'd have two skills: the initial skill has the spell's text and just runs the common event. The second skill is silent and is the actual restore based on the variable that your first skill determined.
author=unity
Thank you, GreatRedSpirit! :D
I hate to be a newbie, but I have a couple of questions: To make a skill Eval it's notetag, do I write something in the skill's forumla?
And, do I need to define $white_wind somewhere else in the editor or will it work fine just as is?
Thanks, and I apologize for not knowing how to make code work ^^;;
Yeah, iirc it's
eval($data_skills[X].notetag)
Where X is the ID of the skill with the code in its notetag. $white_wind doesn't need to be defined anywhere, the skill handles all of it.
I can hammer out a demo project showing it working in a default project when I get home this evening.
That would be wonderful, if you don't mind ^_^
I think I'm doing something wrong, as I put this in the skill formula:

And this in skill 165's notes:

And it gives me "Null" as a result when I use the skill. Was I supposed to put some tag around the script in the notebox to make the game read it right?
That certainly would work, but with the CTB system I use, it measures turns by actions, and that would add an extra action, so I'd rather not go that way, if at all possible. But thanks ^_^;;
I think I'm doing something wrong, as I put this in the skill formula:
And this in skill 165's notes:
And it gives me "Null" as a result when I use the skill. Was I supposed to put some tag around the script in the notebox to make the game read it right?
author=Housekeeping
Or you could take the coward's way out and do this through eventing:
Start a common event:
-Control variable: set variable x to actor's hp.
-Force action: have that character restore everyone with the damage formula set to variable x.
So, you'd have two skills: the initial skill has the spell's text and just runs the common event. The second skill is silent and is the actual restore based on the variable that your first skill determined.
That certainly would work, but with the CTB system I use, it measures turns by actions, and that would add an extra action, so I'd rather not go that way, if at all possible. But thanks ^_^;;
I'm probably being dumb and forgetting something super obvious, I'll take a look at it when I get home in a few hours.
Thanks so much for your help! It could also be me being dumb or one of my scripts or something. ^^;;
Y'know, I don't think it's actually called 'notetag' in the scripting backend. Try changing it in the formula to 'note' and seeing what happens. Or 'notebox'.
Got it working. It's 'note', not 'notetag' or 'notebox' or 'notethingamajig'. Oops! The skill formula should be:
And the skill note should be:
For some reason it hated my trinary operator and ate the error. Fucking hell I hate noteboxes and I'm glad I use them as little as possible.
Here's my demo project. Eric gets White Wind. If you want to see it in action fight the Slime+Bat in the first troop. The Slime does HP/2 damage and the Bat eventually uses White Wind too. I got both the actor and the enemy to use it in the same fight with the correct HP healing so I don't think I screwed anything up.
eval($data_skills[X].note)
And the skill note should be:
if $white_wind.nil? $white_wind = a.hp if b.is_a? Game_Actor $white_wind_count = $game_party.members.count else $white_wind_count = $game_troop.members.count end end $white_wind_count -= 1; heal = $white_wind; if $white_wind_count == 0 $white_wind = nil end value = heal;
For some reason it hated my trinary operator and ate the error. Fucking hell I hate noteboxes and I'm glad I use them as little as possible.
Here's my demo project. Eric gets White Wind. If you want to see it in action fight the Slime+Bat in the first troop. The Slime does HP/2 damage and the Bat eventually uses White Wind too. I got both the actor and the enemy to use it in the same fight with the correct HP healing so I don't think I screwed anything up.
Glad to hear it! If it has any issues let me know and I'll try to fix it. I don't expect any issues barring a white wind trying to execute inside of a white wind or something weird like that (and require more work than a skill note eval).
Pages:
1


















