diff --git a/NOTES.md b/NOTES.md index 083df51..6899b01 100644 --- a/NOTES.md +++ b/NOTES.md @@ -1965,3 +1965,12 @@ ALT beim Schwimmen/Tauchen (nur mit Slots 29-31 = Smacks): Blase waechst platzt an der Oberflaeche oder nach 4s. Gegner-Fang (Blase + rauswerfen) kommt zusammen mit den Gegnern, sobald die Typ-Zuordnung steht. Gegner- Sterbeanimationen (wie bei den Spielfiguren) ebenfalls dann. + +## 26.07.2026 (25) -- Levelzeit-Timeout hat jetzt Konsequenzen + +Stefans Fund: Timer lief runter, aber bei 0 passierte nichts. Fix in +run_level: time_left wird am Rundenanfang berechnet; bei <= 0 startet die +Sterbeanimation (wie Herzen leer), danach Leben -1, Respawn mit vollen +Herzen und FRISCHER Levelzeit (start-Reset auch beim Respawn nach +normalem Tod). E2E: Levelzeit auf 2s gestutzt -> 3 Versuche + Rueckkehr +zur Karte nach 13.4s. --once exit 0. diff --git a/game/level.py b/game/level.py index 83f0ba9..de8debd 100644 --- a/game/level.py +++ b/game/level.py @@ -780,6 +780,15 @@ def run_level(clock, assets, audio_paths, map_name='W1L1'): vx=55.0 * player.facing, t=0.0)) keys = pygame.key.get_pressed() + time_left = info['time'] - (time.monotonic() - start) + # Zeit abgelaufen -> wie Herzen leer: Sterbeanimation, Leben -1 + # (Stefans Fund: "bei 0 wird mir kein Leben abgezogen") + if dying is None and time_left <= 0: + hearts = 0 + player.hurt_t = 0.0 + player.force_slot = SLOT_DEATH + dying = dict(t=0.0, vy=-260.0, + drop_y=player.y - 40.0, drop_vy=-30.0) if dying is None: player.update(level, dt, keys) else: @@ -800,6 +809,7 @@ def run_level(clock, assets, audio_paths, map_name='W1L1'): player.x, player.y = spawn_px player.vy = 0.0 player.spawn_t = SPAWN_ANIM_SECONDS + start = time.monotonic() # neuer Versuch = frische Levelzeit # Tuer-Sequenz: offen zeigen (Figur schaut rein), nach 1s die Aktion if door_open_t is not None: @@ -908,7 +918,6 @@ def run_level(clock, assets, audio_paths, map_name='W1L1'): overlay.fill(WATER_TINT) canvas.blit(overlay, (0, top)) - time_left = info['time'] - (time.monotonic() - start) hud.draw(canvas, VIEW_H, player.d, cookies=0, score=0, hearts=hearts, lives=lives, time_left=time_left)