function init(hero) {
    hero.setName("Vibe");
    hero.setTier(3);
    
    hero.setHelmet("Glasses");
    hero.setChestplate("Jacket");
    hero.setLeggings("Pants");
    hero.setBoots("Boots");
    
    hero.addPowers("pkg:vibration");
    hero.addAttribute("PUNCH_DAMAGE", 5.0, 0);
    hero.addAttribute("FALL_RESISTANCE", 3.0, 0);
    hero.addAttribute("SPRINT_SPEED", 0.3, 1);
    hero.addAttribute("JUMP_HEIGHT", 1.0, 0);

    hero.addKeyBind("AIM", "key.aim", -1);
    hero.addKeyBind("AIM", "Vibe Blasts", 1);
    hero.addKeyBind("GUN_RELOAD", "key.reload", 2);
    hero.addKeyBind("TELEPORT", "key.teleport", 2);
    hero.addKeyBind("SONIC_WAVES", "Sonic Wave", 3);
    hero.addKeyBind("CHARGED_BEAM", "Vibrational Blasts", 4);

    hero.setHasProperty(hasProperty);
    hero.supplyFunction("canAim", canAim);
    hero.setKeyBindEnabled((entity, keyBind) => keyBind != "GUN_RELOAD" || entity.getHeldItem().isGun() && !entity.getData("fiskheroes:aiming"));
    hero.setHasPermission((entity, permission) => permission == "USE_GUN" || permission == "USE_GRAPPLING_GUN");
}

function canAim(entity) {
    return entity.getHeldItem().isEmpty();
}

function hasProperty(entity, property) {
    return property == "MASK_TOGGLE"
}