Cutstuff Forum

Mega Man 8-bit Deathmatch => Projects & Creative => W.I.P Forum => Topic started by: Beed28 on January 25, 2015, 07:38:06 PM

Title: Smash Arsenal Ver. 0.2
Post by: Beed28 on January 25, 2015, 07:38:06 PM
Smash Arsenal
(click to show/hide)
SmashArsenal_v0.2.pk3 (Sendspace download) (https://www.sendspace.com/file/ow8w1v)

This is Smash Arsenal, a mod that gives the player most of Mega Man's moveset from Super Smash Bros. for Nintendo 3DS / Wii U. Instead of collecting weapons, you can hold down a directional button and then use primary or secondary fires to use a particular attack. As a result, all weapons and buster upgrades are removed from the map, along with ammo pickups, W-Tanks, Energy Balancers, and Reggae Calls. All mobility assisting items such as Item-1, Wire Adaptor and Rush Jet are also gone. M-Tanks are replaced with the normal E-Tank. Some items such as Beat Support and Tango are still available. The Party Ball's drops have also changed to reflect this.

Moveset list:
(click to show/hide)

Adjustable cvars:
(click to show/hide)

What currently isn't included:
(click to show/hide)

Changelog:
(click to show/hide)
Title: Re: Smash Arsenal Ver. 0.1
Post by: Russel on January 26, 2015, 06:47:54 PM
It's nice, I suppose, but there's no way the player-based options will work online and it feels really incomplete without certain parts of the arsenal at play...parts that you omitted.
The click-to-fire Mega Buster was omitted from core 8BDM for a reason and bringing it back without some help is kind of painful.
Leaf Shield is just a reskin of Star Crash without anything that could have made it a cool switchup from what's already in core like how it had four shields in the source content. I know that's asking for a lot for that specific part but it would be worth it in making it more interesting.
Controls for it are somewhat finicky, and I still have no idea how the up attacks work even after looking at the code...it's weird.

The player options were a nice touch but you know what happens when you take that online? Every player is subjected to what the server has set for options.
It requires a bit more code than just GetCVar on an enter script and it gets exponentially harder to code with each value in a player option cvar.

All in all, it's a nice project but it has no place in formal or even casual play because fighting game style controls have no place in an arena-style FPS.
Sorry.

If this were a mod for Single Player Doom, however...
If the air-based controls were adjusted and stuff was changed to work while you were holding mouse 1 or mouse 2...wait...
shit then you'd have DemonSteele (http://forum.zdoom.org/viewtopic.php?f=19&t=46787) wouldn't you?

Well...all I can say is if you work on how your inputs are set up, I could see this going places, but having attacks require you to press a direction button and fire at the same time can lead to some pretty funky situations and I don't personally recommend it. As a final note, I don't recommend having air-based actions unless you increase the jump height. This is especially important when you consider you removed every item in the game.
Title: Re: Smash Arsenal Ver. 0.1
Post by: Beed28 on January 26, 2015, 08:47:33 PM
Thanks for the feedback.

It should be pretty easy to make it so the Mega Buster keeps firing if you hold down the mouse 1 button. If I did that, I may be able to bring in the slide and Top Spin with little problem. I have no idea on how to do Leaf Shield's rotating four leaves thing from the source game, let along being able to throw them. For attacks, would they work better if you were holding down said direction instead of clicking?

I had no idea on how to make certain CVars player sided and others server sided. Is there a solution for that, or is it GZDoom only? Because if it's GZDoom only, then I'm screwed...
Title: Re: Smash Arsenal Ver. 0.1
Post by: Russel on January 26, 2015, 09:18:58 PM
There isn't an easy way of doing it at the moment. I recall talk of a function that that could read client-sided cvars in server-sided calls in the Zandronum bug tracker, but it's not had signs of getting implemented.

If you wish to embark on a journey of science and potential pain, you could make a system that uses clientside enter scripts that then check the cvars of the user, creates them if they don't exist, etc.
To get the server to read these options, you would want the player to start with a list of inventory items that have -INVBAR that would be used by the aforementioned clientside script through ConsoleCommand calls.

something that would look like...
Code: [Select]
script X ENTER CLIENTSIDE
{
//cvar declarations
if(!getCvar("Examplecvar")){ConsoleCommand("set examplecvar 0; archivecvar examplecvar; use testCanceller;");}
else if(getCvar("Examplecvar")==1){ConsoleCommand("use testSuccesser");}
}

while the decorate would look something like...
Code: [Select]
actor testFailFlag : Once {}
actor testSuccessFlag : Once {}
actor testCanceller : CustomInventory
{
+INVENTORY.AUTOACTIVATE
States
{
Use:
TNT1 A 0 A_TakeInventory("TestSuccesser", 1)
TNT1 A 0 A_GiveInventory("TestFailFlag",1)
stop
}
}

actor testSuccesser : testCanceller
{
states
{
Use:
TNT1 A 0 A_TakeInventory("TestCanceller", 1)
TNT1 A 0 A_GiveInventory("TestSuccessFlag",1)
stop
}
}

I...wanna experiment with this again because last time I tried this, I found you could not use items more than once in a single tic with consolecommand.
Give me about an hour and a half, maybe?

Edit: Yeah. After a brief test, I found that this is true. No matter what you do, regardless of whether you connect two statements into the same string and execute it using consolecommand or separate them into two separate function calls, it is impossible to call more than one use command for item using in a single tic.
I would recommend just tagging this as a single player mod or straight up removing the player options.
Title: Re: Smash Arsenal Ver. 0.1
Post by: Beed28 on January 27, 2015, 02:24:08 AM
Hmm, I've seen user sided CVars being used in Samsara (http://forum.zdoom.org/viewtopic.php?f=19&t=33219), even in the Zandronum version. I'm not sure if those work online, though.

I'll try asking on the ZDoom forums.
Title: Re: Smash Arsenal Ver. 0.1
Post by: Russel on January 27, 2015, 02:55:28 AM
Alright, sorry I couldn't help you further.
I do remember poking around the code of Samsara and seeing stuff on client options.

...oh...

This is actually crazy simple. I'll need to try and get this working elsewhere.
Basically it uses console command to call a net script that sets the values based on the activator's player number.

So...it would look something like...

Code: [Select]
int exampleswitch[64];

Script X ENTER clientside
{
//keep the old cvar creation stuff in this script too.
int val = getCVar("examplecvar");
int pln = PlayerNumber();
int cln = ConsolePlayerNumber();
int Y = ;//put a number here
if(pln!=cln){Delay(1);}
str command = strParam(s:"puke ", i:Y, s:" ", i:val, s:" ", i:pln);
ConsoleCommand(command);
}

script Y (int val, pln) net
{//in Samsara, it actually uses binary logic to handle multiple flags without using a ton of if else statements.
//This may not be necessary here unless you want to simplify it.
exampleswitch[pln] = val;
}

Well.
I hope this helps.
Title: Re: Smash Arsenal Ver. 0.1
Post by: Beed28 on January 27, 2015, 05:07:53 PM
So I did something like this:
(click to show/hide)

I'm not sure if it's completely optimal, but it works offline at least.
Title: Re: Smash Arsenal Ver. 0.1
Post by: Russel on January 27, 2015, 05:18:24 PM
Yeah that should work online, though theoretically you are allowed to puke more than one script at the same time.
I'm just glad it works, to be honest.

Good luck!
Title: Re: Smash Arsenal Ver. 0.2
Post by: Beed28 on February 01, 2015, 02:47:29 AM
Here's a new version, with several changes. You now just need to be holding down a directional key instead of quickly pressing them before firing. Hopefully the CVars will work online now.

SmashArsenal_v0.2.pk3 (Sendspace download) (https://www.sendspace.com/file/ow8w1v)

Changelog:
(click to show/hide)
Title: Re: Smash Arsenal Ver. 0.2
Post by: Zero1000 on February 01, 2015, 04:10:54 AM
Yay, now we can play 32 player smash Megaman only!

I have an idea for the Final Smash. How about it only summoning the other megamans and then you and them shoot the beams?
Title: Re: Smash Arsenal Ver. 0.2
Post by: Trillster on February 01, 2015, 04:28:45 AM
Quote from: "zero1000"
Yay, now we can play 32 player smash Megaman only!

I have an idea for the Final Smash. How about it only summoning the other megamans and then you and them shoot the beams?

That's just exactly what it did in SSB4... Anyway, I think it would be rather difficult to add a Smash Ball that randomly spawns without making completely new maps. It'd be a cool idea to add but it also seems like it wouldn't be that practical in 3D even with removing the Black Hole Bomb step.
Title: Re: Smash Arsenal Ver. 0.2
Post by: Zero1000 on February 01, 2015, 04:41:27 AM
Quote from: "Sonicfam1102"
Quote from: "zero1000"
Yay, now we can play 32 player smash Megaman only!

I have an idea for the Final Smash. How about it only summoning the other megamans and then you and them shoot the beams?

That's just exactly what it did in SSB4... Anyway, I think it would be rather difficult to add a Smash Ball that randomly spawns without making completely new maps. It'd be a cool idea to add but it also seems like it wouldn't be that practical in 3D even with removing the Black Hole Bomb step.

Maybe you're right, but it would be without the cinematics. Also, for the smash ball, we should replace it for a final smash bar that fills when you do damage, and can only be used when full.
Title: Re: Smash Arsenal Ver. 0.2
Post by: ScrapHeap on February 03, 2015, 03:21:59 PM
But then it wouldn't be a 'game-changer' like in Smash; it would be a given that can be abused. The smash ball isn't something that's expected, which is why it's so potent in the first place. If people want it hard enough, couldn't it just be a flying monster that doesn't attack and just roams, much like the Yambos except a lot slipperier?