cmangos / issues

This repository is used as a centralized point for all issues regarding CMaNGOS.
180 stars 47 forks source link

🐛 [Bug Report] TBC.spells.warrior.id_5308.Execute missing animation and particles when the strike kill the target. #2668

Open BlackBoar101 opened 2 years ago

BlackBoar101 commented 2 years ago

Bug Details

CMTBC bugged Execute with no particles or animatiion.

https://user-images.githubusercontent.com/77557058/153749752-a1cab522-cbd8-4e54-b840-755fcf6ffd6e.mp4

Normal Execute

https://user-images.githubusercontent.com/77557058/153754230-27b2ae33-1e50-4cef-be47-0aa16dbb8fc7.mp4

drakkus1 (006538)2022-02-12-21-20-37

This bug occurs in every single combat for all classes. EVERY last SPELL STRIKE which kill the mob will missing particles(like fire, ice ,blood ,posion ,...)on the mobs body. Whats more, for the melee classes like warrior and rouge there is a high chance attack animation missing too. ESPECIALY for spells like warriors Execute and rouges Eviscerate ,character will use a speed up stand up animation at the strike animation phase, it looks very AWKWARD.

Wow 2022-02-13 08-39-16-50 (000204)2022-02-13-08-40-27 1 This is another rouges example. Youll never see the explosion particle when your Eviscerate terminate the mob. And a high chance Eviscerate attack animation missing.

Steps to Reproduce

1.Create a warrior 2.Learn 5308 execute 3.Use 5308 TERMINATE the mob.(i mean this strike cause the mob die)

4.If execute was cast outside a normal swing, idle phase between one swing and another swing. the execute animation was fully played, but the blood particles missing. If execute was cast in the front swing (front swing ,strike point ,back swing , these three phase together is a full noraml swing)., the swing will speed up it looks cool and its the official original design , but the blood particles missing. If execute was cast in the back swing the blood particles and attack animation both missing and there is a speed up stand up animation, this looks really bad. here should be a fully played Execute animation with blood particles instead actually.

Wow 2022-02-13 09-09-12-17 (000626)2022-02-13-09-11-571

Expected behavior

One clue to solve the bug. This is on CM server. the damage 258 come out the same time as the blast particles. before attack animation. Wow 2022-02-13 17-21-13-70 (000291)2022-02-13-17-26-32

This is on official server, the damage 695 come out at the end of the blast particles, in the middle of attack animation . this will give the time to play attack particles and animation.So modify the damage come out time may solve the bug. Maybe 0.3s later than present point or find an accurate time. I remember there was an excel to modify animation time, particle time, and damage time ,to make them work well together in a project i once worked on. drakkus (006111)2022-02-13-17-27-43 drakkus (006118)2022-02-13-17-27-49

WE NEED the TERMINATE ATTACK! Nearly all games take God of War as example, they put a lot of work in the last strike. Cause this will give the player a strong feedback that he has defeated the foe. Its an important visual reward which makes the player high.So though this bug has nothing to do with spell value or mechanic its still very important.

Suggested Workaround

No response

Crash Log

No response

Core SHA1 Commit Hash

Development Build(2022-02-12)

Database SHA1 Commit Hash

Development Build(2022-02-12)

Operating System

WIN7

Client Version

2.4.3 (The Burning Crusade)

BlackBoar101 commented 2 years ago

I think i write a lot to make this bug clear. need more info just write me .

al3xc1985 commented 2 years ago

nice catch bro... hope to see it fixed soon

Nytanath commented 2 years ago

The issue with spell animations not showing when killing a creature is due to the way the server handles various packets, specially those involving creature updates. On retail, creature updates are delayed by ~200ms. So when you kill a creature, the server considers it dead, but to the client it will appear alive for a fraction of a second longer. This is enough for the spells to play their animation. This is easily noticeable when you oneshot a creature: on retail you'll see it has enough time to turn to face you and the spell animation will play before it dies.

killerwife commented 2 years ago

@cyberium we should add std::this_thread::sleep_for(400ms);

killerwife commented 2 years ago

Ok I have taken a look at it. From what I understand, this asumption is correct and this "bug" could still happen on retail. They do not broadcast SMSG_COMPRESSED_UPDATE_OBJECT (or any update object) each server tick, which in our case can be 2ms after the npc dies. This ties into how we send visibility differently alltogether. Visibility updates afaik like every 1 second outdoors (faster in arenas), stealth visibility updates like every 3 second outdoors (1 second in arenas) and general object update is 2-3 times per second. Feel free to correct, me.

I have also checked out tbc sniffs, which sadly do not have milisecond precision but its still legible that it comes way later than on our end. I was able to do a little bit of shenanigans on voa core to make this work buuuuut that was more of a debug solution rather than a full fledged one.

I am open to suggestions, obviously reworking visibility code would do the trick :D

BlackBoar101 commented 2 years ago

@Nytanath @killerwife Yeah, delayed "alive" on the client side helps to solve the problem. On my personal server i modified Execute into a dot spell like rend in my Datebase, One tick coming 450ms after casting Execute . Its a stupid method im able to use ,never solve the problem fully. But i can enjoy bloody Execute a lot.

BlackBoar101 commented 2 years ago

This is what it looks. Still different from second video(2006) ,but more acceptable.

https://user-images.githubusercontent.com/77557058/153808023-76aae8c5-cabd-4b99-b175-7428a7743660.mp4

killerwife commented 2 years ago

All I will say is dont expect a solution to this immediately. But it is definitely on my radar.

BlackBoar101 commented 2 years ago

@killerwife I see. i'll look around to bring some more into your radar .

Nytanath commented 2 years ago

An example where update packets are delayed even for self updates: https://youtu.be/6y0ABiI5aS8?t=13

Self-inflicted knockback and damage happen 100ms after spell cast, player death comes 400ms after that.

BlackBoar101 commented 21 hours ago

@killerwife Thanks. Good Fix. If the mob can stay 200ms longer the particle will play right. It will be perfect. But its already good. Sound and animation are playing right.

al3xc1985 commented 20 hours ago

are u sure this was fixed?

BlackBoar101 commented 9 hours ago

@al3xc1985 OK, im reopen this. Wait for a PERFECT fix when developers have time. Which means Particle plays correctly.