← GeekServers.gg
Le problème a été réglé par notre équipe.
[13/02/17 à 16h07] [Lorh] : Corrigé prochaine MaJ

⚠ Archive en lecture seule — Retour sur GeekServers.gg
FONCTIONNEMENT BUG / QU'ON RETROUVE SUR LE SERVEUR :
Lorsque un mage envoie un sort sur un ennemie possédant un buff de type "renvoi de sort", si le mage utilise son sort de bloc de glace après l'envoi de son sort, il se prend les dégâts de son sort lorsque celui-ci revient.

COMMENT CA DEVRAIT FONCTIONNER :
Il ne devrait tout simplement pas prendre les dégâts.

COMMENT REPRODUIRE LE BUG :
1. Prendre un mage et un guerrier.
2. Cast un sort de type "incantation" avec le mage.
3. S'appliquer un buff de Renvoi de sort id= (spell=23920) avec le guerrier.
4. Attendre la fin de l'incantation du mage, puis utiliser son sort Bloc de glace id= (spell=45438).
5. Voir le sort partir, puis revenir sur soi, et prendre des dégâts.


SOURCE MONTRANT QUE CELA DEVRAIT FONCTIONNER AINSI (vidéo, patchnote, etc...) :
Zan a écrit:Vidéo d'époque qui montre que si le bloc est fait à temps tu n'es pas sensé subir la bolt reflect :
https://youtu.be/0rGdz3PYuwo?t=218

C'est fait avec un réflecto glace (trinket ingé) sur un éclair de givre mais le principe est le même.
Et oui, on voit la barrière de glace tomber, mais à priori c'est simplement la durée qui est arrivée à expiration. S'il avait pris sa propre bolt, on verrait le débuff

d'éclair de givre sur lui.


Buff du réflécto de givre id= (spell=23131) apporté par l'objet de la vidéo

Merci à Zan pour sa recherche. Tiré du post de la taverne pour savoir si il y avait un problème.


Tooltip du bloc de glace :
Insensible à toutes les attaques et à tous les sorts. Ne peut pas attaquer, ni se déplacer ou utiliser de sorts.


COMMENTAIRES :
Un premier élément qui a été supposé, était que sur le serveur, cette mécanique était "normal", afin de faciliter les calculs.
Cependant, j'ai évoqué le principe du Gardien de feu id= (spell=27128) (qui absorbe des dégâts de feu).
Si l'immunité apporté par le buff du Bloc de glace ne fonctionne pas, l'absorption apporté par le buff du Gardien de feu ne devrait (selon moi) ne pas s'appliquer.
Or, après test, si nous reprenons le même test pour reproduire le bug, et que nous utilisons le sort de Gardien de feu, une réduction de dégât à bien lieu.

Le problème est probablement plus lié à la mécanique du serveur, qu'au sort de bloc de glace.


Liens utilisés dans le post :
post de la taverne
Bloc de glace id= (spell=45438)
Renvoi de sort id= (spell=23920)
Gardien de feu id= (spell=27128)
Buff du réflécto de givre id= (spell=23131)

EDIT : Merci à Mael, effectivement j'avais pas vus. Un buff qui rend insensible qui vous viendrez à l'esprit ?
Kuod

<Dissection>


Kuod a écrit:Test supplémentaire pour éventuellement cerner le problème.
1. Prendre un caster, un guerrier, un paladin.
2. Incanter le sort avec le mage.
3. Se donner le buff de renvoi de sort avec le guerrier.
4. Voir le sort du mage partir.
5. Demander au paladin d'appliquer une Bénédiction de protection id= (spell=1022).
6. Voir le sort revenir, et constater si oui ou non le caster prend des dégâts.


Test inutile, la Bénédiction de protection ne concerne pas les sorts ;)
Mael


Dans les trucs à test, je dirais les réflecto ombre et feu également pour l'aspect réflect. Ya aussi le talent de mage spé feu qui donne une chance de réflect un sort de feu lorsque gardien de flammes est actif.

Concernant l'aspect immunité, faut voir si un paladin sous bulle qui se fait réflect son horion sacré prend les dégâts (il devrait pas en théorie).

Ya peut-être un lien avec le vanish et la cape d'ombre du rogue. Si un rogue passe par là, est-ce que le fait d'activer le vanish et/ou la cape d'ombre pendant qu'un sort est en l'air permet d'éviter le sort ou pas ? (normalement ça devrait être le cas). De la même manière est-ce que activer le renvoi de sort de guerrier ou un trinket réflecto alors que le sort est déjà en l'air permet de le réflect ou pas. (là aussi, normalement ça devrait être le cas)

Concernant la vidéo que j'ai l'ink, on peut voir dans la séquence juste après (il duel le même mage à nouveau), que lorsqu'il réflect la bolt avec le réflecto et que le mage ne fait pas IB, il prend bien le débuff d'éclair de givre et pas seulement les dégâts.

Je testerai le renvoi de sorts guerrier et le réflecto glace ce week-end, je vous tiens au courant.

EDIT : Faut aussi faire attention à ce que un sort ne puisse toujours être réflect qu'une seule fois. Si par exemple un mage cast frostbolt sur un autre joueur, que ce dernier active réflectoglace, et que le mage active également un réflectoglace en suivant, la bolt ne va pas faire du pingpong jusqu'à ce qu'un réflecto se termine :) C'est le mage qui prendra sa propre bolt (libre à lui de lancer icebloc pour en éviter les conséquences ceci dit)
Zan


Donc, les tests que j'ai mené sont les suivants

Duel mage vs war :
- Le mage cast frostbolt, le war lance reflect juste avant que frostbolt finisse son cast >>> le sort est bien reflect (normal)
- Le mage cast frostbolt, le war lance reflect juste après que frostbolt ait fini son cast (quand elle est en vol quoi) >>> le sort n'est pas reflect (pas normal)
- Le war lance reflect (le buff dure 5sec), le mage cast frostbolt pendant la durée du reflect, et le sort touche quand le buff est encore présent >>> le sort est bien reflect (normal)
- Le war lance reflect, le mage cast frostbolt pendant la durée du reflect, mais le buff se termine pendant que le sort est en vol >>> le sort est reflect (pas normal)
- Le war lance reflect, le mage cast frostbolt pendant la durée du réflect, mais le buff se termine avant la fin du cast de frostbolt >>> le sort n'est pas reflect (normal)

J'ai effectué les même tests en remplaçant la technique "renvoi de sort" du war par le trinket reflectoglace, et les résultats sont identiques.

En fait je pense que c'est simplement un problème général au niveau des sorts de type projectile (tout ce qui a un travel time donc. Boule de feu, éclair de givre, pyro, trait de l'ombre, tir des arcanes, lancer de couteau... bref, tout).
Normalement pour ce type de sort/technique, le calcul des dégâts (est-ce que ça touche, quels effets ça applique, est-ce que ça fait proc un truc, combien de dégâts ça fait...) doit être effectué au moment de l'impact du sort. Or actuellement ça se fait au moment où il part du lanceur.
A noter aussi que la collision dont je parle ne correspond pas vraiment avec le moment où le modèle du projectile touche celui du joueur. En gros, au moment où le projectile part, il calcule la distance à parcourir pour atteindre sa cible, et une fois qu'il a parcouru la distance correspondante, il fait son calcul des dégâts, même si la cible a bougé super vite (genre monture 280%) et que le modèle du sort est encore en train d'essayer de rattraper le modèle du joueur.
J'ai d'ailleurs fait le test pendant mes duels mage/war, et cet aspect est fonctionnel (je peux faire la course avec une boule de feu avec ma monture, mais les dégâts auront été subis bien plus tôt)
Zan


Le problème serait donc :
Je lance une boule de feu sur un ennemi avec renvoi de sort (la boule part au moment ou le renvoi de sort est actifs sur l'ennemi).
La boule se reflect, et retourne sur moi.
Si je me bloc de glace, les dégâts sont tout de même pris.

Donc, tout les calculs sont réalisés au moment du lancement de sort ?
Genre, ma boule de feu part, le serveur fait : Tiens la boule de feu part. Mais l'ennemie a un reflect. Je regarde ton état actuel des choses, ok, tu n'es pas insensible. J'attends la fin de l'animation et je t'inflige des dégâts.

Donc, si on bloc de glace après, le serveur te dit "non".

C'est bien cela ?

Si oui, il y a le problème du comportement différent avec le gardien de feu, qui va absorber une partie des dégâts.

Du coup... un peu l'impasse
Kuod

<Dissection>


Non je pense que le serveur "génère un nouveau sort" au moment où le reflect est effectif.

En résumé le comportement normal devrait être :
1. cast boule de feu qui se termine
2. boule de feu travel
3. boule de feu atteint la cible et check si elle est sous l'effet d'un reflect
4. si ya pas de reflect, le calcul des dégâts est effectué normalement (% de hit, % de crit, résist élementaire, dds, procs divers...)
5. si ya un reflect, le sort en question est annulé (message "reflect") et un sort identique est généré avec pour point de départ la cible du sort initial et pour cible le lanceur initial.
6. le sort reflect travel
7. le sort reflect atteint sa cible (le lanceur initial) et le calcul des dégâts est effectué normalement à ce moment précis (si la cible est sous bloc de glace, elle ne doit pas subir le sort). Il n'y a pas de check de reflect pour ce sort.

Le comportement qu'on a à priori sur le serveur c'est :
1. cast boule de feu qui se termine
2. boule de feu check si la cible est sous l'effet d'un reflect
3. si ya pas de reflect, le calcul des dégâts (tout le tralala) est effectué normalement (A confirmer si c'est fait là où au moment où le sort est réflect)
4. la boule de feu travel
5. la boule de feu atteint sa cible et les dégâts calculé au moment de la fin du cast sont effectivement subis par la cible à ce moment, peu importe si elle a activé un reflect ou une invulnérabilité pendant le travel
3b. si ya un reflect la boule de feu travel (A confirmer si le calcul des dégâts est quand même effectué à ce moment, ou si c'est au moment du reflect)
4b. la boule de feu atteint sa cible
5b. la boule de feu est effectivement reflect (même si le buff a fade pendant le travel vu que le check a été fait plus tôt). Un sort identique est alors généré avec pour point de départ la cible du sort initial et pour cible le lanceur initial.
6b. le calcul des dégâts (tout le tralala) est effectué normalement (sauf s'il a été conservé depuis le lancement du sort original, à confirmer)
7b. le sort reflect travel
8b. le sort reflect atteint sa cible et les dégâts sont effectivement subis à ce moment précis, peu importe si la cible en question a activé une invulnérabilité pendant le travel du sort reflect.

Voilà. Je pense que ça illustre à peu près bien le phénomène. Hésitez pas à me faire remarquer d'éventuelles boulettes dans le raisonnement.
Zan


J'ai souvenir que l'on m'ait dit que les dégâts des sorts étaient calculées au moment où le sort quitte la main du caster, ce qui explique la mécanique de la cos.
Sur TrinityCore les dégâts sont bien calculées lorsque le sort quitte la main du caster, je pense que l'on peut également supposer que c'est le cas sur MangosOne. https://trinitycore.atlassian.net/wiki/ ... ling+in+TC
Mideas


Corrigé prochaine MaJ
Lorh

Administrateur Développeur


Niquel merci. J'irai test ça dès que ce sera en place.
Zan


Désolé pour le retour tardif, ça m'était sorti de l'esprit.

Le bug est toujours présent, je n'ai pas constaté la moindre évolution lors de mes tests en duel.
Zan


A noter que même sur offi (wotlk), la prise en compte des dégâts ne coïncide pas exactement avec l'impact :
Je me souviens par exemple que je mamusais à kite en monture les bolts de la rangée de casters devant icc. J'étais poursuivi par une quantité de bots. Si je freinais je prenais les dégâts avant les projectiles (qui pouvaient continuer à me suivre si j'avais bien timé mon ralentissement).
Je conçois que cela complique encore les choses...
Labbénoir

<Is a Pørnstar>


Ca c'est encore autre chose. Au moment où un projectile te ciblant part d'un ennemi, il calcule la distance entre vous 2, et le projectile te fera ses dégâts une fois cette distance parcourue. Donc, même si tu kite une boule de feu par exemple, avec ta 280%, tu subiras les dégâts après quelques mètres, alors que visuellement tu pourras kite le projectile à l'infini.
Zan


Pas de nouvelles vis à vis de ce problème ? C'est toujours d'actualité. J'ai fait 2 petites vidéos pour montrer l'état des lieux sur le serveur :
https://www.youtube.com/watch?v=m3RDHhitdzQ
Le reflect est activé pendant le travel de la boule de feu mais il n'a aucun effet alors que le sort aurait dû être reflect.
https://www.youtube.com/watch?v=fh0wOXHTnRY
La boule de feu est reflect, le bloc de glace est activé pendant le travel time, mais le sort passe au travers comme si de rien était alors qu'il ne devrait avoir aucun effet et afficher "insensible".
Note, j'ai également essayé d'activer le bloc de glace avant que le sort soit reflect (pendant le travel "aller" donc) et le résultat est le même, la boule de feu passe au travers de l'immunité.

Je relink cette vidéo d'époque où l'on voit bien le fonctionnement blizzlike des 2 mécaniques que je viens d'exposer
https://www.youtube.com/watch?v=0rGdz3PYuwo&feature=youtu.be&t=218
Zan


Hum j'avais mis que le probleme serait corrigé prochaine MaJ car je l'ai confondu avec un autre.

Concernant le probleme décrit ici, comme je l'ai déjà expliqué là : viewtopic.php?r=2&t=5026&f=34


Lorh a écrit:1) Corrigé à la prochaine MaJ

Je regarde le reste.

Edit : J'ai vu sur plusieurs video que les sorts ne sont PAS renvoyés s'ils sont lancé AVANT l'application du buff de renvoi de sort, alors que c'est actuellement possible sur le serveur. Donc à moins que vous n'ayez des sources contraires solide je vais aussi corriger cette mécanique.

Exemple parmi tant d'autre, dommage c'est le seul que j'ai noté et il date de 2009 mais cette mécanique semble là même à BC et à cette période, je pense qu'on peut s'y fier, d'autant que j'ai constaté la même chose sur des video de 2007, qu'hélas je n'ai pas noté :( :

https://www.youtube.com/watch?v=ceHTspyCAzk à 0:50, on voit la bolt du druide en vol avant qu'il ne gagne spell reflection, et celle ci n'est pas reflect.



Je récapitule : un sort en cours de vol lorsque le renvoi se up sur la cible ne sera pas renvoyé. C'est même encore le cas aujourd'hui sur officiel, vous pouvez tester. Le résultat d'un sort (raté, immune, renvoi, touché, etc...) est calculé au moment où celui ci part des mains du caster.

Pourquoi ? Simplement pour des cohérence technique, par exemple, lorsque un sort rate il faut le faire passer visuellement à coté de la cible, et donc faire générer cette animation au client au moment où le sort part. Si en cours de route vous gagner une réflection ou une immunité, on ne peux pas faire dévier le sort pour qu'il revienne vers vous et qu'il finisse finalement en reflect au lieu de miss. C'est un exemple parmi d'autre, et vous pourriez dire que comme c'est un miss on ne fait pas roll à l'impact pour savoir si c'est un reflect, mais le fait est que pour cette raison, l'information indiquant au client sur un sort atteint sa cible, est renvoyé, resisté, etc... est envoyée au moment ou le sort part des mains du caster. Le client n'a pas de possibilité de gérer une information ultérieure (par exemple: "1) le sort part des main du caster, il va toucher" puis "2) ah ben non finalement il est reflect", le petit 2 ne peut pas etre dit au client, il n'a pas de moyen de comprendre cela).

Concernant les videos où vous pensez voir cela, comme celle de votre exemple, c'est simplement que, POUR LE SERVEUR, pour des causes diverses (lag, décallage de la gestion des infos de chaque joueur vis a vis de leur latence respective, etc...), le reflect a été cast (juste) avant le départ du sort et peut donc être renvoyé.

Ca, c'est pour le renvoi (qui impacte le trajet du sort). Pour l'immunité, je suis d'accord et ce sera bel et bien corrigé prochaine MaJ (cad si le caster s'immune alors qu'on lui renvoi le sort, il ne subira pas de dégats).
Lorh

Administrateur Développeur


Ok, merci pour l'explication détaillée. Je pensais que vu que l'animation de sort ratée (le projectile qui passe vraiment à côté de la cible) n'est apparue qu'à WLK, l'état du sort (miss, reflect, etc) n'était déterminé qu'à l'impact jusqu'à la 2.4.3. Mais effectivement ça semble logique.
Zan


Testé à l'instant, l’immunité est maintenant bien appliquée aux projectiles déjà en vol. Merci.
Zan





Conditions Générales d'Utilisation et Mentions légales - Code de conduite des forums - Contact