{
  "format_version": "1.10.0",
  "animation_controllers": {
    "controller.animation.silverlabs_nat.hamster.move": {
      "initial_state": "default",
      "states": {
        "default": {
          "on_entry": [
            "v.move_anim_transition_time = q.life_time + (v.move_anim_change_delay ?? 0.2);"
          ],
          "animations": [
            "idle",
            {
              "drinking": "q.property('silverlabs_nat:interaction_state') == 'drinking'"
            }
          ],
          "transitions": [
            {
              "run": "(q.life_time > (v.move_anim_transition_time ?? 0)) && (q.modified_move_speed >= (v.run_speed_threshold ?? 0.15))"
            },
            {
              "walk": "((q.life_time > (v.move_anim_transition_time ?? 0)) && (q.modified_move_speed >= (v.walk_speed_threshold ?? 0.05)))"
            },
            {
              "walk_ball": "q.is_riding && q.property('silverlabs_nat:is_walking_in_ball')"
            },
            {
              "walk_wheel": "q.is_riding && q.property('silverlabs_nat:interaction_state') == 'wheel'"
            },
            {
              "stand": "(q.is_sitting && !v.is_sleeping_on_bed && !(q.is_riding && q.property('silverlabs_nat:interaction_state') == 'wheel')) || q.property('silverlabs_nat:interaction_state') == 'skateboard'"
            }
          ],
          "blend_transition": 0.2
        },
        "walk": {
          "on_entry": [
            "v.move_anim_transition_time = q.life_time + (v.move_anim_change_delay ?? 0.2);"
          ],
          "animations": [
            "walk"
          ],
          "transitions": [
            {
              "default": "((q.life_time > (v.move_anim_transition_time ?? 0)) && (q.modified_move_speed < (v.walk_speed_threshold ?? 0.05)))"
            },
            {
              "run": "(q.life_time > (v.move_anim_transition_time ?? 0)) && (q.modified_move_speed >= (v.run_speed_threshold ?? 0.15))"
            },
            {
              "stand": "(q.is_sitting && !v.is_sleeping_on_bed && !(q.is_riding && q.property('silverlabs_nat:interaction_state') == 'wheel')) || q.property('silverlabs_nat:interaction_state') == 'skateboard'"
            }
          ],
          "blend_transition": 0.2
        },
        "walk_ball": {
          "animations": [
            "walk"
          ],
          "transitions": [
            {
              "default": "!q.is_riding || !q.property('silverlabs_nat:is_walking_in_ball')"
            }
          ],
          "blend_transition": 0.2
        },
        "walk_wheel": {
          "animations": [
            "walk"
          ],
          "transitions": [
            {
              "default": "!q.is_riding || q.property('silverlabs_nat:interaction_state') != 'wheel'"
            }
          ],
          "blend_transition": 0.2
        },
        "run": {
          "on_entry": [
            "v.move_anim_transition_time = q.life_time + (v.move_anim_change_delay ?? 0.2);"
          ],
          "animations": [
            "run"
          ],
          "transitions": [
            {
              "default": "(q.life_time > (v.move_anim_transition_time ?? 0)) && (q.modified_move_speed < (v.walk_speed_threshold ?? 0.05))"
            },
            {
              "walk": "(q.life_time > (v.move_anim_transition_time ?? 0)) && (q.modified_move_speed < (v.run_speed_threshold ?? 0.15))"
            },
            {
              "stand": "(q.is_sitting && !v.is_sleeping_on_bed && !(q.is_riding && q.property('silverlabs_nat:interaction_state') == 'wheel'))"
            }
          ],
          "blend_transition": 0.2
        },
        "stand": {
          "animations": [
            {
              "stand": "!q.is_tamed"
            },
            {
              "stand.tame": "q.is_tamed"
            }
          ],
          "transitions": [
            {
              "default": "!q.is_sitting && q.property('silverlabs_nat:interaction_state') != 'skateboard'"
            }
          ],
          "blend_transition": 0.2
        }
      }
    },
    "controller.animation.silverlabs_nat.hamster.master": {
      "initial_state": "default",
      "states": {
        "default": {
          "transitions": [
            {
              "squished": "q.timer_flag_1"
            },
            {
              "sleep": "v.is_sleeping_on_bed"
            },
            {
              "move": "1"
            },
            {
              "walk_wheel": "q.property('silverlabs_nat:interaction_state') == 'wheel'"
            }
          ]
        },
        "move": {
          "animations": [
            "controller.move",
            "controller.attack_sfx"
          ],
          "transitions": [
            {
              "squish": "q.timer_flag_1"
            },
            {
              "sleep": "v.is_sleeping_on_bed"
            },
            {
              "walk_wheel": "q.is_riding && q.property('silverlabs_nat:interaction_state') == 'wheel'"
            }
          ],
          "blend_transition": 0.2
        },
        "walk_wheel": {
          "on_entry": [
            "v.move_anim_transition_time = q.life_time + (v.move_anim_change_delay ?? 0.2);"
          ],
          "animations": [
            "run"
          ],
          "transitions": [
            {
              "default": "q.property('silverlabs_nat:interaction_state') != 'wheel'"
            }
          ]
        },
        "sleep": {
          "animations": [
            {
              "sleep": "!q.is_baby"
            },
            {
              "baby_sleep": "q.is_baby"
            }
          ],
          "transitions": [
            {
              "move": "!v.is_sleeping_on_bed"
            }
          ],
          "blend_transition": 0.25
        },
        "squish": {
          "animations": [
            "squish"
          ],
          "transitions": [
            {
              "squished": "q.any_animation_finished"
            }
          ]
        },
        "squished": {
          "animations": [
            "squished"
          ],
          "transitions": [
            {
              "unsquish": "!q.timer_flag_1"
            }
          ]
        },
        "unsquish": {
          "animations": [
            "unsquish"
          ],
          "transitions": [
            {
              "move": "q.any_animation_finished"
            }
          ],
          "blend_transition": 0.2,
          "blend_via_shortest_path": true
        }
      }
    },
    "controller.animation.silverlabs_nat.hamster.attack_sfx": {
      "initial_state": "default",
      "states": {
        "default": {
          "transitions": [
            {
              "attack": "v.attack_time > 0"
            }
          ]
        },
        "attack": {
          "sound_effects": [
            {
              "effect": "attack"
            }
          ],
          "transitions": [
            {
              "default": "v.attack_time == 0"
            }
          ]
        }
      }
    }
  }
}
