30 lines
852 B
Python
30 lines
852 B
Python
"""
|
||
Oyun mantığı yardımcıları: XP eğrisi, level hesabı.
|
||
"""
|
||
from config import settings
|
||
|
||
# Her skill için XP eğrisi: level N → toplam XP eşiği
|
||
# Basit kare: 100 * N^2 (level 50 = 250000 XP)
|
||
def xp_threshold_for_level(level: int) -> int:
|
||
return 100 * level * level
|
||
|
||
|
||
def skill_level_from_xp(xp: int) -> int:
|
||
lvl = 1
|
||
while lvl < 50 and xp >= xp_threshold_for_level(lvl + 1):
|
||
lvl += 1
|
||
return lvl
|
||
|
||
|
||
def character_level_from_total_xp(total_xp: int) -> int:
|
||
# Karakter level: tüm skill XP toplamı eşiği — daha hızlı eğri
|
||
# Level 1 → 0 XP, Level 50 → 10*250000 = 2.5M XP (zor)
|
||
# Karakter eğrisi: 500 * N^2
|
||
lvl = 1
|
||
while lvl < 50 and total_xp >= 500 * (lvl + 1) * (lvl + 1):
|
||
lvl += 1
|
||
return lvl
|
||
|
||
|
||
def is_valid_skill(name: str) -> bool:
|
||
return name in settings.SKILL_NAMES
|