{
    "format_version": "1.10.0",
    "animation_controllers": {
        "controller.animation.kissy_missy_kiss": {
			"initial_state": "default",
            "states": {
                "default": {
					"transitions": [{
                            "attack1": "query.is_casting"
                        }
                    ]
				},
				"attack1": {
					"animations": ["kiss_time"],
                    "transitions": [{
                            "default": "!query.is_casting"
                        }
                    ],
					"on_entry": [
						"@s bd:time_to_kiss"
                    ]
                }
            }
        },
		"controller.animation.kissy_cooldown": {
			"initial_state": "default",
            "states": {
                "default": {
					"transitions": [{
                            "cast": "query.is_casting"
                        }
                    ],
					"on_entry": [
						"@s bd:use_jumpscare"
                    ]
				},
				"cast": {
					"animations": ["kiss_cooldown_time"],
                    "transitions": [{
                            "on_cooldown": "query.all_animations_finished"
                        }
                    ],
					"on_entry": [
                    ]
                },
				"on_cooldown": {
					"animations": ["kiss_skill_back"],
                    "transitions": [{
                            "default": "query.all_animations_finished"
                        }
                    ],
					"on_entry": [
						"@s bd:stop_jumpscare"
                    ]
                }
            }
        },
		"controller.animation.kiss_self_control": {
			"initial_state": "default",
            "states": {
                "default": {
					"transitions": [{
                            "get_off": "query.has_target"
                        }
                    ]
				},
				"get_off": {
                    "transitions": [{
                            "default": "!query.has_target"
                        }, {
                            "get_off2": "query.has_target"
                        }
                    ],
					"on_entry": [
						"/ride @s stop_riding",
						"/execute as @s at @s run kill @e[type=boat,r=1,c=1]"
                    ],
					"on_exit": [
						"/ride @s stop_riding",
						"/execute as @s at @s run kill @e[type=boat,r=1,c=1]"
                    ]
                },
				"get_off2": {
                    "transitions": [{
                            "default": "!query.has_target"
                        }, {
                            "get_off": "query.has_target"
                        }
                    ],
					"on_entry": [
						"/ride @s stop_riding",
						"/execute as @s at @s run kill @e[type=boat,r=1,c=1]"
                    ],
					"on_exit": [
						"/ride @s stop_riding",
						"/execute as @s at @s run kill @e[type=boat,r=1,c=1]"
                    ]
                }
            }
        },
		"controller.animation.kissy_hunt_time": {
			"initial_state": "default",
            "states": {
                "default": {
					"transitions": [{
                            "hunt_mode": "query.has_target"
                        }, {
                            "passive_mode": "!query.has_target"
                        }
                    ]
				},
				"hunt_mode": {
                    "transitions": [{
                            "passive_mode": "!query.has_target"
                        }
                    ],
					"on_entry": [
						"@s bd:hunt_mode",
						"/effect @s regeneration 0 0"
                    ]
                },
				"passive_mode": {
					"animations": ["kissy_calm"],
                    "transitions": [{
                            "default": "query.has_target"
                        }
                    ]
                }
            }
        },
		"controller.animation.kissy_missy_fake_dead": {
			"initial_state": "default",
            "states": {
                "default": {
					"transitions": [{
                            "faking": "query.is_playing_dead"
                        }
                    ]
				},
				"faking": {
					"animations": ["mommy_fake_dead_heal"],
                    "transitions": [{
                            "get_up": "query.health >= 300"
                        }
                    ],
					"on_entry": [
						"/effect @s slowness 29 255 true",
						"@s bd:is_faking_dead"
                    ]
                },
				"get_up": {
                    "transitions": [{
                            "default": "!query.is_playing_dead"
                        }
                    ],
					"on_entry": [
						"@s bd:stop_fake_dead",
						"/effect @s slowness 0 0 true",
						"/effect @s slowness 5 255 true"
                    ]
                }
            }
        },
		"controller.animation.kissy_missy_crouch": {
			"initial_state": "default",
            "states": {
                "default": {
					"transitions": [{
                            "dusk3": "(q.relative_block_has_any_tag(0,3,0,'wood','metal','stone','plant','dirt', 'grass','concrete','sand','gravel', 'snow','mob_spawner','diamond_pick_diggable','gold_pick_diggable','iron_pick_diggable','stone_pick_diggable','wood_pick_diggable','can_be_broken_from_falling',' can_hurt_and_break_item','button_block', 'container_block', 'crafting_block', 'crop_block', 'door_block', 'empty','fence_block','fenceGate_block', 'flammable','heavy','hot','hurtable_block','interactive_block','motion_blocking_block','rail_block','signal_source', 'slab_block', 'solid','solid_blocking_block','stair_block', 'stem_block', 'thinFence_block','unbreakable', 'wall_block', 'water_blocking', 'can_be','acacia', 'birch', 'dark_oak', 'log', 'oak', 'spruce', 'jungle') && !q.relative_block_has_any_tag(0,2,0,'wood','metal','stone','plant','dirt', 'grass','concrete','sand','gravel', 'snow','mob_spawner','diamond_pick_diggable','gold_pick_diggable','iron_pick_diggable','stone_pick_diggable','wood_pick_diggable','can_be_broken_from_falling',' can_hurt_and_break_item','button_block', 'container_block', 'crafting_block', 'crop_block', 'door_block', 'empty','fence_block','fenceGate_block', 'flammable','heavy','hot','hurtable_block','interactive_block','motion_blocking_block','rail_block','signal_source', 'slab_block', 'solid','solid_blocking_block','stair_block','stem_block','thinFence_block','unbreakable','wall_block','water_blocking','can_be','acacia', 'birch', 'dark_oak', 'log', 'oak', 'spruce', 'jungle'))"
                        }, {
                            "dusk2": "q.relative_block_has_any_tag(0,2,0,'wood','metal','stone','plant','dirt', 'grass','concrete','sand','gravel', 'snow','mob_spawner','diamond_pick_diggable','gold_pick_diggable','iron_pick_diggable','stone_pick_diggable','wood_pick_diggable','can_be_broken_from_falling',' can_hurt_and_break_item','button_block', 'container_block', 'crafting_block', 'crop_block', 'door_block', 'empty','fence_block','fenceGate_block', 'flammable','heavy','hot','hurtable_block','interactive_block','motion_blocking_block','rail_block','signal_source', 'slab_block', 'solid','solid_blocking_block','stair_block', 'stem_block', 'thinFence_block','unbreakable', 'wall_block', 'water_blocking', 'can_be','acacia', 'birch', 'dark_oak', 'log', 'oak', 'spruce', 'jungle')"
                        }
                    ]
				},
				"dusk3": {
                    "transitions": [{
                            "default": "(!q.relative_block_has_any_tag(0,3,0,'wood','metal','stone','plant','dirt', 'grass','concrete','sand','gravel', 'snow','mob_spawner','diamond_pick_diggable','gold_pick_diggable','iron_pick_diggable','stone_pick_diggable','wood_pick_diggable','can_be_broken_from_falling',' can_hurt_and_break_item','button_block', 'container_block', 'crafting_block', 'crop_block', 'door_block', 'empty','fence_block','fenceGate_block', 'flammable','heavy','hot','hurtable_block','interactive_block','motion_blocking_block','rail_block','signal_source', 'slab_block', 'solid','solid_blocking_block','stair_block', 'stem_block', 'thinFence_block','unbreakable', 'wall_block', 'water_blocking', 'can_be','acacia', 'birch', 'dark_oak', 'log', 'oak', 'spruce', 'jungle') && !q.relative_block_has_any_tag(0,2,0,'wood','metal','stone','plant','dirt', 'grass','concrete','sand','gravel', 'snow','mob_spawner','diamond_pick_diggable','gold_pick_diggable','iron_pick_diggable','stone_pick_diggable','wood_pick_diggable','can_be_broken_from_falling',' can_hurt_and_break_item','button_block', 'container_block', 'crafting_block', 'crop_block', 'door_block', 'empty','fence_block','fenceGate_block', 'flammable','heavy','hot','hurtable_block','interactive_block','motion_blocking_block','rail_block','signal_source', 'slab_block', 'solid','solid_blocking_block','stair_block', 'stem_block', 'thinFence_block','unbreakable', 'wall_block', 'water_blocking', 'can_be','acacia', 'birch', 'dark_oak', 'log', 'oak', 'spruce', 'jungle'))"
                        }, {
                            "dusk2": "q.relative_block_has_any_tag(0,2,0,'wood','metal','stone','plant','dirt', 'grass','concrete','sand','gravel', 'snow','mob_spawner','diamond_pick_diggable','gold_pick_diggable','iron_pick_diggable','stone_pick_diggable','wood_pick_diggable','can_be_broken_from_falling',' can_hurt_and_break_item','button_block', 'container_block', 'crafting_block', 'crop_block', 'door_block', 'empty','fence_block','fenceGate_block', 'flammable','heavy','hot','hurtable_block','interactive_block','motion_blocking_block','rail_block','signal_source', 'slab_block', 'solid','solid_blocking_block','stair_block', 'stem_block', 'thinFence_block','unbreakable', 'wall_block', 'water_blocking', 'can_be','acacia', 'birch', 'dark_oak', 'log', 'oak', 'spruce', 'jungle')"
                        }
                    ],
					"on_entry": [
						"@s bd:jumpscare_novent",
						"/tag @s[tag=dusk] remove dusk"
                    ],
					"on_exit": [
						"@s bd:jumpscare_novent",
						"/tag @s[tag=dusk] remove dusk"
                    ]
                },
				"dusk2": {
                    "transitions": [{
                            "default": "!q.relative_block_has_any_tag(0,2,0,'wood','metal','stone','plant','dirt', 'grass','concrete','sand','gravel', 'snow','mob_spawner','diamond_pick_diggable','gold_pick_diggable','iron_pick_diggable','stone_pick_diggable','wood_pick_diggable','can_be_broken_from_falling',' can_hurt_and_break_item','button_block', 'container_block', 'crafting_block', 'crop_block', 'door_block', 'empty','fence_block','fenceGate_block', 'flammable','heavy','hot','hurtable_block','interactive_block','motion_blocking_block','rail_block','signal_source', 'slab_block', 'solid','solid_blocking_block','stair_block', 'stem_block', 'thinFence_block','unbreakable', 'wall_block', 'water_blocking', 'can_be','acacia', 'birch', 'dark_oak', 'log', 'oak', 'spruce', 'jungle')"
                        }, {
                            "dusk3": "(q.relative_block_has_any_tag(0,3,0,'wood','metal','stone','plant','dirt', 'grass','concrete','sand','gravel', 'snow','mob_spawner','diamond_pick_diggable','gold_pick_diggable','iron_pick_diggable','stone_pick_diggable','wood_pick_diggable','can_be_broken_from_falling',' can_hurt_and_break_item','button_block', 'container_block', 'crafting_block', 'crop_block', 'door_block', 'empty','fence_block','fenceGate_block', 'flammable','heavy','hot','hurtable_block','interactive_block','motion_blocking_block','rail_block','signal_source', 'slab_block', 'solid','solid_blocking_block','stair_block', 'stem_block', 'thinFence_block','unbreakable', 'wall_block', 'water_blocking', 'can_be','acacia', 'birch', 'dark_oak', 'log', 'oak', 'spruce', 'jungle') && !q.relative_block_has_any_tag(0,2,0,'wood','metal','stone','plant','dirt', 'grass','concrete','sand','gravel', 'snow','mob_spawner','diamond_pick_diggable','gold_pick_diggable','iron_pick_diggable','stone_pick_diggable','wood_pick_diggable','can_be_broken_from_falling',' can_hurt_and_break_item','button_block', 'container_block', 'crafting_block', 'crop_block', 'door_block', 'empty','fence_block','fenceGate_block', 'flammable','heavy','hot','hurtable_block','interactive_block','motion_blocking_block','rail_block','signal_source', 'slab_block', 'solid','solid_blocking_block','stair_block','stem_block','thinFence_block','unbreakable','wall_block','water_blocking','can_be','acacia', 'birch', 'dark_oak', 'log', 'oak', 'spruce', 'jungle'))"
                        }
                    ],
					"on_entry": [
						"@s bd:jumpscare_vent"
                    ],
					"on_exit": [
						"@s bd:jumpscare_novent",
						"/tag @s[tag=dusk] remove dusk"
                    ]
                }
            }
        },
		"controller.animation.kissy_missy_kiss_kill": {
			"initial_state": "default",
            "states": {
                "default": {
					"transitions": [{
                            "attack1": "query.has_rider && query.variant == 0"
                        }, {
                            "attack2": "query.has_rider && query.variant == 1"
                        }
                    ]
				},
				"attack1": {
					"animations": ["kissy_kiss2", "kiss_time_kill2", "kiss_look"],
                    "transitions": [{
                            "stop_attack1": "query.all_animations_finished"
                        }
                    ],
					"on_entry": [
						"/ride @s summon_rider bd:kissy_kiss"
                    ]
                },
				"stop_attack1": {
                    "transitions": [{
                            "default": "!query.has_rider || !query.has_target"
                        }
                    ],
					"on_entry": [
						"/execute as @s at @s run ride @a[r=5,c=1] stop_riding",
						"/execute as @s at @s run effect @s weakness 0 0 true"
                    ]
                },
				"attack2": {
					"animations": ["kissy_kiss2", "kiss_time_kill2", "kiss_look_down"],
                    "transitions": [{
                            "stop_attack2": "query.all_animations_finished"
                        }
                    ],
					"on_entry": [
						"/ride @s summon_rider bd:kissy_kiss2"
                    ]
                },
				"stop_attack2": {
                    "transitions": [{
                            "default": "!query.has_rider || !query.has_target"
                        }
                    ],
					"on_entry": [
						"/execute as @s at @s run ride @a[r=5,c=1] stop_riding",
						"/execute as @s at @s run effect @s weakness 0 0 true"
                    ]
                }
            }
        },
		"controller.animation.kissy_missy_speed": {
			"initial_state": "default",
            "states": {
                "default": {
					"transitions": [{
                            "in_vent": "query.variant == 1"
                        }
                    ]
				},
				"in_vent": {
					"animations": ["kissy_speed"],
                    "transitions": [{
                            "default": "query.variant != 1"
                        }
                    ],
					"on_exit": [
						"/execute as @s at @s run effect @s speed 0 0 true"
                    ]
                }
            }
        },
		"controller.animation.kissy_missy_fall": {
			"initial_state": "default",
            "states": {
                "default": {
					"transitions": [{
                            "fall": "(!query.is_delayed_attacking && !query.is_on_ground && query.ground_speed > 16)"
                        }
                    ],
					"on_entry": [
						"@s bd:enable_knock_resistance",
						"@s bd:not_in_fall"
		            ]
				},
				"fall": {
                    "transitions": [{
                            "land": "query.is_on_ground && (query.ground_speed < 16)"
                        }
                    ],
					"on_entry": [
						"@s bd:stop_knock_resistance",
						"@s bd:in_fall"
		            ]
                },
				"land": {
					"animations": ["kissy_knock_time", "kissy_knock_time2"],
                    "transitions": [{
                            "fall2": "!query.is_on_ground && (query.ground_speed > 16) && query.any_animation_finished"
                        }, {
                            "default": "query.is_on_ground && query.all_animations_finished"
                        }
                    ],
					"on_entry": [
						"/effect @s slowness 4 100 true",
						"@s bd:knock_when_hit",
						"/playanimation @s animation.kissy_missy_bd.land_sound bd 1"
		            ]
                },
				"fall2": {
					"animations": ["kissy_knock_time2"],
					"transitions": [{
                            "land": "query.is_on_ground && (query.ground_speed < 16)"
                        }, {
                            "default": "query.all_animations_finished"
                        }
                    ]
				}
            }
        },
		"controller.animation.kissy_chase": {
		    "initial_state": "default",
		    "states": {
		        "default": {
		            "transitions": [{
		                    "is_player": "query.has_target ? (query.target -> q.has_any_family('player')) : 0"
		                }
		            ]
		        },
		        "is_player": {
		            "on_entry": [
						"/music play mob.kissy_missy.chase 1 1 loop"
		            ],
					"on_exit": [
						"/music stop 1.5"
		            ],
					"transitions": [{
		                    "default": "return query.has_target ? !(query.target -> q.has_any_family('player')) : query.is_alive;"
		                }, {
		                    "is_dead": "!query.is_alive"
		                }
		            ]
		        },
				"is_dead": {
					"on_entry": [
						"/music stop 1.5"
		            ],
					"transitions": [{
		                    "default": "query.is_alive"
		                }
		            ]
		        }
		    }
		},
		"controller.animation.kissy_chase_speed": {
		    "initial_state": "default",
		    "states": {
		        "default": {
					"on_entry": [
                        "variable.random_speed = math.round(math.random(0,3));"
                    ],
		            "transitions": [{
		                    "is_mob": "query.has_target ? (query.target -> q.ground_speed >= 7) : 0"
		                }, {
		                    "is_player": "(query.has_target && variable.random_speed == 0) ? (query.target -> (q.is_sprinting && !query.is_on_ground)) : 0"
		                }, {
		                    "is_player2": "(query.has_target && variable.random_speed == 1) ? (query.target -> (q.is_sprinting && !query.is_on_ground)) : 0"
		                }, {
		                    "is_player3": "(query.has_target && variable.random_speed == 2) ? (query.target -> (q.is_sprinting && !query.is_on_ground)) : 0"
		                }, {
		                    "is_player4": "(query.has_target && variable.random_speed == 3) ? (query.target -> (q.is_sprinting && !query.is_on_ground)) : 0"
		                }, {
		                    "player_low_health": "query.has_target ? (query.target -> query.health <= 5) : 0"
		                }
		            ]
		        },
		        "is_mob": {
		            "on_entry": [
						"/effect @s speed 60 1 true"
		            ],
					"on_exit": [
						"/effect @s speed 0 0 true"
		            ],
					"transitions": [{
		                    "default": "return query.has_target ? (query.target -> q.ground_speed < 1) : 0;"
		                }, {
		                    "player_low_health": "query.has_target ? (query.target -> query.health <= 5) : 0"
		                }
		            ]
		        },
				"is_player": {
		            "on_entry": [
						"/effect @s speed 1 1 true"
		            ],
					"transitions": [{
		                    "default": "return query.has_target ? !(query.target -> (q.is_sprinting && !query.is_on_ground)) : 0;"
		                }, {
		                    "player_low_health": "query.has_target ? (query.target -> query.health <= 5) : 0"
		                }
		            ]
		        },
				"is_player2": {
		            "on_entry": [
						"/effect @s speed 1 2 true"
		            ],
					"transitions": [{
		                    "default": "return query.has_target ? !(query.target -> (q.is_sprinting && !query.is_on_ground)) : 0;"
		                }, {
		                    "player_low_health": "query.has_target ? (query.target -> query.health <= 5) : 0"
		                }
		            ]
		        },
				"is_player3": {
		            "on_entry": [
						"/effect @s speed 1 3 true"
		            ],
					"transitions": [{
		                    "default": "return query.has_target ? !(query.target -> (q.is_sprinting && !query.is_on_ground)) : 0;"
		                }, {
		                    "player_low_health": "query.has_target ? (query.target -> query.health <= 5) : 0"
		                }
		            ]
		        },
				"is_player4": {
		            "on_entry": [
						"/effect @s speed 0 0 true"
		            ],
					"transitions": [{
		                    "default": "return query.has_target ? !(query.target -> (q.is_sprinting && !query.is_on_ground)) : 0;"
		                }, {
		                    "player_low_health": "query.has_target ? (query.target -> query.health <= 5) : 0"
		                }
		            ]
		        },
				"player_low_health": {
					"animations": ["kissy_speed2"],
		            "on_entry": [
						"/effect @s speed 100 2 true"
		            ],
					"on_exit": [
						"/effect @s speed 0 0 true"
		            ],
					"transitions": [{
		                    "default": "return query.has_target ? (query.target -> query.health >= 10) : query.is_alive;"
		                }
		            ]
		        }
		    }
		},
		"controller.animation.kissy_chet": {
            "states": {
				"default": {
					"transitions": [
						{
							"died": "query.health <= 1"
						}
					]
				},
				"died": {
					"on_entry": [
						"@s bd:to_dead2"
					]
				}
			}
        }
    }
}