Zebraoracle 4 Posted July 29, 2013 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, in the custom formula box... Thanks anyways, I appreciate the response. 1 Share this post Link to post Share on other sites
Maliki 33 Posted July 29, 2013 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, in the custom formula box... Thanks anyways, I appreciate the response. 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
Zebraoracle 4 Posted July 29, 2013 (edited) 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, 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, 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, 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, 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, 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, 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 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 July 30, 2013 by Zebraoracle 1 Share this post Link to post Share on other sites
Emje-noeg 1 Posted August 27, 2013 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
Maliki 33 Posted August 28, 2013 (edited) 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 August 28, 2013 by Maliki Share this post Link to post Share on other sites
Emje-noeg 1 Posted August 28, 2013 You're a saviour, thank you! Share this post Link to post Share on other sites
Maliki 33 Posted August 28, 2013 You're a saviour, thank you! :-) 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
Archael 0 Posted September 4, 2013 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
Maliki 33 Posted September 4, 2013 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
Edel 0 Posted September 8, 2013 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
ff6shadow 5 Posted September 29, 2013 Is there anyway to turn a switch on or off in a formula? Share this post Link to post Share on other sites
Xypher 176 Posted September 29, 2013 $game_switches[x] = true/false Share this post Link to post Share on other sites
FraudEcon 0 Posted January 28, 2014 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
Maliki 33 Posted January 31, 2014 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
Xypher 176 Posted January 31, 2014 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 1 Share this post Link to post Share on other sites
magic2345 252 Posted February 18, 2014 (edited) 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 February 18, 2014 by magic2345 Share this post Link to post Share on other sites
Xypher 176 Posted February 18, 2014 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
magic2345 252 Posted February 18, 2014 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
Xypher 176 Posted February 18, 2014 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
Wren 179 Posted March 7, 2014 (edited) 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 March 7, 2014 by Wren Share this post Link to post Share on other sites
Xypher 176 Posted March 8, 2014 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
Wren 179 Posted March 10, 2014 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
kaleemmcintyre 0 Posted March 29, 2014 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
ArkhamVI 1 Posted March 31, 2014 (edited) 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 March 31, 2014 by ArkhamVI Share this post Link to post Share on other sites
dinhbat3 57 Posted March 31, 2014 (edited) 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 March 31, 2014 by dinhbat3 Share this post Link to post Share on other sites