function init(hero) {
    hero.setName("Monster Girl");
	hero.setVersion("Serie");
    hero.setTier(1);

	hero.setHelmet("Hair");

    hero.addPowers("vhp:cursed_physiology");
	hero.addAttribute("WEAPON_DAMAGE", -1.0, 0);
	hero.addAttribute("FALL_RESISTANCE", 1.0, 1);
	hero.addAttribute("JUMP_HEIGHT", 3.0, 0);
    hero.addAttribute("PUNCH_DAMAGE", 8.5, 0);
	hero.addAttribute("KNOCKBACK", 1.0, 0);
	hero.addAttribute("SPRINT_SPEED", 0.20, 1);
	hero.addAttribute("IMPACT_DAMAGE", 0.25, 1);
	hero.addAttribute("STEP_HEIGHT", 0.5, 0);

    hero.addKeyBind("GROUND_SMASH", "key.groundSmash", 1);
    hero.addKeyBind("EARTHQUAKE", "Monster Tremor", 2);
	hero.addKeyBind("CURSED_TRANSFORM", "Cursed Transformation", 5);

	hero.setDefaultScale(defaultScale);
	hero.setTierOverride(getTierOverride);
	hero.addAttributeProfile("CURSED", cursedProfile);
	hero.addAttributeProfile("NORMAL", normalProfile);
    hero.setAttributeProfile(getAttributeProfile);
	hero.setKeyBindEnabled(isKeyBindEnabled);
	hero.setModifierEnabled(isModifierEnabled);
}

function getAttributeProfile(entity) {
    if (!entity.getData("vhp:dyn/curse")) {
        return "NORMAL";
    }
    
    return entity.getHealth() < 2 ? "CURSED" : null;
}

function getTierOverride(entity) {
    return entity.getData("vhp:dyn/curse") ? 7 : 1;
}

function cursedProfile(profile) {
	profile.inheritDefaults()
}

function isKeyBindEnabled(entity, keyBind) {
    switch (keyBind) {
    case "GROUND_SMASH":
        return entity.getData("vhp:dyn/curse") || entity.isBookPlayer();
    case "EARTHQUAKE":
        return entity.getData("vhp:dyn/curse") || entity.isBookPlayer();
    default:
        return true;
    }
}

function isModifierEnabled(entity, modifier) {
    if (modifier.name() != "fiskheroes:transformation" && modifier.name() != "fiskheroes:cooldown" && (!entity.getData("vhp:dyn/curse") || modifier.name() == "fiskheroes:flight" && entity.getData("vhp:dyn/curse_timer") < 1)) {
		return false;
	}
        
  
    switch (modifier.name()) {
    case "fiskheroes:ground_smash":
        return entity.getData("vhp:dyn/curse");
	case "fiskheroes:earthquake":
        return entity.getData("vhp:dyn/curse");
    default:
        return true;
    }
}

function normalProfile(profile) {
    profile.revokeAugments();
}

function defaultScale(entity) {
  
  if (entity.getData('vhp:dyn/curse')) {
    return 1.50;
  }
  return 0.80;
}