{
  "format_version": "1.10.0",
  "animation_controllers": {
    "controller.animation.cyn_hao.horse.movement": {
      "initial_state": "idle_roll",
      "states": {

        // one giant animation controller, since if the idle anims are in their own controller,
        // when the walk states disrupt it (by disabling the AC), and then it becomes re-activated,
        // it doesn't reSTART, but rather unPAUSES, and whatever idle animation WAS playing,
        // finishes playing, which created a lot of weird looking issues
        // though I just realized I could (should) have just put a state within it
        // that transitions out of the states within the idle AC
        // welp.

          "idle_roll": {
            "on_entry": [ "variable.idle_roll = math.random_integer(1, 100);" ],
            "animations": [
              "look_at_target",
              "idle_none"
            ],
            "transitions": [
              // bucking is TOP priority
              { "bucking": "query.has_player_rider && !query.is_tamed" },

              // sitting states are highest priority, since it is an indicator
              // sitting animations only happen when sitting and it's Sunset to (just before) Sunrise
              // it WILL play one or the other, dice roll as to which
              // 75% chance to sit
              // 25% chance to roll
              {
                "sit_down": 
                "!query.has_rider && query.is_sitting && (variable.idle_roll < 75) && (0.25 <= query.time_of_day && query.time_of_day < 0.75)"
              },
              {
                "roll_dirt":
                "!query.has_rider && query.is_sitting && (variable.idle_roll > 74) && (0.25 <= query.time_of_day && query.time_of_day < 0.75)"
              },

              // sleeping animations only happen when sitting and it's Sunrise to (just before) Sunset
              // it WILL play one of them, dice roll as to which
              // 50% chance to sleep_stand
              // 25% chance to sleep_lay
              // 25% chance to slee_sit
              {
                "sleep_stand": 
                "!query.has_rider && query.is_sitting && (variable.idle_roll < 50) && ((0.0 <= query.time_of_day && query.time_of_day < 0.25) || (0.75 <= query.time_of_day && query.time_of_day < 1.0))"
              },
              {
                "sleep_lay":
                "!query.has_rider && query.is_sitting && ((variable.idle_roll > 49) && (variable.idle_roll < 75)) && ((0.0 <= query.time_of_day && query.time_of_day < 0.25) || (0.75 <= query.time_of_day && query.time_of_day < 1.0))"
              },
              // turns out, sitting is actually the least-common thing horses do,
              // instead opting to doze standing up or lay fully flat on their side
              {
                "sleep_sit":
                "!query.has_rider && query.is_sitting && (variable.idle_roll > 74) && ((0.0 <= query.time_of_day && query.time_of_day < 0.25) || (0.75 <= query.time_of_day && query.time_of_day < 1.0))"
              },
              



              // movement states
              { "walking": "query.is_on_ground && (query.modified_move_speed > 0.075) && (query.modified_move_speed < 0.75)" },
              { "running": "query.is_on_ground && query.modified_move_speed >= 0.75" },
              { "jumping": "!query.is_on_ground" },



              // idle states
              // probably shouldn't have made a state for every anim, and instead
              // one "idle" state that has it's own variable to determine which ANIM to play
              // oops

              // idle animations only happen when not sitting
              // there's a 30% chance ANY idle animation will even play, dice roll as to which
              // IF they do play an idle anim (idle_roll < 60)
              // ~30% chance to tail1 (1 - 10)
              // ~30% chance to tail2 (11 - 20)
              // ~20% chance to graze (21 - 27)
              // ~10% chance to rear (28 - 30)

              { "idle_1": "!query.has_rider && (variable.idle_roll < 11)" },
              { "idle_2": "!query.has_rider && ((variable.idle_roll > 10) && (variable.idle_roll < 21))" },
              { "idle_3": "!query.has_rider && ((variable.idle_roll > 20) && (variable.idle_roll < 28))" },
              { "idle_4": "!query.has_rider && ((variable.idle_roll > 27) && (variable.idle_roll < 31))" },





              // should none of those conditions be met, a 3-second "none" anim will play
              { "idle_0": "(1.0)" } 
            ],
            "blend_transition": 0.0
          },



          "bucking": {
            "animations": [
              "bucking"
            ],
            "transitions": [
              { "bucked_off": "!query.has_rider && !query.is_tamed" },
              { "idle_roll": "!query.has_rider || query.is_tamed" }
            ],
            "blend_transition": 0.5
          },

          // rear when bucking a player off, to be consistent
          // with vanilla horses
          "bucked_off": {
            "animations": [
              "idle_rear"
            ],
            "transitions": [
              { "bucking": "query.has_player_rider && !query.is_tamed" },
              { "idle_roll": "query.all_animations_finished" }
            ],
            "blend_transition": 0.5
          },



          "walking": {
            "animations": [
              "look_at_target",
              "walk"
            ],
            "transitions": [
              { "idle_roll": "query.is_on_ground && (query.modified_move_speed < 0.075)" },
              { "running": "query.is_on_ground && query.modified_move_speed >= 0.75" },
              { "jumping": "!query.is_on_ground" }
            ],
            "blend_transition": 0.5
          },

          "running": {
            "animations": [
              "look_at_target",
              "run"
            ],
            "transitions": [
              { "idle_roll": "query.is_on_ground && (query.modified_move_speed <= 0.075)" },
              { "walking": "query.is_on_ground && (query.modified_move_speed > 0.075) && (query.modified_move_speed < 0.75)" },
              { "jumping": "!query.is_on_ground" }
            ],
            "blend_transition": 0.5
          },

          "jumping": {
            "animations": [ 
              "look_at_target",
              "jump"
            ],
            "transitions": [
              { "idle_roll": "query.is_on_ground && (query.modified_move_speed <= 0.1)" },
              { "walking": "query.is_on_ground && (query.modified_move_speed > 0.075) && (query.modified_move_speed < 0.75)" },
              { "running": "query.is_on_ground && query.modified_move_speed >= 0.75" },
              { "swimming": "query.is_in_water" }
            ],
            "blend_transition": 0.5
          },

          "swimming": {
            "animations": [ 
              "look_at_target",
              "swim"
            ],
            "transitions": [
              { "idle_roll": "query.is_on_ground && (query.modified_move_speed <= 0.1)" },
              { "walking": "query.is_on_ground && (query.modified_move_speed > 0.075) && (query.modified_move_speed < 0.75)" },
              { "running": "query.is_on_ground && query.modified_move_speed >= 0.75" }
            ],
            "blend_transition": 0.5
          },
  


          "idle_0": {
            "animations": [
              "look_at_target",
              "idle_none"
            ],
            "transitions": [
              // movement states are priority
              { "walking": "query.is_on_ground && (query.modified_move_speed > 0.1) && (query.modified_move_speed < 0.75)" },
              { "running": "query.is_on_ground && query.modified_move_speed >= 0.75" },
              { "jumping": "!query.is_on_ground" },
              { "idle_roll": "query.has_rider || query.all_animations_finished" }
            ],
            "blend_transition": 0.5
          },
  
          "idle_1": {
            "animations": [
              "look_at_target",
              "idle_tail"
            ],
            "transitions": [
              // movement states are priority
              { "walking": "query.is_on_ground && (query.modified_move_speed > 0.1) && (query.modified_move_speed < 0.75)" },
              { "running": "query.is_on_ground && query.modified_move_speed >= 0.75" },
              { "jumping": "!query.is_on_ground" },
              { "idle_roll": "query.has_rider || query.all_animations_finished" }
            ],
            "blend_transition": 0.5
          },
  
          "idle_2": {
            "animations": [
              "look_at_target",
              "idle_tail2"
            ],
            "transitions": [
              // movement states are priority
              { "walking": "query.is_on_ground && (query.modified_move_speed > 0.1) && (query.modified_move_speed < 0.75)" },
              { "running": "query.is_on_ground && query.modified_move_speed >= 0.75" },
              { "jumping": "!query.is_on_ground" },
              { "idle_roll": "query.has_rider || query.all_animations_finished" }
            ],
            "blend_transition": 0.5
          },
  
          "idle_3": {
            "animations": [
              "look_at_target",
              "idle_head"
            ],
            "transitions": [
              // movement states are priority
              { "walking": "query.is_on_ground && (query.modified_move_speed > 0.1) && (query.modified_move_speed < 0.75)" },
              { "running": "query.is_on_ground && query.modified_move_speed >= 0.75" },
              { "jumping": "!query.is_on_ground" },
              { "idle_roll": "query.has_rider || query.all_animations_finished" }
            ],
            "blend_transition": 0.5
          },
  
          "idle_4": {
            "animations": [
              "look_at_target",
              "idle_rear"
            ],
            "transitions": [
              // movement states are priority
              { "walking": "query.is_on_ground && (query.modified_move_speed > 0.1) && (query.modified_move_speed < 0.75)" },
              { "running": "query.is_on_ground && query.modified_move_speed >= 0.75" },
              { "jumping": "!query.is_on_ground" },
              { "idle_roll": "query.has_rider || query.all_animations_finished" }
            ],
            "blend_transition": 0.5
          },



          "sit_down": {
            "animations": [
              "look_at_target",
              "sit_down"
            ],
            "transitions": [
              { "stand_up": "query.has_rider || !query.is_sitting" },
              {
                "sleep_sit":
                "!query.has_rider && query.is_sitting && ((0.0 <= query.time_of_day && query.time_of_day < 0.25) || (0.75 <= query.time_of_day && query.time_of_day < 1.0))"
              }
            ],
            "blend_transition": 0.5
          },

          "stand_up": {
            "animations": [
              "look_at_target",
              "stand_up"
            ],
            "transitions": [
              { "idle_roll": "query.all_animations_finished" }
            ]
          },

          // ----------------------------------------------------------------------------------------------------
          // ----------------------------------------------------------------------------------------------------
          // Unfortunately, the head inflates / deflates at the end of the roll animation
          // if it is not playing with look_at_target
          // however, playing WITH look_at_target makes the neck not rotate at all while rolling,
          // so it's just a "lesser of the two evils" situation
          // ----------------------------------------------------------------------------------------------------
          // ----------------------------------------------------------------------------------------------------
          "roll_dirt": {
            "animations": [
              "roll_dirt"
            ],
            "transitions": [
              // always go from rolling to sitting if the horse is in sitting mode,
              // to prevent the horse from constantly rolling
              {
                "sit_down": 
                "query.all_animations_finished && !query.has_rider && query.is_sitting && (0.25 <= query.time_of_day && query.time_of_day < 0.75)"
              },

              // otherwise, if not in sit mode, go to play some other idle anim
              // or if it's night, go to play some sleep anim
              { "idle_roll": "query.has_rider || query.all_animations_finished" }
            ],
            "blend_transition": 0.5
          },



          "sleep_stand": {
            "animations": [
              "sleep_stand"
            ],
            "transitions": [
              {
                "idle_roll": 
                "query.has_rider || !query.is_sitting || (0.25 <= query.time_of_day && query.time_of_day < 0.75)"
              }
            ],
            "blend_transition": 0.5
          },

          "sleep_sit": {
            "animations": [
              "sleep_sit"
            ],
            "transitions": [
              {
                "sleep_sit_wake":
                "query.has_rider || !query.is_sitting || (0.25 <= query.time_of_day && query.time_of_day < 0.75)"
              }
            ],
            "blend_transition": 0.5
          },

          "sleep_sit_wake": {
            "animations": [
              "stand_up"
            ],
            "transitions": [
              { "idle_roll": "query.all_animations_finished" }
            ]
          },

          "sleep_lay": {
            "animations": [
              "sleep_lay"
            ],
            "transitions": [
              {
                "sleep_lay_wake":
                "query.has_rider || !query.is_sitting || (0.25 <= query.time_of_day && query.time_of_day < 0.75)"
              }
            ],
            "blend_transition": 0.5
          },

          "sleep_lay_wake": {
            "animations": [
              "sleep_lay_wake"
            ],
            "transitions": [
              { "idle_roll": "query.all_animations_finished" }
            ]
          }
      }
    },





    "controller.animation.cyn_hao.horse.movement_flyer": {
      "initial_state": "idle_roll",
      "states": {

        // one giant animation controller, since if the idle anims are in their own controller,
        // when the walk states disrupt it (by disabling the AC), and then it becomes re-activated,
        // it doesn't reSTART, but rather unPAUSES, and whatever idle animation WAS playing,
        // finishes playing, which created a lot of weird looking issues
        // though I just realized I could (should) have just put a state within it
        // that transitions out of the states within the idle AC
        // welp.

          "idle_roll": {
            "on_entry": [ "variable.idle_roll = math.random_integer(1, 100);" ],
            "animations": [
              "look_at_target",
              "wings_base"
            ],
            "transitions": [
              // bucking is TOP priority
              { "bucking": "query.has_player_rider && !query.is_tamed" },

              // sitting states are highest priority, since it is an indicator
              // sitting animations only happen when sitting and it's Sunset to (just before) Sunrise
              // it WILL play one or the other, dice roll as to which
              // 75% chance to sit
              // 25% chance to roll
              {
                "sit_down": 
                "!query.has_rider && query.is_sitting && (variable.idle_roll < 75) && (0.25 <= query.time_of_day && query.time_of_day < 0.75)"
              },
              {
                "roll_dirt":
                "!query.has_rider && query.is_sitting && (variable.idle_roll > 74) && (0.25 <= query.time_of_day && query.time_of_day < 0.75)"
              },

              // sleeping animations only happen when sitting and it's Sunrise to (just before) Sunset
              // it WILL play one of them, dice roll as to which
              // 50% chance to sleep_stand
              // 25% chance to sleep_lay
              // 25% chance to slee_sit
              {
                "sleep_stand": 
                "!query.has_rider && query.is_sitting && (variable.idle_roll < 50) && ((0.0 <= query.time_of_day && query.time_of_day < 0.25) || (0.75 <= query.time_of_day && query.time_of_day < 1.0))"
              },
              {
                "sleep_lay":
                "!query.has_rider && query.is_sitting && ((variable.idle_roll > 49) && (variable.idle_roll < 75)) && ((0.0 <= query.time_of_day && query.time_of_day < 0.25) || (0.75 <= query.time_of_day && query.time_of_day < 1.0))"
              },
              // turns out, sitting is actually the least-common thing horses do,
              // instead opting to doze standing up or lay fully flat on their side
              {
                "sleep_sit":
                "!query.has_rider && query.is_sitting && (variable.idle_roll > 74) && ((0.0 <= query.time_of_day && query.time_of_day < 0.25) || (0.75 <= query.time_of_day && query.time_of_day < 1.0))"
              },
              



              // movement states
              { "walking": "query.is_on_ground && (query.modified_move_speed > 0.075) && (query.modified_move_speed < 0.75)" },
              { "running": "query.is_on_ground && query.modified_move_speed >= 0.75" },
              { "jumping": "!query.is_on_ground" },



              // idle states
              // probably shouldn't have made a state for every anim, and instead
              // one "idle" state that has it's own variable to determine which ANIM to play
              // oops

              // idle animations only happen when not sitting
              // there's a 30% chance ANY idle animation will even play, dice roll as to which
              // IF they do play an idle anim (idle_roll < 60)
              // ~30% chance to tail1 (1 - 10)
              // ~30% chance to tail2 (11 - 20)
              // ~20% chance to graze (21 - 27)
              // ~10% chance to rear (28 - 30)

              { "idle_1": "!query.has_rider && (variable.idle_roll < 11)" },
              { "idle_2": "!query.has_rider && ((variable.idle_roll > 10) && (variable.idle_roll < 21))" },
              { "idle_3": "!query.has_rider && ((variable.idle_roll > 20) && (variable.idle_roll < 28))" },
              { "idle_4": "!query.has_rider && ((variable.idle_roll > 27) && (variable.idle_roll < 31))" },





              // should none of those conditions be met, a 3-second "none" anim will play
              { "idle_0": "(1.0)" } 
            ],
            "blend_transition": 0.0
          },



          "bucking": {
            "animations": [
              "bucking"
            ],
            "transitions": [
              { "bucked_off": "!query.has_rider && !query.is_tamed" },
              { "idle_roll": "!query.has_rider || query.is_tamed" }
            ],
            "blend_transition": 0.5
          },

          // rear when bucking a player off, to be consistent
          // with vanilla horses
          "bucked_off": {
            "animations": [
              "idle_rear",
              "wings_base"
            ],
            "transitions": [
              { "bucking": "query.has_player_rider && !query.is_tamed" },
              { "idle_roll": "query.all_animations_finished" }
            ],
            "blend_transition": 0.5
          },



          "walking": {
            "animations": [
              "look_at_target",
              "walk"
            ],
            "transitions": [
              { "idle_roll": "query.is_on_ground && (query.modified_move_speed < 0.075)" },
              { "running": "query.is_on_ground && query.modified_move_speed >= 0.75" },
              { "jumping": "!query.is_on_ground" }
            ],
            "blend_transition": 0.5
          },

          "running": {
            "animations": [
              "look_at_target",
              "run"
            ],
            "transitions": [
              { "idle_roll": "query.is_on_ground && (query.modified_move_speed <= 0.075)" },
              { "walking": "query.is_on_ground && (query.modified_move_speed > 0.075) && (query.modified_move_speed < 0.75)" },
              { "jumping": "!query.is_on_ground" }
            ],
            "blend_transition": 0.5
          },

          "jumping": {
            "animations": [ 
              "look_at_target",
              "jump"
            ],
            "transitions": [
              { "idle_roll": "query.is_on_ground && (query.modified_move_speed <= 0.1)" },
              { "walking": "query.is_on_ground && (query.modified_move_speed > 0.075) && (query.modified_move_speed < 0.75)" },
              { "running": "query.is_on_ground && query.modified_move_speed >= 0.75" },
              // { "swimming": "query.is_in_water" },
              
              // flyers enter fly state if they have jumped and not landed
              { "flying": "query.all_animations_finished" }
            ],
            "blend_transition": 0.5
          },


          // if we have a swimming animation, the problem is that if we try to get them to
          // play any animation when leaving the water transition out of it,
          // they flicker between that animation and their swim animation when floating
          // since floating works like float > "jump" out of water a little > fall back in water
          // so instead just let them flap their wings when in water
          // "swimming": {
          //   "animations": [ 
          //     "look_at_target",
          //     "swim"
          //   ],
          //   "transitions": [
          //     { "idle_roll": "query.is_on_ground && (query.modified_move_speed <= 0.1)" },
          //     { "walking": "query.is_on_ground && (query.modified_move_speed > 0.075) && (query.modified_move_speed < 0.75)" },
          //     { "running": "query.is_on_ground && query.modified_move_speed >= 0.75" },
              
          //     // flyers enter fly state if they have jumped and not landed
          //     { "jumping": "!query.is_in_water && !query.is_on_ground" }
          //   ],
          //   "blend_transition": 0.5
          // },

          "flying": {
            "animations": [
              "look_at_target",
              "fly"
            ],
            "transitions": [
              { "idle_roll": "query.is_on_ground && (query.modified_move_speed <= 0.1)" },
              { "walking": "query.is_on_ground && (query.modified_move_speed > 0.075) && (query.modified_move_speed < 0.75)" },
              { "running": "query.is_on_ground && query.modified_move_speed >= 0.75" }
            ],
            "blend_transition": 0.5
          },
  


          "idle_0": {
            "animations": [
              "look_at_target",
              "idle_none",
              "wings_base"
            ],
            "transitions": [
              // movement states are priority
              { "walking": "query.is_on_ground && (query.modified_move_speed > 0.1) && (query.modified_move_speed < 0.75)" },
              { "running": "query.is_on_ground && query.modified_move_speed >= 0.75" },
              { "jumping": "!query.is_on_ground" },
              { "idle_roll": "query.has_rider || query.all_animations_finished" }
            ],
            "blend_transition": 0.5
          },
  
          "idle_1": {
            "animations": [
              "look_at_target",
              "idle_tail",
              "wings_base"
            ],
            "transitions": [
              // movement states are priority
              { "walking": "query.is_on_ground && (query.modified_move_speed > 0.1) && (query.modified_move_speed < 0.75)" },
              { "running": "query.is_on_ground && query.modified_move_speed >= 0.75" },
              { "jumping": "!query.is_on_ground" },
              { "idle_roll": "query.has_rider || query.all_animations_finished" }
            ],
            "blend_transition": 0.5
          },
  
          "idle_2": {
            "animations": [
              "look_at_target",
              "idle_tail2",
              "wings_base"
            ],
            "transitions": [
              // movement states are priority
              { "walking": "query.is_on_ground && (query.modified_move_speed > 0.1) && (query.modified_move_speed < 0.75)" },
              { "running": "query.is_on_ground && query.modified_move_speed >= 0.75" },
              { "jumping": "!query.is_on_ground" },
              { "idle_roll": "query.has_rider || query.all_animations_finished" }
            ],
            "blend_transition": 0.5
          },
  
          "idle_3": {
            "animations": [
              "look_at_target",
              "idle_head",
              "wings_base"
            ],
            "transitions": [
              // movement states are priority
              { "walking": "query.is_on_ground && (query.modified_move_speed > 0.1) && (query.modified_move_speed < 0.75)" },
              { "running": "query.is_on_ground && query.modified_move_speed >= 0.75" },
              { "jumping": "!query.is_on_ground" },
              { "idle_roll": "query.has_rider || query.all_animations_finished" }
            ],
            "blend_transition": 0.5
          },
  
          "idle_4": {
            "animations": [
              "look_at_target",
              "idle_rear",
              "wings_base"
            ],
            "transitions": [
              // movement states are priority
              { "walking": "query.is_on_ground && (query.modified_move_speed > 0.1) && (query.modified_move_speed < 0.75)" },
              { "running": "query.is_on_ground && query.modified_move_speed >= 0.75" },
              { "jumping": "!query.is_on_ground" },
              { "idle_roll": "query.has_rider || query.all_animations_finished" }
            ],
            "blend_transition": 0.5
          },



          "sit_down": {
            "animations": [
              "look_at_target",
              "sit_down"
            ],
            "transitions": [
              { "stand_up": "query.has_rider || !query.is_sitting" },
              {
                "sleep_sit":
                "!query.has_rider && query.is_sitting && ((0.0 <= query.time_of_day && query.time_of_day < 0.25) || (0.75 <= query.time_of_day && query.time_of_day < 1.0))"
              }
            ],
            "blend_transition": 0.5
          },

          "stand_up": {
            "animations": [
              "look_at_target",
              "stand_up"
            ],
            "transitions": [
              { "idle_roll": "query.all_animations_finished" }
            ],
            "blend_transition": 0.5
          },

          // ----------------------------------------------------------------------------------------------------
          // ----------------------------------------------------------------------------------------------------
          // Unfortunately, the head inflates / deflates at the end of the roll animation
          // if it is not playing with look_at_target
          // however, playing WITH look_at_target makes the neck not rotate at all while rolling,
          // so it's just a "lesser of the two evils" situation
          // ----------------------------------------------------------------------------------------------------
          // ----------------------------------------------------------------------------------------------------
          "roll_dirt": {
            "animations": [
              "roll_dirt"
            ],
            "transitions": [
              // always go from rolling to sitting if the horse is in sitting mode,
              // to prevent the horse from constantly rolling
              {
                "sit_down": 
                "query.all_animations_finished && !query.has_rider && query.is_sitting && (0.25 <= query.time_of_day && query.time_of_day < 0.75)"
              },

              // otherwise, if not in sit mode, go to play some other idle anim
              // or if it's night, go to play some sleep anim
              { "idle_roll": "query.has_rider || query.all_animations_finished" }
            ],
            "blend_transition": 0.5
          },



          "sleep_stand": {
            "animations": [
              "sleep_stand"
            ],
            "transitions": [
              {
                "idle_roll": 
                "query.has_rider || !query.is_sitting || (0.25 <= query.time_of_day && query.time_of_day < 0.75)"
              }
            ],
            "blend_transition": 0.5
          },

          "sleep_sit": {
            "animations": [
              "sleep_sit"
            ],
            "transitions": [
              {
                "sleep_sit_wake":
                "query.has_rider || !query.is_sitting || (0.25 <= query.time_of_day && query.time_of_day < 0.75)"
              }
            ],
            "blend_transition": 0.5
          },

          "sleep_sit_wake": {
            "animations": [
              "stand_up"
            ],
            "transitions": [
              { "idle_roll": "query.all_animations_finished" }
            ],
            "blend_transition": 0.5
          },

          "sleep_lay": {
            "animations": [
              "sleep_lay"
            ],
            "transitions": [
              {
                "sleep_lay_wake":
                "query.has_rider || !query.is_sitting || (0.25 <= query.time_of_day && query.time_of_day < 0.75)"
              }
            ],
            "blend_transition": 0.5
          },

          "sleep_lay_wake": {
            "animations": [
              "sleep_lay_wake"
            ],
            "transitions": [
              { "idle_roll": "query.all_animations_finished" }
            ],
            "blend_transition": 0.5
          }
      }
    },



    

    "controller.animation.cyn_hao.horse.movement_swimmer": {
			"initial_state": "idle",
			"states": {
				"idle": {
					"animations": [
						"look_at_target",
            { "idle_water": "query.is_in_water" },
						{ "idle_land": "!query.is_in_water" }
					],
					"transitions": [
						{
							"move": "query.modified_move_speed > 0.05"
						},
            {
              "sit": "!query.has_rider && query.is_sitting"
            }
					],
          "blend_transition": 0.5
				},

				"move": {
					"animations": [
						"look_at_target",
						{ "move_water": "query.is_in_water" },
						{ "move_land": "!query.is_in_water" }
					],
					"transitions": [
						{
							"idle": "query.modified_move_speed <= 0.05"
						}
					],
          "blend_transition": 0.5
				},

        "sit": {
					"animations": [
						"look_at_target",
            { "idle_water": "query.is_in_water" },
						{ "sit_land": "!query.is_in_water" }
					],
					"transitions": [
						{ 
              "idle": "query.has_rider || !query.is_sitting"
            }
					],
          "blend_transition": 0.5
				}
			}
		}
  }
}
