toRoman($rankInTier); // XP non linéaire $xpThreshold = $baseXp + ($level * $level * $scalingFactor); Level::updateOrCreate( ['level_position' => $level], [ 'xpThreshold' => $xpThreshold, 'label' => "{$tierName} {$romanRank}", ] ); } } private function toRoman(int $number): string { $map = [ 'X' => 10, 'IX' => 9, 'V' => 5, 'IV' => 4, 'I' => 1, ]; $result = ''; foreach ($map as $roman => $value) { while ($number >= $value) { $result .= $roman; $number -= $value; } } return $result; } }