News:

MFG's Character of the Month: October 2026 Nominations

Main Menu

Multi-Projectile Hyper damage problem.

Started by NapoleonJonamite, July 09, 2011, 07:10:00 AM

Previous topic - Next topic

ThatIdahoGuy

Yeah, it's definitely the dampener that's causing it.

Quote from: Cyanide on July 11, 2011, 03:27:48 AM
Thing one. Only reduce the pausetime on the projectiles. See what it does.
Problem persists.

Quote from: Cyanide on July 11, 2011, 03:27:48 AM
Next increase the pausetime to twice what it was
See above.

Quote from: Cyanide on July 11, 2011, 03:27:48 AM
Last, decrease pause and increase hit.
See above.

Quote from: Cyanide on July 11, 2011, 03:27:48 AM
The last possibility is dumb. I think that during the hitstates in your character you have some movetype = I states, so damage is being reset.
I ran a check, all hitstates are fine. The only movetype = I states I have are a taunt and a landing state made for one of her attacks.
"Hey, your beard's so dumb, it sits on the TV and watches the couch. Haha! That's a good one, Jack!" -Si Robertson

Riptide

Quote from: Rajaa on July 11, 2011, 01:46:08 AM
Quote from: Riptide on July 10, 2011, 10:50:39 PM
I think the problem could be hit boxes but I never tested it out.

No.

I was assuming P2 could have been on the other side of the hitbox. I'm just trying to eliminate the pause time theory.

Cybaster

Well, strange problem.
In the end, since you just don't want the dampener to be taken into account, then just do this to fix the problem (won't fix the "root of the problem", but it will be functional at least) :

1) Put your attackmulset in a floating variable. This means, instead of using value=blabla in your state-2, set fvar(XXX)=blabla, and use attackmulset=fvar(XXX).
2) Divide your damage for the projectile by fvar(XXX), using ceil to be sure it's an integer, and casting your damage to a float in the brackets to avoid problems :
damage = ceil(11.0/fvar(XXX))

ThatIdahoGuy

Will look into that in the morning (Or some time this week as I will be busy). Just out of curiosity, where would I put the attackmulset and the fvar(XXXX)=X? Never worked with these before, so I want to be sure I'm not going to screw this up.
"Hey, your beard's so dumb, it sits on the TV and watches the couch. Haha! That's a good one, Jack!" -Si Robertson

Cybaster

:S

You just posted your dampener code higher. Modify it so it does the scaling in two steps instead of one, by passing through a floating variable :

[State -2, Damage Dampener]; Scaling in action
type= varset
trigger1= numenemy
fvar(LOLOL) = ifelse(enemynear, gethitvar(hitcount) = 0, 1, ifelse(enemynear, gethitvar(hitcount) = 1, 0.9, 0.8**enemynear, gethitvar(hitcount)))
ignorehitpause= 1

[State -2, Damage Dampener]; Scaling in action
type= attackmulset
trigger1= 1
value= fvar(LOLOL)
ignorehitpause= 1


And set back your LOLOL variable to 1 when the opponent is not being hit (ie change your last attackmulset to a varset).

Rajaa Retired

The projectile can only be summoned once, so maybe it only reads the damage dampener code once, much like a hitdef that activates on one tick and after that doesn't get changed unless it's activated again or movetype doesn't equal attack. I could be wrong, though, as I've only used projectile for projectiles years ago and never again has it satisfied my coding needs again.

Maybe you could use a helper as your projectile and have a constantly active hitdef and then apply the damage dampener through variables in the damage parameter, like Cybaster said.


ThatIdahoGuy

@Cybaster: I'm still learning, so give me a little slack. On top of that, I've also been sleep deprived here.

@Rajaa: I will consider using a helper, but I think the damage line that Cybaster posted could still be used in a projectile state.
"Hey, your beard's so dumb, it sits on the TV and watches the couch. Haha! That's a good one, Jack!" -Si Robertson

Cybaster

It's just that you asked about your damage dampener code, even though you posted its code a few posts earlier. Whatever ...

And yeah, there's no reason for it not to work on projectiles. But hey, there was no reason for the dampener to kick in or not depending on distance (well, more time than distance, but you get the point), so you never know. ;P

Cyanide

Actually, yes that would be it. The first 3 projectiles will be fired at full damage, they will only begin to reduce after p2 has been hit as projectiles don't update themselves based on parent or anything after release.


In M.U.G.E.N there is no magic button

They say a little knowledge is a dangerous thing, but it's not one half so bad as a lot of ignorance.

ThatIdahoGuy

#29
Well Cybaster, are you ready for something really screwy? I did like you showed, and now she won't load at all.

QuoteError message:
Error parsing [State -2, Damage Dampener]
Error in [Statedef -2]
Error in mercury.cns
Character mugenversion is older than this version of M.U.G.E.N.
Error loading chars/ffu_char1/ffu_char1.def
Error loading p1

Get this error when trying to test her in both WinMugen and 1.0. So what did I do wrong here when trying to mod the dampener and use the "damage = ceil(11.0/fvar(lololol))" thing (I did use a number in the parenthesis when I did the fvar)?
"Hey, your beard's so dumb, it sits on the TV and watches the couch. Haha! That's a good one, Jack!" -Si Robertson

Cybaster

That's not screwy. You just wrote faulty code with bad syntax. Post your damage dampener code.

ThatIdahoGuy

#31
Okay, here it is after doing what you told me (Maybe I misunderstood a step):


[State -2, Damage Dampener]; Scaling in action
type= attackmulset
trigger1= numenemy
fvar(1)= ifelse(enemynear, gethitvar(hitcount) = 0, 1, ifelse(enemynear, gethitvar(hitcount) = 1, 0.9, 0.8**enemynear, gethitvar(hitcount)))
ignorehitpause= 1

[State -2, Damage Dampener]; Full damage
type= attackmulset
trigger1= numenemy
trigger1= enemynear,movetype!=H || (enemynear,stateno=[120,155])
value= fvar(1)
ignorehitpause= 1


"Hey, your beard's so dumb, it sits on the TV and watches the couch. Haha! That's a good one, Jack!" -Si Robertson

Cybaster

An attackmulset doesn't have a fvar as output.
The sctrl has to be a varset (and not an attackmulset) with fvar(1) as output.

Rajaa Retired

Don't mind me editing your post. I pressed modify instead of quote. Luckily there's a back button. :ninja:

But, yeah, attackmulset doesn't set variables.

ThatIdahoGuy

#34
Okay, so I have two scaling steps, one with the fvar, and one to set the var, plus the full damage step. Okay, I see what I did wrong now. Thanks for helping me out there Cybaster.

And Rajaa, don't worry, it's cool. I've made mistakes on forums myself, just not moderator-type mistakes.

EDIT: Okay, so now I have this wonderful new bug. When the attack is used once in either range, the damage is fine, but when the attack is used a second time, it's an instant kill.
"Hey, your beard's so dumb, it sits on the TV and watches the couch. Haha! That's a good one, Jack!" -Si Robertson

Cyanide

displaytoclipboard
params = fvar(1)
text = "%f"

what is the value of fvar(1) when the attack completes?


In M.U.G.E.N there is no magic button

They say a little knowledge is a dangerous thing, but it's not one half so bad as a lot of ignorance.

ThatIdahoGuy

Couldn't tell you. The displaytoclipboard isn't showing me anything for fvar(1).

Here's the new damage dampener (If this helps):
[State -2, Damage Dampener]; Scaling in action
type= varset
trigger1= numenemy
fvar(1)= ifelse(enemynear, gethitvar(hitcount) = 0, 1, ifelse(enemynear, gethitvar(hitcount) = 1, 0.9, 0.8**enemynear, gethitvar(hitcount)))
ignorehitpause= 1

[State -2, Damage Dampener]; Scaling in action
type= attackmulset
trigger1= 1
value= fvar(1)
ignorehitpause= 1

[State -2, Damage Dampener]; Full damage
type= attackmulset
trigger1= numenemy
trigger1= enemynear,movetype!=H || (enemynear,stateno=[120,155])
value= 1.0
ignorehitpause= 1
"Hey, your beard's so dumb, it sits on the TV and watches the couch. Haha! That's a good one, Jack!" -Si Robertson

Cybaster

Quote from: Napoleon Shreddamite on July 12, 2011, 06:14:55 AM
The displaytoclipboard isn't showing me anything for fvar(1).
You have to sort this out, because this is how you'll debug your stuff. What appears in the clipboard? Also, add ignorehitpause=1 to your code.

Also, in your damage dampener code, you need to change the last attackmulset to a varset in order to reset your variable, as I told you before :
Quote from: Cybaster on July 11, 2011, 07:40:25 AM
And set back your LOLOL variable to 1 when the opponent is not being hit (ie change your last attackmulset to a varset).



ThatIdahoGuy

#38
Quote from: Cybaster on July 12, 2011, 06:19:44 AM
Quote from: Napoleon Shreddamite on July 12, 2011, 06:14:55 AM
The displaytoclipboard isn't showing me anything for fvar(1).
You have to sort this out, because this is how you'll debug your stuff. What appears in the clipboard? Also, add ignorehitpause=1 to your code.

Also, in your damage dampener code, you need to change the last attackmulset to a varset in order to reset your variable, as I told you before :
Quote from: Cybaster on July 11, 2011, 07:40:25 AM
And set back your LOLOL variable to 1 when the opponent is not being hit (ie change your last attackmulset to a varset).
For what I usually get in the clipboard, see my screenshots (guardpush = 0). I tried to figure out what went wrong with the fvar version, but to no avail. Also, by "add ignorehitpause=1 to your code" are talking about adding it the projectiles?

As for the last part, I guess the sleep deprivation has been screwing with me. Guess I better get on that real quick. I'll edit this post after I see what happens.

EDIT: Okay, so I did this:
[State -2, Damage Dampener]; Full damage
type= varset
trigger1= numenemy
trigger1= enemynear,movetype!=H || (enemynear,stateno=[120,155])
fvar(1) = 1
ignorehitpause= 1

And now even at a distance, the attack just gets weakened on the second use. I mean, I'll be at the full distance away and cause 176 the first time, and then just 16 on the second use. I must be wicked dumb with dampeners here because I don't think this should be happening. So, now what?
"Hey, your beard's so dumb, it sits on the TV and watches the couch. Haha! That's a good one, Jack!" -Si Robertson

Cyanide

We are of the opinion that the fvar is showing a minor value because it is not resetting. This is why you need to make use of displaytoclipboard. %f is the wildcard for displaying a float value of the first parameter you request.


In M.U.G.E.N there is no magic button

They say a little knowledge is a dangerous thing, but it's not one half so bad as a lot of ignorance.