update
This commit is contained in:
@@ -29,7 +29,7 @@ KRITIK_MAX_RUNDEN = 2 # Generator → Kritiker → ggf. Neu, höchstens so oft
|
||||
|
||||
|
||||
def score_berechnen(
|
||||
score_vor_frage: int, gut: bool, tier2: bool, tier3: bool, absolviert: bool, gemeistert: bool,
|
||||
score_vor_frage: int, gut: bool, streak: int, tier2: bool, tier3: bool, absolviert: bool, gemeistert: bool,
|
||||
) -> int:
|
||||
"""Neuer Score nach einer Antwort · driftfrei (immer aus dem Basis-Score gerechnet).
|
||||
|
||||
@@ -37,18 +37,24 @@ def score_berechnen(
|
||||
- Tier 1 (tier2=False): +1 bei richtig, KEINE Strafe, Deckel NOETIG (3).
|
||||
- Tier 2 (tier2, nicht tier3): +1 / −1, Boden 3, Deckel MASTERY (10).
|
||||
- Tier 3 (tier3, Meisterpfad): +1 / −2, Boden 10, Deckel MEISTERN (25).
|
||||
Boden vor dem Absolvieren ist 0 (sonst NOETIG — absolviert bleibt erhalten).
|
||||
Ist der Baustein gemeistert, friert der Score bei MEISTERN ein (keine Punkte mehr).
|
||||
Re-Bewertung nutzt denselben Basis-Score und ersetzt das vorige Ergebnis.
|
||||
Streak-Bonus bei richtig: ab 3 in Folge +2 (Tier 2/3), ab 5 in Folge +3 (Tier 3).
|
||||
`streak` = bisherige Folge VOR dieser Antwort; mit dieser Antwort zählt streak+1.
|
||||
Boden vor dem Absolvieren ist 0; gemeistert friert bei MEISTERN ein.
|
||||
Re-Bewertung nutzt denselben Basis-Score + dieselbe Streak (kein Doppelzählen).
|
||||
"""
|
||||
if gemeistert:
|
||||
return MEISTERN
|
||||
if not tier2:
|
||||
delta, floor, cap = (1 if gut else 0), (NOETIG if absolviert else 0), NOETIG
|
||||
floor, cap, strafe = (NOETIG if absolviert else 0), NOETIG, 0
|
||||
elif not tier3:
|
||||
delta, floor, cap = (1 if gut else -1), NOETIG, MASTERY
|
||||
floor, cap, strafe = NOETIG, MASTERY, -1
|
||||
else:
|
||||
delta, floor, cap = (1 if gut else -2), MASTERY, MEISTERN
|
||||
floor, cap, strafe = MASTERY, MEISTERN, -2
|
||||
if gut:
|
||||
s = streak + 1
|
||||
delta = 3 if (tier3 and s >= 5) else (2 if (tier2 and s >= 3) else 1)
|
||||
else:
|
||||
delta = strafe
|
||||
return max(floor, min(cap, score_vor_frage + delta))
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user