Jump to content
Titanhex

Skill Ideas you can do with Custom Formula

Recommended Posts

Whelp, now I feel bad for two reasons: Someone else answered the multiple state question as well and I realized I wasn't putting b.custom_formula_overload(a,B) in the custom formula box...

 

Thanks anyways, I appreciate the response. :D

  • Like 1

Share this post


Link to post
Share on other sites

Whelp, now I feel bad for two reasons: Someone else answered the multiple state question as well and I realized I wasn't putting b.custom_formula_overload(a, B) in the custom formula box...

 

Thanks anyways, I appreciate the response. :D

Yeah, I saw it.

Looked a great deal better than my attempt, as well.

:-)

 

Anyway, glad to have helped (and learned a bit along the way!)

Share this post


Link to post
Share on other sites

Okay, so, after messing around with it a bit, here are the scripts I've managed to come up with. This is copy/pasted from my custom formulas script:

 

#=====================================

class Game_Battler < Game_BattlerBase

  def custom_formula_overload(a, B)

    d=([b.level, a.level].max * a.luk * 0.3) + 1.2 * a.mat;for s in [17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43];if b.state?(s);d+=([b.level, a.level].max * a.luk * 0.3) + a.mat * 2.2;end;end;d
    
  end

 
end


#=====================================

class Game_Battler < Game_BattlerBase

  def custom_formula_aneurysm(a, B)

    r = b.mp * 0.3; b.mp - r; b.hp -= r * 5
    
  end
 

end

#=====================================

class Game_Battler < Game_BattlerBase

  def custom_formula_accumulated_pain(a, B)

    d=([b.level, a.level].max * a.luk * 0.3) + 1.2 * a.mat;for s in [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14];if b.state?(s);d+=([b.level, a.level].max * a.luk * 0.3) + a.mat * 2.2;end;end;d
    
  end

 
end

#=====================================

class Game_Battler < Game_BattlerBase

  def custom_formula_words_of_comfort(a, B)

    d=a.mat * 3;for s in [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14];if b.state?(s);d+=a.mat * 8;end;end;d
    
  end

 
end


#=====================================

class Game_Battler < Game_BattlerBase

  def custom_formula_dismiss_conditions(a, B)

    d=a.mat * 0;for s in [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14];if b.state?(s);d+=a.mat * 3;end;end;d    
    
  end


 
end

 


#=====================================


 

class Game_Battler < Game_BattlerBase

  def custom_formula_release_enchantments(a, B)

    d=a.mat * 0;for s in [44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 69];if b.state?(s);d+=a.mat * 3;a.mp += a.mmp * 0.2;end;end;d    
    
  end

 
end

 

 

And not in my custom script, as this fit into the custom formula box:

 

Word of Healing

b.hp <= b.mhp/2 ? (a.level * a.luk * 0.3) + a.mat * 8 : (a.level * a.luk * 0.3) + a.mat * 3

 

 

 

Like I said earlier, I basically ripped a ton of my skills from Guild Wars 1 (I just love the huge variety of skills that game has :3 ), I just had to change a few of them for game mechanics.

 

Overload - Deals low damage unless the target has certain buffs/debuffs on them, in which case it deals bonus damage (yes, I realize there are a lot of potential skills to check for, haha).

 

Aneurysm - Drains the target's MP (doesn't return it to the caster) and deals hp damage based on the mount lost.

 

Accumulated Pain - Like Overload but this one checks for other states (my game's physical conditions like poison, burn, etc).

 

Words of Comfort - Like AP but heals instead.

 

Dismiss Conditions - Removes all conditions on an ally and heals if any were removed.

 

Release Enchantments - Removes certain buffs from the user and restores some of the user's HP and MP.

 

Word of Healing - Heals a normal amount and gains a large boost if the target is below half health.

 

This is just what I have so far for the specialized skills I'm making. Most of my skills are pretty straight forward and don't need all this trouble or else use a script that I've downloaded (ie, caster loses hp and heals an ally).

 

A couple I'd really like to figure out are

 

1. I mentioned this one earlier, it boosts the user's ATK and AGI based on their MAT. Not an amount based on raising a parameter through a state, but it's raised by, say, 50% of the user's MAT. I have no idea how to do this. Haha

 

2. I have a skill that is an attack skill that deals damage based on the user's ATK and MAT. This part's fine, no trouble. It also heals the user based on the damage dealt. Again, no trouble. However, I want it to heal all allies, not just the user (think a cleric that heals his/her allies by attacking). This is where I run into trouble. I dunno if it's even possible to do this with a formula, and I tried to make it call an event to force an action that heals the entire party, but I run into trouble with the Ace Battle System script.

 

But yeah, coming up with these formulas is so much fun, and I absolutely HATE match. I'll sit here wracking my brain trying to figure out why a formula isn't working, and then after a ton of trial and error something will just click and bam! I have a working formula. Haha :P

 

EDIT: Oh, also, credit for the ([b.level, a.level].max * a.luk * 0.3) parts goes to Hesufo in this topic: http://forums.rpgmakerweb.com/index.php?/topic/13560-what-formulaskill-are-you-most-proud-of-d/

 

I love how it scales abilities so I decided to use it as well.

 

Another EDIT: Does anyone know how to make a skill that inflicts a DoT and also drains the DoT damage to the caster? I saw somewhere that someone managed to get a skill like that to work, PM'd them but I dunno if they're still active here. And following that skill, would it be possible to make another one exactly like that except it drains to all allies, not just the caster?

Edited by Zebraoracle
  • Like 1

Share this post


Link to post
Share on other sites

hello, i need a little help here

i want to make a skill like "traveler" skill in FF XII, where the damage is based on how many steps the player has taken.

 

I know I can just use a variable to keep track of the steps, but the problem is that the counter cannot be reset.

Is there any method to keep track of steps taken and after certain steps, reset it to 0?

I don't want the skill become a game breaker lol

Share this post


Link to post
Share on other sites

hello, i need a little help here

i want to make a skill like "traveler" skill in FF XII, where the damage is based on how many steps the player has taken.

 

I know I can just use a variable to keep track of the steps, but the problem is that the counter cannot be reset.

Is there any method to keep track of steps taken and after certain steps, reset it to 0?

I don't want the skill become a game breaker lol

 

I can see you doing this with 2 Variables and a script snippet.

 

First get the snippet so you can run common events before the damage calculations.

http://www.rpgmakervxace.net/topic/15262-in-battle-common-event-timing-script/

 

Secondly, make two variables.

One for the damage and the other for steps taken.

 

Next,make a common event that take the current steps taken (which may actually require a third variable) and subtracts if from the "steps" variable made earlier.  Save that results in the other variable.  (This common event must be called before damage calculation, which is why I suggested the snippet.)

 

Do whatever damage formula you need to and place it where it is supposed to go in the database.

 

Finally, use a second common event to save the current steps taken and place it into the "steps" variable.

Call this common event normally, after the skill is used.

Edited by Maliki

Share this post


Link to post
Share on other sites

You're a saviour, thank you!  :D

:-)  I was afraid I didn't explain it well.  Glad you were able to figure it out.

Share this post


Link to post
Share on other sites

 

5. Can we apply debuffs and buffs?

.add_debuff(param, turn)

.add_buff(param, turn)

Turn is the turn number for the buff to last and param is the parameter number we're debuffing.

What can we do with this?

We can set a debuff to happen by a random chance when attacking, or buff the user.

Here I've put a 50% chance to buff your defense for 2 turns when you attack, and deal 150 damage.

 

rand(100) <= 50 ? a.add_buff(3, 2):0;150

6. Can we stop an enemy from acting without using a stun status?

.remove_current_action

This can allow you to make a disruption skill that will stop an enemy from taking an action, great for fast characters. You may want a random chance on this though.

What can we do with this?

I've made a simple one round "stun" with a 35% chance of happening and deals a flat 50 damage.

 

if rand(100) <= 35;b.remove_current_action;end;50

 

 

Okay, are the %chance rates here affect by Luck? If not, is there a way we could make it so?

Share this post


Link to post
Share on other sites

 

 

5. Can we apply debuffs and buffs?

.add_debuff(param, turn)

.add_buff(param, turn)

Turn is the turn number for the buff to last and param is the parameter number we're debuffing.

What can we do with this?

We can set a debuff to happen by a random chance when attacking, or buff the user.

Here I've put a 50% chance to buff your defense for 2 turns when you attack, and deal 150 damage.

 

rand(100) <= 50 ? a.add_buff(3, 2):0;150

6. Can we stop an enemy from acting without using a stun status?

.remove_current_action

This can allow you to make a disruption skill that will stop an enemy from taking an action, great for fast characters. You may want a random chance on this though.

What can we do with this?

I've made a simple one round "stun" with a 35% chance of happening and deals a flat 50 damage.

 

if rand(100) <= 35;b.remove_current_action;end;50

 

 

Okay, are the %chance rates here affect by Luck? If not, is there a way we could make it so?

Going by the formula you quoted, you could make luck apply by adding it to the form.

 

Something like:

 

if rand(100) + a.luk <= 35; remove_current_action;end;50

Share this post


Link to post
Share on other sites

Going by the formula you quoted, you could make luck apply by adding it to the form.

 

Something like:

 

if rand(100) + a.luk <= 35; remove_current_action;end;50

 

More "if rand(100) - a.luk <= 35", or the luck will be an handicap more than an help, no?

 

Thank you all for this topic and your posts, I learn a lot reading it !

Share this post


Link to post
Share on other sites

I'm trying to make an ability that deals extra damage based on whether or not the target has a state present, only I want a range of states. Am I going to need to script this or can you pull an array while checking states?

 

In looking around this thread and others, I'm trying this:

 

if b.state[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] ; c=1.50 ; c=1.00 ; end ; ((a.atk*3)*c) /b.def

 

...for right now but it only gives me NULL (which is better than erroring out I suppose). Which I assume means it's not assigning a value to c. I'm really not sure where to go from here, anyone have any insight?

Share this post


Link to post
Share on other sites

I'm trying to make an ability that deals extra damage based on whether or not the target has a state present, only I want a range of states. Am I going to need to script this or can you pull an array while checking states?

 

In looking around this thread and others, I'm trying this:

 

if b.state[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] ; c=1.50 ; c=1.00 ; end ; ((a.atk*3)*c) /b.def

 

...for right now but it only gives me NULL (which is better than erroring out I suppose). Which I assume means it's not assigning a value to c. I'm really not sure where to go from here, anyone have any insight?

You need to add a ? to the statement.  

Try:

if b.state?[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] ; c=1.50 ; c=1.00 ; end ; ((a.atk*3)*c) /b.def

Share this post


Link to post
Share on other sites

try this

c = [2,3,4,5,6,7,8,9,10,11,12,13].any? {|i| b.state?(i) } ? 1.5 : 1; a.atk *3 * c / b.def

  • Like 1

Share this post


Link to post
Share on other sites

Hello good sirs! So I tried switching on a switch through the formula but it keeps giving me an error.

 

Script 'Game_Battler' line 352: SyntaxError occured.

unexpected keyword_else, expecting $end

... ; a.atk*3 - b.def*2 ; else ; 0

 

Here's the formula I used:

b.state?(26) ; $game.switches[3] = true ; a.atk * 3 - b.def * 2 ; else ; 0

 

I bet something's wrong in how I wrote the formula, but I can't figure it out. Tried removing the ; but it didn't work.

Edited by magic2345

Share this post


Link to post
Share on other sites

 

if b.state?(26);$game_switches[3] = true; c = a.atk * 3 - b.def * 2; else; c = 0; end; c

 

havent tested

Share this post


Link to post
Share on other sites

Whoa, that works! Now, what I want to know is, the reason why it works. Does the "b.state?" part need an "if"? I thought the "?" in "b.state?" is the same as "if"?

Share this post


Link to post
Share on other sites

 

b.state?(26) ? ($game.switches[3] = true ; a.atk * 3 - b.def * 2) : 0

 

should work too.

Share this post


Link to post
Share on other sites

Hey, custom formula ninjas,

 

If I wanted a skill to work or not based on the enemies remaining hp, for instance, the less hp they have, the more likely it is to work, is there a way to do that through custom formula?

 

Basically, I'm asking if there is a way to adjust success % through custom formula.

 

 

EDIT:

 

I came up with another idea, simply limit it to under 15% hp, but this throws an error.  Probably doable but I am messing up the syntax.

 

if b.hp ? <= b.mhp * 0.15  ; b.erase_state(51) : a.atk * 2 + a.luk * 4 - b.def * 2; end

 

Okay, after reading much more of both threads, I got this to not crash my game, but it doesn't remove state 51 if the enemy is at 15% of it's hit points.  Anyone have a solution?

 

if b.hp <= b.mhp * 0.15;b.erase_state(51);end;a.atk * 2 + a.luk * 4 - b.def * 2 

Edited by Wren

Share this post


Link to post
Share on other sites

b.remove_state(51) if b.hp_rate < 0.15;a.atk * 2 + a.luk * 4 - b.def * 2

 

not tested

Share this post


Link to post
Share on other sites

Thanks Xypher!

 

 

Tell you what, I am really starting to get the hang of this custom formula stuff.  Super awesome crud!

 

I can make a skill turn on a switch, which can then be checked via battle event with span of moment, and that switch on, run some event, then turn the switch back off.  IT"S FREAKING AWESOME.

 

So many possibilities now... my mind is swimming.

Share this post


Link to post
Share on other sites

If anyone knows, could you help me figure out a way to make an attack which uses all of a character's current mp for an attack, but then drops said characters mp to 0?

 

Thank you.

Share this post


Link to post
Share on other sites

 

I'm trying to make an ability that deals extra damage based on whether or not the target has a state present, only I want a range of states. Am I going to need to script this or can you pull an array while checking states?

 

In looking around this thread and others, I'm trying this:

 

if b.state[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] ; c=1.50 ; c=1.00 ; end ; ((a.atk*3)*c) /b.def

 

...for right now but it only gives me NULL (which is better than erroring out I suppose). Which I assume means it's not assigning a value to c. I'm really not sure where to go from here, anyone have any insight?

You need to add a ? to the statement.  

Try:

if b.state?[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] ; c=1.50 ; c=1.00 ; end ; ((a.atk*3)*c) /b.def

 

Sounds like a reasonable formula, but I was wondering if you know the formula for inflicts a state if one of two states are available. For example, I have set Undead and Demon monster types as passive states (thanks to Yanfly's Passive States script), and I have a 'Smite' skill, which deals damage to all enemies. But if an enemy has one of the two state, the skill will not only deal more damage to them, but also inflict Blind upon them.

Edited by ArkhamVI

Share this post


Link to post
Share on other sites

If anyone knows, could you help me figure out a way to make an attack which uses all of a character's current mp for an attack, but then drops said characters mp to 0?

 

Thank you.

 

Kaleem

 

You have 2 options: Add "a.mp = 0" in the Formula...

 

OR

 

Run a common event.

 

In the common event, set a variable equal to that character's MP.

Then have the common even Change Actor MP and decrease the actor's MP by the Variable you set in the step above.

 

~ Dinhbat

Edited by dinhbat3

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×
Top ArrowTop Arrow Highlighted