I'm still having issues where a button is internally being pressed after I use the chain move to "jump" out of an existing move

I have no idea why this happens, and it's been the biggest issue I've had to try and workaround.

77

(3 replies, posted in General)

I'm looking for a way to manually reset a combo.

Specifically, in my case I've made a "combo breaker" type move but upon getting hit by that move, the information for the combo doesn't go away.

I figured out how to reset the combo count and the combo damage, but I can't figure out what the variables for "Air Juggle Deterioration" or "Hit Stun Deterioration" are. Can someone please help me with this?

Edit: I no longer need this, as I found an alternate solution to my problem.

78

(0 replies, posted in Tips & Articles)

In "DefaultBattleGUI"

At the top of your class, paste

public FPLibrary.Fix64 SelfDamageCap = 600;

That 600 there is the minimum amount of HP your character can have and still activate the self-inflicting damage, so change that however you like.

And then once you've done that, after

if (this.player2.targetLife > UFE.GetPlayer2ControlsScript().currentLifePoints){
                this.player2.targetLife -= this.lifeDownSpeed * deltaTime;
                if (this.player2.targetLife < UFE.GetPlayer2ControlsScript().currentLifePoints)
                    this.player2.targetLife = (float)UFE.GetPlayer2ControlsScript().currentLifePoints;
            }
            if (this.player2.targetLife < UFE.GetPlayer2ControlsScript().currentLifePoints){
                this.player2.targetLife += this.lifeUpSpeed * deltaTime;
                if (this.player2.targetLife > UFE.GetPlayer2ControlsScript().currentLifePoints)
                    this.player2.targetLife = (float)UFE.GetPlayer2ControlsScript().currentLifePoints;
            }

and before

bool player1CurrentStartButton = false;
            bool player1PreviousStartButton = false;
            bool player2CurrentStartButton = false;
            bool player2PreviousStartButton = false;

between those, paste

//Code for self-damaging (Player 1)
            //Make sure Gauge 5 isn't used for anything else, and that your character has 1000 Max Gauge
            if (player1.controlsScript.currentGaugesPoints[4] <= (UFE.config.player1Character.maxGaugePoints - 50))
            {
                if ((UFE.GetPlayer1ControlsScript().currentLifePoints - (player1.controlsScript.currentGaugesPoints[4] * 10)) > 0)
                {
                    UFE.GetPlayer1ControlsScript().currentLifePoints = (UFE.GetPlayer1ControlsScript().currentLifePoints - (player1.controlsScript.currentGaugesPoints[4] * 10));
                    player1.controlsScript.currentGaugesPoints[4] = UFE.config.player1Character.maxGaugePoints;
                }
                else
                {
                    UFE.GetPlayer1ControlsScript().currentLifePoints = 50;
                    player1.controlsScript.currentGaugesPoints[4] = (UFE.config.player1Character.maxGaugePoints - 1);
                }

                if (UFE.GetPlayer1ControlsScript().currentLifePoints <= SelfDamageCap)
                {
                    player1.controlsScript.currentGaugesPoints[4] = (UFE.config.player1Character.maxGaugePoints - 1);
                }
                else
                {
                    player1.controlsScript.currentGaugesPoints[4] = UFE.config.player1Character.maxGaugePoints;
                }
            }
            //Code for self-damaging (Player 2)
            //Make sure Gauge 5 isn't used for anything else, and that your character has 1000 Max Gauge
            if (player2.controlsScript.currentGaugesPoints[4] <= (UFE.config.player2Character.maxGaugePoints - 50))
            {
                if ((UFE.GetPlayer2ControlsScript().currentLifePoints - (player2.controlsScript.currentGaugesPoints[4] * 10)) > 0)
                {
                    UFE.GetPlayer2ControlsScript().currentLifePoints = (UFE.GetPlayer2ControlsScript().currentLifePoints - (player2.controlsScript.currentGaugesPoints[4] * 10));
                    player2.controlsScript.currentGaugesPoints[4] = UFE.config.player2Character.maxGaugePoints;
                }
                else
                {
                    UFE.GetPlayer2ControlsScript().currentLifePoints = 50;
                    player2.controlsScript.currentGaugesPoints[4] = (UFE.config.player2Character.maxGaugePoints - 1);
                }

                if (UFE.GetPlayer2ControlsScript().currentLifePoints <= SelfDamageCap)
                {
                    player2.controlsScript.currentGaugesPoints[4] = (UFE.config.player2Character.maxGaugePoints - 1);
                }
                else
                {
                    player2.controlsScript.currentGaugesPoints[4] = UFE.config.player2Character.maxGaugePoints;
                }
            }

Once you've pasted this code, go into your move you want to be self-damaging and create a new gauge option. Choose gauge 5 and set the gauge required to 100%

If you have your character's max gauge to 1000 like I have, your remainder % of "gauge cost" times 100 will be how much damage will be self-inflicted. For example, if I set "gauge cost" to 95%, the remaining 5% will be multiplied by 100 to reach 500 self-inflicted damage.

Other notes, this uses up Gauge 5, so if you already have something using gauge 5, it may mess things up. In that case, replace any [4]s you see there with whatever gauge you aren't using -1.


Honestly, this isn't really the best way to do things since it uses up a gauge among other things (such as my very amateur programming, or how the health is depleted instantly) but since I got this to work, I figured I might as well share it! Hopefully this works for you, too!

Edit: I'm pretty sure a similar method could be used for healing moves as well, with slight adjustments it would definitely be possible.

I believe just having multiple buttons under "button execution" makes it so you have to press all of them for the move to input. Sequences is just for prior buttons, like for motion inputs or something similar

I know I've had strange priority issues when I have more than two buttons for a move, but it should be possible with enough tinkering.

I'm trying to implement a move that can be used during a combo (like a combo breaker)

I've got it working for the most part, but an unforeseen issue has come up. If the player character doesn't naturally recover in the air by the time they land, they'll still go into a "down" state upon landing. Is there any way to force the player to land normally even if they would go into the "down" state? Thanks in advance if you all know or can come up with something!

Something that I will note, is that chaining into a different move does not help.

Edit: I found a solution here: http://www.ufe3d.com/forum/viewtopic.php?id=2132

81

(0 replies, posted in Suggestions)

I'm having issues that I think would be solved with some sort of manual priority system for moves with similar inputs.

Being able to flag a move as higher importance will fix issues with multiple-button-input moves. Currently, a move I want to have come out with 3 or 4 simultaneous button presses is getting eaten up by moves that only require one button press.

I think being manually being able to set the move that has more buttons as a higher priority to being executed would help prevent errors such as this from happening without weird workarounds.

It could also be useful for choosing which move would come out if you press multiple buttons at once, although I'm not sure how useful that would be.

I second this. Trying to figure out anything with the current Character Select Screen is a big pain, and having the option for alternate prefab/costume loading by default would be very helpful!

83

(2 replies, posted in Suggestions)

FreedTerror wrote:

Good suggestion, could help in certain use cases.
Regarding airdash type moves, you can set it to where the air dash move lasts through the entire airborne duration until landing. Make it to where the air dash move chains into itself and set the startup frame later in the animation.

I just wanted to respond to this since I stumbled across a different solution for airdash-type moves, which was to chain it into a "falling" move. This move's able to chain into all the other air-ok moves except the airdash-type move. Seems to be working pretty good so far for me!

84

(1 replies, posted in General)

Bumping this as I have more information on what exactly I'm looking for.

I'm attempting to allow for players to pick two characters from the Character Select Screen. One is the main character, and one will be the assist character. Loading the assist isn't the hard part, I've just created separate character files for each character/assist combination.

What I am looking for is a way on the character select screen for the player to pick their first character (example, character A), then pick the second character(character B), and then have the game load up the appropriate character file (this would be the character file named "CharacterA(characterB)" in this case)

I guess specifically I'm looking for
-The ability to resume picking characters after selecting one, but finishing after the second one
-Saving which characters have been picked as values to be used later
-Loading those values and load the appropriate character file.

I don't even know where to start in the "DefaultCharacterSelectionScreen.cs" script, and it's caused me plenty of headaches over the past couple weeks. Any pointers would be helpful!

EDIT: I'm considering opening having a second menu come up after both players have selected their characters, letting the players pick the assist in that menu, and then using the results of the menu to do some nested ifs or something. I'm not quite sure how to pull it off, though.

(I only have pro right now so no coding outside the UI prefab code)

I'm looking for a way to load in the Alternative prefabs on the character select screen. I can't find anything that targets the specific list of alternate costumes within the character info file. If there's any code that I can use here that I do not know about, please let me know! it'll be very helpful!

I would like to at least have P2's color show up correctly on mirror matches in the CSS, but the more the better!

86

(2 replies, posted in General)

FreedTerror wrote:

interesting, sounds like that could be an interesting work around for push block maybe. I still think we need a way to disable the hitstun and blockstun entirely for moves, that would fix the interruption issue.

Funnily enough, that's exactly what I was using it for, haha! The new method I'm using with opponent override looks fine for the most part, although it's not quite what I wanted.

87

(2 replies, posted in General)

So I'm trying to add a defensive move that does zero damage and only pushes away the attacker without interrupting their attack.

I've been mostly successful, but the move still counts as if they were "hit" as far as things like counter moves and first hit are concerned...

Is there a way to make the game still register that the hitbox hit and that the force is applied while things like counter hits and first hit don't trigger?

EDIT: I fixed this by utilizing the opponent override instead of force on hit, I hope this doesn't cause any issues but it does fix the whole "counter hit" issue I was having I believe

FreedTerror wrote:

Could potentially have something to do with the allow buffer option. Try turning that option off in your chain moves.

Oh! I'll give that a shot later, for now I just removed the chain move and it works fine without it, but if that works I'm definitely adding it back in!

I think I discovered a weird bug, and I can't find it anywhere else on the forum so here it goes:

Here's what exactly happens: sometimes when I cancel my move (using the Chain Moves tab) mapped to button 2 with a very short other move, the game will continue to register the button 2 press. I noticed this because when I do my move that I have mapped to only button 1, what happens instead is that the move I have mapped to both button one and button 2 plays out. This will happen every time until I press button 2 again.

and yes, I tried experimenting a lot, such as canceling button 1 into that same 6 frame long move, and this time the move I have mapped to both 1 & 2 comes out only on a button 2 press. I also got rid of any other variables I thought might be causing this issue, such as canceling the move when the hitbox was active.

Another couple things to note are that the moves being canceled are all air moves (which is of note because a similar situation with ground moves doesn't seem to have any problems), and that it's a rare situation to occur. This happens only occasionally, maybe somewhere like 10% of the time. I wish I could get it more consistently, but I bet I could work out the problem if it was consistent... -_-

I have no idea what causes this to happen, the only thing I can think of is that since the move it chains into is so short, it messes up the inputs somehow?

So, I brought this up in another thread, but it wasn't really on-topic to the thread (since it didn't involve chain moves) so I thought I'd make a new one for organization purposes.

Here's what I said before:

Starcutter wrote:

While you're at it, do you think you could also add priority to moves that are actually attributed to the character? That'll help me tidy up my folders a ton if that's possible! That's because I'm making variations of characters and sometimes I don't want to have to duplicate moves if I just want it to chain into something else while having the move be identical otherwise!

Example to what I mean: one character can chain move A to move B, but the other variation wants to chain A to C and doesn't actually HAVE move B anymore, but will still try to execute the move even when it's not on the list of moves in the character file.

The solution would be to have two copies of move A where one links into move B and the other into move C, but if I'm doing that dozens or even hundreds of times I'm going to have a whole lot of duplicate files...

To go into details right now, I'm trying to make a sort of hub move that'll use the Chain Move tab to prioritize:
-which move has the right gauge amount (this is working)
-which move is airborne (this is also working)
-which move is actually attributed to the character. (this is not working)

This is done so that whenever I make slightly different versions of my characters I don't have to duplicate every move that chains into the moves. Specifically, I'm making different versions where the only thing that's different is the assist character that's being called, and I plan to have as many assists as we have characters.

That would mean if I'll have to duplicate around 25+ moves that chain into the assist move for EACH different selectable assist, and I'd really rather not bruteforce it like that. Especially since that means I'd have to make changes to multiple move files and that's just begging for me to make a mistake if I'm copying files over several times...

Is there any way to make sure that the chain move will prioritize moves that are attributed to the character file rather than ones that aren't? I'd really like that as it'll save me a TON of headaches.

EDIT: I found a solution to this problem by moving around some files. Why it works now when it didn't before? I'm not sure but all I know is that the slightly different method I'm doing now seems to work.

91

(2 replies, posted in General)

Mistermind wrote:

Priority is based on the following move conditions (from high to low):
Number of Button Execution
Number of Button Execution starting with Forward or Back
Number of Basic Move Limitations (self)
Number of Basic Move Limitations (opponent)
Number of Possible Move States (opponent)
Number of Previous Moves (chain)
Number of Button Sequence

There is no priority rules on gauges, but maybe there should be one. I'll think this over before releasing the next patch.

While you're at it, do you think you could also add priority to moves that are actually attributed to the character? That'll help me tidy up my folders a ton if that's possible! That's because I'm making variations of characters and sometimes I don't want to have to duplicate moves if I just want it to chain into something else while having the move be identical otherwise!

Example to what I mean: one character can chain move A to move B, but the other variation wants to chain A to C and doesn't actually HAVE move B anymore, but will still try to execute the move even when it's not on the list of moves in the character file.

The solution would be to have two copies of move A where one links into move B and the other into move C, but if I'm doing that dozens or even hundreds of times I'm going to have a whole lot of duplicate files...

Edit: after looking into how many files I'd have to duplicate I'd really like this to be looked at, it'd probably save me over a week or two's worth of super mundane work just sorting files...

EDIT 2: I've noticed this is a different problem than what the thread is about so I'll make a new one for this

92

(2 replies, posted in General)

Currently, I'm trying to create a situation where if a character doesn't have enough meter in their gauge to do an action, a different move is performed instead.

I'm doing this for a couple moves, and some of them work properly, although some of the moves use the "not enough meter" move even when the character DOES have enough meter...

Is there any way to make sure the "has meter" move gets checked first?

EDIT: Currently found a workaround by putting them into a sort of "parent" move and having the "child" moves get checked at different frames of the parent move. This'll work.

93

(1 replies, posted in General)

I'm trying to figure out how to have a two-step character selection process.

For example, let's say that each character has 3 different versions of said character. I'm looking for a method to pick a character, and then a second menu comes up to pick which version of the character the player wants to play as. (Having each version of each character will clutter up the screen otherwise!)

Are there any easy ways to do that within the existing Character Select Screen example prefab? I'd like to know ahead of time, so I can implement it before my character selection screen gets too cluttered.

94

(2 replies, posted in Suggestions)

While I believe this would be fairly easy to code in for a move if you've got source, I think it would be pretty neat to have a toggle close to or underneath the "Execution Cooldown" or "Cancel Move On Landing" toggles to remove the execution cooldown upon landing.

This would be useful for say, a character that has an airdash move that the dev only wants them to be able to use once in midair. Whether that be canceling it out of a move or in neutral, but not both!

Normally if you set a cooldown for an air move, it won't reset upon landing. This can cause issues such as not being able to use it again if the player lands, jumps again and uses the move too soon. Having a toggle that resets the cooldown timer to 0 on landing would solve this minor issue of feeling clunky.

I've already made a second gauge, I suppose more context is needed.

I have it set up that when the assists get hit, they use the "counter move" to switch to a move that's basically a hurt state where gauge 3 is depleted by ~%10 and they experience some set knockback. This works due to the "Gauge drain" function working even on assist characters.

I want to make it so that if the assist gets hit and the meter would be completely depleted, they don't go into the usual "hurt state" move mentioned earlier, but instead go into a separate "dying" move.

I believe the only way for this to function properly is for the assist characters to directly affect gauges, which is unfortunate.

Luckily, this last step is mostly cosmetic and our game is early on in development, so this can wait for now, however I would like to request this feature in the future!

EDIT: I just now understood what you're saying, and while it isn't a catch-all solution for what I need, with a bit of work it MIGHT allow me to hopefully get something similar to what I need, even if it won't work exactly the way I want. I'd still prefer the "gauge required" bit to work with assists as it'll make my life SO much easier.

So here's the thing, I want my assist to link into a move, but only if they have enough meter (or gauge) to do so. Otherwise, I'd like them to link into another move.

The problem I've come across while trying to do this is that the "Self" section of the gauge options don't work properly on assist characters. The draining part works fine though, and I haven't tested the "Opponent" section.

This is a problem for me because I need the "Gage Required" option to work in order for the move to work as intended. Does anyone know any possible workarounds for this issue? Or should I just pray that it gets fixed in a future update? haha

Alright, final question! I got the initial one figured out, but this one is more complicated. Is there any way for assist moves to effect gauges in any way? A fundamental system of our game kind of relied on that being the case.

As far as I have tried, assist moves do not cost meter or give you meter on hit. I feel like this is a bit of an oversight to be honest!

Edit: I found a workaround for what I want as the meter drain function works as intended. I started a new thread as this got very off-topic from the original post. http://www.ufe3d.com/forum/viewtopic.php?id=2908

Well, almost!!

As far as I have tested, an assist's move doesn't actually effect gauge costs like I was hoping. Is this a bug or just something that's not implemented?

Nvm, I think I found what I'm looking for, I thought "counter move" under chain moves was for counter hits. I think it should work for what I want!

I would like to have a situation where if my character gets hit during their move, they'll automatically start up a different move.

Specifically, I'm trying to have it where if an assist gets hit during their attack, they'll automatically go into an "assistGetHit" move instead of their regular hitstun, which will also drain some meter.

Is there any way I can easily do this?

I think the easiest way would be to find a way to automatically chain into another move if the player gets hit, similarly to a smash bros-style counter move or something.