How To Use

download How To Use

If you can't read please download the document

description

How to use Ao no Kiseki

Transcript of How To Use

Place the three scripts in the order I've numbered them above Main and under Materials. 1 - This is a main script. It contains the bulk of the actual data involving the calculations, notetag readings, battler speeds and so on. 2 - This is a main script. It handles turn order. 3 - This is a main script. It's the eye candy script; modifies the positioning and spacing of the order bar as well as the information text that shows up. 4 - This is a sub script. It adds an escape command into the system. 5 - This is a sub script. It adjusts the window sizes of the battlelogs, help windows and so on to optimize space. 6 - This is a sub script made by a different scripter. It unlocks the trademark AT Bonuses of the system, allowing different bonuses to activate on different turns. Place the images in the System folder into your Graphics/System folder. (The images that start with AT_BONUS_ are needed only for sub script 6, Rokan's Ao no Kiseki Style AT Bonus script)The setup is easy in theory. The only possibly confusing thing is if you're not too good at maths, since you can use various Ruby syntax and formulas for anything that has a number value. Here's how things work. Note: I'll be referring to 'turns' and 'units' here. Each action uses up a turn, and each slot on the order bar is a unit. Fundamentally, they're the same, but whenever I refer to a unit, I mean the slots in the order bar and their order. Turns are overarching throughout the battle. *******Speed*******The core of an ATB is speed. It determines how often you can act, and is based on agility. This is how your speed is calculated (It's a little complicated) in the script: battlers = $game_party.battle_members + $game_troop.members # Gets information of all the members in the battle. total = 0.0 # (1) for battler in battlers total += battler.agi # (2) end mean = total / battlers.size # (3) standard_deviation = 0.0 # (5) for battler in battlers standard_deviation += (battler.agi - mean) * (battler.agi - mean) # (5) end standard_deviation /= battlers.size # (6) standard_deviation = Math.sqrt(standard_deviation) # (7) for battler in battlers if standard_deviation != 0 battler.spd = ((battler.agi - mean) / standard_deviation) * 10 # (8) else battler.spd = 0 # (9) end battler.spd *= (SPEED_INFLUENCE / 100.0) # (10) battler.spd += 50 # (11) 1) First, we zero the total just to make sure there's no leftover data. 2) We then total up all the agility values of the battlers. 3) Said total is divided by the number of battlers to get the average agility value of all battlers. 4) We zero the std dev for the same reasons as in (1). 5) This is where things get a little complicated. Basically, it takes each individual battler's agility, subtracts the average agility of all battlers from it, squares the remainder, then adds all the results of the individual battlers together. That's your new std dev.6) Back to simple stuff. Divide the new std dev by the number of battlers.7) Simple square root of the calculation in (6). 8) If the new std dev isn't 0, we take the battler's agility and subtract the mean, then divide it by the std dev and multiply by 10. 9) If it's 0, then meh. It's 0.10) This is where an option in the configuration block appears. SPEED_INFLUENCE defaults to 100 (So there's no change), but if it's 150, for example, you multiply the result by 1.5.11) Finally, just in case you have a speed of 0, we chuck a free 50 on for you. Because we're kind.This SHOULD mean that the minimum speed for any battler is 50, but if Debug is enabled, in the sample demo, the slimes and bat have speeds of under 0 (41 and 45 respectively). I'm not quite sure why this is. But meh, at least now you know how it's calculated. Yes, I DID open an Excel file and go through all the calculations to see if I've got everything right. I have. >_>For those of you not so inclined to go messing around in scripts, here's what the sample demo characters have: Eric: Agi: 15 Speed: 50Natalie: Agi: 28 Speed: 71Terence: Agi: 15 Speed: 50Slimes: Agi: 12 Speed: 41Bat: Agi: 14 Speed: 45Play around with them to get a good balanced battle speed. *******Delay (Skills, Items, States)*******This is pretty much the most important thing about this CBS (Aside from speed). As with most types of battle systems, doing certain actions have a certain delay before the actor can act again. Take for instance Final Fantasy X. You can visually see how your actions affect when you can next act. Using a normal attack for instance usually has a shorter delay, while using more powerful skills take longer before you can act again. Of course, speed is also taken into account, but eh. Details. This is where it all comes together. The formula given for the default delay in the demo is this: < [(90 - a.spd) / 2, 5].max > What this means is that the default delay for a normal attack is < 90 - the speed of the attacker, then halved > or 5, whichever is higher. This means that the lowest your delay can ever go is 5. In the sample demo, for example, Eric and Terence have a normal attack delay of 20. To assign a delay to a skill, simply place n in the notebox of a skill, where n is the formula/value of the delay. For example, the above default delay is located in the notebox of Skill #1: Attack as: [(90 - a.spd) / 2, 5].maxNote that this tag can be used in states as well, in which case when the state is applied to a character, ALL of that character's skills take on the delay value placed in there. For example, having a state with 0 will cause that state to make any action the character does have no delay, essentially being able to act multiple times in succession (Unless skills with in them are used, see below). Finally, this tag can also be used in Item noteboxes. *******Charge (Skills, Items, States)*******This battle system allows you to have skills that take time to charge. You can call it charging or channeling, really, it's the same in concept. Upon using a skill, the user gets knocked back a certain number of units on the order bar and a symbol pops up on their unit. When it's their turn again, they unleash the skill they've been charging. It's that simple. The notetag itself is about as simple. It's n, where 'n' is the number of units it takes for the user to charge up or finish channeling the skill. This does NOT take into account stuff like delays and hastes, so a skilled player can prevent enemy skills from executing by simply delaying the enemy and speeding up their party, squeezing in enough turns for their party to take out the enemy before they can execute their skill. As an example, a spell that takes 5 units to cast (5 turns assuming no delay/haste shenanigans are going on) will have the following notetag: 5This is the main reason I distinguish between units and turns. 5 makes the skill charge for 5 units, BUT it might take 10 turns before the actor can actually unleash the skill. Nice and simple, no? What's NOT so simple is the array of options available for a simple n notetag. Well, it's still simple in theory, but meh. Basically, there are three options that can be placed in a notebox that has the n tag. These are: n ('n' is a string that pops up in the message log when the character begins charging the skill. Use %s to denote the actor's name.) n ('n' is the ID of the state that will be placed on the actor while charging the skill. For example, 2 will poison the actor while charging.) n ('n' can be either 'allallies' or 'allenemies', or both by using n n. This is used in conjunction with to affect all allies, all enemies, or both.)All three are optional. What can they be used for? Many things. For example, you could have something like a heroic song that increases the offensive power of your entire team while it's being sung (charged). Using this example, here're the notetags: 10 # The effect lasts for 10 turns, which is how long it takes to finish singing the song. %s starts singing a song of valor and honor! # This is the message that appears when the song starts. 21 # This is the ID of a state that increases ATK and MATK. It's not necessary to set up Removal Conditions, since it's removed when the song is done. allallies # This causes the effect to hit all allies, but no enemies. Finally, under 'Using Messages' in the skill tab, I'll have: (User Name)'s song ends! # This message appears after the charge time is over and the skill is used, but since the skill's usage is technically the charging bit, this is now the skill ending message. And there you have it, a nice song that increases the offense of your party throughout its duration. You can use this to have bards in your game, for example. There is a sample skill called Silence Song in the demo that uses the same concept, in case you want to see it firsthand.You can also place formulas in there. So mages with high MAT can channel spells faster than those with low MAT, for instance, with a formula like this: [100-a.mat, 0].maxThe above formula means that someone with 50 MAT will take 50 turns to channel the spell, while a mage with 80 will take 20 turns. It also has a maximum checker that will make the charge cost 0 turns if the number goes into the negatives. It should also be noted that, like the tag, the tag can also be used within states. Having 0 in a state will cause anyone in that state to charge/channel any skill/spell instantly, which is good for Limit Breaks/Overdrives or a powerful late game skill. *******Cancel/Interruption (Skills, Items, Weapons)*******So you've got an enemy charging up a powerful skill. How do you stop it, aside from outright killing the git before it unleashes? By cancelling/interrupting it, of course. For the sake of consistency, I'll stick with interrupt since it sounds better. Cancel is used in the notetags though, since I thought it fit better (And it's easier to type. >_>). Usage of this tag is very, very simple. As in, there's no configuration for general use. Here's the tag:

That's it. Place that in a skill or weapon and that skill or weapon can now cancel enemy attacks. Nifty~ Say what? You want that boss to have a skill that cannot be cancelled? Well you sure ask a lot. Eh. Here're two optional tags that can be used: (Place this in a skill notebox and it will be impossible to cancel that skill short of killing the bugger.) n ('n' is the percentage rate that the cancel is successful. For example, setting this to 50 means that the skill has a 50% chance of cancelling a skill that's being charged. This tag must be used in conjunction with .)*******Slow (Skills, Items, Weapons, States)*******When you're dealing with stuff like speed and turn order, it's always fun to be able to speed up your allies and slow down your enemies. That's where the tag comes in. The usage is exactly the same as with the tag, except it works in Weapon noteboxes as well. Simply place an integer or a formula after the tag to be able to slow down the target of your spell by that number of units. For example: 2 will slow down the target by 2 units, while rand(3) + 1 will slow the target by 1-3 turns [rand(3) picks a random value between 0 and 2, since Ruby starts counting from 0]. Negative numbers will speed up the target, so -1will speed up the target by 1 unit. Now, there are two optional notetags that can be used for this. They are: n ('n' is the percentage rate that the slow is successful. For example, setting this to 50 means that the skill has a 50% chance of slowing an enemy. This tag must be used in conjunction with n.) (Placing this tag in an actor or enemy notebox will make that actor/enemy immune to the effects of slowing. This works for both positive and negative effects, so you can't speed 'em up either.)*******Graphics*******This is just a small side section on graphical usage within the script. The script uses the actor's sprite in the order bar to show which actor's in which unit. You can also specify a default monster graphic for when you don't specify one in lines 65 and 68 in the first main script. But having all those different mosters share the same icon is kinda... boring, no? Well, you can specify enemy sprites to use in the order bar with a simple line. Here it is (Note that it doesn't have the brackets that the other notetags do): GRAPHIC n x, where 'n' is the name of the filename with the monster graphic (Located in Graphics\Characters), and 'x' is the index of the monster. Refer to the following grid to see which area of the image corresponds to which index: 0 1 2 34 5 6 7As an example and as can be seen in the demo, let's assign a custom icon to the slime. Here's the tag: GRAPHIC Monster2 2The slime's graphic can be found in the image file Monster2.png located inside the Graphics\Characters folder, and it's the third monster in the top row, which is an index number of 2. *******AT Bonus (by Rokan)*******The is a bonus script by Rokan of Kaisou-Ryouiki, whose terms and conditions allow me to post this after translating it (modifying it). The other two sub scripts and the three main scripts are all by Saba Kan of PetitRare, so this is a nice example of a scripter scripting a very nice add-on to a battle system created by another scripter. The AT Bonus is a trademark symbol of the Eiyuu no Kiseki (Legend of Heroes) battle system. Basically, units on the order bar are randomly assigned a bonus that can range from healing to certain criticals and more, and when the unit reaches the top, whoever's turn it is gets that bonus. This is the second main reason I distinguish between units and turns. AT Bonuses do not move around the order bar; they are fixed to their unit and slowly move towards the top, upon which they grant their bonus. This is the list of AT Bonuses available within the script: Recover 10% HP at start of turn. -------------------------------------------------------------------- Recover 50% HP at start of turn. -------------------------------------------------------------------- Recover 10% MP at start of turn. -------------------------------------------------------------------- Recover 50% MP at start of turn. -------------------------------------------------------------------- Recover 10% TP at start of turn. -------------------------------------------------------------------- Recover 50% TP at start of turn. -------------------------------------------------------------------- Critical (All damage/healing effectiveness is multipled by 1.5) -------------------------------------------------------------------- Perfect Guard (Cannot be damaged, Cannot be healed, No Cancel, State Immunity, No Slow) -------------------------------------------------------------------- Rush (Act twice in a row) Sadly, these bonuses are hard coded within the script, and are thus are unchangeable to those without sufficient knowledge of RGSS3. What IS changeable though are the rates at which these bonuses activate. This is defined in the configuration block at the top of the script in a hash array. There is also a variable assignment at line 55: This lets you change the Bonus rates mid-game. Here is an example array from the demo: 0 => [100, 5, 3, 5, 3, 5, 3, 2, 2, 2],In order, the array goes like this: => [, , , , , , , , , ],Now, the chances are NOT percentages. To get the actual percentage chance of something happening, this is what you do: (Rate)/(Total Rate)*100 = Actual Rate. This means that: Actual Rate of Nothing Happening = 100/(100+5+3+5+3+5+3+2+2+2)*100 = 100/130 * 100 = 0.77 * 100 = 77%So with the example given, there's a roughly 77% chance of there being no bonuses, about 4% chances of there being 10% heals and 3% chances of 50% heals of HP, MP and TP, and about 1.5% chances of Critical, Perfect Guard and Rush when the Variable defined in line 55 (Default: 10) is 0 (Default). Feel free to play around with the hash, have higher rates of getting Critical and a near impossible chance of getting Rush, eliminate Perfect Guard completely, or whatever you feel like. Those of you who fancy yourself scripters can try and modify the default settings, maybe make it so you can define more bounuses or something? xD The sky's the limit (If you know what to do)!*******End*******And that should be that! Think I've covered everything. It's not really all that hard. If there're any questions, feel free to pop me a line. I'm not a scripter though, so don't expect too much on that note, but I might be able to help you out with debugging and figuring out what's going on. Kirin, out.