package common.entity.npc;

import common.ai.EntityAIAvoidEntity;
import common.attributes.Attributes;
import common.entity.animal.EntityWolf;
import common.entity.types.EntityLiving;
import common.init.Items;
import common.item.ItemStack;
import common.rng.Random;
import common.world.World;
import common.world.AWorldServer;

public class EntityUndead extends EntityNPC
{
    public EntityUndead(World worldIn)
    {
        super(worldIn);
        this.tasks.addTask(3, new EntityAIAvoidEntity(this, EntityWolf.class, 6.0F, 1.0D, 1.2D));
    }

    protected void applyEntityAttributes()
    {
        super.applyEntityAttributes();
        this.getEntityAttribute(Attributes.MOVEMENT_SPEED).setBaseValue(0.25D);
    }
    
//    protected String getLivingSound()
//    {
//        return "mob.skeleton.say";
//    }
    
//    protected String getHurtSound()
//    {
//        return "mob.skeleton.hurt";
//    }
//    
//    protected String getDeathSound()
//    {
//        return "mob.skeleton.death";
//    }

    public void updateRidden()
    {
        super.updateRidden();

        if (this.vehicle instanceof EntityLiving)
        {
        	EntityLiving entitycreature = (EntityLiving)this.vehicle;
            this.yawOffset = entitycreature.yawOffset;
        }
    }
    
	public int getColor() {
		return 0xff6a00;
	}

//	public boolean isAggressive() {
//		return true;
//	}
//
//	public boolean isPeaceful() {
//		return false;
//	}

	public boolean isAggressive(Class<? extends EntityNPC> clazz) {
		return clazz == EntityElf.class || clazz == EntityHuman.class || clazz == EntityWoodElf.class;
	}

	public boolean isPeaceful(Class<? extends EntityNPC> clazz) {
		return clazz == EntityCultivator.class;
	}

//	public boolean canInfight(Alignment align) {
//		return true;
//	}
//
//	public boolean canMurder(Alignment align) {
//		return false;
//	}

//	public boolean canUseMagic() {
//		return false;
//	}

	public int getBaseHealth(Random rand) {
		return rand.range(12, 26);
	}

//	public int getBaseEnergy(Random rand) {
//		return 0;
//	}

    public float getHeightDeviationMin() {
    	return -0.2f;
    }

    public float getHeightDeviationMax() {
    	return 0.2f;
    }
    
    public float getSpeciesBaseSize() {
    	return 1.8f;
    }

	public Alignment getNaturalAlign() {
		return Alignment.EVIL;
	}

	public boolean getCanSpawnHere() {
		return !((AWorldServer)this.worldObj).isDaytime();
	}
    
//    public boolean canAmbush(EntityLiving entity) {
//    	return true;
//    }
    
    public boolean arePotionsInverted() {
        return true;
    }

	protected ItemStack pickItem() {
		return this.rand.chance(new ItemStack(Items.bow), null, 10);
	}
}
