function init(hero) {
    hero.setName("Monster Girl");
    hero.setTier(1);
	hero.setVersion("\u00A7e\u00A7l\I\u00A7b\u00A7l\N\u00A7e\u00A7l\V\u00A7b\u00A7l\I\u00A7e\u00A7l\N\u00A7b\u00A7l\C\u00A7e\u00A7l\I\u00A7b\u00A7l\B\u00A7e\u00A7l\L\u00A7b\u00A7l\E\u00A7r")

    hero.setChestplate("Shirt");
    hero.setLeggings("Leggings");
    hero.setBoots("Shoes");

    hero.addPowers("mvh:inv_monstergirl");
    hero.addAttribute("FALL_RESISTANCE", 1, 1);
    hero.addAttribute("PUNCH_DAMAGE", -1, 0);
    hero.addAttribute("WEAPON_DAMAGE", 0.06, 1);
    hero.addAttribute("SPRINT_SPEED", 0.35, 1);
    hero.addAttribute("BASE_SPEED_LEVELS", 4.0, 0);
    hero.addAttribute("BASE_SPEED", 0.15, 1);

    hero.addKeyBind("BRUTETRANSFORMATION", "Monster Mode", 1);
    hero.addKeyBind("EARTHQUAKE", "key.earthquake", 3);
    hero.addKeyBind("GROUND_SMASH", "Ground Smash", 2);
    hero.addKeyBind("SUPER_SPEED", "Super Speed", 4)

    hero.addAttributeProfile("BRUTE", bruteProfile);
    hero.setAttributeProfile(getAttributeProfile);
    hero.setTierOverride(getTierOverride);
    hero.setDefaultScale(defaultScale);
    hero.setModifierEnabled(isModifierEnabled);
    hero.setKeyBindEnabled(isKeyBindEnabled);
}

function getTierOverride(entity) {
    return entity.getData("mvh:dyn/sizetransformation") ? 8 : 1;
}

function isModifierEnabled(entity, modifier) {
    switch (modifier.name()) {
    case "fiskheroes:leaping":
        return entity.getData("mvh:dyn/sizetransformation");
    case "fiskheroes:metal_skin":
        return entity.getData("mvh:dyn/sizetransformation");
    case "fiskheroes:fire_immunity":
        return entity.getData("mvh:dyn/sizetransformation");
    case "fiskheroes:damage_immunity":
        return entity.getData("mvh:dyn/sizetransformation");
    case "fiskheroes:projectile_immunity":
        return entity.getData("mvh:dyn/sizetransformation");
    case "fiskheroes:earthquake":
        return entity.getData("mvh:dyn/sizetransformation");
    case "fiskheroes:ground_smash":
        return entity.getData("mvh:dyn/sizetransformation");
    case "fiskheroes:super_speed":
        return entity.getData("mvh:dyn/sizetransformation");
    default:
        return true;
    }
}

function isKeyBindEnabled(entity, keyBind) {
    switch (keyBind) {
    case "SUPER_SPEED":
        return entity.getData("mvh:dyn/sizetransformation");
    case "GROUND_SMASH":
        return entity.getData("mvh:dyn/sizetransformation");
    case "EARTHQUAKE":
        return entity.getData("mvh:dyn/sizetransformation");    
    default:
        return true;
    }
}

function defaultScale(entity) {
    if (entity.getData('mvh:dyn/sizetransformation')) {
        return 1.5;
    }
    return 0.65;
}

function bruteProfile(profile) {
    profile.addAttribute("PUNCH_DAMAGE", 8.5, 0);
    profile.addAttribute("JUMP_HEIGHT", 2.0, 0);
    profile.addAttribute("FALL_RESISTANCE", 1, 1);
    profile.addAttribute("STEP_HEIGHT", 1, 0);
    profile.addAttribute("KNOCKBACK", 1.4, 0);
    profile.addAttribute("BASE_SPEED_LEVELS", 1.0, 0);
    profile.addAttribute("MAX_HEALTH", 4, 0);
}

function getAttributeProfile(entity) {
    return entity.getData("mvh:dyn/sizetransformation") ? "BRUTE" : null;
}