Quote:
still amazed how much lines are needed for stuff
that look so simple


Well there is bad coding that just uses to many lines. There are also times when coders make things over complex. There is bad coding that uses to little lines, it focuses only on a simple goal and ignores many other needed cases.

When it comes to answering a question like this or dealing with someone's idea, I tend to have little design information to work from and no hands on time with the project. I like to focus only the cases I have to, but I don't want to keep reworking or supporting a code snip because need design cases appear that were not originally disclosed.
The manual example is the simplest. And you can modify it with only one case in mind.
Case - Flip 3 skins on only one entity, every second, only while the entity is moving.
That would look like this.
Code:
//...STUFF
while (1)
  {
// ... STUFF for  keys
    if(vSpeed) // are keys press and mul by a speed
     {
    my.skin = my.skill1 % 3;// only 3 skins // 32 Skins
    my.skill1 += time_step/5.33; // 16 ticks / by 3 skins == 5.33 // 16 skins per second
     }
    wait (1);
  }


Notes - This is time based, 3 skins flip ever 1 second. This has a bug where skin == 0, but skin should always be 1 or greater. "Lol manual example with a bug"

So in the end I explored more cases beyond this. However I'm sure the code I wrote is , well.., QnD