function init(hero) {
    hero.setName("Quake/\u00A76\u00A7lUHP\u00A7r");
    hero.setVersion("MCU");
    hero.setTier(3);
    
    hero.setHelmet("item.superhero_armor.piece.hair");
    hero.setChestplate("item.superhero_armor.piece.chestpiece");
    hero.setLeggings("item.superhero_armor.piece.pants");
    hero.setBoots("item.superhero_armor.piece.boots");
	
    hero.addPowers("uhp:inhuman_quake", "uhp:shield_issued_suit");

    hero.addAttribute("PUNCH_DAMAGE", 6.0, 0);
    hero.addAttribute("FALL_RESISTANCE", 6.0, 0);
    hero.addAttribute("SPRINT_SPEED", 0.25, 1);
    hero.addAttribute("KNOCKBACK", 1.0, 0);
    hero.addAttribute("WEAPON_DAMAGE", 2.0, 0);
    
    hero.addKeyBind("SONIC_WAVES", "Concussive Blasts", -1);
    hero.addKeyBind("AIM", "Quake Blast", 1);	
    hero.addKeyBind("GROUND_SMASH", "Earthquake", 2);
    hero.addKeyBind("EARTHQUAKE", "Ground Quake", 3);

    hero.setDefaultScale(0.99);
	
    hero.addAttributeProfile("CHARGE", chargeProfile);
	
    hero.setAttributeProfile(getAttributeProfile);
    hero.setModifierEnabled(isModifierEnabled);
	
    hero.setKeyBindEnabled(isKeyBindEnabled);
	
    hero.supplyFunction("canAim", canAim);

}

function getAttributeProfile(entity) {
    return entity.isSneaking() && !entity.getData("fiskheroes:aiming") ? "CHARGE" : null;

}

function chargeProfile(profile) {
    profile.addAttribute("PUNCH_DAMAGE", 6.5, 0);
    profile.addAttribute("FALL_RESISTANCE", 6.0, 0);
    profile.addAttribute("SPRINT_SPEED", 0.25, 1);
    profile.addAttribute("KNOCKBACK", 3.5, 0);
    profile.addAttribute("WEAPON_DAMAGE", 0.5, 0);
    profile.addAttribute("JUMP_HEIGHT", 5.5, 0);
}

function isModifierEnabled(entity, modifier) {
    switch (modifier.name()) {
    case "fiskheroes:propelled_flight":
        return entity.getData("fiskheroes:aiming") && entity.getData("fiskheroes:shooting");
    case "fiskheroes:leaping":
        return entity.getData("fiskheroes:aiming");
    default:
        return true;
    }
}

function isKeyBindEnabled(entity, keyBind) {
    switch (keyBind) {
	case "SONIC_WAVES":
        return entity.getData("fiskheroes:aiming");
    default:
        return true;
	}
}

function canAim(entity) {
    return true;
}