Way of Elendil

  • Status Closed
  • Percent Complete
    100%
  • Task Type Rapport de bug
  • Category Sort
  • Assigned To
    Josh
  • Operating System
  • Severity Medium
  • Priority Very Low
  • Reported Version 3.3.5
  • Due in Version Undecided
  • Due Date Undecided
  • Votes
  • Private
Attached to Project: 3.3.5
Opened by Leastra - 08.01.2017
Last edited by Josh - 09.01.2017

FS#5046 - [Chaman] Orage

Le sort orage doit bump les cibles à 20m selon le tooltip.

En pratique les cibles ne sont jamais bump aussi loin. Souvent elles ne sont même pas bump du tout (même sur sol plat, elles s'arretent au moindre petit caillou ou brin d'herbe qui dépasse).

De plus, les cibles qui sont sous l'effet d'un stun ne sont jamais bump. Elles devraient, seuls les joueurs sous l'effet d'un root ne sont pas bump.

https://github.com/TrinityCore/TrinityCore/issues/18180

Closed by  Josh
09.01.2017 08:53
Reason for closing:  Fixé prochaine maj
Additional comments about closing:  Voir commentaire
Admin
Josh commented on 09.01.2017 03:08

Je vais corriger pour le stun dans la soiree. Pour la distance de bump, je regarderai ce que je peux faire, mais le soucis est que le calcul est generique, et si je le change pour Orage ca affectera tous les knockback.

Admin
Josh commented on 09.01.2017 08:53

Bon, je sais que ça va pas te plaire, mais bon, j'ai fait mes recherches, et je suis tombé sur une vidéo qui va loin dans les détails, et qui expose l'exact même comportement que ce qu'on a sur woe:

https://www.youtube.com/watch?v=Xj50Bxf_uBQ

Je sais, c'est Légion, mais le sort n'a aucune update indiquant des changements au niveau de la gestion du bump, et le comportement étant générique à tous les bumps, et correspondant quasi exactement à ce qui est sur la vidéo, à moins de me fournir des données opposées, ce sera considéré comme le comportement normal.

http://wow.gamepedia.com/Thunderstorm

Aucune update concernant le bump.

Merci de demander une réouverture si tu trouve des infos plus précises, des vidéos exposant un comportement différent, etc. Il semblerait que le role d'Orage soit très spécifique à certaines zones pour le PvP, et ça a l'air d'avoir été fait volontairement par les devs.

default
Leastra commented on 06.02.2017 16:59

Sur Warmane ils ont le même problème que chez nous. D'après les commentaires de leur BT il semble que sur offi le sort lance légèrement les joueurs vers le haut ce qui n'est pas le cas ici.

"Proof for this being bugged: http://www.warcraftmovies.com/movieview.php?id=112465

at 4:04 some one gets shot off the edge. It is clear that the target gets lifted up by thunderstorm if u watch closely "

 

" Another video that gives a clear look on how it was in original Wotlk :


https://youtu.be/Uzfy7DV8lvo?t=54

You can clearly see the tauren on the right moving in an arc, like a small jump back.

This current bug makes the spell less useful. Considering its a crucial elemental talent, this bug is important. "

Admin
Josh commented on 06.02.2017 21:37

Ca change pas le fait que les formules de calcul sont totalement génériques pour TOUS les sorts de ce genre, donc changer la formule pour Orage signifie qu'elle sera changée pour tous. A moins que tu connaisse la formule exacte de calcul du bump sur offi, ça restera comme c'est.

default
Leastra commented on 06.02.2017 21:52

Justement si les formules sont les mêmes pour tous les sorts de ce genre y'a un bug pour l'orage. Parce que les limon verts sur Putricide lorsqu'ils explosent, ils repoussent les joueurs légèrement vers le haut (comme dans les vidéos de l'orage). Or ce n'est pas du tout le cas pour l'orage. Si on pouvait coder l'orage comme le bump des limons ça résoudrait le problème.

Si j'insiste c'est parce que ce sort est très important en pvp et là c'est juste pas possible de jouer correctement sans.

Admin
Josh commented on 06.02.2017 21:57

Les formules utilisent les données clients pour le calcul de vitesse, hauteur, distance, etc. Les données client sont utilisée de la même manière pour TOUS les sorts de knockback. A moins de me trouver la formule correcte à utiliser pour TOUS les sorts, je peux rien faire. Ca fait pas un calcul du genre : si c'est orage envoyer 1 mètre en l'air, si c'est cet autre sort envoyer 2 mètres, etc.

Effect 2: Id 98 (SPELL_EFFECT_KNOCK_BACK)
BasePoints = 60
Targets (22, 15) (TARGET_SRC_CASTER, TARGET_UNIT_SRC_AREA_ENEMY)
EffectMiscValueA = 300
Radius (Id 13) 10,00

 

    float ratio = 0.1f;
    float speedxy = float(m_spellInfo->Effects[effIndex].MiscValue) * ratio;
    float speedz = float(damage) * ratio;
    if (speedxy < 0.1f && speedz < 0.1f)
        return;

    float x, y;
    if (m_spellInfo->Effects[effIndex].Effect == SPELL_EFFECT_KNOCK_BACK_DEST)
    {
        if (m_targets.HasDst())
            destTarget->GetPosition(x, y);
        else
            return;
    }
    else //if (m_spellInfo->Effects[i].Effect == SPELL_EFFECT_KNOCK_BACK)
    {
        if (GetReflectCaster())
            GetReflectCaster()->GetPosition(x, y);
        else
            m_caster->GetPosition(x, y);
    }

    unitTarget->KnockbackFrom(x, y, speedxy, speedz);

default
Leastra commented on 06.02.2017 22:28

La partie verticale du bump j'imagine que c'est

float speedz = float(damage) * ratio;

Si "damage" c'est bien les dégats du sort ça parait un peu bizarre non? Ca voudrait dire qu'avec plus de stuff on bump plus haut.

Et c'est quoi la différence entre SPELL_EFFECT_KNOCK_BACK_DEST  et SPELL_EFFECT_KNOCK_BACK ?

Admin
Josh commented on 06.02.2017 22:37

Les dégats de tous les sorts sont pas toujours affectés par le stuff, certains sont fixes (c'est le cas pour le knock back). Damage = basepoints pour le cas présent. Donc speedZ = 60 * 0.1

SPELL_EFFECT_KNOCK_BACK_DEST  et SPELL_EFFECT_KNOCK_BACK sont deux types de sorts différent, l'un commence depuis le lanceur de sort (c'est le cas d'orage), l'autre depuis la cible. Cette partie est pas vraiment importante.

default
Leastra commented on 06.02.2017 23:04

Je ne comprend pas trop, speedxy=30 et speedz=6 ça parait cohérent pour faire une petite parabole.

Sauf que, sur le serveur, c'est comme si speedz n'avait pas d'effet vu que la trajectoire ne monte pas assez.

Le problème pourrait venir de là?

void MotionMaster::MoveKnockbackFrom(float srcX, float srcY, float speedXY, float speedZ)

{

//this function may make players fall below map

if (_owner->GetTypeId() == TYPEID_PLAYER)

return;

if (speedXY <= 0.1f)

return;

float x, y, z;

float moveTimeHalf = speedZ / Movement::gravity;

float dist = 2 * moveTimeHalf * speedXY;

float max_height = -Movement::computeFallElevation(moveTimeHalf, false, -speedZ);

_owner->GetNearPoint(_owner, x, y, z, _owner->GetObjectSize(), dist, _owner->GetAngle(srcX, srcY) + float(M_PI));

Movement::MoveSplineInit init(_owner);

init.MoveTo(x, y, z);

init.SetParabolic(max_height, 0);

init.SetOrientationFixed(true);

init.SetVelocity(speedXY);

init.Launch();

Mutate(new EffectMovementGenerator(0), MOTION_SLOT_CONTROLLED);

}

default
Leastra commented on 07.02.2017 20:31

J'ai refais des test. Sur les mobs y'a jamais aucun problème par contre en pvp bien.

Donc soit y'a un bug avec un buff ou autre sur les cible soit y'a un problème dans le code.

Je ne comprend pas le

//this function may make players fall below map

if (_owner->GetTypeId() == TYPEID_PLAYER)

return;

dans le

MotionMaster::MoveKnockbackFrom

D'après ce que je comprend si la cible est un joueur ça sort du truc sans le bump?

Admin
Josh commented on 07.02.2017 20:39

Les joueurs sont pas bump du tout en pvp ou pas assez ?

default
Leastra commented on 07.02.2017 20:44

Ca dépend des fois. Parfois ça marche presque bien, parfois y'a pas du tout de bump, parfois c'est entre les 2.

Mais j'ai testé sur des mobs et c'est parfait. Ils font leur petite parabole même en montée légère et parcourent bien la bonne distance.

J'ai vérifier les calculs dans les formules et tout est correct donc c'est un bug lié aux joueurs.

Admin
Josh commented on 07.02.2017 21:11

Et pour info c'est pas la meme fonction pour les joueurs. Quand tu teste en pvp, tu teste avec un perso en movement ou immobile ? Parce que si ca se trouve c'est juste du lag.

default
Leastra commented on 07.02.2017 21:15

J'ai testé en bg donc les gens bougeaient oui.

C'est quoi alors la fonction pour les joueurs? Moi je me base sur le SPELL_EFFECT_KNOCK_BACK  que tu m'as link

Admin
Josh commented on 07.02.2017 21:22

Pour les joueurs, le knockback est gere cote client a partie des donnees envoyees au client

https://github.com/TrinityCore/TrinityCore/blob/3.3.5/src/server/game/Entities/Unit/Unit.cpp#L12952

Donc si il y a lag, et que le joueur a bouge, le resultat sera different du resultat attendu.

default
Leastra commented on 07.02.2017 21:38

Normalement c'est pas le lag, je ne lag pas, les joueurs adverses n'ont pas l'air de se téléporter partout.

C'est normal le - dans

data << float(-speedZ); // Z Movement speed (vertical)

?

Admin
Josh commented on 07.02.2017 22:04

Oui normal, c'est comme ca que le paquet est forme.

Et c'est pas forcement ton lag, c'est le lag des joueurs. Si le joueur recoit le paquet apres avoir bouge, il bougera a ce moment la. Le mieux c'est de tester sur des joueurs qui bougent pas (chose que moi j'ai teste et qui correspondait a la video).

default
Leastra commented on 09.02.2017 20:33

J'ai vu que dans le journal de combat il est écris "Orage de Leastra échoue.(Récupération incomplète)"

Le bug vient clairement de là mais je ne sais pas ce que ça veut dire.

Admin
Josh commented on 12.02.2017 13:06

Pas réussi à reproduire lors de tests donc doit y avoir des circonstances spécifiques.

default
Leastra commented on 14.03.2017 21:44

C'est toujours full bug. Le sort marche une fois sur 2 en pvp. Je demande la réouverture de ce ticket!

Admin
Josh commented on 14.03.2017 21:55

Si je le rouvre je le corrigerai pas de toute facon vu que je ne sais pas comment le corriger.

default
Leastra commented on 14.03.2017 23:18

Dis pas que tu sais pas le corriger, on a pas trouvé le bug !

Admin
Josh commented on 15.03.2017 00:16

Je sais ou est le bug, mais je sais pas comment le corriger. Le knockback est gere differemment pour les joueurs et pour les mobs, pour les mobs c'est tout calcule cote server, pour les joueurs c'est tout calcule cote client. On peut pas calculer cote serveur pour les joueurs parce que ca cause des undermap (donc oui le bump marchera bien, mais je doute que ca plaise aux joueurs bump d'avoir 50% de chance de se retrouver undermap). Donc le probleme est qu'on envoie des paquets au client pour lui dire comment bump, et le client bump pas correctement pour une raison que j'ignore.

Loading...