function init(hero) {
    hero.setName("Soldier Boy");
    hero.setTier(8);
    
    hero.setHelmet("Mask");
    hero.setChestplate("Chestplate");
    hero.setLeggings("Leggings");
    hero.setBoots("Boots");
    
    hero.addPowers("bfp:soldier_physiology", "fiskheroes:retractable_shield", "bfp:super_strength");
    hero.addAttribute("FALL_RESISTANCE", 1, 1);
    hero.addAttribute("PUNCH_DAMAGE", 25.0, 0);
    hero.addAttribute("SPRINT_SPEED", 0.5, 1);
    hero.addAttribute("BASE_SPEED_LEVELS", 1.0, 0);


    hero.addKeyBind("CHARGED_BEAM", "Nuclear Beam", 1);
    hero.addKeyBind("SUPER_SPEED", "key.superSpeed", 2);
    hero.addKeyBind("SHIELD", "Toggle Shield", 3);
    hero.addKeyBind("CHARGED_PUNCH", "Super Punch", 4);
    hero.addKeyBind("GROUND_SMASH", "Ground Smash", 5);

    hero.addAttributeProfile("PUNCH", punchProfile);
    hero.addAttributeProfile("BLUNT", bluntProfile);
    hero.setAttributeProfile(getAttributeProfile);
    hero.setHasProperty(hasProperty);
    hero.setHasPermission(hasPermission);
}

function punchProfile(profile) {
    profile.inheritDefaults();
    profile.addAttribute("PUNCH_DAMAGE", 30, 0);
    profile.addAttribute("KNOCKBACK", 30.0, 0);
}

function bluntProfile(profile) {
    profile.inheritDefaults();
    profile.addAttribute("PUNCH_DAMAGE", 25, 0);
    profile.addAttribute("BASE_SPEED", 0, 1);
}

function getAttributeProfile(entity) {
    return entity.getData("fiskheroes:punchmode") ? "PUNCH" : "BLUNT";
}

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

function hasPermission(entity, permission) {
    return permission == "USE_SHIELD";
}
