Adult check for boss defeat

This commit is contained in:
Adrien Ufferte
2026-01-19 10:21:34 +01:00
parent 0aa2983de6
commit fc3589da80
9 changed files with 199 additions and 2 deletions
+32
View File
@@ -19,6 +19,8 @@ static var cached_boss_gate_lessons_total: int = -1
@export var highest_boss_defeated: int = 0:
set(value):
highest_boss_defeated = _sanitize_highest_boss(value)
@export var boss_failure_streak: int = 0
@export var boss_blocked: bool = false
@export var last_modified: String
@@ -279,11 +281,41 @@ func boss_completed(lesson_number: int) -> bool:
if lesson_number <= highest_boss_defeated:
return false
highest_boss_defeated = lesson_number
if boss_failure_streak != 0:
boss_failure_streak = 0
last_modified = Time.get_datetime_string_from_system(true)
progression_changed.emit()
return true
func register_boss_failure() -> bool:
if boss_blocked:
return true
boss_failure_streak = max(0, boss_failure_streak) + 1
if boss_failure_streak >= 2:
boss_blocked = true
last_modified = Time.get_datetime_string_from_system(true)
progression_changed.emit()
return boss_blocked
func reset_boss_failure_streak() -> void:
if boss_failure_streak == 0:
return
boss_failure_streak = 0
last_modified = Time.get_datetime_string_from_system(true)
progression_changed.emit()
func clear_boss_block() -> void:
if not boss_blocked and boss_failure_streak == 0:
return
boss_blocked = false
boss_failure_streak = 0
last_modified = Time.get_datetime_string_from_system(true)
progression_changed.emit()
func add_level_time(lesson_number: int, game_number: int, time_spent: int) -> void:
Log.trace("StudentProgression: Add time to level %d, minigame %d. Time added: %s" % [lesson_number, game_number, time_spent])
if game_number > 2: