Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Some problems with the included Dizzy system #561

Closed
potsmugen opened this issue Jun 12, 2022 · 6 comments
Closed

Some problems with the included Dizzy system #561

potsmugen opened this issue Jun 12, 2022 · 6 comments
Labels
bug Something isn't working

Comments

@potsmugen
Copy link
Contributor

potsmugen commented Jun 12, 2022

These aren't so much problems with the engine itself as they are with Dizzy.zss, but:

1 - The Dizzy state (default 5300) needs a HitFallReset. If the move that stuns the opponent is a knockdown, the first hit after he's dizzy will also knock down.

2 - If you change the Default.LifeToDizzyPointsMul constant to anything but 0, redizzy combos become possible. That is, hitting an opponent that is already dizzy will still do stun damage.

3 - If you juggle the opponent just as he's stunned, he will skip the dizzy state when he lands.

4 - The dizzy state should be vulnerable to throws, somehow. Most chars miss since it's Movetype=H.

5 - If you hit the opponent while his dizzy points are regenerating, your attack will do slightly less stun damage than it's supposed to, since the points still regenerate for 1 frame when he's hit.

6 - TargetLifeAdd is currently unaffected by Default.LifeToDizzyPointsMul. Also this is more of a feature request, but there could be a parameter so you could make this Sctrl add dizzy points or not. Either a flag like "Kill", or a multiplier that defaults to said constant.

7 - Not a bug, but in most games the opponent is invulnerable immediately once DizzyPoints = 0 and until he get ups. I think this should be the default Ikemen behaviour.

8 - Another feature request that I should post on its own but I might as well leave it here: there could be an AssertSpecial flag to disable Dizzy Points damage (as well as Guard Points for that matter). As in, once asserted, none of your attacks deal stun damage to the opponent.

I think that's it.

K4thos added a commit that referenced this issue Jun 12, 2022
- targetLifeAdd sctrl dizzy parameter: 1 enables dmg to dizzy points conversion support using Default.LifeToDizzyPointsMul const (1 by default)
- hitDef and targetLifeAdd skips dizzy points applying, if target is already dizzy
- NoDizzyPoints AssertSpecial flag: While asserted, none of your attacks deal stun damage to the opponent.
- NoGuardPoints AssertSpecial flag: While asserted, none of your attacks deal guard damage to the opponent.
- changed Default.LifeToDizzyPointsMul from 0 to -1.8 (dizzy.zss edited accordingly)
- changed 5300 statdef movetype to I
@K4thos
Copy link
Member

K4thos commented Jun 12, 2022

1 - I'm not sure how to do it from within cns/zss code. Any ideas?
2 - Fixed. hitDef and targetLifeAdd now skips dizzy points applying, if target is already dizzy
4 - I've simply changed statdef 5300 moveType from U to I. It shouldn't have negative consequences unless I'm missing something?
6 - Added targetLifeAdd sctrl dizzy parameter: 1 enables damage to dizzy points conversion support using Default.LifeToDizzyPointsMul const (true by default).
8 - Godd idea. Added both requested AssertSpecial flags. And with this change I was able to assign Default.LifeToDizzyPointsMul in common.const instead of relying on receivedDamage trigger (nodizzypoints is now asserted in dizzy.zss when hitDefAttr = SCA, HA, so workaround to achieve it is not needed)

1, 3, 5, 7 - I think this stuff can be handled by editing dizzy.zss file but I'm afraid I don't have enough experience with character creation to implement such changes without introducing regressions. Any help with it would be appreciated. Feel free to edit dizzy.zss, if you like, all of the proposed changes would be internalized.

@potsmugen
Copy link
Contributor Author

potsmugen commented Jun 12, 2022

1 - My bad. I meant a HitFallSet with value = 0

2 - The important thing here is also that this behaviour is only reset once the dizzy victim can act again. I forgot to specify that

4 - That works but the combo counter will then reset while the character is dizzy. Unless you apply the Dizzy flag sooner, which is what I did below
EDIT: Actually that doesn't seem to be working, but you get the idea.

6 and 8 - Excellent! Thanks. Although, if I can make another suggestion, "nodizzypoints" sounds like it disables the player from getting dizzy instead of causing dizzy. Maybe "nodizzypointsdamage" or something of the sort?

1, 3, 5, 7 - I'm not quite used to the ZSS language but I gave it a shot. Every change should be commented.
dizzy.zip

K4thos added a commit that referenced this issue Jun 12, 2022
- renamed AssertSpecial flags: noDizzyPoints => noDizzyPointsDamage, noGuardPoints => noGuardPointsDamage
- combo counter freezed during dizzy
- other dizzy.zss changes suggested in #561
@K4thos
Copy link
Member

K4thos commented Jun 12, 2022

Thanks! Implemented your changes to latest version of zss file, renamed flags, fixed the combo counter, added more comments. I've moved dizzy reset back to -2 since dizzy points staying at 0 for the duration of dizzy is intended (this way stunbar can show custom anim for dizzy). Please let me know if you still find some oddities with it.

@potsmugen
Copy link
Contributor Author

I will play around with it a bit more when the next release comes out, but:

	# Hyper attacks don't affect dizzy points
	ignoreHitPause if hitDefAttr = SCA, HA {
		assertSpecial{flag: nodizzypointsdamage}

I think this will cause issues when you do want hyper attacks to deal stun damage.

One other thing is I'm wondering whether the NotHitBy should be both in State -2 and the Dizzy states themselves, afterall. The reason being, for instance, my Ryu's Denjin Hadouken causes Dizzy even if that feature is turned off, and what I did was just send the target into the Dizzy.zss states. In that case (Dizzy option off) I think P2 will be unaffected by the State -2 code.

K4thos added a commit that referenced this issue Jun 14, 2022
#561
- added notHitBy to dizzy states
- new constant: Super.LifeToDizzyPointsMul (works like Default.LifeToDizzyPointsMul, but for super moves)
@K4thos
Copy link
Member

K4thos commented Jun 14, 2022

  • added notHitBy to dizzy states
  • new constant: Super.LifeToDizzyPointsMul (works like Default.LifeToDizzyPointsMul, but for super moves)

With this constant (default value = 0) calling assertSpecial flag is not needed. Super moves with actual dizzypoints values assigned in HitDef will do intended dizzy damage.

@potsmugen
Copy link
Contributor Author

potsmugen commented Jun 14, 2022

That does sound like a better solution. Both simple and flexible.

@Windblade-GR01 Windblade-GR01 added the bug Something isn't working label Jun 15, 2022
@K4thos K4thos closed this as completed Jun 19, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants