Okay, nach einigem Hin und Her hab ich es dann echt geschafft.

Nicht schön, aber läuft mit den folgenden Funktionsumbauten:
Code:
class Sprite_Battler < RPG::Sprite
  def initialize(viewport, battler = nil)
    @time_count = 0
    @state_count = 1
  end

  def update
    if @battler.damage == nil# and
#       @battler.state_animation_id != @state_animation_id
      if @time_count == 50
        if @state_count < @battler.states.size
          @state_count += 1
        else
          @state_count = 1
        end
        @time_count = 0
      else
        @time_count += 1
      end
      @state_animation_id = @battler.state_animation_id(@state_count - 1)
      loop_animation($data_animations[@state_animation_id])
    end
end
class Game_Battler
  def state_animation_id(count = 0)
    # If no states are added
    if @states.size == 0
      return 0
    end
    # Return state animation ID with maximum rating
    return $data_states[@states[count]].animation_id
  end
end
@state_count hab ich nur mal testweise auf 50 gestellt, mit dem Wert werde ich nachher noch ein wenig herum spielen. Erstmal sollte er nur deutlich über 40 Frames liegen, damit ich mal locker über eine Sekunde komme und so jeder Zustand sicher angezeigt wird.

Um ehrlich zu sein, ich hab jetzt erstmal das ganze System verstanden, so mit den .update-Funktionen und dass die 40 mal pro Sekunde aufgerufen werden und so
Bleibt zu hoffen, dass das so funktioniert. Falls jemand potenzielle Fehler sieht, bitte sagen.