function init(hero) {
    hero.setName("Infinity Ultron/\u00A7d\u00A7lKNIGHTS\u00A7r");
    hero.setTier(10);
    
    hero.setHelmet("Helmet");
    hero.setChestplate("Chestplate");
    hero.setLeggings("Leggings");
    hero.setBoots("Boots");
    
    hero.addPowers("knights:infinity_suit");
    hero.addAttribute("PUNCH_DAMAGE", 30, 0);
    hero.addAttribute("WEAPON_DAMAGE", 20, 0);
    hero.addAttribute("JUMP_HEIGHT", 7, 0);
    hero.addAttribute("FALL_RESISTANCE", 150, 0);
    hero.addAttribute("IMPACT_DAMAGE", 15, 1);
    hero.addAttribute("SPRINT_SPEED", 1.5, 1);
    hero.addAttribute("BASE_SPEED_LEVELS", 3, 0);

    hero.addKeyBind("CHARGED_BEAM", "Concussion beams", 1);
    hero.addKeyBind("ENERGY_PROJECTION", "Energy projection", 2);
    hero.addKeyBind("AIM", "Energy projection", 2);
    hero.addKeyBind("SPELL_MENU", "Ergokinesis", 3);
    hero.addKeyBind("GRAVITY_MANIPULATION", "Anti Gravitokinesis", 4);
    hero.addKeyBind("NEXT", "Next", 5);


    hero.addKeyBind("INTANGIBILITY", "Multiversal transcendence", 1);
    hero.addKeyBindFunc("func_GIANT_MODE", giantModeKey, "Size Manipulation", 2);
    hero.addKeyBind("SHADOWDOME", "Reality Manipulation", 3);
    hero.addKeyBind("SUPER_SPEED", "Speed Manipulation", 4);

    hero.addAttributeProfile("GIANT_MODE", giantProfile);
    hero.setAttributeProfile(getAttributeProfile);
    hero.setKeyBindEnabled(isKeyBindEnabled);
    hero.setHasProperty(hasProperty);
}
function giantModeKey(player, manager) {
    var flag = player.getData("fiskheroes:dyn/giant_mode");
    manager.setData(player, "fiskheroes:dyn/giant_mode", !flag);
    manager.setData(player, "fiskheroes:size_state", flag ? -1 : 1);
    return true;
}

function giantProfile(profile) {
    profile.inheritDefaults();
    profile.addAttribute("PUNCH_DAMAGE", 36.0, 0);
}

function getAttributeProfile(entity) {
    return entity.getData("fiskheroes:dyn/giant_mode_timer") > 0 ? "GIANT_MODE" : null;
}

function cylce(entity, manager) {
    manager.setData(entity, domain + ":dyn/selecting", true);
    return true;
}
function giantModeKey(player, manager) {
    var flag = player.getData("fiskheroes:dyn/giant_mode");
    manager.setData(player, "fiskheroes:dyn/giant_mode", !flag);
    manager.setData(player, "fiskheroes:size_state", flag ? -1 : 1);
    return true;
}

function isKeyBindEnabled(entity, keyBind) {
    switch (keyBind) {
    case "AIM":
        return !entity.getData("fiskheroes:energy_projection");
    case "SPELL_MENU":
        return !entity.getData("fiskheroes:dyn/steeled") && !entity.getData("fiskheroes:gravity_manip");
    case "SUPER_SPEED":
        return entity.getData("fiskheroes:dyn/steeled");

    case "CHARGED_BEAM":
        return !entity.getData("fiskheroes:dyn/steeled") && !entity.getData("fiskheroes:energy_projection") && !entity.getData("fiskheroes:gravity_manip") && !entity.getData("fiskheroes:intangible") && !entity.getData("fiskheroes:dyn/giant_mode")
    case "ENERGY_PROJECTION":
        return !entity.getData("fiskheroes:dyn/steeled") && !entity.getData("fiskheroes:beam_charge") && !entity.getData("fiskheroes:gravity_manip") && !entity.getData("fiskheroes:intangible") && !entity.getData("fiskheroes:dyn/giant_mode")
    case "GRAVITY_MANIPULATION":
        return !entity.getData("fiskheroes:dyn/steeled") && !entity.getData("fiskheroes:energy_projection") && !entity.getData("beam_charge") && !entity.getData("fiskheroes:intangible") && !entity.getData("fiskheroes:dyn/giant_mode")
       

    case "NEXT":
        return !entity.getData("fiskheroes:beam_charge") && !entity.getData("fiskheroes:energy_projection") && !entity.getData("fiskheroes:gravity_manip") && !entity.getData("fiskheroes:intangible") &&  !entity.getData("fiskheroes:dyn/giant_mode") && !entity.getData("fiskheroes:lightsout")
    
        case "INTANGIBILITY":
            return entity.getData("fiskheroes:dyn/steeled") && !entity.getData("fiskheroes:beam_charge") && !entity.getData("fiskheroes:energy_projection") && !entity.getData("fiskheroes:gravity_manip") && !entity.getData("fiskheroes:dyn/giant_mode") && !entity.getData("fiskheroes:lightsout")   
        case "func_GIANT_MODE":
            return entity.getData("fiskheroes:dyn/steeled") && !entity.getData("fiskheroes:beam_charge") && !entity.getData("fiskheroes:energy_projection") && !entity.getData("fiskheroes:gravity_manip") && !entity.getData("fiskheroes:intangible") && !entity.getData("fiskheroes:lightsout")   
        case "SHADOWDOME":
            return entity.getData("fiskheroes:dyn/steeled") && !entity.getData("fiskheroes:beam_charge") && !entity.getData("fiskheroes:energy_projection") && !entity.getData("fiskheroes:gravity_manip") && !entity.getData("fiskheroes:dyn/giant_mode") && !entity.getData("fiskheroes:intangible")   
        case "SUPER_SPEED":
            return entity.getData("fiskheroes:dyn/steeled") && !entity.getData("fiskheroes:beam_charge") && !entity.getData("fiskheroes:energy_projection") && !entity.getData("fiskheroes:gravity_manip") && !entity.getData("fiskheroes:dyn/giant_mode") && !entity.getData("fiskheroes:lightsout")   


    default:
        return true;
    }
}

function hasProperty(entity, property) {
    return property == "BREATHE_SPACE";

}