CensoredUsername / unrpyc

A ren'py script decompiler
Other
837 stars 149 forks source link

Bug: Two statements on same line #115

Closed madeddy closed 5 months ago

madeddy commented 3 years ago

A new error from a wrong decompilation was discovered. Used unrpyc v1.1.5 with last patch from dev. Excerpt from errors.txt:

`File "game/renpy_screens.rpy", line 1655: end of line expected. at transform:on show: ^

Ren'Py Version: Ren'Py 7.3.5.606 Fri Mar 26 21:13:39 2021`

The whole codeblock from the file above looks a bit weird but this could be from comments. From line 1639+:

init -501 screen notify(message):

    zorder 100
    style_prefix "notify"

    frame:

        text "[message!tq]"
        at transform:on show:
                parallel:
                    ypos 0
                    linear .5 ypos gui.skip_ypos+40
                parallel:
                    yanchor 1.
                    linear .5 yanchor 0.
    timer 3.25 action Hide('notify')

The game scripts: Dit_v0.1_rpyc.zip

Is this perhaps related to #103? @jackmcbarn

Greets

madeddy commented 1 year ago

The statement at transform: isn't often used from the look of it, but i stumbled ever another game with the same error as above:

screen music_notes:
    default note_visible = True
    default note_color = renpy.random.choice(["red_note","green_note","orange_note","blue_note","yellow_note"])
    default note_position = renpy.random.choice([328,408,511,612,689,777,881,955,1057,1130,1236,1305,1413,1492])

    fixed:
        if note_visible:

            add "misc piano_play " + note_color
            timer 0.5 action SetScreenVariable("note_visible",False)
            at transform:parallel:
                    alpha 0.0
                    easein 0.25 alpha 1.0
                    delay 0.25
                    easeout 0.25 alpha 0.0
                parallel:
                    xpos note_position ypos 879
                    easein 0.5 yoffset -50
        else:
            timer 0.25 action Show("music_notes")
    fixed:
        if not preferences.get_volume("music"):
            frame style "notification_modal_title_frame" xalign 0.5 yalign 0.5:
                text "Your music volume is OFF" style "notification_modal_title"
            at transform:
                on show:
                    xalign 0.5 yalign 0.5
                    easein 0.15 zoom 1.1
                    easeout 0.1 zoom 1.0

I noticed in both cases there appears a block with empty lines above the problematic line. Also, in a test i put "control prints" in some places of the code(at transform block, parallel block, _print_atlcallback func, ast.loc), to see the value of the linenumbers. The self.linenumber did at the problematic area jump ahead of the linenumber in ast.loc. Happened AFAIK not elsewhere.

q_isabelle_piano.rpyc.zip

CensoredUsername commented 5 months ago

Seems to have been fixed in the SL2 keywords and children rewrite in 577c32e! File tests out, and with the rewrite this bug report has become outdated anyway.