EDIT 1: All of this message, because I accidentally hit "enter" (level down)
EDIT 2: All of this message again, because.... I'm lazy and didn't format it the first time.
IntroductionAlright, I've recently been bombarding the Blizz ABS thread with questions in order to wrap my mind fully around the system to create some inspiring and creative skills using BABS. Instead of continuing that operation and flooding Blizzard with headaches, I figured I'd create a topic where people who are interested in it can discuss skill creation using BABS.
I've just started playing with BABS within the past week or so, and my recent project that I'm creating skills for really only kicked off a couple days ago. My goal is to expand the preset skill types, not by alteration of the script, just by creatively (or moreso effectively) utilizing what Blizzard already gave the script (Granted... forced player actions WOULD open up a LOT of possibilities for me *cough*cough*).
To Begin With: What's at our disposal?Alright, so, lets start with what we have.
Types of predefined skills. (as per the Manual)
1. shooting skill (projectile skill, hits first target it encounters)
2. homing skill (projectile skill, finds a target you specify)
3. direct skill (hits the target instantly, you select the target)
4. beam skill (hits every target it goes through instantly)
5. trap skill (sets traps which are triggered by i.e. monsters)
6. timed trap skill (sets traps which are triggered after a certain amount of time)
7. summon skill (summons monsters and/or pets to help you fight)
If a skill targets all enemies/allies, the skill will turn into:
1. => thrusting skill (projectile skill, hits every target it goes through)
2. => super homing skill (projectiles hit all targets in range)
3. => shockwave skill (circular shockwave hits all targets in range)
4. => fullscreen skill (targets all allies/enemies on the screen)
5. => no change
6. => no change
7. => no change
Effects of predefined skills
1. Damage: Set the power of the skill along with what stats you want affecting its output.
2. Heal: Set the power to a negative number along with what stats you want affecting its output.
3. Status Effects: Make a state change, inflict state change.
4. Summons: Create a summon using the actors tab of the database.
5. nope... that's about it.
Let's Spice Things Up! (Variable Damage)Mini-introThe first way I wanted to stretch the parameters of these skills was through custom damage. Using variables for damage allows me to easily level up skills throughout the game, do damage based on adverse and even obscure aspects of the game (number of steps for example), along with opening up the imagination for a plethora of possibilities. In the following example I'll put any information my example skill is using in [brackets].
Step I: Basic Skill Set Up Using the Database1-Create your skill [
Skill 42:: Judgement]
2-Set power to 0 (
We aren't using the typical damage system so this is a pointless attribute)
3-Create an "Empty" state that has no effects and vanishes 100% after 0 seconds. [
State 05:: Empty](
This will allow the skill to still trigger on the enemy. See spoiler below.)
4-Set State Change to "Empty" (
Yar)
5-Create a common event that sets a variable = this skill's ID.
(
This allows each battler on the map decide which common event to call later)
6-Set the skill's common event to the common event you just made [
003:Judgement Activate]
7-Set your scope to One Enemy (
I'm still workin' on doing this efficiently with multiple enemies, it'll come soon I hope though.)
8-Set icon, SP cost, and animations (
At your own disgretion)
(
Skill setup in database)
(
"Empty" State)
Step II: Set up the skill in Blizz ABSAlright, so the basic skill is set up. Now then, go into blizz ABS and set up the basic type you want, if you don't know how to do this, Blizz has a very thorough manual that'll explain it to you thoroughly, but... here's the basic premise so you don't have to look it up if you're lazy (like me).
1-Find "def self.type(id)" in Blizz's ABS. (
ctrl+F:: def self.type(id):: FIND NEXT)
2-Make sure there is a CASE for this section. This is checking the skill ID against the information you're about to put in and if left out, all your skills will be DIRECT skills. Where there is a CASE, there are also WHENsTHENs and an END (I'm not a scripter so lets not go into this any deeper). Just make sure it looks similar to the picture in the spoiler below.
3-Set up your skill. [
when 42: return [3, 0.0](
I set my skill, Judgement (with skill_ID 42) to a direct spell, and no explosion radius. When setting up skills with variables, until further notice, you should choose a projectile (1), a homing (2), direct (3), or a trap (5, or 6). I'll figure out how to have more fun with multiple enemies/actors at one time, but that'll come later.)
4-If you're using a skill of type 1 or 2 and want a speed different than the default, change it in the "def self.projectile_speed(id)" section of the script just below the skill type.
5-Find "def self.range(id)" and then...
6-...change the range according to your desires for the skill. [
when 42: return 4.0](
My skill is going to have a range of 4, which is 4 tiles from the center of the character. RTFM if you still don't understand.)
(
Setting skill type)
Step III:Fixing your battlers!Okay, this next bit might be a bit of a pain if you're implementing this "system" into an already existent game, otherwise you can just have a battler template event that you can just copy and paste everywhere. This is what you're gonna do.
1-Make a battler.
Create an event. Name it whatever you want but be sure to include \e
- in the name, where "#" is the number of the enemy's id you're wanting to fight.
2-On the first page create a comment and write in that comment:: Trigger:Skill
3-Create a conditional branch that checks to see if the variable you made in Step I.5 = the skill's ID. [$game_variables[25]=42](That's what's being checked in my skill's case, see the image in the spoiler below if you're still confused.)
4-In the "true" portion of the conditional branch call a script and type this:: $game_variables[10]=@event_id
That will store this event's id in variable 10 (yes you can change the variable if you want, just remember what variable you're using, I'd name it "Enemy ID" or something of the sort)
5-Turn a switch on [Switch:42(Judgement)](This switch will be what triggers your common event)
6-All this together does this.
i. The event is triggered by a skill being used on the enemy
ii. The event process checks to see what skill was used (through the variable we set up)
iii. The event process stores this event's ID and turns on a common event (by turning on the switch we set up)
You can then just copy and paste this event page to all your other battlers and you'll be golden.
(The Battler's Event Page)
Step IV: Making the Common Event
The common event will process the damage, and for this example, we'll be creating a skill that does increased damage based on the hero's level.
Just set up your common event to look like the image below. You can change the variable's quantity easily by using the operands at your disposal, + - * / MOD, just experiment and learn some math and the possibilities are endless.
(The Common Event)
Step IV:OUTRO
Put all that together and you now have a direct skill that damages the enemy 10*Hero Level. This is rather basic, but it leads into the ability to do damage a lot of other ways.
This common event sets up another skill of mine in a different way, it checks the enemy's health % against the player's health %. If the enemy's health % is less than the player's, it damages the enemy, otherwise the player is healed.
I also created a skill that teleports you to the chosen enemy and then jumps over the enemy, damaging the enemy with each leap. But the common event for that was a bit longer and more complicated, so I won't post it without request. Anyway, the variable damage and common event skills are just the start of a very productive skill creation process, but I'd love to hear what other people are doin' with the system as well as recieve any feedback/criticism/questions.