//self reminder, dont use unless for heavy testing.
{
  "format_version": "1.21.0",
  "minecraft:entity": {
    "description": {
      "identifier": "hostile:pillager",
      "spawn_category": "creature",
      "is_spawnable": true,
      "is_summonable": true,
      "properties": {
        "attack:state": {
          "client_sync": true,
          "type": "enum",
          "default": "idle",
          "values": [
            "idle",
            "basic1",
            "basic2",
            "basic3",
            "basic4",
            "charged",
            "block",
            "skill",
            "stun",
            "dash",
            "domain"
            ]
        },
        "attack:card": {
          "client_sync": true,
          "type": "enum",
          "default": "idle",
          "values": [
            "idle",
            "pounce"
            ]
        },
        "movement:state": {
          "client_sync": true,
          "type": "enum",
          "default": "walk",
          "values": [
            "walk",
            "sprint"
            ]
        },
        "damage:reduction_thorns": {
          "default": 10,
          "type": "int",
          "range": [-50, 50],
          "client_sync": true
        },
        "damage:reduction_contact": {
          "default": 10,
          "type": "int",
          "range": [0, 20],
          "client_sync": true
        },
        "damage:reduction_magic": {
          "default": 10,
          "type": "int",
          "range": [0, 20],
          "client_sync": true
        },
        "damage:reduction_projectile": {
          "default": 10,
          "type": "int",
          "range": [0, 20],
          "client_sync": true
        },
        "damage:reduction_attack": {
          "default": 10,
          "type": "int",
          "range": [0, 20],
          "client_sync": true
        }
      },
      "scripts": {
        "animate": [
          "crossbowre.skill_attack.ct",
          "crossbowre.charged_attack.ct",
          "crossbowre.ct",
          "2",
          "1",
          "0"
          ]
      },
      "animations": {
        "2": "animation.player.loopcmd",
        "1": "controller.animation.hasTarget.npc",
        "0": "controller.animation.combat.npc.basic",
        "playerCombat.dash": "animation.playerCombat.dash",
        "crossbowre.charged_attack.ct": "controller.animation.entity.crossbowre.charged_attack",
        "crossbowre.charged_attack": "animation.crossbowre.charged_attack",
        
        "crossbowre.skill_attack.ct": "controller.animation.entity.crossbowre.skill_attack",
        "crossbowre.skill_attack": "animation.crossbowre.skill_attack",
        "crossbowre.skill_attack.held": "animation.crossbowre.skill_attack.held",
        "crossbowre.skill_attack.shoot": "animation.crossbowre.skill_attack.shoot",
          
        "crossbowre.ct": "controller.animation.entity.crossbowre.ct",
        "crossbowre.basic1": "animation.crossbowre.basic1",
        "crossbowre.basic2": "animation.crossbowre.basic2",
        "crossbowre.basic3": "animation.crossbowre.basic3",
        "crossbowre.basic4": "animation.crossbowre.basic4"
      }
    },

    "component_groups": {
      "raid": {
        "minecraft:dweller": {
          "dwelling_type": "village",
          "dweller_role": "hostile",
          "update_interval_base": 60,
          "update_interval_variant": 40,
          "can_find_poi": false,
          "can_migrate": true,
          "first_founding_reward": 0
        },
        "minecraft:behavior.move_to_village": {
          "priority": 6,
          "speed_multiplier": 0.7
        },
        "minecraft:ambient_sound_interval": {
          "value": 2.0,
          "range": 4.0,
          "event_name": "ambient.in.raid"
        },
        "minecraft:persistent": {}
      },
      "set_home": {
        "minecraft:behavior.move_towards_home_restriction": {},
        "minecraft:home": {
          "restriction_radius": 15,
          "restriction_type": "all_movement",
          "home_block_list": [ "minecraft:campfire", "minecraft:bed" ]
        }
      },
      "arrow1": {
        "minecraft:timer": {
          "time": 0.15,
          "time_down_event": {
            "event": "projectile_remove"
          }
        },
        "minecraft:shooter": {
          "def": "projectile:arrowv2",
          "power": 1.25
        },
        "minecraft:behavior.ranged_attack": {
          "attack_interval": 0,
          "attack_radius": 25,
          "attack_radius_min": 5,
          "burst_interval": 0.0,
          "burst_shots": 1,
          "charge_charged_trigger": 0.125,
          "charge_shoot_trigger": 0.05,
          "ranged_fov": 90
        }
      },
      "fixcollision": {
        "minecraft:collision_box": {
          "width": 0.75,
          "height": 1.8
        }
      },
      "pillager": {
        "minecraft:can_join_raid": {
        },
        "minecraft:looked_at": {
          "set_target": "never",
          "search_radius": 16.0,
          "field_of_view": 60,
          "scale_fov_by_distance": false,
          "line_of_sight_obstruction_type": "collision",
          "look_at_locations": [
            { "location": "head" },
            { "location": "body" },
            {
              "location": "feet",
              "vertical_offset": 0.5
            }
          ],
          "looked_at_cooldown": [ 1, 2 ],
          "looked_at_event": {
            "event": "dash:side",
            "filter": "other"
          },
          "filters": {
            "all_of": [
              {
                "test": "has_tag",
                "operator": "!=",
                "subject": "other",
                "value": "stun"
              },
              {
                "any_of": [
                {
                  "test": "is_family",
                  "subject": "other",
                  "operator": "==",
                  "value": "pillager"
                }
                ]
              }
              ]
          }
        },
        "minecraft:type_family": {
          "family": [ "mob", "custom_mob", "hostile", "pillager", "humanoid", "illager" ]
        }
      },
      "hasBlock": {
        "minecraft:entity_sensor": {
          "relative_range": false,
          "subsensors": [
            {
              "cooldown": 5,
              "event": "defense:random",
              "event_filters": [
                {
                  "all_of": [
                    {
                      "test": "target_distance",
                      "operator": "<",
                      "value": 15
                    },
                    {
                      "test": "has_tag",
                      "subject": "self",
                      "operator": "!=",
                      "value": "stun"
                    },
                    {
                      "test": "has_tag",
                      "subject": "self",
                      "operator": "!=",
                      "value": "hasSkill"
                    },
                    {
                      "test": "has_tag",
                      "subject": "self",
                      "operator": "!=",
                      "value": "blocking"
                    },
                    {
                      "test": "has_tag",
                      "subject": "self",
                      "operator": "!=",
                      "value": "basicAttack"
                    },
                    {
                      "any_of": [
                    {
                      "test": "has_tag",
                      "subject": "target",
                      "operator": "==",
                      "value": "hasSkill"
                    },
                    {
                      "test": "has_tag",
                      "subject": "target",
                      "operator": "==",
                      "value": "blocking"
                    },
                    {
                      "test": "has_tag",
                      "subject": "target",
                      "operator": "==",
                      "value": "basicAttack"
                    }
                        ]
                    }
                    ]
                }
              ]
            }
            ]
        },
        "minecraft:timer": {
          "time": [0.5,1.0],
          "time_down_event": {
            "event": "attackTarget"
          }
        }
      },
      "chaseTarget": {
        "minecraft:entity_sensor": {
          "relative_range": false,
          "subsensors": [
            {
              "cooldown": 0.5,
              "event": "attackTarget",
              "event_filters": [
                {
                  "all_of": [
                    {
                      "test": "has_tag",
                      "subject": "self",
                      "operator": "==",
                      "value": "timer_0"
                    }
                    ]
                }
                ]
            }
            ]
        },
        "minecraft:behavior.move_around_target": {
          "destination_pos_spread_degrees": 360,
          "destination_position_range": [ 8, 20 ],
          "height_difference_limit": 5,
          "horizontal_search_distance": 2,
          "movement_speed": 1.0,
          "vertical_search_distance": 2
      },
        "minecraft:target_nearby_sensor": {
          "inside_range": 5,
          "outside_range": 6,
          "on_outside_range": {
            "event": "attackTarget"
          }
        }
      },
      "dashing": {
        "minecraft:timer": {
          "time": 0.75,
          "time_down_event": {
            "event": "chaseTarget"
          }
        }
      },
      "cooldownAttack": {
        "minecraft:behavior.move_around_target": {
          "destination_pos_spread_degrees": 360,
          "destination_position_range": [ 8, 20 ],
          "height_difference_limit": 5,
          "horizontal_search_distance": 2,
          "movement_speed": 1.0,
          "vertical_search_distance": 2
      },
        "minecraft:entity_sensor": {
          "relative_range": false,
          "subsensors": [
            {
              "cooldown": 0.5,
              "event": "hasTarget",
              "event_filters": [
                {
                  "all_of": [
                    {
                      "test": "has_tag",
                      "subject": "self",
                      "operator": "==",
                      "value": "timer_0"
                    }
                    ]
                }
                ]
            },
            {
              "cooldown": 5,
              "event": "defense:random",
              "event_filters": [
                {
                  "all_of": [
                    {
                      "test": "target_distance",
                      "operator": "<",
                      "value": 15
                    },
                    {
                      "test": "has_tag",
                      "subject": "self",
                      "operator": "!=",
                      "value": "stun"
                    },
                    {
                      "test": "has_tag",
                      "subject": "self",
                      "operator": "!=",
                      "value": "hasSkill"
                    },
                    {
                      "test": "has_tag",
                      "subject": "self",
                      "operator": "!=",
                      "value": "blocking"
                    },
                    {
                      "test": "has_tag",
                      "subject": "self",
                      "operator": "!=",
                      "value": "basicAttack"
                    },
                    {
                      "any_of": [
                    {
                      "test": "has_tag",
                      "subject": "target",
                      "operator": "==",
                      "value": "hasSkill"
                    },
                    {
                      "test": "has_tag",
                      "subject": "target",
                      "operator": "==",
                      "value": "blocking"
                    },
                    {
                      "test": "has_tag",
                      "subject": "target",
                      "operator": "==",
                      "value": "basicAttack"
                    }
                        ]
                    }
                    ]
                }
              ]
            }
            ]
        },
        "minecraft:target_nearby_sensor": {
          "outside_range": 21,
          "on_outside_range": {
            "event": "chaseTarget"
          }
        }
      },
      "hasTarget": {
        "minecraft:behavior.move_around_target": {
          "destination_pos_spread_degrees": 360,
          "destination_position_range": [ 5, 10 ],
          "height_difference_limit": 5,
          "horizontal_search_distance": 2,
          "movement_speed": 1.0,
          "vertical_search_distance": 2
      },
        "minecraft:target_nearby_sensor": {
          "inside_range": 20,
          "outside_range": 21,
          "on_inside_range": {
            "event": "attackTarget",
            "filters": {
              "all_of": [
                {
                  "test": "has_tag",
                  "subject": "self",
                  "operator": "!=",
                  "value": "stun"
                }
                ]
            }
          },
          "on_outside_range": {
            "event": "chaseTarget"
          }
        }
      },
      
      "rideable": {
        "minecraft:rideable": {
          "seat_count": 1,
          "passenger_max_width": 100.0,
          "pull_in_entities": false,
          "seats": [
            {
              "position": [ 0.0, 0.1,0.01 ],
              "min_rider_count": 1,
              "max_rider_count": 1,
              "rotate_rider_by": -180,
              "lock_rider_rotation": 0
            }
            ]
        }
      },
      
      "despawn": {
        "minecraft:instant_despawn": {}
      },
      
      
      //pull_knockbackComponentGroups(
       "golemKnock": {
        "minecraft:timer": {
          "time": 0.2,
          "time_down_event": {
            "event": "remove_kb"
          }
        },
        "minecraft:behavior.knockback_roar": {
          "priority": 0,
          "duration": 11.5,
          "attack_time": 0.05,
          "knockback_damage": 0,
          "knockback_horizontal_strength": 0.5,
          "knockback_vertical_strength": 2.5,
          "knockback_height_cap": 40,
          "knockback_range": 40,
          "knockback_filters": [
            {
              "all_of": [
                {
                  "test": "has_tag",
                  "subject": "other",
                  "operator": "!=",
                  "value":  "golemKnock"
                }
                ]
            }
            ],
          "damage_filters": {
            "test": "has_tag",
            "subject": "other",
            "operator": "==",
            "value":  "golemKnock"
          },
            "cooldown_time": 0.0
        }
      },
        //horizontal[
      "pullroar4_5": {
        "minecraft:timer": {
          "time": 0.1,
          "time_down_event": {
            "event": "remove_kb"
          }
        },
        "minecraft:behavior.knockback_roar": {
          "priority": 0,
          "duration": 0.25,
          "attack_time": 0.05,
          "knockback_damage": 0,
          "knockback_horizontal_strength": -4.5,
          "knockback_vertical_strength": 0.1,
          "knockback_range": 30,
          "knockback_filters": [
            {
              "all_of": [
                {
                  "test": "has_tag",
                  "subject": "other",
                  "operator": "==",
                  "value": "KBframes"
                }
                ]
            }
            ],
          "damage_filters": {
            "test": "has_tag",
            "subject": "other",
            "operator": "!=",
            "value": "KBframes"
          },
          "on_roar_end": {
            "event": "remove_kb"
            },
            "cooldown_time": 0.0
        }
      },
      "pullroar4": {
        "minecraft:timer": {
          "time": 0.1,
          "time_down_event": {
            "event": "remove_kb"
          }
        },
        "minecraft:behavior.knockback_roar": {
          "priority": 0,
          "duration": 0.25,
          "attack_time": 0.05,
          "knockback_damage": 0,
          "knockback_horizontal_strength": -4,
          "knockback_vertical_strength": 0.1,
          "knockback_range": 30,
          "knockback_filters": [
            {
              "all_of": [
                {
                  "test": "has_tag",
                  "subject": "other",
                  "operator": "==",
                  "value": "KBframes"
                }
                ]
            }
            ],
          "damage_filters": {
            "test": "has_tag",
            "subject": "other",
            "operator": "!=",
            "value": "KBframes"
          },
          "on_roar_end": {
            "event": "remove_kb"
            },
            "cooldown_time": 0.0
        }
      },
      "pullroar3_5": {
        "minecraft:timer": {
          "time": 0.1,
          "time_down_event": {
            "event": "remove_kb"
          }
        },
        "minecraft:behavior.knockback_roar": {
          "priority": 0,
          "duration": 0.25,
          "attack_time": 0.05,
          "knockback_damage": 0,
          "knockback_horizontal_strength": -3.5,
          "knockback_vertical_strength": 0.1,
          "knockback_range": 30,
          "knockback_filters": [
            {
              "all_of": [
                {
                  "test": "has_tag",
                  "subject": "other",
                  "operator": "==",
                  "value": "KBframes"
                }
                ]
            }
            ],
          "damage_filters": {
            "test": "has_tag",
            "subject": "other",
            "operator": "!=",
            "value": "KBframes"
          },
          "on_roar_end": {
            "event": "remove_kb"
            },
            "cooldown_time": 0.0
        }
      },
      "pullroar3": {
        "minecraft:timer": {
          "time": 0.1,
          "time_down_event": {
            "event": "remove_kb"
          }
        },
        "minecraft:behavior.knockback_roar": {
          "priority": 0,
          "duration": 0.25,
          "attack_time": 0.05,
          "knockback_damage": 0,
          "knockback_horizontal_strength": -3,
          "knockback_vertical_strength": 0.1,
          "knockback_range": 30,
          "knockback_filters": [
            {
              "all_of": [
                {
                  "test": "has_tag",
                  "subject": "other",
                  "operator": "==",
                  "value": "KBframes"
                }
                ]
            }
            ],
          "damage_filters": {
            "test": "has_tag",
            "subject": "other",
            "operator": "!=",
            "value": "KBframes"
          },
          "on_roar_end": {
            "event": "remove_kb"
            },
            "cooldown_time": 0.0
        }
      },
      "pullroar2_5": {
        "minecraft:timer": {
          "time": 0.1,
          "time_down_event": {
            "event": "remove_kb"
          }
        },
        "minecraft:behavior.knockback_roar": {
          "priority": 0,
          "duration": 0.25,
          "attack_time": 0.05,
          "knockback_damage": 0,
          "knockback_horizontal_strength": -2.5,
          "knockback_vertical_strength": 0.1,
          "knockback_range": 30,
          "knockback_filters": [
            {
              "all_of": [
                {
                  "test": "has_tag",
                  "subject": "other",
                  "operator": "==",
                  "value": "KBframes"
                }
                ]
            }
            ],
          "damage_filters": {
            "test": "has_tag",
            "subject": "other",
            "operator": "!=",
            "value": "KBframes"
          },
          "on_roar_end": {
            "event": "remove_kb"
            },
            "cooldown_time": 0.0
        }
      },
      "pullroar2": {
        "minecraft:timer": {
          "time": 0.1,
          "time_down_event": {
            "event": "remove_kb"
          }
        },
        "minecraft:behavior.knockback_roar": {
          "priority": 0,
          "duration": 0.25,
          "attack_time": 0.05,
          "knockback_damage": 0,
          "knockback_horizontal_strength": -2.0,
          "knockback_vertical_strength": 0.1,
          "knockback_range": 30,
          "knockback_filters": [
            {
              "all_of": [
                {
                  "test": "has_tag",
                  "subject": "other",
                  "operator": "==",
                  "value": "KBframes"
                }
                ]
            }
            ],
          "damage_filters": {
            "test": "has_tag",
            "subject": "other",
            "operator": "!=",
            "value": "KBframes"
          },
          "on_roar_end": {
            "event": "remove_kb"
            },
            "cooldown_time": 0.0
        }
      },
      "pullroar1_5": {
        "minecraft:timer": {
          "time": 0.1,
          "time_down_event": {
            "event": "remove_kb"
          }
        },
        "minecraft:behavior.knockback_roar": {
          "priority": 0,
          "duration": 0.25,
          "attack_time": 0.05,
          "knockback_damage": 0,
          "knockback_horizontal_strength": -1.5,
          "knockback_vertical_strength": 0.1,
          "knockback_range": 30,
          "knockback_filters": [
            {
              "all_of": [
                {
                  "test": "has_tag",
                  "subject": "other",
                  "operator": "==",
                  "value": "KBframes"
                }
                ]
            }
            ],
          "damage_filters": {
            "test": "has_tag",
            "subject": "other",
            "operator": "!=",
            "value": "KBframes"
          },
          "on_roar_end": {
            "event": "remove_kb"
            },
            "cooldown_time": 0.0
        }
      },
      "pullroar1": {
        "minecraft:timer": {
          "time": 0.1,
          "time_down_event": {
            "event": "remove_kb"
          }
        },
        "minecraft:behavior.knockback_roar": {
          "priority": 0,
          "duration": 0.25,
          "attack_time": 0.05,
          "knockback_damage": 0,
          "knockback_horizontal_strength": -1.0,
          "knockback_vertical_strength": 0.1,
          "knockback_range": 30,
          "knockback_filters": [
            {
              "all_of": [
                {
                  "test": "has_tag",
                  "subject": "other",
                  "operator": "==",
                  "value": "KBframes"
                }
                ]
            }
            ],
          "damage_filters": {
            "test": "has_tag",
            "subject": "other",
            "operator": "!=",
            "value": "KBframes"
          },
          "on_roar_end": {
            "event": "remove_kb"
            },
            "cooldown_time": 0.0
        }
      },
      "pullroar0_5": {
        "minecraft:timer": {
          "time": 0.1,
          "time_down_event": {
            "event": "remove_kb"
          }
        },
        "minecraft:behavior.knockback_roar": {
          "priority": 0,
          "duration": 0.25,
          "attack_time": 0.05,
          "knockback_damage": 0,
          "knockback_horizontal_strength": -0.6,
          "knockback_vertical_strength": 0.1,
          "knockback_range": 30,
          "knockback_filters": [
            {
              "all_of": [
                {
                  "test": "has_tag",
                  "subject": "other",
                  "operator": "==",
                  "value": "KBframes"
                }
                ]
            }
            ],
          "damage_filters": {
            "test": "has_tag",
            "subject": "other",
            "operator": "!=",
            "value": "KBframes"
          },
          "on_roar_end": {
            "event": "remove_kb"
            },
            "cooldown_time": 0.0
        }
      },
        //]
      //)
      //knockbackComponentGroups(
        //horizontal[
      "roar4_5": {
        "minecraft:timer": {
          "time": 0.1,
          "time_down_event": {
            "event": "remove_kb"
          }
        },
        "minecraft:behavior.knockback_roar": {
          "priority": 0,
          "duration": 0.25,
          "attack_time": 0.05,
          "knockback_damage": 0,
          "knockback_horizontal_strength": 4.5,
          "knockback_vertical_strength": 0.1,
          "knockback_range": 30,
          "knockback_filters": [
            {
              "all_of": [
                {
                  "test": "has_tag",
                  "subject": "other",
                  "operator": "==",
                  "value": "KBframes"
                }
                ]
            }
            ],
          "damage_filters": {
            "test": "has_tag",
            "subject": "other",
            "operator": "!=",
            "value": "KBframes"
          },
          "on_roar_end": {
            "event": "remove_kb"
            },
            "cooldown_time": 0.0
        }
      },
      "roar4": {
        "minecraft:timer": {
          "time": 0.1,
          "time_down_event": {
            "event": "remove_kb"
          }
        },
        "minecraft:behavior.knockback_roar": {
          "priority": 0,
          "duration": 0.25,
          "attack_time": 0.05,
          "knockback_damage": 0,
          "knockback_horizontal_strength": 4,
          "knockback_vertical_strength": 0.1,
          "knockback_range": 30,
          "knockback_filters": [
            {
              "all_of": [
                {
                  "test": "has_tag",
                  "subject": "other",
                  "operator": "==",
                  "value": "KBframes"
                }
                ]
            }
            ],
          "damage_filters": {
            "test": "has_tag",
            "subject": "other",
            "operator": "!=",
            "value": "KBframes"
          },
          "on_roar_end": {
            "event": "remove_kb"
            },
            "cooldown_time": 0.0
        }
      },
      "roar3_5": {
        "minecraft:timer": {
          "time": 0.1,
          "time_down_event": {
            "event": "remove_kb"
          }
        },
        "minecraft:behavior.knockback_roar": {
          "priority": 0,
          "duration": 0.25,
          "attack_time": 0.05,
          "knockback_damage": 0,
          "knockback_horizontal_strength": 3.5,
          "knockback_vertical_strength": 0.1,
          "knockback_range": 30,
          "knockback_filters": [
            {
              "all_of": [
                {
                  "test": "has_tag",
                  "subject": "other",
                  "operator": "==",
                  "value": "KBframes"
                }
                ]
            }
            ],
          "damage_filters": {
            "test": "has_tag",
            "subject": "other",
            "operator": "!=",
            "value": "KBframes"
          },
          "on_roar_end": {
            "event": "remove_kb"
            },
            "cooldown_time": 0.0
        }
      },
      "roar3": {
        "minecraft:timer": {
          "time": 0.1,
          "time_down_event": {
            "event": "remove_kb"
          }
        },
        "minecraft:behavior.knockback_roar": {
          "priority": 0,
          "duration": 0.25,
          "attack_time": 0.05,
          "knockback_damage": 0,
          "knockback_horizontal_strength": 3,
          "knockback_vertical_strength": 0.1,
          "knockback_range": 30,
          "knockback_filters": [
            {
              "all_of": [
                {
                  "test": "has_tag",
                  "subject": "other",
                  "operator": "==",
                  "value": "KBframes"
                }
                ]
            }
            ],
          "damage_filters": {
            "test": "has_tag",
            "subject": "other",
            "operator": "!=",
            "value": "KBframes"
          },
          "on_roar_end": {
            "event": "remove_kb"
            },
            "cooldown_time": 0.0
        }
      },
      "roar2_5": {
        "minecraft:timer": {
          "time": 0.1,
          "time_down_event": {
            "event": "remove_kb"
          }
        },
        "minecraft:behavior.knockback_roar": {
          "priority": 0,
          "duration": 0.25,
          "attack_time": 0.05,
          "knockback_damage": 0,
          "knockback_horizontal_strength": 2.5,
          "knockback_vertical_strength": 0.1,
          "knockback_range": 30,
          "knockback_filters": [
            {
              "all_of": [
                {
                  "test": "has_tag",
                  "subject": "other",
                  "operator": "==",
                  "value": "KBframes"
                }
                ]
            }
            ],
          "damage_filters": {
            "test": "has_tag",
            "subject": "other",
            "operator": "!=",
            "value": "KBframes"
          },
          "on_roar_end": {
            "event": "remove_kb"
            },
            "cooldown_time": 0.0
        }
      },
      "roar2": {
        "minecraft:timer": {
          "time": 0.1,
          "time_down_event": {
            "event": "remove_kb"
          }
        },
        "minecraft:behavior.knockback_roar": {
          "priority": 0,
          "duration": 0.25,
          "attack_time": 0.05,
          "knockback_damage": 0,
          "knockback_horizontal_strength": 2.0,
          "knockback_vertical_strength": 0.1,
          "knockback_range": 30,
          "knockback_filters": [
            {
              "all_of": [
                {
                  "test": "has_tag",
                  "subject": "other",
                  "operator": "==",
                  "value": "KBframes"
                }
                ]
            }
            ],
          "damage_filters": {
            "test": "has_tag",
            "subject": "other",
            "operator": "!=",
            "value": "KBframes"
          },
          "on_roar_end": {
            "event": "remove_kb"
            },
            "cooldown_time": 0.0
        }
      },
      "roar1_5": {
        "minecraft:timer": {
          "time": 0.1,
          "time_down_event": {
            "event": "remove_kb"
          }
        },
        "minecraft:behavior.knockback_roar": {
          "priority": 0,
          "duration": 0.25,
          "attack_time": 0.05,
          "knockback_damage": 0,
          "knockback_horizontal_strength": 1.5,
          "knockback_vertical_strength": 0.1,
          "knockback_range": 30,
          "knockback_filters": [
            {
              "all_of": [
                {
                  "test": "has_tag",
                  "subject": "other",
                  "operator": "==",
                  "value": "KBframes"
                }
                ]
            }
            ],
          "damage_filters": {
            "test": "has_tag",
            "subject": "other",
            "operator": "!=",
            "value": "KBframes"
          },
          "on_roar_end": {
            "event": "remove_kb"
            },
            "cooldown_time": 0.0
        }
      },
      "roar1": {
        "minecraft:timer": {
          "time": 0.1,
          "time_down_event": {
            "event": "remove_kb"
          }
        },
        "minecraft:behavior.knockback_roar": {
          "priority": 0,
          "duration": 0.25,
          "attack_time": 0.05,
          "knockback_damage": 0,
          "knockback_horizontal_strength": 1.0,
          "knockback_vertical_strength": 0.1,
          "knockback_range": 30,
          "knockback_filters": [
            {
              "all_of": [
                {
                  "test": "has_tag",
                  "subject": "other",
                  "operator": "==",
                  "value": "KBframes"
                }
                ]
            }
            ],
          "damage_filters": {
            "test": "has_tag",
            "subject": "other",
            "operator": "!=",
            "value": "KBframes"
          },
          "on_roar_end": {
            "event": "remove_kb"
            },
            "cooldown_time": 0.0
        }
      },
      "roar0_5": {
        "minecraft:timer": {
          "time": 0.1,
          "time_down_event": {
            "event": "remove_kb"
          }
        },
        "minecraft:behavior.knockback_roar": {
          "priority": 0,
          "duration": 0.25,
          "attack_time": 0.05,
          "knockback_damage": 0,
          "knockback_horizontal_strength": 0.6,
          "knockback_vertical_strength": 0.1,
          "knockback_range": 30,
          "knockback_filters": [
            {
              "all_of": [
                {
                  "test": "has_tag",
                  "subject": "other",
                  "operator": "==",
                  "value": "KBframes"
                }
                ]
            }
            ],
          "damage_filters": {
            "test": "has_tag",
            "subject": "other",
            "operator": "!=",
            "value": "KBframes"
          },
          "on_roar_end": {
            "event": "remove_kb"
            },
            "cooldown_time": 0.0
        }
      },
        //]
      //)
      "movement_stop": {
      "minecraft:movement": {
        "value": 0.0
      }
      },
      "movement_walk": {
      "minecraft:movement": {
        "value": 0.2
      }
      },
      "movement_sprint": {
      "minecraft:movement": {
        "value": 0.4
      }
      },
      "body_rotation_enabled": {
        "minecraft:movement.basic": {
          "max_turn": 85
        }
      },
      "body_rotation_blocked": {
        "minecraft:movement.basic": {
          "max_turn": 0
        },
        "minecraft:body_rotation_blocked": {}
      },
      "kb_res": {
        "minecraft:knockback_resistance": {
          "value": 1.0
        }
      },
      "kb_enable": {
        "minecraft:knockback_resistance": {
          "value": 0.0
        }
      },
      "damage_iframes": {
        "minecraft:damage_sensor": {
          "triggers": [
            {
              "on_damage": {
                "event": "takingHit"
              },
              "deals_damage": false
            }
            ]
        }
      },
      "damage_sensor": {
      "minecraft:damage_sensor": {
        "triggers": [
          {
            "on_damage": {
              "event": "evadingDamage",
              "filters": {
                "all_of": [
                  {
                    "test": "has_tag",
                    "subject": "self",
                    "operator": "==",
                    "value": "autoDodge"
                  }
                  ]
              }
            },
          "deals_damage": false,
          "damage_multiplier": 0.0
          },
//reduction_attr[
//reduction_magic(
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"magic"},{"test": "int_property","domain": "damage:reduction_magic","subject": "self","operator": ">=","value": 20
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 2.0
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"magic"},{"test": "int_property","domain": "damage:reduction_magic","subject": "self","operator": "==","value": 19
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 1.9
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"magic"},{"test": "int_property","domain": "damage:reduction_magic","subject": "self","operator": "==","value": 18
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 1.8
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"magic"},{"test": "int_property","domain": "damage:reduction_magic","subject": "self","operator": "==","value": 17
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 1.7
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"magic"},{"test": "int_property","domain": "damage:reduction_magic","subject": "self","operator": "==","value": 16
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 1.6
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"magic"},{"test": "int_property","domain": "damage:reduction_magic","subject": "self","operator": "==","value": 15
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 1.5
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"magic"},{"test": "int_property","domain": "damage:reduction_magic","subject": "self","operator": "==","value": 14
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 1.4
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"magic"},{"test": "int_property","domain": "damage:reduction_magic","subject": "self","operator": "==","value": 13
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 1.3
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"magic"},{"test": "int_property","domain": "damage:reduction_magic","subject": "self","operator": "==","value": 12
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 1.2
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"magic"},{"test": "int_property","domain": "damage:reduction_magic","subject": "self","operator": "==","value": 11
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 1.1
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"magic"},{"test": "int_property","domain": "damage:reduction_magic","subject": "self","operator": "==","value": 10
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 1.0
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"magic"},{"test": "int_property","domain": "damage:reduction_magic","subject": "self","operator": "==","value": 9
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 0.9
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"magic"},{"test": "int_property","domain": "damage:reduction_magic","subject": "self","operator": "==","value": 8
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 0.8
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"magic"},{"test": "int_property","domain": "damage:reduction_magic","subject": "self","operator": "==","value": 7
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 0.7
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"magic"},{"test": "int_property","domain": "damage:reduction_magic","subject": "self","operator": "==","value": 6
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 0.6
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"magic"},{"test": "int_property","domain": "damage:reduction_magic","subject": "self","operator": "==","value": 5
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 0.5
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"magic"},{"test": "int_property","domain": "damage:reduction_magic","subject": "self","operator": "==","value": 4
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 0.4
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"magic"},{"test": "int_property","domain": "damage:reduction_magic","subject": "self","operator": "==","value": 3
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 0.3
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"magic"},{"test": "int_property","domain": "damage:reduction_magic","subject": "self","operator": "==","value": 2
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 0.2
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"magic"},{"test": "int_property","domain": "damage:reduction_magic","subject": "self","operator": "<=","value": 1
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 0.1
          },
//)
//reduction_thorns(
          {
            "on_damage": {
              "event": "takingHitProj",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"thorns"},{"test": "int_property","domain": "damage:reduction_thorns","subject": "self","operator": ">=","value": 20
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 2.0
          },
          {
            "on_damage": {
              "event": "takingHitProj",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"thorns"},{"test": "int_property","domain": "damage:reduction_thorns","subject": "self","operator": "==","value": 19
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 1.9
          },
          {
            "on_damage": {
              "event": "takingHitProj",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"thorns"},{"test": "int_property","domain": "damage:reduction_thorns","subject": "self","operator": "==","value": 18
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 1.8
          },
          {
            "on_damage": {
              "event": "takingHitProj",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"thorns"},{"test": "int_property","domain": "damage:reduction_thorns","subject": "self","operator": "==","value": 17
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 1.7
          },
          {
            "on_damage": {
              "event": "takingHitProj",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"thorns"},{"test": "int_property","domain": "damage:reduction_thorns","subject": "self","operator": "==","value": 16
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 1.6
          },
          {
            "on_damage": {
              "event": "takingHitProj",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"thorns"},{"test": "int_property","domain": "damage:reduction_thorns","subject": "self","operator": "==","value": 15
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 1.5
          },
          {
            "on_damage": {
              "event": "takingHitProj",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"thorns"},{"test": "int_property","domain": "damage:reduction_thorns","subject": "self","operator": "==","value": 14
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 1.4
          },
          {
            "on_damage": {
              "event": "takingHitProj",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"thorns"},{"test": "int_property","domain": "damage:reduction_thorns","subject": "self","operator": "==","value": 13
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 1.3
          },
          {
            "on_damage": {
              "event": "takingHitProj",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"thorns"},{"test": "int_property","domain": "damage:reduction_thorns","subject": "self","operator": "==","value": 12
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 1.2
          },
          {
            "on_damage": {
              "event": "takingHitProj",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"thorns"},{"test": "int_property","domain": "damage:reduction_thorns","subject": "self","operator": "==","value": 11
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 1.1
          },
          {
            "on_damage": {
              "event": "takingHitProj",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"thorns"},{"test": "int_property","domain": "damage:reduction_thorns","subject": "self","operator": "==","value": 10
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 1.0
          },
          {
            "on_damage": {
              "event": "takingHitProj",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"thorns"},{"test": "int_property","domain": "damage:reduction_thorns","subject": "self","operator": "==","value": 9
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 0.9
          },
          {
            "on_damage": {
              "event": "takingHitProj",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"thorns"},{"test": "int_property","domain": "damage:reduction_thorns","subject": "self","operator": "==","value": 8
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 0.8
          },
          {
            "on_damage": {
              "event": "takingHitProj",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"thorns"},{"test": "int_property","domain": "damage:reduction_thorns","subject": "self","operator": "==","value": 7
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 0.7
          },
          {
            "on_damage": {
              "event": "takingHitProj",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"thorns"},{"test": "int_property","domain": "damage:reduction_thorns","subject": "self","operator": "==","value": 6
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 0.6
          },
          {
            "on_damage": {
              "event": "takingHitProj",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"thorns"},{"test": "int_property","domain": "damage:reduction_thorns","subject": "self","operator": "==","value": 5
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 0.5
          },
          {
            "on_damage": {
              "event": "takingHitProj",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"thorns"},{"test": "int_property","domain": "damage:reduction_thorns","subject": "self","operator": "==","value": 4
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 0.4
          },
          {
            "on_damage": {
              "event": "takingHitProj",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"thorns"},{"test": "int_property","domain": "damage:reduction_thorns","subject": "self","operator": "==","value": 3
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 0.3
          },
          {
            "on_damage": {
              "event": "takingHitProj",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"thorns"},{"test": "int_property","domain": "damage:reduction_thorns","subject": "self","operator": "==","value": 2
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 0.2
          },
          {
            "on_damage": {
              "event": "takingHitProj",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"thorns"},{"test": "int_property","domain": "damage:reduction_thorns","subject": "self","operator": "<=","value": 1
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 0.1
          },
//)
//reduction_projectile(
          {
            "on_damage": {
              "event": "takingHitProj",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"projectile"},{"test": "int_property","domain": "damage:reduction_projectile","subject": "self","operator": ">=","value": 20
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 2.0
          },
          {
            "on_damage": {
              "event": "takingHitProj",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"projectile"},{"test": "int_property","domain": "damage:reduction_projectile","subject": "self","operator": "==","value": 19
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 1.9
          },
          {
            "on_damage": {
              "event": "takingHitProj",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"projectile"},{"test": "int_property","domain": "damage:reduction_projectile","subject": "self","operator": "==","value": 18
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 1.8
          },
          {
            "on_damage": {
              "event": "takingHitProj",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"projectile"},{"test": "int_property","domain": "damage:reduction_projectile","subject": "self","operator": "==","value": 17
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 1.7
          },
          {
            "on_damage": {
              "event": "takingHitProj",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"projectile"},{"test": "int_property","domain": "damage:reduction_projectile","subject": "self","operator": "==","value": 16
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 1.6
          },
          {
            "on_damage": {
              "event": "takingHitProj",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"projectile"},{"test": "int_property","domain": "damage:reduction_projectile","subject": "self","operator": "==","value": 15
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 1.5
          },
          {
            "on_damage": {
              "event": "takingHitProj",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"projectile"},{"test": "int_property","domain": "damage:reduction_projectile","subject": "self","operator": "==","value": 14
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 1.4
          },
          {
            "on_damage": {
              "event": "takingHitProj",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"projectile"},{"test": "int_property","domain": "damage:reduction_projectile","subject": "self","operator": "==","value": 13
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 1.3
          },
          {
            "on_damage": {
              "event": "takingHitProj",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"projectile"},{"test": "int_property","domain": "damage:reduction_projectile","subject": "self","operator": "==","value": 12
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 1.2
          },
          {
            "on_damage": {
              "event": "takingHitProj",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"projectile"},{"test": "int_property","domain": "damage:reduction_projectile","subject": "self","operator": "==","value": 11
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 1.1
          },
          {
            "on_damage": {
              "event": "takingHitProj",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"projectile"},{"test": "int_property","domain": "damage:reduction_projectile","subject": "self","operator": "==","value": 10
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 1.0
          },
          {
            "on_damage": {
              "event": "takingHitProj",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"projectile"},{"test": "int_property","domain": "damage:reduction_projectile","subject": "self","operator": "==","value": 9
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 0.9
          },
          {
            "on_damage": {
              "event": "takingHitProj",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"projectile"},{"test": "int_property","domain": "damage:reduction_projectile","subject": "self","operator": "==","value": 8
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 0.8
          },
          {
            "on_damage": {
              "event": "takingHitProj",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"projectile"},{"test": "int_property","domain": "damage:reduction_projectile","subject": "self","operator": "==","value": 7
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 0.7
          },
          {
            "on_damage": {
              "event": "takingHitProj",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"projectile"},{"test": "int_property","domain": "damage:reduction_projectile","subject": "self","operator": "==","value": 6
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 0.6
          },
          {
            "on_damage": {
              "event": "takingHitProj",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"projectile"},{"test": "int_property","domain": "damage:reduction_projectile","subject": "self","operator": "==","value": 5
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 0.5
          },
          {
            "on_damage": {
              "event": "takingHitProj",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"projectile"},{"test": "int_property","domain": "damage:reduction_projectile","subject": "self","operator": "==","value": 4
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 0.4
          },
          {
            "on_damage": {
              "event": "takingHitProj",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"projectile"},{"test": "int_property","domain": "damage:reduction_projectile","subject": "self","operator": "==","value": 3
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 0.3
          },
          {
            "on_damage": {
              "event": "takingHitProj",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"projectile"},{"test": "int_property","domain": "damage:reduction_projectile","subject": "self","operator": "==","value": 2
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 0.2
          },
          {
            "on_damage": {
              "event": "takingHitProj",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"projectile"},{"test": "int_property","domain": "damage:reduction_projectile","subject": "self","operator": "<=","value": 1
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 0.1
          },
//)
//reduction_attack(
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"attack"},{"test": "int_property","domain": "damage:reduction_attack","subject": "self","operator": "==","value": 20
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 2.0
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"attack"},{"test": "int_property","domain": "damage:reduction_attack","subject": "self","operator": "==","value": 19
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 1.9
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"attack"},{"test": "int_property","domain": "damage:reduction_attack","subject": "self","operator": "==","value": 18
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 1.8
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"attack"},{"test": "int_property","domain": "damage:reduction_attack","subject": "self","operator": "==","value": 17
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 1.7
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"attack"},{"test": "int_property","domain": "damage:reduction_attack","subject": "self","operator": "==","value": 16
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 1.6
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"attack"},{"test": "int_property","domain": "damage:reduction_attack","subject": "self","operator": "==","value": 15
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 1.5
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"attack"},{"test": "int_property","domain": "damage:reduction_attack","subject": "self","operator": "==","value": 14
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 1.4
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"attack"},{"test": "int_property","domain": "damage:reduction_attack","subject": "self","operator": "==","value": 13
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 1.3
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"attack"},{"test": "int_property","domain": "damage:reduction_attack","subject": "self","operator": "==","value": 12
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 1.2
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"attack"},{"test": "int_property","domain": "damage:reduction_attack","subject": "self","operator": "==","value": 11
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 1.1
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"attack"},{"test": "int_property","domain": "damage:reduction_attack","subject": "self","operator": "==","value": 10
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 1.0
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"attack"},{"test": "int_property","domain": "damage:reduction_attack","subject": "self","operator": "==","value": 9
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 0.9
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"attack"},{"test": "int_property","domain": "damage:reduction_attack","subject": "self","operator": "==","value": 8
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 0.8
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"attack"},{"test": "int_property","domain": "damage:reduction_attack","subject": "self","operator": "==","value": 7
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 0.7
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"attack"},{"test": "int_property","domain": "damage:reduction_attack","subject": "self","operator": "==","value": 6
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 0.6
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"attack"},{"test": "int_property","domain": "damage:reduction_attack","subject": "self","operator": "==","value": 5
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 0.5
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"attack"},{"test": "int_property","domain": "damage:reduction_attack","subject": "self","operator": "==","value": 4
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 0.4
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"attack"},{"test": "int_property","domain": "damage:reduction_attack","subject": "self","operator": "==","value": 3
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 0.3
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"attack"},{"test": "int_property","domain": "damage:reduction_attack","subject": "self","operator": "==","value": 2
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 0.2
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"attack"},{"test": "int_property","domain": "damage:reduction_attack","subject": "self","operator": "==","value": 1
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 0.1
          },
//)
//reduction_contact(
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"contact"},{"test": "int_property","domain": "damage:reduction_contact","subject": "self","operator": ">=","value": 20
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 2.0
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"contact"},{"test": "int_property","domain": "damage:reduction_contact","subject": "self","operator": "==","value": 19
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 1.9
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"contact"},{"test": "int_property","domain": "damage:reduction_contact","subject": "self","operator": "==","value": 18
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 1.8
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"contact"},{"test": "int_property","domain": "damage:reduction_contact","subject": "self","operator": "==","value": 17
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 1.7
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"contact"},{"test": "int_property","domain": "damage:reduction_contact","subject": "self","operator": "==","value": 16
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 1.6
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"contact"},{"test": "int_property","domain": "damage:reduction_contact","subject": "self","operator": "==","value": 15
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 1.5
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"contact"},{"test": "int_property","domain": "damage:reduction_contact","subject": "self","operator": "==","value": 14
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 1.4
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"contact"},{"test": "int_property","domain": "damage:reduction_contact","subject": "self","operator": "==","value": 13
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 1.3
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"contact"},{"test": "int_property","domain": "damage:reduction_contact","subject": "self","operator": "==","value": 12
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 1.2
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"contact"},{"test": "int_property","domain": "damage:reduction_contact","subject": "self","operator": "==","value": 11
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 1.1
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"contact"},{"test": "int_property","domain": "damage:reduction_contact","subject": "self","operator": "==","value": 10
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 1.0
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"contact"},{"test": "int_property","domain": "damage:reduction_contact","subject": "self","operator": "==","value": 9
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 0.9
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"contact"},{"test": "int_property","domain": "damage:reduction_contact","subject": "self","operator": "==","value": 8
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 0.8
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"contact"},{"test": "int_property","domain": "damage:reduction_contact","subject": "self","operator": "==","value": 7
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 0.7
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"contact"},{"test": "int_property","domain": "damage:reduction_contact","subject": "self","operator": "==","value": 6
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 0.6
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"contact"},{"test": "int_property","domain": "damage:reduction_contact","subject": "self","operator": "==","value": 5
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 0.5
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"contact"},{"test": "int_property","domain": "damage:reduction_contact","subject": "self","operator": "==","value": 4
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 0.4
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"contact"},{"test": "int_property","domain": "damage:reduction_contact","subject": "self","operator": "==","value": 3
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 0.3
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"contact"},{"test": "int_property","domain": "damage:reduction_contact","subject": "self","operator": "==","value": 2
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 0.2
          },
          {
            "on_damage": {
              "event": "takingHit",
              "filters": {
                "all_of": [
                  {"test":"has_damage","subject":"self","operator":"==","value":"contact"},{"test": "int_property","domain": "damage:reduction_contact","subject": "self","operator": "<=","value": 1
                  }
                  ]
              }
            },
          "deals_damage": true,
          "damage_multiplier": 0.1
          }
//)]
          ]
        }
      }
    },

    "components": {
        "minecraft:dweller": {
          "dwelling_type": "village",
          "dweller_role": "hostile",
          "update_interval_base": 60,
          "update_interval_variant": 40,
          "can_find_poi": false,
          "can_migrate": true,
          "first_founding_reward": 0
        },
        "minecraft:behavior.move_to_village": {
          "priority": 6,
          "speed_multiplier": 0.7
        },
      "minecraft:behavior.panic": {
        "priority": 3,
        "speed_multiplier": 1.0
      },
      "minecraft:behavior.random_stroll": {
        "priority": 17,
        "xz_dist": 2,
        "y_dist": 2,
        "speed_multiplier": 1.0
      },
      "minecraft:attack": {
        "damage": 0
      },
      "minecraft:behavior.fire_at_target": {
        "projectile_def": "minecraft:breeze_wind_charge_projectile",
        "priority": 2,
        "filters": {
          "all_of": [
            { "test": "is_navigating", "value": false }
          ]
        },
        "attack_range": [ 9, 20 ],
        "attack_cooldown": 99.0,
        "pre_shoot_delay": 10.75,
        "post_shoot_delay": 10.2,
        "ranged_fov": 90.0,
        "owner_anchor": 2,
        "owner_offset": [ 0.0, 0.3, 0.0 ],
        "target_anchor": 0,
        "target_offset": [ 0.0, 0.5, 0.0 ]
      },
      "minecraft:loot": {
        "table": "loot_tables/entities/illager_common.json"
      },
      "minecraft:behavior.hurt_by_target": {
        "priority": 2,
        "alert_same_type": true,
        "entity_types": [
          {
            "reevaluate_description": true,
            "must_see": true,
            "cooldown": 10,
            "max_dist": 20,
            "filters": [
              {
               "all_of": [
                 {
                   "test": "is_family", "subject": "other", "operator": "!=", "value": "illager"
                 }
                 ]
              }
              ]
          }
          ]
      },
      "minecraft:health": {
        "value": 100
      },
      "minecraft:follow_range": {
        "value": 50
      },
      "minecraft:behavior.nearest_attackable_target": {
        "priority": 3,
        "must_see": true,
        "reselect_targets": true,
        "within_radius": 30,
        "must_see_forget_duration": 100.0,
        "entity_types": [
          {
            "filters": {
              "any_of": [
              {
                "any_of": [
                  {
                    "test": "is_family",
                    "subject": "other",
                    "operator": "==",
                    "value": "player"
                  },
                  {
                    "test": "is_family",
                    "subject": "other",
                    "operator": "==",
                    "value": "villager"
                  },
                  {
                    "test": "is_family",
                    "subject": "other",
                    "operator": "==",
                    "value": "irongolem"
                  },
                  {
                    "test": "is_family",
                    "subject": "other",
                    "operator": "==",
                    "value": "undead"
                  }
                  ]
              }
                ]
            },
            "max_dist": 50
          }
        ]
      },
      "minecraft:movement.basic": {},
      "minecraft:navigation.walk": {
        "is_amphibious": true,
        "can_pass_doors": true,
        "can_walk": true,
        "can_break_doors": false
      },
      "minecraft:jump.static": {},
      "minecraft:can_climb": {},
      
      //vanillaComponents(
      "minecraft:experience_reward": {
        "on_death": "Math.Min(query.player_level * 7, 100)"
      },
      "minecraft:is_hidden_when_invisible": {
      },
      "minecraft:collision_box": {
        "width": 0.75,
        "height": 1.8
      },
      "minecraft:can_climb": {
      },
      "minecraft:movement": {
        "value": 0.0
      },
      "minecraft:hurt_on_condition": {
        "damage_conditions": [
          {
            "filters": {
              "test": "in_lava",
              "subject": "self",
              "operator": "==",
              "value": true
            },
            "cause": "lava",
            "damage_per_tick": 4
          }
        ]
      },
      "minecraft:attack": {
        "damage": 0
      },
      "minecraft:breathable": {
        "total_supply": 15,
        "suffocate_time": -1,
        "inhale_time": 3.75,
        "generates_bubbles": false
      },
      "minecraft:nameable": {
        "always_show": false,
        "allow_name_tag_renaming": true
      },
      "minecraft:physics": {
      },
      "minecraft:pushable": {
      },
      "minecraft:conditional_bandwidth_optimization": {
      },
      "minecraft:block_climber": {}
      //)
    },

    "events": {
      "add_raid": {
        "add": {
          "component_groups": [
            "raid"
            ]
        }
      },
      "dash:front": {
        "randomize": [
          {
            "weight": 30
          },
          {
            "weight": 70,
            "sequence": [
              {
                "queue_command": {
                  "command": [
                    "scoreboard players set @s kbHori 15",
                    "scoreboard players set @s kbVerti 1"
                    ]
                }
              },
              {
                "queue_command": {
                  "command": [
                    "execute as @s[scores={stun=0}] run scriptevent dash:front"
                    ]
                }
              }
              ],
             "filters": {
               "test": "target_distance",
               "operator": ">",
               "value": 19
             }
          }
          ]
      },
      "dash:side": {
        "queue_command": {
          "command": [
            "execute as @s if entity @e[r=20,tag=dev] at @s run say §aDash Side"
          ]
        },
        "randomize": [
          {
            "weight": 1,
            "sequence": [
              {
                "queue_command": {
                  "command": [
                    "execute as @s at @e[tag=dev] run say I dashed, left(dash:side)",
                    "scoreboard players set @s kbHori 5",
                    "scoreboard players set @s kbVerti 1"
                    ]
                }
              },
              {
                "queue_command": {
                  "command": [
                    "execute as @s[scores={stun=0}] run scriptevent dash:left"
                    ]
                }
              }
              ]
          },
          {
            "weight": 1,
            "sequence": [
              {
                "queue_command": {
                  "command": [
                    "execute as @s at @e[tag=dev] run say I dashed, right(dash:side)",
                    "scoreboard players set @s kbHori 5",
                    "scoreboard players set @s kbVerti 1"
                    ]
                }
              },
              {
                "queue_command": {
                  "command": [
                    "execute as @s[scores={stun=0}] run scriptevent dash:right"
                    ]
                }
              }
              ]
          }
          ]
      },
      //REMINDER:Whatever you add in the list for projectile_remove, add it for cooldownAttack
      "projectile_remove": {
        "remove": {
          "component_groups": [
            "arrow1"
            ]
        }
      },
      "arrow1": {
        "add": {
          "component_groups": [
            "arrow1"
            ]
        }
      },
      "become:pillager": {
        "sequence": [
          {
            "queue_command": {
              "command": [
                "tag @s add team:illager",
                "event entity @s set:home"
                ]
            }
          },
          {
            "add": {
              "component_groups": [
                "pillager"
                ]
            }
          }
          ]
      },
      
      "defense:random": {
        "set_property": {
          "attack:state": "idle"
        },
        "queue_command": {
          "command": [
            "scoreboard players set @s combatTag -1",
            "scoreboard players set @s block 0",
            "execute as @s if entity @e[r=20,tag=dev] at @s run say §aDefenseRandom"
          ]
        },
        "remove": {
          "component_groups": [
            "cooldownAttack",
            "hasBlock",
            "chaseTarget",
            "hasTarget"
            ]
        },
        "randomize": [
          {
            "weight": 2,
            "sequence": [
              {
                "add": {
                  "component_groups": [
                    "dashing"
                    ]
                },
                "queue_command": {
                  "command": [
                    "execute as @s at @e[tag=dev] run say I dashed, right(defense:random)",
                    "scoreboard players set @s kbHori 20",
                    "scoreboard players set @s kbVerti 1"
                    ]
                }
              },
              {
                "queue_command": {
                  "command": [
                    "execute as @s[scores={stun=0}] run scriptevent dash:back"
                    ]
                }
              }
              ]
          },
          {
            "weight": 2,
            "sequence": [
              {
                "add": {
                  "component_groups": [
                    "dashing"
                    ]
                },
                "queue_command": {
                  "command": [
                    "execute as @s at @e[tag=dev] run say I dashed, left(defense:random)",
                    "scoreboard players set @s kbHori 30",
                    "scoreboard players set @s kbVerti 1"
                    ]
                }
              },
              {
                "queue_command": {
                  "command": [
                    "execute as @s[scores={stun=0}] run scriptevent dash:left"
                    ]
                }
              }
              ]
          },
          {
            "weight": 1,
            "queue_command": {
              "command": [
                "execute as @s at @e[tag=dev] run say Blocking(defense:random)",
                "scoreboard players set @s block 1",
                "event entity @s movement:stop"
                ]
            },
            "add": {
              "component_groups": [
                "hasBlock"
                ]
            },
            "set_property": {
              "attack:state": "block"
            },
              "filters": {
                "test": "target_distance",
                "operator": "<",
                "value": 8
              }
          }
          ],
        "filters": [
          {
            "all_of": [
              {
                "test": "has_tag",
                "subject": "self",
                "operator": "!=",
                "value": "blocking"
              },
              {
                "test": "has_tag",
                "subject": "self",
                "operator": "!=",
                "value": "stun"
              },
              {
                "test": "has_tag",
                "subject": "self",
                "operator": "!=",
                "value": "dashing"
              }
              ]
          }
          ]
      },
      "chaseTarget": {
        "set_property": {
          "attack:state": "idle"
        },
        "queue_command": {
          "command": [
            "scoreboard players set @s block 0",
            "scoreboard players set @s combatTag -1",
            "execute as @s if entity @e[r=20,tag=dev] at @s run say §cchaseTarget"
          ]
        },
        "remove": {
          "component_groups": [
            "hasTarget",
            "dashing",
            "hasBlock",
            "movement_stop",
            "movement_walk"
            ]
        },
        "randomize": [
          {
            "weight": 2,
            "add": {
              "component_groups": [
                "chaseTarget"
                ]
            },
            "queue_command": {
              "command": [
                "scoreboard players random @s timer 10 40",
                "execute as @s at @e[tag=dev] run say I am sprinting§la(chaseTarget)",
                "event entity @s[tag=hasTarget] movement:sprint"
                ]
            },
            "set_property": {
              "movement:state": "sprint"
            }
          },
          {
            "weight": 0.75,
            "add": {
              "component_groups": [
                "dashing"
                ]
            },
            "queue_command": {
              "command": [
                "execute as @s at @e[tag=dev] run say I dash back(chaseTarget)",
                "event entity @s[tag=hasTarget] movement:sprint"
                ]
            },
            "sequence": [
              {
                "queue_command": {
                  "command": [
                    "scoreboard players set @s kbHori 25",
                    "scoreboard players set @s kbVerti 2"
                    ]
                }
              },
              {
                "queue_command": {
                  "command": [
                    "execute as @s[scores={stun=0}] run scriptevent dash:back"
                    ]
                }
              }
              ],
             "filters": {
               "test": "target_distance",
               "operator": "<",
               "value": 8
             }
          }
          ]
      },
      "home:set": {
        "add": {
          "component_groups": [
            "set_home"
            ]
        },
        "filters": [{"all_of":[{"test":"has_target","subject":"self","value":false}]}]
      },
      "cooldownAttack": {
        "queue_command": {
          "command": [
            "event entity @s[tag=!hasTarget] home:set",
            "scoreboard players set @s block 0",
            "event entity @s projectile_remove",
            "scoreboard objectives add timer dummy",
            "scoreboard players random @s timer 10 60",
            "scoreboard players set @s[tag=hasTarget] combatTag 40",
            "execute as @s if entity @e[r=20,tag=dev] at @s run say §fCooldownAttack"
            ]
        },
        "set_property": {
          "attack:state": "idle",
          "attack:card": "idle"
        },
        "add": {
          "component_groups": [
            "cooldownAttack"
            ]
        }
      },
      "attackTarget": {
        "queue_command": {
          "command": [
            "event entity @s[scores={spawnCD=..19}] cooldownAttack",
            "scoreboard players set @s block 0",
            "event entity @s invincibility:off",
            "scoreboard players set @s combatTag -1",
            "execute as @s if entity @e[r=20,tag=dev] at @s run say §bAttackTarget"
          ]
        },
        "sequence": [
          {
            "set_property": {
              "attack:state": "idle"
            },
            "remove": {
              "component_groups": [
                "hasTarget",
                "chaseTarget",
                "hasBlock",
                "cooldownAttack"
                ]
            },
            "queue_command": {
              "command": [
                "execute as @s at @e[tag=dev] run say Attacking a Target(attackTarget)",
                "event entity @s movement:walk"
                ]
            }
          },
          {
            "randomize": [
              {
                "weight": 0.5,
                "set_property": {
                  "attack:state": "basic1"
                },
                "queue_command": {
                  "command": [
                    "execute as @p[tag=dev1] at @s run say basic1"
                    ]
                }
              },
              {
                "weight": 0.5,
                "set_property": {
                  "attack:state": "skill"
                },
                "queue_command": {
                  "command": [
                    "execute as @p[tag=dev1] at @s run say skill"
                    ]
                }
              },
              {
                "weight": 0.5,
                "set_property": {
                  "attack:state": "charged"
                },
                "queue_command": {
                  "command": [
                    "execute as @p[tag=dev1] at @s run say charged"
                    ]
                }
              },
              {
                "weight": 1.5,
                "set_property": {
                  "attack:state": "idle"
                },
                "queue_command": {
                  "command": [
                    "event entity @s defense:random"
                    ]
                }
              },
              {
                "weight": 1,
                "set_property": {
                  "attack:state": "charged"
                },
                "filters": [
                  {
                    "all_of": [
                      {
                        "test": "has_tag",
                        "subject": "target",
                        "operator": "==",
                        "value": "blocking"
                      }
                      ]
                  }
                  ],
                "queue_command": {
                  "command": [
                    "execute as @p[tag=dev1] at @s run say charged"
                    ]
                }
              }
              ]
          }
          ]
      },
      "hasTarget": {
        "add": {
          "component_groups": [
            "hasTarget"
            ]
        },
        "remove": {
          "component_groups": [
            "cooldownAttack",
            "dashing",
            "hasBlock",
            "chaseTarget",
            "set_home"
            ]
        },
        "queue_command": {
          "command": [
            "scoreboard players set @s combatTag -1",
            "execute as @s at @e[tag=dev] run say Found a Target(hasTarget)",
            "event entity @s movement:walk"
            ]
        }
      },
      "rideable": {
        "add": {
          "component_groups": [
            "rideable"
            ]
        }
      },
      "ridedisable": {
        "remove": {
          "component_groups": [
            "rideable"
            ]
        }
      },
      
      "despawn": {
        "add": {
          "component_groups": [
            "despawn"
            ]
        }
      },
      
      "attack_card:idle": {
        "set_property": {
          "attack:card": "idle"
        }
      },
      "attack_state:stun": {
        "set_property": {
          "attack:state": "stun"
        }
      },
      "attack_state:idle": {
        "set_property": {
          "attack:state": "idle"
        }
      },
      "attack_state:block": {
        "set_property": {
          "attack:state": "block"
        }
      },
      "attack_state:basic1": {
        "set_property": {
          "attack:state": "basic1"
        }
      },
      "attack_state:basic2": {
        "set_property": {
          "attack:state": "basic2"
        }
      },
      "attack_state:basic3": {
        "set_property": {
          "attack:state": "basic3"
        }
      },
      "attack_state:basic4": {
        "set_property": {
          "attack:state": "basic4"
        }
      },
      "attack_state:charged": {
        "set_property": {
          "attack:state": "charged"
        }
      },
      "attack_state:skill": {
        "set_property": {
          "attack:state": "skill"
        }
      },
      "attack_state:domain": {
        "set_property": {
          "attack:state": "domain"
        }
      },
      
      "remove_kb": {
        "sequence": [
          {
            "queue_command": {
              "command": [
                "tag @e remove KBframes"
                ]
            }
          },
          {
            "remove": {
              "component_groups": [
                "roar0_5",
                "roar1",
                "roar1_5",
                "roar2",
                "roar2_5",
                "roar3",
                "roar3_5",
                "roar4",
                "roar4_5",
                "pullroar0_5",
                "pullroar1",
                "pullroar1_5",
                "pullroar2",
                "pullroar2_5",
                "pullroar3",
                "pullroar3_5",
                "pullroar4",
                "pullroar4_5",
                 "golemKnock"
                ]
            }
          }
          ]
      },
      //pull_knockbackEvents(
       "golemKnock": {
        "queue_command": {
          "command": [
             "tag @s add golemKnock"
            ]
        },
        "add": {
          "component_groups": [
             "golemKnock"
            ]
        }
      },
      //horizontal[
      "pullroar4_5": {
        "add": {
          "component_groups": [
            "pullroar4_5"
            ]
        }
      },
      "pullroar4": {
        "add": {
          "component_groups": [
            "pullroar4"
            ]
        }
      },
      "pullroar3_5": {
        "add": {
          "component_groups": [
            "pullroar3_5"
            ]
        }
      },
      "pullroar3": {
        "add": {
          "component_groups": [
            "pullroar3"
            ]
        }
      },
      "pullroar2_5": {
        "add": {
          "component_groups": [
            "pullroar2_5"
            ]
        }
      },
      "pullroar2": {
        "add": {
          "component_groups": [
            "pullroar2"
            ]
        }
      },
      "pullroar1_5": {
        "add": {
          "component_groups": [
            "pullroar1_5"
            ]
        }
      },
      "pullroar1": {
        "add": {
          "component_groups": [
            "pullroar1"
            ]
        }
      },
      "pullroar0_5": {
        "add": {
          "component_groups": [
            "pullroar0_5"
            ]
        }
      },
      //]
      //)
      //knockbackEvents(
      //horizontal[
      "roar4_5": {
        "add": {
          "component_groups": [
            "roar4_5"
            ]
        }
      },
      "roar4": {
        "add": {
          "component_groups": [
            "roar4"
            ]
        }
      },
      "roar3_5": {
        "add": {
          "component_groups": [
            "roar3_5"
            ]
        }
      },
      "roar3": {
        "add": {
          "component_groups": [
            "roar3"
            ]
        }
      },
      "roar2_5": {
        "add": {
          "component_groups": [
            "roar2_5"
            ]
        }
      },
      "roar2": {
        "add": {
          "component_groups": [
            "roar2"
            ]
        }
      },
      "roar1_5": {
        "add": {
          "component_groups": [
            "roar1_5"
            ]
        }
      },
      "roar1": {
        "add": {
          "component_groups": [
            "roar1"
            ]
        }
      },
      "roar0_5": {
        "add": {
          "component_groups": [
            "roar0_5"
            ]
        }
      },
      //]
      //)
      
      "movement:sprint": {
        "queue_command": {
          "command": [
            "execute as @s at @e[tag=dev] run say §aI am Sprinting(movement)"
            ]
        },
        "remove": {
          "component_groups": [
            "movement_walk",
            "movement_stop"
            ]
        },
        "add": {
          "component_groups": [
            "movement_sprint"
            ]
        },
        "set_property": {
          "movement:state": "sprint"
        }
      },
      "movement:walk": {
        "queue_command": {
          "command": [
            "execute as @s at @e[tag=dev] run say §eI am Walking(movement)"
            ]
        },
        "add": {
          "component_groups": [
            "movement_walk"
            ]
        },
        "remove": {
          "component_groups": [
            "movement_sprint",
            "movement_stop"
            ]
        },
        "set_property": {
          "movement:state": "walk"
        }
      },
      "movement:stop": {
        "queue_command": {
          "command": [
            "execute as @s at @e[tag=dev] run say §cI am Idle(movement)"
            ]
        },
        "add": {
          "component_groups": [
            "movement_stop"
            ]
        },
        "remove": {
          "component_groups": [
            "movement_sprint",
            "movement_walk"
            ]
        }
      },
      "body_rotation:blocked": {
        "add": {
          "component_groups": [
            "body_rotation_blocked"
            ]
        }
      },
      "body_rotation:enabled": {
        "add": {
          "component_groups": [
            "body_rotation_enabled"
            ]
        },
        "remove": {
          "component_groups": [
            "body_rotation_blocked"
            ]
        }
      },
      "kb:resistance": {
        "add": {
          "component_groups": [
            "kb_res"
            ]
        },
        "remove": {
          "component_groups": [
            "kb_enable"
            ]
        }
      },
      "no_kb:resistance": {
        "remove": {
          "component_groups": [
            "kb_res"
            ]
        },
        "add": {
          "component_groups": [
            "kb_enable"
            ]
        }
      },
      "invincibility:off": {
        "remove": {
          "component_groups": [
            "damage_iframes"
            ]
        },
        "add": {
          "component_groups": [
            "damage_sensor"
            ]
        }
      },
      "invincibility:on": {
        "add": {
          "component_groups": [
            "damage_iframes"
            ]
        },
        "remove": {
          "component_groups": [
            "damage_sensor"
            ]
        }
      },
      "takingHitProj": {
        "sequence": [
          {
            "queue_command": {
              "command": [
                "scoreboard players add @s[tag=!sunImmune] stun 10",
                "scoreboard players add @s takingHit 1"
                ]
            }
          }
          ]
      },
      "takingHit": {
        "sequence": [
          {
            "queue_command": {
              "command": [
                "scoreboard players add @s takingHit 1"
                ]
            }
          }
          ]
      },
      "evadingDamage": {
        "sequence": [
          {
            "queue_command": {
              "command": [
                "scoreboard players add @s evadingDamage 1"
                ]
            }
          }
          ]
      },
      "minecraft:entity_spawned": {
        "sequence": [
          {
            "queue_command": {
              "command": [
                "event entity @s home:set",
                "event entity @s become:pillager",
                "scoreboard players set @s spawnCD 0",
                "scoreboard players set @s stun 10",
                "scoreboard players set @s combatTag -1",
                "scoreboard players set @s damageReduction 100",
                "function setScoreboardObjectives",
                "effect @s weakness infinite 255 true"
                ]
            }
          },
          {
            "add": {
              "component_groups": [
                "movement_walk",
                "hasTarget",
                "damage_sensor",
                "body_rotation_enabled",
                "golem"
                ]
            }
          },
          {
            "queue_command": {
              "command": [
                "scoreboard players set @s bluntRes 15",
                "scoreboard players set @s slashRes 10",
                "scoreboard players set @s magicRes 7",
                "scoreboard players set @s pierceRes 18",
                "scoreboard players set @s projectileRes 15"
                ]
            }
          }
          ]
      }
    }
  }
}