DraftBot-A-Discord-Adventure / DraftBot

A Discord adventure bot that speaks english and french
MIT License
229 stars 61 forks source link

[BUG]: Valeur d'expérience non réinitialisée après un gain de niveau. #1721

Closed Syandre closed 2 years ago

Syandre commented 2 years ago

Description du bug.

Après une prise de niveau (105 vers 106), la valeur d'expérience n'est pas retombée à zéro et semble être restée à la valeur maximum requise du niveau précédent (ou bien à vérifier).

Date et heure du rapport / gain de niveau : 8 janvier 2023 à 05h48. Lieu / event : Lac mirage, livraison du colis.

Détails supplémentaires :

Selon vous, quelle est l'importance de ce bug ?

🤔 Je ne sais pas

Reproduction du bug.

1 - Aucune idée. 2 - Essayer de passer de 105 à 106 (ou tout autre niveau ?) en terminant des missions en même temps ?

Captures d'écran

rapport_gain_de_niveau montant_experience_apres_niveau

Sur quel shard avez vous rencontré le bug ?

Shard 0

Nargacaura commented 2 years ago

J'ai pu reproduire le bug avec d'autres missions sur l'alpha, et quelque chose me dit qu'il y a un conflit entre les 2 embeds des missions au niveau de l'XP: l'un ayant déjà fait monter de niveau, l'autre checkerait avec les mêmes données qu'avant le level up, et donc rajoute non seulement le bonus, mais aussi le montant initial d'avant la complétion des missions.

Update: c'est effectivement le conflit d'XP entre les embeds, à en voir d'autres tests réalisés par KirIcare, mais cette fois à partir du niveau 5. Par contre, ça ne fonctionne que si la quotidienne et la/les secondaire(s) sont complétées simultanément. Capture d’écran 2023-01-08 à 20 13 16

BastLast commented 2 years ago

passé 1h + dessus avec pagos, je ne comprend pas ce truc j'ai clairmenet pas envie de bosser dessus.

c'est un peu le bazar la manière dont c'est fait, ya des players. save dans tous les sens on comprend pas pourquoi ils sont là... idem pr les get or register, ya rien de défini...

globalement ça mériterait un gros cleanup tout ça, mais perso I AM OUT.

@romain22222 si tu as le temps de te pencher dessus je pense que tu auras plus le courage que moi.

BastLast commented 2 years ago

vu que le bug est quasiment impossible à reproduire ingame, je repousse de milestone.

Nargacaura commented 2 years ago

Pour reproduire le bug, une méthode serait de:

voltou91 commented 2 years ago

Ok j'apporte plus de précision sur le bug, je pense que c'est n'importe quelle mission "earnMoney" qui fait bug le truc (du moins j'ai l'impression). Je pense que c'est dû à l'espèce de boucle que fait les missions. updatePlayerStats -> player.addMoney -> MissionsController.update -> MissionsController.checkCompletedMissions -> updatePlayerStats -> player.add... etc, etc, etc Et je pense que le bug se cache ici.

BastLast commented 2 years ago

Ok j'apporte plus de précision sur le bug, je pense que c'est n'importe quelle mission "earnMoney" qui fait bug le truc (du moins j'ai l'impression). Je pense que c'est dû à l'espèce de boucle que fait les missions. updatePlayerStats -> player.addMoney -> MissionsController.update -> MissionsController.checkCompletedMissions -> updatePlayerStats -> player.add... etc, etc, etc Et je pense que le bug se cache ici.

Cependant ya la meme dans le add xp et la ya pas de soucis

BastLast commented 2 years ago

@Nargacaura à priori @voltou91 a fix le truc mais si tu as le temps de faire un passage dessus sur draftbot alpha avant de fermer l'issue ça serait top !

Nargacaura commented 2 years ago

C'est testé et approuvé :thumbsup:

Nargacaura commented 2 years ago

Je retire ce que j'ai dit en fait, ça a influé sur l'XP sur d'autres missions en faisant monter 2 fois de niveau x) Screenshot_20230113-071017.png

voltou91 commented 2 years ago

Ça a juste dupliqué le message de lvl up, t'es pas monté deux fois.

Nargacaura commented 2 years ago

Fais le calcul: il me restait 6 points avant la montée de niveau. J'ai gagné 150 avec l'issue de l'event + 50 de la mission travelHours + 75 de la mission earnXP. Je devrais avoir 269 XP (150+75+50-6). Sauf que je n'ai que 194 après avoir fait l'event x)

voltou91 commented 2 years ago

C'est comme si la mission a 75 d'exp n'avait pas compté, si tu enlève 75 on a bien ton nombre d'exp, et ça expliquerai pourquoi y a eu une double notif de lvl up, car il a pas save les +75 d'exp et le lvl up.

BastLast commented 2 years ago

ok c'est mergé sur develop @Nargacaura si tu as le temps de refaire une session de test ça serait tooooop :)

Nargacaura commented 2 years ago

Ça m'a l'air bon, par contre à une occasion, y'a eu duplication de missions earnMoney validées (et enregistrées!) alors que j'en n'avais qu'une... Screenshot_20230115-051646.png

Peut-être que c'est un différent bug, dunno. (J'ai pas testé ce bug-là en détail vu que je testais le bugfix à la base, tho) ┐⁠(⁠‘⁠~⁠`⁠;⁠)⁠┌

Update: ça le fait sur earnMoney en tant que secondaire lorsqu'elle est validée en même temps qu'une autre mission secondaire lors d'une montée de niveau.

BastLast commented 2 years ago

Je pense que c'est un bug causé par le fix donc je laisse l'issue ouverte le temps que ça soit corrigé

voltou91 commented 2 years ago

Moi je pense que c'est parce que j'ai fix la partie player en enlevant le GetOrRegister mais on fait la même chose sur le mission controler (on get les missions) et du coup faudrait retourner le mission controler comme avec le Player, quasi sûr que c ça le bug.

BastLast commented 2 years ago

semble fix (enfin) , à réouvrir si on trouve un truc mdr