function init(hero) {
    hero.setName("Gwen Tennyson");
    hero.setTier(3);
    
    hero.setHelmet("item.superhero_armor.piece.hair");
    hero.setChestplate("item.superhero_armor.piece.tunic");
    hero.setLeggings("item.superhero_armor.piece.pants");
    hero.setBoots("item.superhero_armor.piece.boots");
    
    hero.addPowers("pkg:anodite_empowerment", "pkg:mana_power");
    hero.addAttribute("PUNCH_DAMAGE", 12.0, 0);
	hero.addAttribute("WEAPON_DAMAGE", 2.5, 0);
    hero.addAttribute("JUMP_HEIGHT", 1.0, 0);
    hero.addAttribute("FALL_RESISTANCE", 11.0, 0);
    hero.addAttribute("SPRINT_SPEED", 0.10, 1);
    
    hero.addKeyBind("ENERGY_PROJECTION", "Mana Beam", 1);
    hero.addKeyBind("AIM", "key.gravityManip", 2);
    hero.addKeyBind("GRAVITY_MANIPULATION", "key.gravityManip", 2);
    hero.addKeyBind("TELEPORT", "key.teleport", 3);
    hero.addKeyBind("SHIELD", "Mana Shield", 4);
    hero.addKeyBind("TELEKINESIS", "Mana Telekinesis", 5);
    
    hero.setKeyBindEnabled(isKeyBindEnabled);
    hero.setHasProperty(hasProperty);
    hero.supplyFunction("canAim", canAim);

    hero.setDefaultScale(0.9);
    hero.setModifierEnabled(isModifierEnabled);
    hero.setKeyBindEnabled(isKeyBindEnabled);
    hero.setHasProperty(hasProperty);
}
function isKeyBindEnabled(entity, keyBind) {
    switch (keyBind) {
        case "ENERGY_PROJECTION":
            return !entity.getData("fiskheroes:gravity_manip");
        case "GRAVITY_MANIPULATION":
            return !entity.getData("fiskheroes:energy_projection");
        case "AIM":
            return !entity.getData("fiskheroes:energy_projection");
        default:
            return true;
    }
        if (entity.getData("fiskheroes:telekinesis")) {
        return keyBind == "TELEKINESIS" || keyBind == "AIM";
    }

    return keyBind != "TELEKINESIS" && keyBind != "AIM" || entity.getHeldItem().isEmpty();
}
function isModifierEnabled(entity, modifier) {
    return modifier.name() != "fiskheroes:arrow_catching" && modifier.name() != "fiskheroes:energy_projection" && modifier.name() != "fiskheroes:teleportation" || !entity.getData("fiskheroes:telekinesis");
}
function isKeyBindEnabled(entity, keyBind) {
    return keyBind != "ENERGY_PROJECTION" && keyBind != "TELEPORT" || !entity.getData("fiskheroes:telekinesis");
}
    function hasProperty(entity, property) {
        return property == "BREATHE_SPACE";
    }
    function canAim(entity) {
        return entity.getHeldItem().isEmpty() && entity.getData("fiskheroes:gravity_manip");
    }
