feat: report ATL problems only for used transforms; animate moving images
CI / frontend (push) Successful in 23s
CI / backend (push) Successful in 1m55s

- Unsupported ATL constructs in a transform now block the import only when the
  transform is used (at clause, another transform, even before its definition).
  Stock screens.rpy transforms for unused screens no longer fail games
- image blocks with one picture plus linear/ease/parallel/repeat keep their
  animation (image-level ATL); the renderer also starts it
- Python: skip @gui.variant/@renpy.variant functions (inactive variants), treat
  @renpy.pure as transparent, read renpy.store.x as x
- Accept renpy.transition, end_replay, block_rollback and music set_pause/set_pan
  as presentation-only no-ops, and implement them in the player (set_pause and
  set_pan were allowed by the converter but missing at runtime)
- Skip the 0x52-URM add-on directory (in-game console / save editor) when
  parsing scripts and media
- Tests for lazy ATL warnings, moving images and variants

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
mrleo1nidandClaude Sonnet 5.5 committed 2026-10-25 12:20:39 +03:00
1 parent ff82d882c0
commit 4418da47eb
9 files changed
+133 -12

No files matched your search

+7 -2
View File
@@ -102,9 +102,14 @@ def test_renpy_atl_animation_becomes_a_timeline_not_a_static_pose():
def test_renpy_atl_constructs_without_a_runtime_are_still_rejected():
for body in ("function slide", "time 1.0:\n xalign 1.0", "matrixcolor TintMatrix('#f00')",
"contains:\n 'a.png'"):
data = script(f'transform odd:\n {body}\nlabel start:\n "Hi"')
unused = script(f'transform odd:\n {body}\nlabel start:\n "Hi"')
require_supported_scripts(unused) # nothing shows it, so it cannot break the game
used = script(f'transform odd:\n {body}\nlabel start:\n show eileen at odd\n "Hi"')
with pytest.raises(CompatibilityError, match="ATL"):
require_supported_scripts(data)
require_supported_scripts(used)
early = script(f'label start:\n show eileen at odd\n "Hi"\ntransform odd:\n {body}\n')
with pytest.raises(CompatibilityError, match="ATL"): # used before it is defined
require_supported_scripts(early)
def test_renpy_atl_groups_events_and_named_transforms():