MegaMan Armada

Complete Mega Man Armada [updated 12/24/2019] 0.1.4

No permission to download
Project is completed.
alucard2009 said:
someone can help me,please, and download this mod in mediafire because gamejolt is not working in my country.thanks.
I just uploaded it to Mediafire. Check the first post. Have fun! ;D
 
Mick... I mean, Nick. You don't know how much I love Mega Man series (classic that is). I always enjoy your Mega Man Armada mod. I love the cast of players and bosses (robot masters) combined in it.

NickyP said:
Bloodbane said:
There are couple things I noticed that could be enhanced with scripts:
1. Enemy's temporary invincibility
2. Moving while walking off

I have less clean solution for #1 but for #2, I'd need to test couple things first. If you're interested with #1, I'll share it here :)
For #1, do you mean
a) Enemies have an invincibility window when they get hit, like players do (aka, the bosses in the official MegaMan games); or
b) Enemies can still get "hit," but they take no damage (aka, enemies with shields or hard armor in the official MegaMan games)?

If you're referring to a), I honestly prefer to keep things as is. As much as I love MegaMan, one thing I always disliked was how the games punish you for "rapid firing" on bosses.  ;D And needless to say, I have a very quick finger, so that always inconvenienced me. However, if you're referring to b), then by all means please share. There are some enemies that I genuinely do not know how to recreate, solely because of this issue. I've done some clever workarounds, like the Mettools and the barrel enemies in KnightMan's stage, but I can't rely on those methods forever.

I'm very interested in #2, if you have a solution.  :) I believe I saw a command for it in the manual, but I haven't tried it.

I found out the solution for #2 just now. It's an easy fix similar to the Mega Man jump mechanic. It's for anim walkoff. Here. I fixed it for you. You can copy it and paste it in a keyall.c txt in scripts folder. This should do it.

keyall.c:
Code:
void main()
{
    int iPlIndex = getlocalvar("player"); //Get calling player
    void vSelf = getplayerproperty(iPlIndex , "entity"); //Get calling entity
//    void vName = getentityproperty(vSelf,"name"); //Get name of calling entity
    void vAniID = getentityproperty(vSelf,"animationID"); //Get current animation ID
//    void vAniPos = getentityproperty(vSelf, "animpos"); //Get current animation frame
    int iDir = getentityproperty(vSelf, "direction");  //Get current facing direction

    void iUp = playerkeys(iPlIndex, 1, "moveup"); // New key status of "Up"
    void iDown = playerkeys(iPlIndex, 1, "movedown"); // New key status of "Down"
    void iLeft = playerkeys(iPlIndex, 1, "moveleft"); // New key status of "Left"
    void iRight = playerkeys(iPlIndex, 1, "moveright"); // New key status of "Right"
    void iJump = playerkeys(iPlIndex, 1, "jump"); //New key status of "Jump"
    void iSpecial = playerkeys(iPlIndex, 1, "Special"); //New key status of "Special"
    void iAttack = playerkeys(iPlIndex, 1, "attack"); //New key status of "Attack"
    void iAttack2 = playerkeys(iPlIndex, 1, "attack2"); // New key status of "Attack 2"
    void iAttack3 = playerkeys(iPlIndex, 1, "attack3"); // New key status of "Attack 3"
    void iAttack4 = playerkeys(iPlIndex, 1, "attack4"); // New key status of "Attack 4"

    void iLeftR = playerkeys(iPlIndex, 2, "moveleft"); // Release status of "Left"
    void iRightR = playerkeys(iPlIndex, 2, "moveright"); // Release status of "Right"
    void iAttackR = playerkeys(iPlIndex, 2, "attack"); //Release status of "Attack"

    void iDownH = playerkeys(iPlIndex, 0, "movedown");
    void iUpH = playerkeys(iPlIndex, 0, "moveup");
    void iLeftH = playerkeys(iPlIndex, 0, "moveleft");
    void iRightH = playerkeys(iPlIndex, 0, "moveright");

//Move while jumping
    if(vAniID == openborconstant("ANI_JUMP") || vAniID == openborconstant("ANI_FREESPECIAL") ){ //Jumping?
      if(iLeftR || iRightR){ //Left or Right released?
        if(!iLeftH && !iRightH){ //Left and Right not pressed?
          changeentityproperty(vSelf, "velocity", 0);
        }
      } else if(iLeft){ //Left pressed?
        changeentityproperty(vSelf, "direction", 0);
        changeentityproperty(vSelf, "velocity", -1);
        changeplayerproperty(vSelf, "playkeys", 0);
      } else if(iRight){ //Right pressed?
        changeentityproperty(vSelf, "direction", 1);
        changeentityproperty(vSelf, "velocity", 1);
        changeplayerproperty(vSelf, "playkeys", 0);
      }
    }

//Move while runjumping
    if(vAniID == openborconstant("ANI_RUNJUMP") ){ //Jumping?
      if(iLeftR || iRightR){ //Left or Right released?
        if(!iLeftH && !iRightH){ //Left and Right not pressed?
          changeentityproperty(vSelf, "velocity", 0);
        }
      } else if(iLeft){ //Left pressed?
        changeentityproperty(vSelf, "direction", 0);
        changeentityproperty(vSelf, "velocity", -1.6);
        changeplayerproperty(vSelf, "playkeys", 0);
      } else if(iRight){ //Right pressed?
        changeentityproperty(vSelf, "direction", 1);
        changeentityproperty(vSelf, "velocity", 1.6);
        changeplayerproperty(vSelf, "playkeys", 0);
      }
    }

//Flip while ducking
    if(vAniID == openborconstant("ANI_DUCK") ){ //Ducking?
      if(iLeft){ //Left pressed?
        changeentityproperty(vSelf, "direction", 0);
      } else if(iRight){ //Right pressed?
        changeentityproperty(vSelf, "direction", 1);
      }
    }

// Move while walking off
   if(vAniID == openborconstant("ANI_WALKOFF")){
      if(iLeftR || iRightR){ //Left or Right released?
        if(!iLeftH && !iRightH){ //Left and Right not pressed?
          changeentityproperty(vSelf, "velocity", 0);
        }
      } else if(iLeft){ //Left pressed?
        changeentityproperty(vSelf, "direction", 0);
        changeentityproperty(vSelf, "velocity", -1);
        changeplayerproperty(vSelf, "playkeys", 0);
      } else if(iRight){ //Right pressed?
        changeentityproperty(vSelf, "direction", 1);
        changeentityproperty(vSelf, "velocity", 1);
        changeplayerproperty(vSelf, "playkeys", 0);
      }
    }
}

There's something strange with the cannon ball which I tested in a single level of Skull Man. Even though the cannon shoots it in arc, that one pops in less than second. If you're where it's at, you'd get hit.

[attachment deleted by admin]
 
NickyP said:
Are you saying it doesn't play right that her "bomb" projectile is only aerial? I suppose I could put the squirrel in the aerial and map the bunny to down+attack.

She plays fine, it's just that for some reason I kept thinking she should be able to summon either squirrel or bunny while jumping or walking

Do you have any other ideas?

Hmmm... my suggestion is to use other way to make bombs or tossed projectiles
Here's how I usually make tossed projectiles:
Code:
name    	EBomb
type    	none
candamage       player
lifespan  	2
nolife          1
palette		none
subject_to_wall 0
subject_to_hole 1
no_adjust_base  0
subject_to_gravity 1
subject_to_obstacle 0
subject_to_platform 0


anim idle
	loop	1 2 6
	delay	5
	followanim 1
	followcond 1
	landframe 8
	offset  5 5
	attack  1 1 8 8 5 1
	frame	data/chars/korps/shot1.png
	frame	data/chars/korps/shot4.png
	frame	data/chars/korps/shot3.png
	frame	data/chars/korps/shot2.png #
	frame	data/chars/korps/shot1.png
	frame	data/chars/korps/shot4.png
	frame	data/chars/korps/shot3.png
	frame	data/chars/korps/shot2.png #
	attack  0
	frame	data/chars/misc/empty.gif

anim follow1
	delay	10
	offset	10 10
	frame	data/chars/misc/empty.gif

  and they are tossed with this function:
Code:
void shooter(void Shot, float dx, float dy, float Vx, float Vy)
{ // Shooting special projectile with speed control
   void self = getlocalvar("self");
   int Direction = getentityproperty(self, "direction");
   void vShot;

   if (Direction == 0){ //Is entity facing left?                  
      Vx = -Vx; //Reverse Vx direction to match facing
   }

   vShot = spawn01(Shot, dx, dy, 0);
   changeentityproperty(vShot, "velocity", Vx, 0, Vy);
   return vShot;
}

This projectile isn't affected by walls so it might pass through walls when tossed there

However, if you're referring to b), then by all means please share. There are some enemies that I genuinely do not know how to recreate, solely because of this issue. I've done some clever workarounds, like the Mettools and the barrel enemies in KnightMan's stage, but I can't rely on those methods forever.

I'll share the script later. Though I need to tell you that it's not 100% clean cause it doesn't remove the hitflash and it won't bounce the projectile away like in Megaman games. The latter needs editing each projectile text

I'm very interested in #2, if you have a solution.  :) I believe I saw a command for it in the manual, but I haven't tried it.

I've done it and you only need to fix keyall.c you're using a bit
First find this line:
Code:
//Move while jumping
    if(vAniID == openborconstant("ANI_JUMP") || vAniID == openborconstant("ANI_FREESPECIAL")){ //Jumping?

then change it into this:
Code:
//Move while jumping
    if(vAniID == openborconstant("ANI_JUMP") || vAniID == openborconstant("ANI_FREESPECIAL") || vAniID == openborconstant("ANI_WALKOFF")){ //Jumping, double jumping or walking off?

This change will allow moving while walking off :)

[A day later]

Okay, here's the function to set immunity:
Code:
void immunity(int Flag)
{// Sets immunity to all used attacktypes
    void self = getlocalvar("self");
    int DId = openborconstant("ATK_NORMAL");

    if(Flag==1){
      changeentityproperty(self,"defense", openborconstant("ATK_NORMAL"), 0, 200, 0);
      changeentityproperty(self,"defense", openborconstant("ATK_SHOCK"), 0, 200, 0);
      changeentityproperty(self,"defense", openborconstant("ATK_BURN"), 0, 200, 0);
    } else {
      changeentityproperty(self,"defense", openborconstant("ATK_NORMAL"), 1, 1, 1);
      changeentityproperty(self,"defense", openborconstant("ATK_SHOCK"), 1, 1, 1);
      changeentityproperty(self,"defense", openborconstant("ATK_BURN"), 1, 1, 1);
    }
}

This will set immunity against normal, shock and burn attack.
Usage example:
anim attack1
range  0 150
rangez -25 25
delay 10
offset  64 140
bbox    40 56 46 67
frame data/chars/mutant4/42
frame data/chars/mutant4/43
delay 15
frame data/chars/mutant4/44
delay 500
@cmd immunity 1
frame data/chars/mutant4/45
delay 12
@cmd immunity 0
frame data/chars/mutant4/43
frame data/chars/mutant4/42

In this example, mutant is immune for 5 seconds in 4th frame
This function can be expanded for more attack types :)
 
maxman said:
Mick... I mean, Nick. You don't know how much I love Mega Man series (classic that is). I always enjoy your Mega Man Armada mod. I love the cast of players and bosses (robot masters) combined in it.
Thanks maxman! MegaMan holds a very special place in my heart, so I put a lot of love into this mod. It's still only 5% of what I want it to be, but I'm proud of how far it's come along since I first started working on it back in 2013 (yes, really!).  :)

maxman said:
There's something strange with the cannon ball which I tested in a single level of Skull Man. Even though the cannon shoots it in arc, that one pops in less than second. If you're where it's at, you'd get hit.
That's the problem Bloodbane and I were discussing a few posts ago. Hopefully we can come up with a fix!

Bloodbane said:
Hmmm... my suggestion is to use other way to make bombs or tossed projectiles
Here's how I usually make tossed projectiles:
How do you actually toss it? @cmd shooter [bomb name] [X] [Y]?

Bloodbane said:
I'm very interested in #2, if you have a solution.  :) I believe I saw a command for it in the manual, but I haven't tried it.

I've done it and you only need to fix keyall.c you're using a bit
Done! And it works perfectly, thanks Bloodbane!  ;D I also added additional lines of code for the jumpattacks and follows as well. With a few tweaks, characters that bounce off enemies to attack (Mario, Sonic, etc) are much easier to control now!

Bloodbane said:
[A day later]

Okay, here's the function to set immunity:
Excellent! Is there any way to modify it so that it plays a certain hitfx during immunity? Maybe block.wav? Would be a perfect opportunity to use the "ding" sound from the MegaMan games--the sound that plays when you shoot at a shield or etc.

;D The more you help me with scripts like these, the more obligated I feel to put your name in the credits. You've been extremely helpful in helping me realize my vision for this game, Bloodbane. Thank you, really.

EDIT: Ah, one additional thing. With so many playable characters, it's quite burdensome to constantly push a direction to select the one you want--especially if they're buried in the middle somewhere. Is it possible to set it so that holding left or right will scroll through characters automatically, both in the select screen and after continuing during a level? I've checked the manual up and down, and it doesn't seem like there's a command for it.
 
NickyP said:
How do you actually toss it? @cmd shooter [bomb name] [X] [Y]?

Yes, with : @cmd shooter (Bomb) (x) (y) (Vx) (Vy)
x,y are x y distance relative to offset
Vx and Vy are tossing velocity

Is there any way to modify it so that it plays a certain hitfx during immunity? Maybe block.wav?

I was going to post the script for that but my post is long already
Anyways you need to use this takedamagescript:
Tlang.c
Code:
void main()
{// Plays a sound if entity is hit while being invincible
    void self = getlocalvar("self"); //Get calling entity.
    int Health = getentityproperty(self,"health");
    int Def = getentityproperty(self, "defense", openborconstant("ATK_NORMAL"));
    int SFX = loadsample("data/sounds/clang.wav");

    if(Health > 0 && Def == 0){
      playsample(SFX, 0, 120, 120, 100, 0);
    }
}

Save this to your data/scripts folder and declare it like this:
Code:
takedamagescript data/scripts/tlang.c

With this, when enemy is hit while immunity is active, clang.wav will be played

With so many playable characters, it's quite burdensome to constantly push a direction to select the one you want

Unfortunately no :(
 
With so many playable characters, it's quite burdensome to constantly push a direction to select the one you want--especially if they're buried in the middle somewhere.

I kinda got used to this with Sega Brawlers and Sonic Revolution, but it may be a good idea to show icons of each playable character if you haven't done so yet, to at least show players where the character they may one is at on the list.

x)
 
Thank you Bloodbane! I've already got a takedamagescript for the blink effect, so I suppose I'll just have to add the code you pasted here. I'll let you know when I get around to it!  :)

DJGameFreak TheIguana said:
I kinda got used to this with Sega Brawlers and Sonic Revolution, but it may be a good idea to show icons of each playable character if you haven't done so yet, to at least show players where the character they may one is at on the list.
That's actually not a bad idea... and I've been meaning to rework the character select screen anyways. Maybe I'll make the portraits smaller?

How do you guys like the character select order, anyways? I've currently reorganized it like this:
1. MegaMan series characters (plus MegaMan-related characters)
2. Video game characters
3. Anime/TV/comic characters
4. Misc. characters

Would you change that?
 
I think Capcom characters should have priority above the other video game characters, and what would the “misc” characters be?
 
Miru said:
and what would the “misc” characters be?
As of right now, there's two:
1. StinkoMan 20X6 from Homestarrunner.com
2. AVGN from the Angry Video Game Nerd

Yes, both of them are technically video game characters, since their sprites come from their respective games. But one's a flash animation character from the early 2000's, and the other's a YouTube celebrity. So I moved them to the end of the list.
 
NickyP said:
That's actually not a bad idea... and I've been meaning to rework the character select screen anyways. Maybe I'll make the portraits smaller?
Yeah, that would be a good call.

How do you guys like the character select order, anyways? I've currently reorganized it like this:
1. MegaMan series characters (plus MegaMan-related characters)
2. Video game characters
3. Anime/TV/comic characters
4. Misc. characters

Would you change that?
Good call, no change needed. This is pretty much how I did it in Sega Brawlers. Direct Sega Ip's up top, then it's kind of a grey area after the Treasure characters, then guest characters.

Something else, I get the most mileage out of this by playing Metal Man's stage, usually as Sonic, Deadpool, or Zero,  and now Mikey, mainly because I recently discovered that theme music and I really like it for some reason. After going through some remixes, this was my fave.
https://www.youtube.com/watch?v=ok_Nw9K1Bcw

Metal Man
3 years ago
I swear I'm not gay.

I should post this to just because of what the guy in the video does., but the track is great to.
https://www.youtube.com/watch?v=Gk9yACqbNrw

x)
 
MetalMan's theme is dope, dude. I mean, all of MegaMan 2's music is rad, but it's a three-way tie between MetalMan, FlashMan, and BubbleMan for which is the best IMO.

It's cool that you like to play his stage in my game a lot. It was the first stage I made! Since you say you play a lot of Sonic, I did update him to play a lot more like Rainbow Dash. I also made it way easier to bounce on enemies--you can bounce in place for crazy DPS, or control your horizontal movement way easier than before. If you want, I can PM you a Dropbox link so you can tell me what you think.

 
NickyP said:
How do you guys like the character select order, anyways? I've currently reorganized it like this:
1. MegaMan series characters (plus MegaMan-related characters)
2. Video game characters
3. Anime/TV/comic characters
4. Misc. characters

Would you change that?

Sounds good. Though on the latest demo, I see Kratos, Dante, Snake, Cuphead and other video game characters being placed after Vegeta, Naruto and other anime/TV/comic characters. I hope they will be reorganized later :)
 
I should've mentioned, I unfortunately reorganized them after I released a new version. In the current unreleased build I have, they're organized the way I described. I was actually thinking of releasing it just as a quick patch update, since I also reworked some characters and implemented changes to keyall.c.
 
NickyP said:
MetalMan's theme is dope, dude. I mean, all of MegaMan 2's music is rad, but it's a three-way tie between MetalMan, FlashMan, and BubbleMan for which is the best IMO.
I'll have to listen to them all in their original format but I do find Airman's theme to be really good to. The most I know of Megaman 2's OST is from a video done by these guys, Duane and Brando, where they used to do metal raps over most of the game's OST. Lotta strong language, and the only one of their's I liked more was the one they did for Battletoads.
https://www.youtube.com/watch?v=R6L9bUouDr8

It's cool that you like to play his stage in my game a lot. It was the first stage I made! Since you say you play a lot of Sonic, I did update him to play a lot more like Rainbow Dash. I also made it way easier to bounce on enemies--you can bounce in place for crazy DPS, or control your horizontal movement way easier than before. If you want, I can PM you a Dropbox link so you can tell me what you think.

I may have to take you up on that offer, though I wouldn't know how Rainbow Dash plays cause I don't mess with those ponies, in fact I died a little inside when I saw you had included them. XD

x)
 
I don't mess with those ponies, in fact I died a little inside when I saw you had included them.
Bruh.  ;D I am definitely no brony. But I saw that someone made them in MegaMan style, and I know that there's a lot of people who do like the show, so I threw them in the game.  It was by sheer coincidence that Rainbow Dash ended up being surprisingly fun to play. Sonic is significantly more playable after adapting her mechanics to him, IMO. I'll PM you the Pak and you can tell me.
 
Here is my playthrough of the current build man:

https://www.youtube.com/watch?v=iOzgkg-KRXI

As you can tell from the gameplay I'm not the best Mega Man player ROFL, but with the amount of characters this game has, with all the different gameplay each character has it's going to my for some interesting videos lol!!!  ;D

Thanks for the game man!!!
 
I have finally try your game a lot on my PI and really it is an excellent MEGAMAN game :D
Having 50 characters give several different play styles... i love that :p
And my little 5 years girl found how to transform Vegeta to Super Sayan lol excellent :)
We play with the build 6315 without any bug.

The most important things we lost from original games are :
- The charge blast ... some don't have any bullet ... i love in Megaman charging my blaster to blast enemies :p Maybe you can add it to some characters ?
- In Megaman the interest is to find the good order to kill Boss to have the good weapon to fight the other boss ... we lost it here, or it is because we are on a demo and later it we be implemented ? Maybe with a MAP like on some other OpenBOR games ?
Because for the moment the Boss are really long to kill, so long ... and we can't see the life bar :(
Maybe the KO is so long too ...

Thanks for this great work :)
 
Great work here I personally love the blue bomber games, so this is excellent, I love X and zero. Hopefully on the future you could add some of the Dr willy stages just as original games, that would be great I love the music of that stages. Thank you for your effort here my friend
 
Back
Top Bottom