//self reminder, dont use unless for heavy testing.
{
  "format_version": "1.21.0",
  "minecraft:entity": {
    "description": {
      "identifier": "hostile:test_entityb",
      "spawn_category": "creature",
      "is_spawnable": true,
      "is_summonable": true,
      "properties": {
        "attack:state": {
          "client_sync": true,
          "type": "enum",
          "default": "idle",
          "values": [
            "idle",
            "block",
            "basic1",
            "basic2",
            "basic3",
            "basic4",
            "charged",
            "skill",
            "stun",
            "dash",
            "domain"
            ]
        },
        "attack:card": {
          "client_sync": true,
          "type": "enum",
          "default": "idle",
          "values": [
            "idle",
            "twirlingpierce",
            "slash"
            ]
        },
        "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": [-50, 50],
          "client_sync": true
        },
        "damage:reduction_magic": {
          "default": 10,
          "type": "int",
          "range": [-50, 50],
          "client_sync": true
        },
        "damage:reduction_projectile": {
          "default": 10,
          "type": "int",
          "range": [-50, 50],
          "client_sync": true
        },
        "damage:reduction_attack": {
          "default": 10,
          "type": "int",
          "range": [-50, 50],
          "client_sync": true
        }
      },
      "scripts": {
        "animate": [
          "rumiaex.skill_attack.ct",
          "card.slash.ct",
          "card.twirling_pierce.ct",
          "regular_sword.ct",
          "regular_sword.skill_attack.ct",
          "regular_sword.charged_attack.ct",
          "1",
          "0"
          ]
      },
      "animations": {
        "1": "controller.animation.hasTarget.npc",
        "0": "controller.animation.combat.npc.basic",
        "playerCombat.dash": "animation.playerCombat.dash",
        
        //regular_swordAnimations(
        "rumiaex.skill_attack.ct": "controller.animation.npc.rumiaex.skill_attack",
        "rumiaex.skill_attack": "animation.rumiaex.skill_attack",
        "rumiaex.skill_attack.release": "animation.rumiaex.skill_attack.release",
        "rumiaex.skill_attack.clash": "animation.rumiaex.skill_attack.clash",
          
        "card.slash.ct": "controller.animation.npc.card.slash.ct",
        "card.slash": "animation.card.slash",
        "card.twirling_pierce.ct": "controller.animation.npc.card.twirling_pierce.ct",
        "card.twirling_pierce": "animation.card.twirling_pierce",
        "card.twirling_pierce.hit": "animation.card.twirling_pierce.hit",
        
        "regular_sword.charged_attack.ct": "controller.animation.npc.regular_sword.charged_attack.ct",
        "regular_sword.charged": "animation.regular_sword.charged_attack",
        
        "regular_sword.skill_attack.ct": "controller.animation.npc.regular_sword.skill_attack.ct",
        "regular_sword.skill": "animation.regular_sword.skill_attack",
        "regular_sword.skill.hit": "animation.regular_sword.skill_attack.hit",
        
        "regular_sword.ct": "controller.animation.npc.regular_sword.ct",
        "regular_sword.basic1": "animation.regular_sword.basic1",
        "regular_sword.basic2": "animation.regular_sword.basic2",
        "regular_sword.basic3": "animation.regular_sword.basic3",
        "regular_sword.basic4": "animation.regular_sword.basic4"
        //)
      }
    },

    "component_groups": {
      "hasBlock": {
        "minecraft:entity_sensor": {
          "relative_range": false,
          "subsensors": [
            {
              "cooldown": 1,
              "event": "defense:random",
              "event_filters": [
                {
                  "all_of": [
                    {
                      "test": "target_distance",
                      "operator": "<",
                      "value": 6
                    },
                    {
                      "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.7],
          "time_down_event": {
            "event": "attackTarget"
          }
        }
      },
      "chaseTarget": {
        "minecraft:entity_sensor": {
          "relative_range": false,
          "subsensors": [
            {
              "cooldown": 1,
              "event": "defense:random",
              "event_filters": [
                {
                  "all_of": [
                    {
                      "test": "target_distance",
                      "operator": "<",
                      "value": 6
                    },
                    {
                      "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": {
          "inside_range": 2.5,
          "on_inside_range": {
            "event": "attackTarget"
          }
        }
      },
      "dashing": {
        "minecraft:timer": {
          "time": 0.75,
          "time_down_event": {
            "event": "chaseTarget"
          }
        }
      },
      "cooldownAttack": {
        "minecraft:entity_sensor": {
          "relative_range": false,
          "subsensors": [
            {
              "cooldown": 1,
              "event": "defense:random",
              "event_filters": [
                {
                  "all_of": [
                    {
                      "test": "target_distance",
                      "operator": "<",
                      "value": 6
                    },
                    {
                      "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": {
          "looping": true,
          "time": [0.25,0.75],
          "time_down_event": {
            "event": "hasTarget"
          }
        }
      },
      "hasTarget": {
        "minecraft:entity_sensor": {
          "relative_range": false,
          "subsensors": [
            {
              "cooldown": 1,
              "event": "defense:random",
              "event_filters": [
                {
                  "all_of": [
                    {
                      "test": "target_distance",
                      "operator": "<",
                      "value": 6
                    },
                    {
                      "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": {
          "inside_range": 2.0,
          "outside_range": 3.0,
          "on_inside_range": {
            "event": "attackTarget"
          },
          "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(
      "rumiaPull": {
        "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": -2.5,
          "knockback_vertical_strength": -2.5,
          "knockback_height_cap": 40,
          "knockback_range": 40,
          "knockback_filters": [
            {
              "all_of": [
                {
                  "test": "has_tag",
                  "subject": "other",
                  "operator": "!=",
                  "value": "rumiaPull"
                }
                ]
            }
            ],
          "damage_filters": {
            "test": "has_tag",
            "subject": "other",
            "operator": "==",
            "value": "rumiaPull"
          },
            "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.5
      }
      },
      "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:health": {
        "value": 250,
        "max": 250
      },
      "minecraft:follow_range": {
        "value": 30
      },
      "minecraft:behavior.nearest_attackable_target": {
        "priority": 3,
        "must_see": true,
        "reselect_targets": false,
        "within_radius": 15,
        "must_see_forget_duration": 100.0,
        "entity_types": [
          {
            "filters": {
              "any_of": [
              {
                "all_of": [
                  {
                    "test": "has_tag",
                    "subject": "other",
                    "operator": "!=",
                    "value": "team:red"
                  },
                  {
                    "test": "has_tag",
                    "subject": "self",
                    "operator": "==",
                    "value": "team:red"
                  }
                  ]
              },
              {
                "all_of": [
                  {
                    "test": "has_tag",
                    "subject": "other",
                    "operator": "!=",
                    "value": "team:blue"
                  },
                  {
                    "test": "has_tag",
                    "subject": "self",
                    "operator": "==",
                    "value": "team:blue"
                  }
                  ]
              },
              {
                "all_of": [
                  {
                    "test": "has_tag",
                    "subject": "other",
                    "operator": "!=",
                    "value": "team:yellow"
                  },
                  {
                    "test": "has_tag",
                    "subject": "self",
                    "operator": "==",
                    "value": "team:yellow"
                  }
                  ]
              },
              {
                "all_of": [
                  {
                    "test": "has_tag",
                    "subject": "self",
                    "operator": "!=",
                    "value": "team:yellow"
                  },
                  {
                    "test": "has_tag",
                    "subject": "self",
                    "operator": "!=",
                    "value": "team:red"
                  },
                  {
                    "test": "has_tag",
                    "subject": "self",
                    "operator": "!=",
                    "value": "team:blue"
                  },
                  {
                    "test": "is_family",
                    "subject": "other",
                    "operator": "!=",
                    "value": "misc"
                  }
                  ]
              }
                ]
            },
            "max_dist": 25
          }
        ]
      },
      "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": {},
      "minecraft:behavior.random_stroll": {
        "priority": 17,
        "speed_multiplier": 1.0
      },
      
      //vanillaComponents(
      "minecraft:experience_reward": {
        "on_death": "Math.Min(query.player_level * 7, 100)"
      },
      "minecraft:type_family": {
        "family": [ "mob", "custom_mob", "hostile" ]
      },
      "minecraft:is_hidden_when_invisible": {
      },
      "minecraft:loot": {
        "table": "loot_tables/empty.json"
      },
      "minecraft:collision_box": {
        "width": 0.6,
        "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:behavior.melee_attack": {
        "priority": 1,
        "cooldown_time": 500,
        "speed_multiplier": 1.0,
        "track_target": true
      },
      "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": {
        "push_towards_closest_space": true
      },
      "minecraft:pushable": {
        "is_pushable": false,
        "is_pushable_by_piston": true
      },
      "minecraft:conditional_bandwidth_optimization": {
      },
      "minecraft:block_climber": {}
      //)
    },

    "events": {
      "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": 1,
            "sequence": [
              {
                "queue_command": {
                  "command": [
                    "execute as @s at @e[tag=dev] run say I dashed, left(defense:random)",
                    "scoreboard players set @s kbHori 25"
                    ]
                }
              },
              {
                "queue_command": {
                  "command": [
                    "scriptevent dash:left"
                    ]
                }
              }
              ]
          },
          {
            "weight": 1,
            "sequence": [
              {
                "queue_command": {
                  "command": [
                    "execute as @s at @e[tag=dev] run say I dashed, right(defense:random)",
                    "scoreboard players set @s kbHori 25"
                    ]
                }
              },
              {
                "queue_command": {
                  "command": [
                    "scriptevent dash:right"
                    ]
                }
              }
              ]
          },
          {
            "weight": 1,
            "queue_command": {
              "command": [
                "execute as @s at @e[tag=dev] run say Blocking(defense:random)",
                "event entity @s movement:walk"
                ]
            },
            "add": {
              "component_groups": [
                "hasBlock"
                ]
            },
            "set_property": {
              "attack:state": "block"
            }
          }
          ]
      },
      "chaseTarget": {
        "set_property": {
          "attack:state": "idle"
        },
        "queue_command": {
          "command": [
            "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",
            "movement_stop",
            "movement_walk"
            ]
        },
        "randomize": [
          {
            "weight": 1,
            "add": {
              "component_groups": [
                "chaseTarget"
                ]
            },
            "queue_command": {
              "command": [
                "execute as @s at @e[tag=dev] run say I am sprinting(chaseTarget)",
                "event entity @s movement:sprint"
                ]
            },
            "set_property": {
              "movement:state": "sprint"
            }
          },
          {
            "weight": 2,
            "add": {
              "component_groups": [
                "dashing"
                ]
            },
            "queue_command": {
              "command": [
                "execute as @s at @e[tag=dev] run say I dashedupfront(chaseTarget)",
                "event entity @s movement:sprint"
                ]
            },
            "sequence": [
              {
                "queue_command": {
                  "command": [
                    "scoreboard players set @s kbHori 25",
                    "scoreboard players set @s kbVerti 2"
                    ]
                }
              },
              {
                "queue_command": {
                  "command": [
                    "scriptevent dash:front"
                    ]
                }
              }
              ]
          }
          ]
      },
      "cooldownAttack": {
        "queue_command": {
          "command": [
            "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": [
            "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": 1,
                "set_property": {
                  "attack:state": "basic1"
                }
              },
              {
                "weight": 1,
                "set_property": {
                  "attack:state": "skill"
                }
              },
              {
                "weight": 1,
                "set_property": {
                  "attack:state": "charged"
                }
              },
              {
                "weight": 5,
                "set_property": {
                  "attack:state": "charged"
                },
                "filters": [
                  {
                    "all_of": [
                      {
                        "test": "has_tag",
                        "subject": "target",
                        "operator": "==",
                        "value": "blocking"
                      }
                      ]
                  }
                  ]
              },
              {
                "weight": 1,
                "set_property": {
                  "attack:card": "slash"
                }
              },
              {
                "weight": 1,
                "set_property": {
                  "attack:card": "twirlingpierce"
                }
              }
              ]
          }
          ]
      },
      "hasTarget": {
        "add": {
          "component_groups": [
            "hasTarget"
            ]
        },
        "remove": {
          "component_groups": [
            "cooldownAttack",
            "dashing",
            "hasBlock",
            "chaseTarget"
            ]
        },
        "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[tag=hasTarget] movement:sprint",
            "event entity @s[tag=!hasTarget] movement:walk"
            ]
        }
      },
      "rideable": {
        "add": {
          "component_groups": [
            "rideable"
            ]
        }
      },
      "ridedisable": {
        "remove": {
          "component_groups": [
            "rideable"
            ]
        }
      },
      
      "despawn": {
        "add": {
          "component_groups": [
            "despawn"
            ]
        }
      },
      
      "attack_card:twirlingpierce": {
        "set_property": {
          "attack:card": "twirlingpierce"
        }
      },
      "attack_card:slash": {
        "set_property": {
          "attack:card": "slash"
        }
      },
      "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",
                "rumiaPull"
                ]
            }
          }
          ]
      },
      //pull_knockbackEvents(
      "rumiaPull": {
        "add": {
          "component_groups": [
            "rumiaPull"
            ]
        }
      },
      //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"
            ]
        }
      },
      "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": [
                "scoreboard players set @s damageReduction 100",
                "function setScoreboardObjectives",
                "effect @s weakness infinite 255 true"
                ]
            },
            "add": {
              "component_groups": [
                "movement_walk",
                "hasTarget",
                "body_rotation_enabled"
                ]
            }
          }
          ]
      }
    }
  }
}