Main Menu

Advanced battle intro with eventing pictures.

Started by Reives, April 20, 2007, 06:39:07 AM

0 Members and 1 Guest are viewing this topic.

modern algebra

Neat. I like this battle intro. It's pretty cool. Good job.

Reives

Mm, well for the range and AoE it's almost like "addons". I'll just briefly explain it here on how to implement them, at least how I do them.

Ranged is the simpler of the two, you simply make a 'through' event (projectile) and put it off the screen somewhere. For the hotkey where you press "shoot", it should set the event of the projectile event at where the player is (remember that you have an event that keeps tracking the X and Y of player onto two variables) and face where the player is facing (conditional branches for each direction).

Then, change the graphic of the event to the projectile char-set (arrow char set, for example. Easy to make, just draw some sticks and set them onto an ready-made char set for positioning).

Next, set a move event command for the arrows to go however many steps forward. (If you want, you can have a custom distance-variable, that way you can increase or decrease the distance that arrow goes under certain conditions. To implement this, you use a 'Loop' command. Open a loop up, and put 'move forward' once inside. Still inside the loop bracket, make a variable 'count', and make count = count + 1. Next, still inside the loop bracket, make a conditional branch that has the condition count = DISTANCE (where DISTANCE is the distance variable you want the arrow to go for), and if it matches that condition, BREAK LOOP command activates. [This is basically a do-while loop replica for eventing for those that knows some programming])

Then, on the parallel processing event that you have running seperately that tracks player's and enemies' X and Y variables, make 2 new variables; ProjectileX and ProjectileY. Set them to equal to the projectile event's X and Y coords.

Now for the 'hit check' event; you simply compare whether the variable monsterX = projectileX, and if it does then compare whether monsterY = projectileY. If it does again, then do whatever you want as a monster gets hit in that conditional branch. Remember to do this check for every monster. (That's why I only limit my max enemy number and player number at 4 each, or it's too much hassel to check everything.)

P.S. Remember to do some graphic/sound notice when the monster is hit. Perhaps a knock back, a flash of the monster character, a squeal, something along those lines.




As for Area of Effect; you need 8 variables. The top left corner(x,y), top right corner(x,y), bottom left corner(x,y) and bottom right corner(x,y). Basically, you have an area with each of the 4 corners (square area) cornered out. When you check, you check whether the enemy's X is greater than the minimum X yet less than the maximum X, then whether the enemy's Y is greater than the minimum Y yet less than the minimum Y.

Oh, and to get those corner variables, you have a center point you release the area of effect at. I usually start with the player's location. So with that center, you calculate each x and y accordingly. For example, if the range is 4x4 square like I used, then that means from the center to the left-most point is a distance of 2, same with the upper-point. Hence, to get the left upper corner, your center x goes under the calculation of x=x-2, y=y-2.

^
|
|
  - - C

And repeat the calculation for the rest of the points accordingly.



That's basically it in a nutshell.  :)


Kokowam


Reives

Sorry if I was unclear :-X Kinda hard to put it in a block of text. But yeh, it's not really as complicated as it sounds if it does. Once you get the concept it's just codemonkey work. Understanding positions is very important.

Kokowam

I still want your method because you're able to move the hero somewhere else and then with the same events, you make different monsters. The only thing I can think of is just making maps for each combination of monsters. Or what should be done to do it your way?

Reives

Oh, it's just with conditional branches and/or variable checking for event page conditions.

There are 4 default monster events. They can be filled with anything or nothing.

Assign one variable to each of them as an monster ID variable.

For each monster event, take monster1 for example, have an initializing event do a parallel processing command that "conditional branch: if variable Monster1_ID == 1, then change graphic of monster1->(monster1's sprite).

And when checking for effect and monster skills, simply check which variable each monster's ID variable is. Lots and lots of conditional branches and pages.



To be honest, the more I think about it the more inefficient this is. Although it's amazingly customizable in my opinion, the workload and code-monkey work doesn't seem to be worth it... At least at the moment. Unless I work out a common-event system that is... But I'm too occupied with other aspects of the game at the moment to finish the battle system's structures.  :-X

Kokowam

Once modern algebra teaches me how to make an evented ABS, I'm going to try to perfect one myself. >:]

Reives

Nice, have fun with it. :) If you come across any problems and stuff feel free to send me a PM, I'll try to help.