# How Would I Go About Making "Moves" For Bosses(2DPlatfomer)

Get help using Construct 3!

### » Sun May 13, 2018 2:48 pm

I'll soon be leaving the planning stages of making my multiplayer two-dimensional platformer. I want it to be something along the lines of MegaMan or Shovel Knight, with the four players having the same standard grounded attack, neutral aerial attack, up aerial attack, and down aerial attack. Players would also be able to vault across the ground gaining great speed and height if they hit the ground or an enemy with the tip of their down aerial attack.

Additionally, I'd like there to be complicated, skill based bosses whose attack patterns who have to learn. I imagine that these attack could be things like movement options that are also attacks (such as jumping forward while stabbing with a sword), different kinds of projectile attacks, and summoning menial enemies.

I was planning that some boss' attacks may cycle and that when they reached half health, their attacks would become stronger, they would gain new attacks, and/or become more proactive with their attack patterns.

Another example: an inkling of an idea I have is that if you jump above a boss' head and he is horizontally close to you, he'll run under you and create a windbox, blowing you into the sky and consequentially changing the boss' attack pattern.

Would this be possible to program in Construct 3. If so, how would I go about it.

Thank you in advance for your answers! If anything is unclear or needs to be restated for any reason, I'd be more than happy to oblige!
B
2
Posts: 4
Reputation: 158

### » Sun May 13, 2018 9:29 pm

Yes it's possible, but the question itself is too generic, 'how do I go about it'. You can use conditions or run functions that happen when something is true. If the boss hp is half then increase the damage done. To cycle attacks you just run a function which is a pattern of attacks and when that ends run another function. You can use 'choose' to set a variable randomly and pick functions to perform them in a random order.
B
53
S
21
G
95
Posts: 2,449
Reputation: 56,113

### » Mon May 14, 2018 1:17 pm

plinkie wrote:Yes it's possible, but the question itself is too generic, 'how do I go about it'. You can use conditions or run functions that happen when something is true. If the boss hp is half then increase the damage done. To cycle attacks you just run a function which is a pattern of attacks and when that ends run another function. You can use 'choose' to set a variable randomly and pick functions to perform them in a random order.

Thanks! That helped a lot, but I am still confused on how to make moves and I will try my best to elaborate as much as possible.

Say I wanted a boss to dig underground, effectively disappearing from the stage. Seconds later, four piles of gravel appear, one containing the boss. If the player attacks that pile, the boss takes damage, pops up, and all other piles disappear. If the boss’ pile isn’t touched, the other piles explode into bullets, two shooting either way horizontally, one shooting up, and two at 45 degree angles. After this part of the attack, the boss charges up, then creates an explosion that you have to get away from.

Another example, the boss jumps around with his sword out in front of him. After five jumps, he hops to a high up part of the stage unreachable by the player and begins to throw bullets down at the player.

Where in the interface would I find where to implement these behaviors into the boss and how would I establish that the boss enemy changes between these behaviors?
B
2
Posts: 4
Reputation: 158

### » Mon May 14, 2018 4:13 pm

Say I wanted a boss to dig underground, effectively disappearing from the stage. Seconds later, four piles of gravel appear, one containing the boss. If the player attacks that pile, the boss takes damage, pops up, and all other piles disappear. If the boss’ pile isn’t touched, the other piles explode into bullets, two shooting either way horizontally, one shooting up, and two at 45 degree angles. After this part of the attack, the boss charges up, then creates an explosion that you have to get away from.

Look into using instance variables. You can give the boss a 'state' variable to control what it's doing.
boss.status = "digging" > trigger dig pattern
wait 2 seconds
boss.status = "underground" > trigger gravel pattern
gravel pattern > create 4 gravel at x,y > choose gravel UID 0-3 and assign one to be the boss, at this point also assign gravel.angle for shooting later
player attacks gravel where boss=true > boss take damage, destroy gravel
player attacks gravel where boss =false > destroy gravel > spawn bullet at gravel.angle assigned earlier (i.e. 0 shoots to the right, 180 to the left)
boss.status = "charging" > trigger charge attack pattern > spawn explosion

Another example, the boss jumps around with his sword out in front of him. After five jumps, he hops to a high up part of the stage unreachable by the player and begins to throw bullets down at the player.

Add a counter variable, every time the boss jumps add 1 to it, when it reaches 5, run the pattern for jumping to the higher stage and spawn bullets
B
53
S
21
G
95
Posts: 2,449
Reputation: 56,113

### » Wed May 16, 2018 9:38 pm

plinkie wrote:Say I wanted a boss to dig underground, effectively disappearing from the stage. Seconds later, four piles of gravel appear, one containing the boss. If the player attacks that pile, the boss takes damage, pops up, and all other piles disappear. If the boss’ pile isn’t touched, the other piles explode into bullets, two shooting either way horizontally, one shooting up, and two at 45 degree angles. After this part of the attack, the boss charges up, then creates an explosion that you have to get away from.

Look into using instance variables. You can give the boss a 'state' variable to control what it's doing.
boss.status = "digging" > trigger dig pattern
wait 2 seconds
boss.status = "underground" > trigger gravel pattern
gravel pattern > create 4 gravel at x,y > choose gravel UID 0-3 and assign one to be the boss, at this point also assign gravel.angle for shooting later
player attacks gravel where boss=true > boss take damage, destroy gravel
player attacks gravel where boss =false > destroy gravel > spawn bullet at gravel.angle assigned earlier (i.e. 0 shoots to the right, 180 to the left)
boss.status = "charging" > trigger charge attack pattern > spawn explosion

Another example, the boss jumps around with his sword out in front of him. After five jumps, he hops to a high up part of the stage unreachable by the player and begins to throw bullets down at the player.

Add a counter variable, every time the boss jumps add 1 to it, when it reaches 5, run the pattern for jumping to the higher stage and spawn bullets

This was an excellent explanation. Thank you so much!

Another confusion now: How to I link an instance variable number, string, or Boolean value to a specific action. Also, would the three different values be used for different kinds of things or actions?
B
2
Posts: 4
Reputation: 158

### » Thu May 17, 2018 6:25 pm

That's another very generic question, are you a beginner because I would suggest taking a look at the manual before starting something as detailed as a megaman style platformer game. In general you are looking for conditions (press C on an event) then it allows you to run something based on a variable being a certain value. An int is a number, a string is text and boolean is true/false, they can be used as conditions or 'if statements', run an event if such a value is x.
B
53
S
21
G
95
Posts: 2,449
Reputation: 56,113

### » Fri May 18, 2018 1:14 am

plinkie wrote:That's another very generic question, are you a beginner because I would suggest taking a look at the manual before starting something as detailed as a megaman style platformer game. In general you are looking for conditions (press C on an event) then it allows you to run something based on a variable being a certain value. An int is a number, a string is text and boolean is true/false, they can be used as conditions or 'if statements', run an event if such a value is x.

Thanks! I think that's all that's on my mind for now and I'll be sure to look at the manual.
B
2
Posts: 4
Reputation: 158

### » Fri May 18, 2018 4:21 pm

Just to say that for the last question, you can even has the function name (the boss "move") being the instance variable value, calling it "programatically".
Anyway, you gotta check tutos and learn the basic stuff as @plinkie stated.
B
19
S
7
G
4
Posts: 182
Reputation: 4,194