diff --git a/NOTES.md b/NOTES.md index 6899b01..779e9e9 100644 --- a/NOTES.md +++ b/NOTES.md @@ -1974,3 +1974,15 @@ 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. + +## 26.07.2026 (26) -- Steh-Pose korrigiert: Slot 17 (frontal), nicht Slot 8 + +Stefans Feedback: "Stand-Animation passt bei keinem Charakter". DOSBox- +Abgleich (stand_timeline.png, Tony steht nach Levelstart): das Original +steht FRONTAL (Bauch zur Kamera) = Slot 17 (Tony BOB 34); Slot 8 (BOB 16, +Seiten-/Rueckenpose) ist nur die kurze Uebergangspose beim Anhalten/ +Landen (Original-Tabelle [4][8,8,8] = ~0.17s). Umgesetzt: SLOT_IDLE=17, +Slot 8 laeuft 0.17s beim Anhalten, Idle-Warteanimation (Schachtel) jetzt +nach 4s (Timeline: ~4s). Slot 18 = zweite Frontal-Pose (Variante), noch +ungenutzt. Damit ist auch klar: Slot-17-Frames sind KEINE Schadensposen. +Alle 4 Charaktere haben Slot 17 (Coco sogar als Richtungs-Paar). diff --git a/game/level.py b/game/level.py index de8debd..f619560 100644 --- a/game/level.py +++ b/game/level.py @@ -50,7 +50,8 @@ SWIM_GRAVITY = 240.0 # Smacks im Wasser: traege sinken SWIM_KICK = -140.0 # Schwimmstoss mit Space WALK_ANIM_FPS = 17.5 # Original: delay 4 Ticks @70Hz (Binary-Tabelle) RUN_ANIM_FPS = 17.5 # Rad hat dasselbe delay 4 -IDLE_ANIM_AFTER = 5.0 # Sekunden Stillstand bis zur Idle-Animation +IDLE_ANIM_AFTER = 4.0 # Sekunden Stillstand bis zur Idle-Animation + # (DOSBox-Timeline: Schachtel nach ~4s) IDLE_ANIM_FPS = 2.8 # Original: delay 25 Ticks @70Hz WATER_DAMAGE_EVERY = 1.5 # im Wasser: alle 1.5s ein Herz (Stefan: 5s war arg lang) SPAWN_ANIM_SECONDS = 1.1 # Start-Sprite beim Levelstart/Charakterwechsel @@ -85,12 +86,17 @@ SLOPE_CT = 16 # Charakter hat, ergibt sich daraus, WELCHE Slots sein BOB enthaelt # (nur Tony hat 13-16 = rennen, nur Smacks/Toucan 25-28 = schwimmen, # nur Toucan 29-31 als Richtungs-Paare = fliegen, nur Coco 35-44 = hangeln). -SLOT_IDLE = 8 +# Slot 17 = FRONTALE Steh-Pose (DOSBox-Abgleich stand_timeline.png: das +# Original steht mit Bauch zur Kamera -- BOB 34 bei Tony). Slot 8 (BOB 16) +# ist nur eine Seiten-/Uebergangspose und sah beim Stehen falsch aus +# (Stefans Feedback "Stand-Animation passt nicht"). +SLOT_IDLE = 17 +SLOT_IDLE_LANDING = 8 # kurze Pose direkt nach der Landung (Tabelle [4][8,8,8]) SLOT_JUMP = 9 # Springen/Fallen SLOT_SQUAT = 10 # Absprung-Hocke SLOT_ARMUP = 11 # Arm hoch / Daumen hoch (Spawn-Pose, Tabelle [70][10,11,10]) SLOT_DUCK = 12 -SLOT_HURT = 17 # Schadens-/Schreck-Frames 17,18 +SLOT_STAND_ALT = 18 # zweite Frontal-Pose (Blinzeln/Variante) SLOT_DEATH = 19 # Tod (19, Sturz 20) SLOT_SWIM_IDLE = 25 # Treiben im Wasser (erster Schwimm-Frame; 22-24 sind # die "Schachtel essen"-Posen der Idle-Warteanimation) @@ -575,6 +581,9 @@ class Player: if self.idle_t >= IDLE_ANIM_AFTER: i = int((self.idle_t - IDLE_ANIM_AFTER) * IDLE_WAIT_FPS) % len(ANIM_IDLE_WAIT) return ANIM_IDLE_WAIT[i] + if self.idle_t < 0.17: + # kurze Uebergangspose beim Anhalten/Landen (Original [4][8,8,8]) + return SLOT_IDLE_LANDING return SLOT_IDLE def draw(self, screen, cam_x, cam_y):