transform OBJbutterfly(hue=random.randint(0, 359)):
    zoom random.uniform(0.4, 0.85)
    matrixcolor HueMatrix(hue)

    choice:
        pause random.randint(1, 7)
        parallel:
            xzoom -1
            pos (-100, random.randint(0, 500))
            ease_quad random.randint(14, 20) pos (1200, random.randint(0, 500))
            repeat
        parallel:
            ease_bounce 3 yoffset absolute(-20)
            ease_bounce 3 yoffset absolute(20)
            ease_bounce 3 yoffset absolute(0)
            repeat
        parallel:
            rotate 15
            ease_circ 1.0 rotate 30
            ease_circ 1.0 rotate 15
            repeat
        parallel:
            "images/rooms/quidditch_pitch/butterfly/0.webp" with d3
            pause .3
            "images/rooms/quidditch_pitch/butterfly/1.webp" with d3
            pause .3
            "images/rooms/quidditch_pitch/butterfly/2.webp" with d3
            pause .3
            "images/rooms/quidditch_pitch/butterfly/1.webp" with d3
            pause .3
            repeat
    choice:
        pause random.randint(1, 7)
        parallel:
            xzoom 1
            pos (1200, random.randint(0, 500))
            ease_quad random.randint(14, 20) pos (-100, random.randint(0, 500))
            repeat
        parallel:
            ease_bounce 3 yoffset absolute(-20)
            ease_bounce 3 yoffset absolute(20)
            ease_bounce 3 yoffset absolute(0)
            repeat
        parallel:
            rotate -15
            ease_circ 1.0 rotate -30
            ease_circ 1.0 rotate -15
            repeat
        parallel:
            "images/rooms/quidditch_pitch/butterfly/0.webp" with d3
            pause .3
            "images/rooms/quidditch_pitch/butterfly/1.webp" with d3
            pause .3
            "images/rooms/quidditch_pitch/butterfly/2.webp" with d3
            pause .3
            "images/rooms/quidditch_pitch/butterfly/1.webp" with d3
            pause .3
            repeat
    repeat

transform OBJcloud(start=(random.randint(270, 800), random.randint(60, 130)), speed=random.randint(60, 180)):
    parallel:
        zoom random.uniform(0.6, 1.0)
        pos start
        "images/rooms/main_room/weather/cloud_small.webp"
        linear speed xpos 800
        xpos 270
        linear speed xpos start[0]
        repeat

transform OBJwrackspurt():
    zoom random.uniform(0.2, 1.0)
    events False

    choice:
        pause random.randint(0, 7)
        "wrackspurt"

        parallel:
            xzoom -1
            pos (-100, random.randint(0, 500))
            ease_quad random.randint(14, 20) pos (1200, random.randint(0, 500))
            repeat
        parallel:
            ease_bounce 3 yoffset absolute(-20)
            ease_bounce 3 yoffset absolute(20)
            ease_bounce 3 yoffset absolute(0)
            repeat
        parallel:
            rotate 15
            ease_circ 1.0 rotate 30
            ease_circ 1.0 rotate 15
            repeat
    choice:
        pause random.randint(0, 7)
        "wrackspurt"
        parallel:
            xzoom 1
            pos (1200, random.randint(0, 500))
            ease_quad random.randint(14, 20) pos (-100, random.randint(0, 500))
            repeat
        parallel:
            easein 3 yoffset absolute(-20)
            easein 3 yoffset absolute(20)
            easein 3 yoffset absolute(0)
            repeat
        parallel:
            rotate -15
            ease_circ 1.0 rotate -30
            ease_circ 1.0 rotate -15
            repeat
    repeat

image OBJwrackspurtplayer:
    anchor (0.0, 0.0)
    transform_anchor True
    zoom 0.7
    offset (-21, -13)
    events False

    "wrackspurt"

    parallel:
        rotate -10
        ease_circ 1.0 rotate -20
        ease_circ 1.0 rotate -10
        repeat