fix(quest): Quest::XPValue ne crashe plus si niveau joueur > cap GameTable XP (GetRow nullptr -> segfault au dialogue donneur de quete). Null-check des lignes GameTable.

This commit is contained in:
SylvaniaCore deploy
2026-06-17 21:55:13 +00:00
parent c82d25eece
commit 94c1847bbc
+7 -1
View File
@@ -266,7 +266,13 @@ uint32 Quest::XPValue(uint32 playerLevel) const
float multiplier = 1.0f;
if (questLevel != playerLevel)
multiplier = sXpGameTable.GetRow(std::min(playerLevel, questLevel))->Divisor / sXpGameTable.GetRow(playerLevel)->Divisor;
{
// SylvaniaCore: GetRow() rend nullptr hors-borne (ex. perso niveau > cap GameTable XP, ~110) -> evite le crash (segfault dans Quest::XPValue au dialogue d un donneur de quete)
GtXpEntry const* questXpRow = sXpGameTable.GetRow(std::min(playerLevel, questLevel));
GtXpEntry const* playerXpRow = sXpGameTable.GetRow(playerLevel);
if (questXpRow && playerXpRow && playerXpRow->Divisor)
multiplier = questXpRow->Divisor / playerXpRow->Divisor;
}
int32 diffFactor = 2 * (questLevel - playerLevel) + 20;
if (diffFactor < 1)