Open BlackBoar101 opened 2 years ago
I think i write a lot to make this bug clear. need more info just write me .
nice catch bro... hope to see it fixed soon
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.
@cyberium we should add std::this_thread::sleep_for(400ms);
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
@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.
This is what it looks. Still different from second video(2006) ,but more acceptable.
All I will say is dont expect a solution to this immediately. But it is definitely on my radar.
@killerwife I see. i'll look around to bring some more into your radar .
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.
@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.
are u sure this was fixed?
@al3xc1985 OK, im reopen this. Wait for a PERFECT fix when developers have time. Which means Particle plays correctly.
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
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.
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.
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.
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.
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)