package minefantasy.mf2.entity.mob;
import java.util.ArrayList;
import java.util.Random;
import net.minecraft.world.biome.BiomeGenBase;
import net.minecraftforge.common.BiomeManager;
import net.minecraftforge.common.BiomeManager.BiomeType;
import minefantasy.mf2.config.ConfigMobs;
import minefantasy.mf2.util.MFLogUtil;
public class DragonBreed
{
private static final ArrayList<DragonBreed>[]breeds = new ArrayList[]{new ArrayList<DragonBreed>(), new ArrayList<DragonBreed>(), new ArrayList<DragonBreed>(), new ArrayList<DragonBreed>(), new ArrayList<DragonBreed>()};
/* New System Breeds
* Red: Fire, plains and hills
* Green: Poison, swamps, forests and plains
* White: Frost, cold regions
* Black: Dire, nether
*
*/
public static DragonBreed YOUNGRED = new DragonBreed(0, "dragon_young", "red", "dragon_red", DragonBreath.fire).setCombat(ConfigMobs.youngdragonHP, 0.0F, 0F, ConfigMobs.youngdragonMD, 40, 200).setProjectile(ConfigMobs.youngdragonFD, ConfigMobs.youngdragonFT, 1000, 0.05F).register();
public static DragonBreed YOUNGWHITE = new DragonBreed(0, "dragon_young", "white", "dragon_frost", DragonBreath.frost).setCombat(ConfigMobs.youngdragonHP, 0.0F, 0F, ConfigMobs.youngdragonMD, 40, 200).setProjectile(ConfigMobs.youngdragonFD, ConfigMobs.youngdragonFT, 800, 0.05F).register();
public static DragonBreed YOUNGGREEN = new DragonBreed(0, "dragon_young", "green", "dragon_green", DragonBreath.poison).setCombat(ConfigMobs.youngdragonHP, 0.0F, 0F, ConfigMobs.youngdragonMD, 30, 100).setProjectile(ConfigMobs.youngdragonFD, ConfigMobs.youngdragonFT, 600, 0.05F).register();
public static DragonBreed RED = new DragonBreed(1, "dragon", "red", "dragon_red", DragonBreath.fire).setCombat(ConfigMobs.dragonHP, 2.0F, 0F, ConfigMobs.dragonMD, 40, 300).setProjectile(ConfigMobs.dragonFD, ConfigMobs.dragonFT, 500, 0.1F).register();
public static DragonBreed WHITE = new DragonBreed(1, "dragon", "white", "dragon_frost", DragonBreath.frost).setCombat(ConfigMobs.youngdragonHP, 2.0F, 0F, ConfigMobs.dragonMD, 40, 300).setProjectile(ConfigMobs.dragonFD, ConfigMobs.dragonFT, 400, 0.1F).register();
public static DragonBreed GREEN = new DragonBreed(1, "dragon", "green", "dragon_green", DragonBreath.poison).setCombat(ConfigMobs.dragonHP, 2.0F, 0F, ConfigMobs.dragonMD, 30, 200).setProjectile(ConfigMobs.dragonFD, ConfigMobs.dragonFT, 300, 0.1F).register();
public static DragonBreed REDM = new DragonBreed(2, "dragon_mature", "red", "dragon_red", DragonBreath.fire).setCombat(ConfigMobs.diredragonHP, 2.0F, 1F, ConfigMobs.diredragonMD, 40, 300).setProjectile(ConfigMobs.diredragonFD, ConfigMobs.diredragonFT, 400, 0.25F).register();
public static DragonBreed WHITEM = new DragonBreed(2, "dragon_mature", "white", "dragon_frost", DragonBreath.frost).setCombat(ConfigMobs.diredragonHP, 2.0F, 1F, ConfigMobs.diredragonMD, 40, 300).setProjectile(ConfigMobs.diredragonFD, ConfigMobs.diredragonFT, 300, 0.25F).register();
public static DragonBreed GREENM = new DragonBreed(2, "dragon_mature", "green", "dragon_green", DragonBreath.poison).setCombat(ConfigMobs.diredragonHP, 2.0F, 1F, ConfigMobs.diredragonMD, 30, 200).setProjectile(ConfigMobs.diredragonFD, ConfigMobs.diredragonFT, 200, 0.25F).register();
public static DragonBreed ELDERRED = new DragonBreed(3, "dragon_elder", "red", "dragon_red", DragonBreath.fire).setCombat(ConfigMobs.elderdragonHP, 2.0F, 2F, ConfigMobs.elderdragonMD, 40, 300).setProjectile(ConfigMobs.elderdragonFD, ConfigMobs.elderdragonFT, 400, 0.35F).register();
public static DragonBreed ELDERWHITE = new DragonBreed(3, "dragon_elder", "white", "dragon_frost", DragonBreath.frost).setCombat(ConfigMobs.elderdragonHP, 2.0F, 2F, ConfigMobs.elderdragonMD, 40, 300).setProjectile(ConfigMobs.elderdragonFD, ConfigMobs.elderdragonFT, 300, 0.35F).register();
public static DragonBreed ELDERGREEN = new DragonBreed(3, "dragon_elder", "green", "dragon_green", DragonBreath.poison).setCombat(ConfigMobs.elderdragonHP, 2.0F, 2F, ConfigMobs.elderdragonMD, 30, 200).setProjectile(ConfigMobs.elderdragonFD, ConfigMobs.elderdragonFT, 200, 0.35F).register();
public static DragonBreed ANCIENT = new DragonBreed(4, "dragon_ancient", "dire", "dragon_ancient", DragonBreath.fire).setCombat(ConfigMobs.ancientdragonHP, 2.0F, 5F, ConfigMobs.ancientdragonMD, 40, 300).setProjectile(ConfigMobs.ancientdragonFD, ConfigMobs.ancientdragonFT, 400, 1.0F).register();
public int tier = 0;
public String name = "dragon";
public String breedName = "red";
public DragonBreath rangedAttack;
public String tex = "dragonGreen";
public float health = 200;
public float regenRate = 0;
public float meleeDamage = 8;
public float fireDamage = 5;
public float pyro = 0.1F;
public int disengageChance = 200;
public int fireTimer = 50;
public int coolTimer = 200;
public int meleeSpeed = 30;
public float DT = 2.0F;
public DragonBreed(int tier, String name, String breedname, String tex, DragonBreath breath)
{
this.tier = tier;
this.name = name;
this.breedName = breedname;
this.tex = tex;
this.rangedAttack = breath;
}
public DragonBreed setCombat(float health, float DT, float regenRate, float meleeDamage, int meleeSpeed, int disengageChance)
{
this.health = health;
this.regenRate = regenRate;
this.meleeDamage = meleeDamage;
this.meleeSpeed = meleeSpeed;
this.disengageChance = disengageChance;
this.DT = DT;
return this;
}
public DragonBreed setProjectile(float fireDamage, int fireTimer, int coolTimer, float pyro)
{
this.fireDamage = fireDamage;
this.fireTimer = fireTimer;
this.coolTimer = coolTimer;
this.pyro = pyro;
return this;
}
public DragonBreed register()
{
breeds[tier].add(this);
return this;
}
public static DragonBreed getBreed(int tier, int id)
{
DragonBreed breed = breeds[tier].get(id);
return breed != null ? breed : breeds[tier].get(0);
}
private static Random rand = new Random();
public static int getRandomDragon(EntityDragon dragon, int tier)
{
ArrayList<DragonBreed> pool = breeds[tier];
BiomeGenBase biome = dragon.worldObj.getBiomeGenForCoords((int)(dragon.posX), (int)(dragon.posZ));
int id = getIdForBiome(biome);
if(id >= pool.size())
{
id = pool.size()-1;
}
MFLogUtil.logDebug("Biome ID: " + id + " " + biome.biomeName);
return id;
}
private static int getIdForBiome(BiomeGenBase biome)
{
if(biome.getEnableSnow() || biome.temperature <= 0.25F)return 1;//Frost
if(biome.isHighHumidity()) return 2;//Poison
return 0;//Fire
}
}