package com.taiter.ce.Enchantments.Global;

import org.bukkit.entity.Damageable;
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.inventory.ItemStack;

import com.taiter.ce.EffectManager;
import com.taiter.ce.Enchantments.CEnchantment;



public class Vampire extends CEnchantment {

	int	damageHealFraction;
	int	cooldown;

	public Vampire(Application app) {
		super(app);		
		configEntries.put("DamageHealFraction", 2);
		configEntries.put("Cooldown", 100);
		triggers.add(Trigger.DAMAGE_GIVEN);
		this.resetMaxLevel();
	}

	@Override
	public void effect(Event e, ItemStack item, int level) {
		EntityDamageByEntityEvent event = (EntityDamageByEntityEvent) e;
		Player damager = (Player) event.getDamager();
		if (!getHasCooldown(damager)) {	
			double heal = (((Damageable) damager).getHealth() + (event.getDamage() / damageHealFraction));
			if ( heal < ((Damageable) damager).getMaxHealth()) 
				damager.setHealth(heal);
			 else 
				damager.setHealth(((Damageable) damager).getMaxHealth());
			int food = (int) (damager.getFoodLevel() + (event.getDamage() / damageHealFraction));
			if ( food < 20) 
				damager.setFoodLevel(food);
			 else 
				damager.setFoodLevel(20);
			EffectManager.playSound(damager.getLocation(), "ENTITY_PLAYER_BURP", 0.4f, 1f);
			generateCooldown(damager, cooldown);
		}
	}

	@Override
	public void initConfigEntries() {
		damageHealFraction = Integer.parseInt(getConfig().getString("Enchantments." + getOriginalName() + ".DamageHealFraction"));	
		cooldown = Integer.parseInt(getConfig().getString("Enchantments." + getOriginalName() + ".Cooldown"));	
	}
}