PDA

View Full Version : Taunt Ability


LilSpriteX
07-08-2005, 04:33 AM
Is it possible to create a taunt ability, so a character can force enemies to target him/her? I couldn't find anything similar in the presets, and I imagine it'd be difficult to create.

thetruecoolness
07-08-2005, 05:05 AM
Well not too difficult, assuming you know how to use trait scripts, which I believe you need to do anyway to randomize targeting (i think).

So basically you will need a variable or 4 flags. Let's use the variable idea.

So this variable is called, TauntCharacter, and is set to -1 when no character has set up the taunt command. Now when the character calls this taunt command, set TauntChracter = InstiMember. So this would go in the success script for an ability.

now in the trait script you want

Data Set Battle Action(Attack) // this can be magic or defend or any other battle command plus you can set up percentages for all of them here using conditions
Script Branch: Condition: Variable [TauntCharacter] > -1
-Data: Variable: [63:Action:Enemy] = [TauntCharacter] + 0
-Script: Force Script End
Script: Condition End
Data: Variable: [990:Temp Variable 0] = [18:Participate Member] - 1
Data: Variable: [Action:Enemy] = 0 ? [990:Temp Variable 0] // picks random member

Now this will do it for the whole battle so if you want it to be for one turn add

Data: Variable: [TauntCharacter] = -1 + 0

before the force script end. Also make sure to use this line in the battle exit script.

Then put this trait script on every enemy you want affected by the taunt (it goes in Adv Trait in the enemy editor). Note if you set a trait the behavior set in the custom tab for the enemy is ignored and the trait script it used, but a trait script can do anything that can be done with the behavior tab.

Now I'm not 100% sure this will work as I have not actually tested it, but I'm confident it is at least close.

So if you have any more questions about how to use trait scripts, fire away.

LilSpriteX
07-08-2005, 05:25 AM
Yeah, I'm still dillydallying in Normal difficulty, so I didn't even know those existed. Is the behavior tab the only thing that's ignored when using trait scripts? If so, seems like it'd be easy enough to recreate myself by studying the preset scripts.

Oh, and thanks for the help!

thetruecoolness
07-08-2005, 05:36 AM
Yeah, traits just take the place of behavior, cause that is essentially what they do. Of course you can get as complicated as you want with these, but just looking at the default ones should give you a good heads up on how to use them. I am using them in my game to make a custom menu for my battles (though I am using traits on the characters and not enemies), so they are very versatile, and allow you to edit a lot of the battle system you wouldn't be able to normally.

I would suggest starting a game on easy (which you probably already did), then going straight to hard, cause all the difficulty setting does is hide things, which only limits you and doesn't really make it any easier, as you can just ignore what you don't want to mess with, though starting on hard or normal is not recommended, unless you won't ever use any preset stuff. And you can actually look at the preset scripts and events (though with the FAQ on these boards you can too). So any problems you run into post them here, and I or someone else will be more than happy to lend assistance.

LilSpriteX
07-08-2005, 05:47 AM
I actually started on Normal, since the manual suggested it for people who've used RPG Maker before, and I've already spent a ton of time making dungeons, characters, animations. Oh well, I don't mind doing a little leg work.

Thanks again!

Everyone's so friendly here! You've definitely got an awesome board going!

thetruecoolness
07-08-2005, 06:01 AM
Well by all means continue. I don't think they take out hardly anything between normal and easy. Plus all the scripts can be viewed in the turtorials section in Dungeon Wardens FAQ. And yes many of the people are more than willing to help, when they can.

Dungeon Warden
07-08-2005, 06:04 PM
Instead of making trait scripts, you could just add this to the Effect Start script of every enemy attack (listed as Enemy Only in the Direct Effects).

You also might want to change random target to single target so that you can set the target. I haven't tested it, so I'm not sure which is better; but if the battle engine chooses a random target it might replace any target you select.

Data: Variable: [990:Temp Variable 0] = [18:Participate Member] - 1
Data: Variable: [Action:Enemy] = 0 ? [990:Temp Variable 0] // picks random member

Variable 18: Participate Member is the number of party members at the begining of battle. Variable 63: Action : Enemy requires the database number of the character to be targeted. You need to rewrite it this way:

Data: Variable: [990:Temp Variable 0] = [18:Participate Member] - 1
Data: Variable: [53: Member Order] = 0 ? [990:Temp Variable 0] // picks random Member Order
Data : Use Member Order (loads the database number of the member in the position listed in Member Order (i.e. 0 = leader, 3 = forth member) into Var 86: Member Number)
Data: Variable: [Action:Enemy] = Var86: Member Number

LilSpriteX
07-09-2005, 04:07 AM
I can't get it to work correctly just yet. I placed the scripts (thetruecoolness' Script Branch followed by Dungeon Warden's rewrite for the end) at the end of the preset script 45 "Attack Start" Used at the preset Slime's attack's direct effect. With random target they attack randomly (of course), and with single target they just beat up the first member. I deleted everything in the script expect for Dungeon Warden's rewrite (and also tried just using the un-rewritten versions) to see if I could get them to attack someone randomly, but no luck. They just hate the leader.

Once I do figure this out, could these commands be used to create enemies that like to beat up on members with low HP or Defense?

thetruecoolness
07-09-2005, 04:45 AM
Sort of to do that you will have to cycle through all of the members and load their information. So you can use the Use Member Order command and then use Member Info Load to get the members stats. Now I think since Use Member Order also sets insti member you might have to restore the correct order, but since they use it in the damage scripts to get the target and attackers name I don't think you have to worry about it, just something that might come up if you characters magically start going out of order.

As for it not working I'll have to play around with it a bit tonight when I work on my game some more, so hopefully I will figure it out by later tonight or tomorrow.

Dungeon Warden
07-09-2005, 04:17 PM
Script 45: Attack Start occurs before the attack starts. You need to put the changes in Start Effect so that the direct effect will know what character to target, or put it in the trait script of the enemy. Actually the Action Variables are used for Trait scripts (this is what it says if you look at the help file) so they may not work anywhere else.

LilSpriteX
07-09-2005, 05:45 PM
I'll try making Trait Scripts then. They're intriguing me by the minute, because I'd love to make some smarter enemies. Now, by looking through your wonderful FAQ and some other forums, I believe I'm on the right track, but maybe you can correct me if I'm wrong.

Let's say I just want to recreate the Normal difficulty preset Slime's behavior (80% attack, 20% flee). I'd want to randomize a Temp Variable, then create script branches with conditions based on the result. Then I set [60: Action:Action] to a corresponding number (0 if it's an attack, 3 if it's a skill, etc), then set [61: Action:Itm/Abty] to the database number of the direct effect I want, then force script end.

Data: Variable [991: Temp Variable 1] = 0 ? 100
Script Branch: Condition: [Variable 991: Temp Variable] < or = 80
Data: Variable [60: Action:Action] = 0 + 0
Data: Variable [61: Action: Itm/Abty] = 156 + 0 // Hit (Enemy 0)
Script Control: Force Script End
Script: Condition End
Script Branch: Condition: Variable [991: Temp Variable 1] > or = 81
Data: Variable [60: Action:Action] = 3 + 0
Data: Variable [61: Itm/Abty] = 100 + 0 // Flee
Script Control: Force Script End
Script: Condition End

So then I create a Trait, and give it to my "custom" slime. It seems to be working so far, except instead of fleeing, they charge strength. Well, flee isn't really something I was planning to use anyway. Is that script correct, or am I missing something? I see in the presets they use comands like Data: Set Battle Action and Battle: Substitute Target Attribute for Variable. Are those preferable?

This doesn't seem nearly as daunting as I first thought. This game is good for your brain!

thetruecoolness
07-09-2005, 06:17 PM
Yes it is as it is basically learning to program, and how to design the architecture of a game, and of course game design 101. So you are on the right track, of course he charges because charge is #100 in the ability DB, flee is 98 and does work correctly. There is a command called substitute database number for variable, which is useful if you move stuff around a lot using the sort database command in the file menu. This way you can store the number of a specfic item/ability/magic/skill to a variable and then use that variable to represent it, this way you don't have to worry what number a ability is as the game figures it out for you. Just as a side note on this, I believe you can't delete something that is used in the Sub DB Num for Var until you delete the command referencing it.

Usually it is prefered to use the Battle: Action command in Data->System as opposed to setting the variable yourself. Just makes it easier to read, and requires less remembering for you, though either way should work fine.

LilSpriteX
07-09-2005, 07:09 PM
Oh. I was referencing the Direct Effect Database. Heh. Good to know.

I love programming, I should really try actually learning a language one of these days...

Now, time to try out this taunt thing again.

thetruecoolness
07-09-2005, 07:39 PM
Me too though I already knew C, Java and Basic before starting this so all of this is quite familiar territory to me, though with a lot more quirks than most languages have. Well if your going for being a game programmer then C++ is the one you should try to learn, though you may want to start off with Java to learn OOP (Object Oriented Programming) first.

Well technically you're accessing the Abilities Database for that one I believe. Or the item database if you want to make the enemy use an item (since it says itm/ability next to that variable :)).

LilSpriteX
07-09-2005, 10:01 PM
It works! I have a taunt ability!

I ended up using two variables, one for who's using the taunt, and one for how "strong" the taunt was, called [Taunt Count]. I did this because I didn't want the taunt to last the whole battle, or just for one turn, and so I can have the character earn stronger taunt skills while levelling up (maybe just taunt one enemy, or the entire group). Then, anytime an enemy is affected by the taunt, it subtracts a value from [Taunt Count]. Once it reaches zero, [Taunt Character] is reverted to -1, and the enemy's regular AI resumes. I have the ability set [Taunt Count] to either 1 (for just one attack), or 19: [ParticipateEnem] (for the whole enemy party). Since the enemy trait gets called twice a turn (once before the members attack, and once for the enemy attack), though, it subtracts from [Taunt Count] twice as much during the subsequent turn. So, if I want a taunt to last two turns, I have to set [Taunt Count] to [ParticipateEnem] x 3. What fun! They beat on him for so long!

Thanks so much for all your help, guys! I learned a ton, and my game will be better for it!

thetruecoolness
07-09-2005, 10:08 PM
Actually the first time Traits are checked is before everyones turn and the flag 82: Traits is off, then this flag turns on when it's the specific member or enemies turn. So just check to see if this is on in your trait script, meaning it is actually the enemies turn and not the beginning of the whole battle turn. I had to do this in my trait script for my custom battle menu for the characters.

Dungeon Warden
07-10-2005, 05:08 PM
I'm glad you got it to work. Traits are a little tricky but not too hard to figure out.

As a side note, if an enemy is doing a normal attack, you don't need to specify what attack they are using, the battle engine will automatically use whatever attack you specified when you created the enemy.

RPGD
07-10-2005, 05:18 PM
Well done. Be sure to post the summary and process in the Tips & Tricks thread.

LilSpriteX
07-10-2005, 09:16 PM
I'll see if I can make it concise and understandable enough. I might wait a couple days before posting it, since I'm still very much a beginner with this version, and want it to be easy to read.

I think I'm going to take a break from the battle system for a while to design maps. I'm REALLY loving this game now that I know that I can create enemy AI while still working within the DBS. I figured (before I got it) the game was versatile when used from the ground up, but had no idea it could be stretched using the presets. Of course, now I gotta backup my file so I can go to town and not screw it up, being a beginner and all. I'll post any ideas I get here so you guys can tell me what I messed up. Thanks!