Final boss a lot harder

This commit is contained in:
Adrien Ufferte
2026-01-15 10:45:38 +01:00
parent ce5975bb91
commit f0fdf3887d
3 changed files with 36 additions and 1 deletions
+14 -1
View File
@@ -1281,7 +1281,20 @@ func _on_boss_button_pressed(lesson_number: int, garden_index: int) -> void:
func _on_final_boss_button_pressed(lesson_number: int, garden_index: int) -> void:
_on_boss_button_pressed(lesson_number, garden_index)
if is_locked:
return
feedback_audio_stream_player.play()
await OpeningCurtain.close()
Minigame.transition_data = {
current_lesson_number = lesson_number,
current_garden_index = garden_index,
minigame_number = -1,
minigame_completed = false,
skip_minigame_layout = true,
boss_gate_lesson = lesson_number,
is_final_boss = true
}
get_tree().change_scene_to_file("res://sources/minigames/fish/fish_minigame.tscn")
func _on_minigame_button_pressed(minigame_scene: PackedScene, minigame_number: int) -> void:
+3
View File
@@ -48,6 +48,8 @@ var remediation_syllables_scores: Dictionary = {}
var remediation_words_scores: Dictionary = {}
# Scores for the confusion matrix engine
var confusion_matrix_gp_scores: Dictionary[int, PackedInt32Array] = {}
# Final boss state
var is_final_boss: bool = false
# Stimuli
var stimuli: Array = []
var distractions: Array = []
@@ -98,6 +100,7 @@ func _ready() -> void:
gardens_data = transition_data
minigame_number = transition_data.get("minigame_number", minigame_number)
lesson_nb = transition_data.get("current_lesson_number", lesson_nb)
is_final_boss = transition_data.get("is_final_boss", false) as bool
# Difficulty
if (UserDataManager as UserDataManagerClass)._student_difficulty:
+19
View File
@@ -3,6 +3,8 @@ extends Minigame
signal beacon_fish_dropped(is_answered_real: bool)
const FISH_TEXTURE_RECT_SCENE: PackedScene = preload("res://sources/minigames/fish/fish_texture_rect.tscn")
const FINAL_BOSS_GAME_DURATION: int = 20 * 60
const FINAL_BOSS_TOTAL_WORDS: int = 180
@export var game_duration: int = 4 * 60
@export var minimum_correct_ratio: float = 0.8
@@ -60,6 +62,8 @@ func _find_stimuli_and_distractions() -> void:
Log.error("FishMinigame: Cannot start fish minigame since data is empty for lesson %d" % lesson_nb)
return
data_array.shuffle()
if is_final_boss:
max_words_count = data_array.size()
words_to_present.clear()
words_to_present_next.clear()
for data: Dictionary in data_array:
@@ -78,6 +82,10 @@ func _find_stimuli_and_distractions() -> void:
words_to_present.insert(0, distractions[0])
words_to_present.insert(0, stimuli[0])
total_number_of_words = words_to_present.size()
if is_final_boss:
game_duration = FINAL_BOSS_GAME_DURATION
total_number_of_words = FINAL_BOSS_TOTAL_WORDS
_ensure_words_to_present_count(FINAL_BOSS_TOTAL_WORDS)
progress_gauge_goal.margin_top_ratio = (1. - minimum_correct_ratio) * progress_gauge_max_margin
@@ -182,3 +190,14 @@ func _get_win_ratio() -> float:
func _on_fish_animated_sprite_animation_finished() -> void:
fish_animated_sprite.play("idle")
func _ensure_words_to_present_count(target_count: int) -> void:
if words_to_present.is_empty():
return
var base_pool: Array[String] = words_to_present.duplicate()
while words_to_present.size() < target_count:
base_pool.shuffle()
words_to_present.append_array(base_pool)
if words_to_present.size() > target_count:
words_to_present.resize(target_count)