Blizz ABS Skills Discussion

Started by (Hexamin), February 13, 2010, 04:53:15 am

Previous topic - Next topic

(Hexamin)

February 13, 2010, 04:53:15 am Last Edit: February 13, 2010, 07:48:44 am by (Hexamin)
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.

Introduction

Alright, 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)
Spoiler: ShowHide

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
Spoiler: ShowHide

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-intro
The 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 Database
1-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)
Spoiler: ShowHide



("Empty" State)
Spoiler: ShowHide




Step II: Set up the skill in Blizz ABS

Alright, 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)
Spoiler: ShowHide





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)
    Spoiler: ShowHide




    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)  
    Spoiler: ShowHide




    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.
    Spoiler: ShowHide





    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.
Max 1111101000; characters remaining: 1110111000

Blizzard

Hey, what do you say about making this thread a bit more organized? I mean separate the skills in categories and put slightly larger titles for the skills (i.e. how I did it in the "Blizzard's little tricks" thread). I could more this to tutorial database then.
Check out Daygames and our games:

King of Booze 2      King of Booze: Never Ever
Drinking Game for Android      Never have I ever for Android
Drinking Game for iOS      Never have I ever for iOS


Quote from: winkioI do not speak to bricks, either as individuals or in wall form.

Quote from: Barney StinsonWhen I get sad, I stop being sad and be awesome instead. True story.

(Hexamin)

I wasn't really sure if this was even worth being a tutorial, but it's formatted now, I think it's a little better organized before, I reworked pretty much everything.... ANYWHOOIE!

Oh, and I know there are limitations to this, this is like... version 0.001 of my first draft, so go easy on my precious ideas.   :P
Max 1111101000; characters remaining: 1110111000

poxy

I am liking this. I've been trying to figure away to make some custom skills, but I suck at scripting and so I didn't give it much thought. This is giving me ideas though.

One custom skill I had in mind was: jump at enemy, slice with sword, jump up slicing, land, jump back to original position. Heh.. originally i was thinking of setting up a projectile skill as the jump and slice, an explosion as the upward slice, and a blank sprite as the skill use (to erase the battler). I'm gonna have a better look at it later once I've made the sprites. For now, + Level :D
My Project: ShowHide

Blizzard

Oh, don't worry about that. With the combo system for Blizz-ABS 3 you will be able not only to create skills chains, you will also be able to define custom movement patterns for the skill execution. In other words you don't have to use the combo system for a series of skills, you can use it to just make one skill awesome. :3
Check out Daygames and our games:

King of Booze 2      King of Booze: Never Ever
Drinking Game for Android      Never have I ever for Android
Drinking Game for iOS      Never have I ever for iOS


Quote from: winkioI do not speak to bricks, either as individuals or in wall form.

Quote from: Barney StinsonWhen I get sad, I stop being sad and be awesome instead. True story.

(Hexamin)

AHHH!!! So the hours spent on these event/script hybrid skills are in vain!  That's alright though, this stretches my mind while I wait for the next version of ABS I suppose.  Tenative timeline?   :naughty:
Max 1111101000; characters remaining: 1110111000

Alton Wyte

Could you not combine the two common events into one with what is now the second common event just be within a conditional branch? That way you'd need only one common event per custom skill, instead of two. But still, interesting idea.

poxy

Quote from: Blizzard on February 15, 2010, 05:46:07 am
Oh, don't worry about that. With the combo system for Blizz-ABS 3 you will be able not only to create skills chains, you will also be able to define custom movement patterns for the skill execution. In other words you don't have to use the combo system for a series of skills, you can use it to just make one skill awesome. :3

That sounds pretty sweet, can't wait til it comes out. Will the combo system also work for attacks?
My Project: ShowHide

Blizzard

No, but you can always make a skill that uses no SP or edit Blizz-ABS so it always uses that skill instead of an attack.
Check out Daygames and our games:

King of Booze 2      King of Booze: Never Ever
Drinking Game for Android      Never have I ever for Android
Drinking Game for iOS      Never have I ever for iOS


Quote from: winkioI do not speak to bricks, either as individuals or in wall form.

Quote from: Barney StinsonWhen I get sad, I stop being sad and be awesome instead. True story.

winkio

Or somebody can script an add-on that extends it to attacks and items.

(Hexamin)

February 17, 2010, 04:42:18 pm #10 Last Edit: February 17, 2010, 04:48:50 pm by (Hexamin)
I didn't see your post about that sword jumpin' attack before!  Now I think I might try to figure how to do that, I'll let you know if I come up with something.  Like blizz said though, I'm sure he's gonna make it much easier in his next version of ABS with his chain skill addition.

Oh and settin one common event for the activation of the skills is a fine idea, in fact I was gonna end up doin' that to conserve common events.  Just a single "Activate" Common event that has Conditional branch, if... oo wait, thats where I ran into the problem.  Wait nevermind.  Instead of using a common event to change the Skill_ID variable, that could just be put into the battler event right before the skill's common event is called.  I think it'd work, I'll try it out and see if anything bugs out because of it.

I like hearin' about skill ideas so if anyone else has skill ideas for the ABS but doesn't know how to go about making it, post it here and I might be able to set it up, if not we can collaborate and figure it out together.  ^_^


Edit 1: Hmm... if I were to set a game variable to an event's x-location what command would I use?  I tried @event_id.x but it didn't work.  Am I far off?
Max 1111101000; characters remaining: 1110111000

G_G

replace @event_id.x just use @x and @y. Or in the control variable command. CLick character at the bottom, choose event, then choose map x or map y

(Hexamin)

Hmmm... yeah, I'm well aware of the standard event processes, I was hoping for being able to call an event's x with a variable.  So... basically, I'd store the event's ID that is calling the skill $game_variables[whatever] = @event_id, then I'd go into the common event and be able to call that event's current X with some call script command.  I was hoping @event_$game_variables[whatever].x or something of the sort would work, but, I know it doesnt.  Any ideas?
Max 1111101000; characters remaining: 1110111000

(Hexamin)

February 20, 2010, 02:09:46 pm #13 Last Edit: February 20, 2010, 05:01:20 pm by (Hexamin)
Edit 1: Put screen shots of a skill for Poxy at the bottom.
Edit 2: Broke up 3rd screen shot to allow people at actually read what's going on.

Double post for update
Okay so I've been workin' on skills n such for my game.  I'm going with a complete variable damage system which has its pros and cons I'm finding out.

First off, pros
-complete customization of damage
 you can completely control the damage you want to do with each skill.  If you want the skill to do 10 damage each time, or have it do 10% of your SP, everything is possible so far
-add skill levels without creating completely new skills
 I'm implementing 7 levels for my basic elemental skills.  Along with the elemental skills I'll also have professional skills, and I can set up those skills with their own level system.
-custom movements with skills
 So far two of my skills change the player's location in accordance with the target, whether it's via teleportation or jumping, this is also only limited by imagination and creativity
-mana/life draining/rejuvinating skills
 For instance I've added a skill that increases movement speed and drains mana while it remains active.
-damage increasing skills
 I'm implenting "charge" skills for my lightning based skills.  Right now I have a skill called Charge (along with others that add status effects such as a stun) that charges for a set amount of time (based on skill level) when fully charged, if you use Lightning Strike within that time, Lightning Strike will do increased damage.

Cons.
So far the biggest con I've found is that implementing AoE skills requires more use of conditional branches or just new common events all together (and if large amounts of enemies are present, lag can increase)
-time
 it does take more time and effort to put together the damage for skills, but it is rewarding in my opinion.




Anyway, just some more thoughts on the system I'm implementing.  I'll update the basic "tutorial" with some shortcuts/bugs I've found and fixed.  Your thoughts and input are greatly appreciated.  :-)



Oh and Poxy... I set up a skill VERY simliar to what I think you were talkin' about.  In my case, the hero jumps once or twice to get to the enemy, unleashes an attack that deals damage and causes the enemy to run, the the hero jumps back to the original position.  Below are some screens of the way I set up the events.  The first screen shows the bit I added to the battler event, and the other two are the common events involved in making this skill.  It works really well so far, I'm still tweaking it a bit though.

Here ya go.

The Battler Event
Spoiler: ShowHide




Activate Common Event
Spoiler: ShowHide




Skill Common Evet
Spoiler: ShowHide









If you have questions, ask.  I realize the direction fixe were probably not neccessary, and maybe some other things too, like I said, still tweaking it, but I've tested it in game and it's working pretty damn well.  ^_^
Max 1111101000; characters remaining: 1110111000

poxy

February 20, 2010, 06:31:58 pm #14 Last Edit: February 20, 2010, 07:19:59 pm by poxysmash
Just finished implementing this, I've tried the example skill so far with damage being dealt based on character's level.. but I'm getting a nill value for the enemy's event ID. I've tried to follow the guide closely and I'm gonna look into it some more when I have time, maybe I've done something wrong...
What Blizz ABS version are you using btw?

Edit: the skill executes but i get a script syntax error. Tried different variables in case i was using one of them. when i print the variable i get nil.. :/
My Project: ShowHide

(Hexamin)

I'm using the latest version of it.

And are you making sure that the battlers on the map have the conditional branches to check what skill is being used?  And that they have a call script with $game_variables[10]=@event_id in them?  you dont have to use 10 for the variable number, thats just what number i use.
Max 1111101000; characters remaining: 1110111000