# Crash BASIC 1.43.1 Release Notes

## `ANIMATE` with no frame list now animates

`ANIMATE "name" FRAMERATE n` — with no explicit frame list — is meant to cycle
through *every* frame in the sprite sheet. It was instead sitting frozen on a
single frame.

```basic
BEHAVIOR "RunRight"
    BMOVE 1, 0
    ANIMATE "shadow_man" FRAMERATE 12   ' now cycles all frames, as documented
END BEHAVIOR
```

The "use all frames" shorthand expanded to an empty frame list, so the
animation had nothing to step through and never advanced — while the rest of
the behavior (movement, etc.) kept running, which made it look like only the
animation was broken. An empty list now expands to every frame in the sheet.

Listing frames explicitly (`ANIMATE "name", 0, 1, 2` or a range
`ANIMATE "name", 0 TO 18`) was never affected and behaves exactly as before.

## `SET POLYGON` is client-only in multiplayer

A mutation-bound polygon renders and animates on each client from its own
ticking behavior engine, so it's a client-side visual. In a CrashNet game,
calling `SET POLYGON` or `DESTROY POLYGON` from server-side code is now a clear
runtime error instead of doing nothing useful — wrap it in
`IF ME.ISCLIENT THEN ... END IF`, the same as resource loads. Single-player is
unaffected. To share a polygon's shape across players, replicate the data that
drives its mutation and let each client draw it.

## Compatibility

No breaking changes to syntax. Programs that relied on explicit `ANIMATE` frame
lists are unaffected; programs using the all-frames shorthand now animate as
documented. The only newly-rejected case is `SET POLYGON` / `DESTROY POLYGON`
called server-side in multiplayer, which previously had no useful effect.
