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

[Bug] Energy will be cleared but elemental burst will not be released #1248

Closed
WhisperWithDelight opened this issue Jun 13, 2022 · 14 comments · Fixed by #2424
Closed

[Bug] Energy will be cleared but elemental burst will not be released #1248

WhisperWithDelight opened this issue Jun 13, 2022 · 14 comments · Fixed by #2424
Labels
bug Something isn't working

Comments

@WhisperWithDelight
Copy link

Did you look for other closed issues that have the same problem?

Describe the bug

If we press the Q key after the E key quickly, energy will be cleared but the burst will not be released. Almost all avatars encountered this issue.

Which branch did you use?

Screenshots

1906bf2c5d12aec04e70538c8e35e763_1

Additional context

@WhisperWithDelight WhisperWithDelight added the bug Something isn't working label Jun 13, 2022
@zhaodice
Copy link
Contributor

I noticed this bug but I didn't know how to reproduce this,thanks your feedback

@zhaodice
Copy link
Contributor

is chance of this problem 100%?

@GanyusLeftHorn
Copy link
Contributor

No, and it also does not only happen shortly after pressing E. I had it happen at other times too. No clue why the Q doesn't active in those cases ...

@Birdulon
Copy link
Member

It's probably the energy manager using the wrong trigger condition to remove the energy, and some animation buffering states causing the client to have a delay long enough for the energy removal to arrive before the burst actually starts.

@Birdulon
Copy link
Member

i.e. our EvtDoSkillSuccNotify proto probably isn't actually the client starting the effects of a skill but rather queuing it up and it can have additional checks that cause it to fail when the current animation ends and it actually tries to do the skill. This might have a similar edge case with stamina calculation if charged attacks weren't commented out currently.

@Liujunhua007
Copy link

+1

@GanyusLeftHorn
Copy link
Contributor

i.e. our EvtDoSkillSuccNotify proto probably isn't actually the client starting the effects of a skill but rather queuing it up

You are probably right, yes. I didn't have Iridium set up yet when I wrote EnergyManager, so I just guessed based on the name that EvtDoSkillSuccNotify meant that the skill was successfully cast.

I'll do a little sniffing later to find out what's actually going on and see if I can fix this.

@GanyusLeftHorn
Copy link
Contributor

Okay, did the sniffing. Here is one of the clearest results I could get:
burst_energy

Here, I switch to a new avatar (starts with packet 655 and ends with packet 659), cast an ultimate (EvtDoSkillSuccNotify, packet 661), and then the server clears the avatar's energy without any further communication from the client (packets 663 and 664). From this, it seems like we do in fact have the right packet that we handle.

However, I also tried the following: Casting Yelan's E and then pressing Q while the E was still ongoing. This is an easy way to reproduce the bug. In that case, the client sends an EvtDoSkillSuccNotify for the E, and then another EvtDoSkillSuccNotify for the Q, but the server does not clear energy. There is no other relevant communication between client and server between those two packets. The most likely conclusion from this for me is that the server probably internally tracks the state of the avatar, knows that it is currently in the middle of it's E animation and therefore can't cast Q. We would probably have to do the same to get this completely right.

On a side note, it seems that we violate the protocol for clearing energy. Currently, we send an AvatarFightPropChangeNotify, but the official server uses EntityFightPropChangeNotify. The official server also tells the client that the reason for clearing the energy was the casting of an ultimate. I have adapted that in PR #1261. This of course does not solve the issue, but it should still be fixed.

@AZthemute
Copy link
Contributor

However, I also tried the following: Casting Yelan's E and then pressing Q while the E was still ongoing. This is an easy way to reproduce the bug.

For me, nothing happens. Has this been fixed?

@GanyusLeftHorn
Copy link
Contributor

No, it hasn't been fixed. It doesn't always happen though. You were probably just lucky.

@KingRainbow44 KingRainbow44 pinned this issue Aug 4, 2022
@millet6
Copy link
Contributor

millet6 commented Aug 12, 2022

现在 Q仍在进行时按 冲刺 会中断Q释放。

Pressing sprint while q is still in progress will interrupt Q release.

@KingRainbow44
Copy link
Member

can anyone confirm this still happens?

@vipotaenko02
Copy link

can anyone confirm this still happens?

Yes, still happening in 1.7.2. The simpliest way to reproduce this I think is to use Elemental Burst right after switching to the character (number key and Q in quick succession)

@156209258y
Copy link

I encountered a character pick up delay where characters need to be next to items for 2-3 seconds before they appear pickable

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

Successfully merging a pull request may close this issue.

10 participants