// Path: src/wota/gameobjects/Caste.java
// public enum Caste {
// 	Gatherer(
// 			40.0, // INITIAL_HEALTH
// 			10.0, // SPEED
// 			5.0, // SPEED_WHILE_ATTACKING 
// 			5.0, // SPEED_WHILE_CARRYING_SUGAR
// 			0.15,	 // ATTACK
// 			10,	 // MAX_SUGAR_CARRY
// 			50,  // SIGHT_RANGE
// 			50   // HEARING_RANGE
// 	),
// 
// 	Soldier(
// 			100.0, // INITIAL_HEALTH
// 			10.0, // SPEED
// 			5.0, // SPEED_WHILE_ATTACKING
// 			5.0, // SPEED_WHILE_CARRYING_SUGAR
// 			0.2,  // ATTACK
// 			5,   // MAX_SUGAR_CARRY
// 			50,  // SIGHT_RANGE
// 			50   // HEARING_RANGE
// 	),
// 	
// 	Scout(
// 			100, // INITIAL_HEALTH
// 			15.0, // SPEED
// 			15.0, // SPEED_WHILE_ATTACKING
// 			5.0, // SPEED_WHILE_CARRYING_SUGAR
// 			0.0, // ATTACK
// 			0,	 // MAX_SUGAR_CARRY
// 			100, // SIGHT_RANGE 
// 			100  // HEARING_RANGE TODO should hearing range == sight range?
// 	),
// 
// 	Hill(
// 			0, // INITIAL_HEALTH 
// 			0, 	// SPEED
// 			0, // SPEED_WHILE_ATTACKING
// 			0, // SPEED_WHILE_CARRYING_SUGAR
// 			0,	// ATTACK
// 			0,	// MAX_SUGAR_CARRY
// 			50, // SIGHT_RANGE
// 			50 // HEARING_RANGE
// 	);
// 	
// 	public final double INITIAL_HEALTH;
// 	public final double SPEED;
// 	public final double SPEED_WHILE_ATTACKING;
// 	public final double SPEED_WHILE_CARRYING_SUGAR;
// 	/** Damage caused when attacking */
// 	public final double ATTACK;
// 	public final int MAX_SUGAR_CARRY;	
// 	public final double SIGHT_RANGE;
// 	public final double HEARING_RANGE;
// 	
// 	private Caste(
// 			double INITIAL_HEALTH, 
// 			double SPEED, 
// 			double SPEED_WHILE_ATTACKING, 
// 			double SPEED_WHILE_CARRYING_SUGAR, 
// 			double ATTACK,
// 			int MAX_SUGAR_CARRY, 
// 			double SIGHT_RANGE, 
// 			double HEARING_RANGE) {
// 		this.INITIAL_HEALTH = INITIAL_HEALTH;
// 		this.SPEED = SPEED;
// 		this.SPEED_WHILE_ATTACKING = SPEED_WHILE_ATTACKING;
// 		this.SPEED_WHILE_CARRYING_SUGAR = SPEED_WHILE_CARRYING_SUGAR;
// 		this.ATTACK = ATTACK;
// 		this.MAX_SUGAR_CARRY = MAX_SUGAR_CARRY;
// 		this.SIGHT_RANGE = SIGHT_RANGE;
// 		this.HEARING_RANGE = HEARING_RANGE;
// 	}
// }
// 
// Path: src/wota/utility/SeededRandomizer.java
// public class SeededRandomizer {
// 	private static long seed;
// 	private static final Random internalRandom = new Random();
// 	
// 	public static final SeededRandomizer random = new SeededRandomizer();
// 	
// 	public static void resetSeed(long seed) {
// 		SeededRandomizer.seed = seed;
// 		internalRandom.setSeed(seed);
// 	}
// 
// 	/* I think this will only lead to confusion
// 	public static int nextInt() {
// 		return internalRandom.nextInt();
// 	} */
// 
// 	/**
// 	 * returns a internalRandom integer number between 0 and n-1
// 	 * @param n Upper bound for internalRandom number
// 	 * @return a internalRandom integer number between 0 and n-1
// 	 */
// 	public static int nextInt(int n) {
// 		return internalRandom.nextInt(n);
// 	}
// 	
// 	public static long nextLong() {
// 		return internalRandom.nextLong();
// 	}
// 	
// 	/**
// 	 * @return Returns the next pseudorandom, uniformly distributed double value between 0.0 and 1.0
// 	 */
// 	public static double nextDouble()
// 	{
// 		return internalRandom.nextDouble();
// 	}
// 	
// 	public static long getSeed()
// 	{
// 		return seed;
// 	}
// }


import wota.gamemaster.AIInformation;
import wota.gameobjects.Caste;
import wota.utility.SeededRandomizer;
package wota.ai.solitary;


@AIInformation(creator = "Wota Team", name = "SolitaryAI")
public class HillAI extends wota.gameobjects.HillAI {
	
	@Override
	public void tick() {
		int antsToProduce = (int) (self.food / parameters.ANT_COST);
		for (int i=0; i<antsToProduce; i++) {
			if (random.nextInt(5) <= 3) {
				createAnt(Caste.Gatherer, GathererAI.class);
			}
			else {
// Path: src/wota/gameobjects/Caste.java
// public enum Caste {
// 	Gatherer(
// 			40.0, // INITIAL_HEALTH
// 			10.0, // SPEED
// 			5.0, // SPEED_WHILE_ATTACKING 
// 			5.0, // SPEED_WHILE_CARRYING_SUGAR
// 			0.15,	 // ATTACK
// 			10,	 // MAX_SUGAR_CARRY
// 			50,  // SIGHT_RANGE
// 			50   // HEARING_RANGE
// 	),
// 
// 	Soldier(
// 			100.0, // INITIAL_HEALTH
// 			10.0, // SPEED
// 			5.0, // SPEED_WHILE_ATTACKING
// 			5.0, // SPEED_WHILE_CARRYING_SUGAR
// 			0.2,  // ATTACK
// 			5,   // MAX_SUGAR_CARRY
// 			50,  // SIGHT_RANGE
// 			50   // HEARING_RANGE
// 	),
// 	
// 	Scout(
// 			100, // INITIAL_HEALTH
// 			15.0, // SPEED
// 			15.0, // SPEED_WHILE_ATTACKING
// 			5.0, // SPEED_WHILE_CARRYING_SUGAR
// 			0.0, // ATTACK
// 			0,	 // MAX_SUGAR_CARRY
// 			100, // SIGHT_RANGE 
// 			100  // HEARING_RANGE TODO should hearing range == sight range?
// 	),
// 
// 	Hill(
// 			0, // INITIAL_HEALTH 
// 			0, 	// SPEED
// 			0, // SPEED_WHILE_ATTACKING
// 			0, // SPEED_WHILE_CARRYING_SUGAR
// 			0,	// ATTACK
// 			0,	// MAX_SUGAR_CARRY
// 			50, // SIGHT_RANGE
// 			50 // HEARING_RANGE
// 	);
// 	
// 	public final double INITIAL_HEALTH;
// 	public final double SPEED;
// 	public final double SPEED_WHILE_ATTACKING;
// 	public final double SPEED_WHILE_CARRYING_SUGAR;
// 	/** Damage caused when attacking */
// 	public final double ATTACK;
// 	public final int MAX_SUGAR_CARRY;	
// 	public final double SIGHT_RANGE;
// 	public final double HEARING_RANGE;
// 	
// 	private Caste(
// 			double INITIAL_HEALTH, 
// 			double SPEED, 
// 			double SPEED_WHILE_ATTACKING, 
// 			double SPEED_WHILE_CARRYING_SUGAR, 
// 			double ATTACK,
// 			int MAX_SUGAR_CARRY, 
// 			double SIGHT_RANGE, 
// 			double HEARING_RANGE) {
// 		this.INITIAL_HEALTH = INITIAL_HEALTH;
// 		this.SPEED = SPEED;
// 		this.SPEED_WHILE_ATTACKING = SPEED_WHILE_ATTACKING;
// 		this.SPEED_WHILE_CARRYING_SUGAR = SPEED_WHILE_CARRYING_SUGAR;
// 		this.ATTACK = ATTACK;
// 		this.MAX_SUGAR_CARRY = MAX_SUGAR_CARRY;
// 		this.SIGHT_RANGE = SIGHT_RANGE;
// 		this.HEARING_RANGE = HEARING_RANGE;
// 	}
// }
// 
// Path: src/wota/utility/SeededRandomizer.java
// public class SeededRandomizer {
// 	private static long seed;
// 	private static final Random internalRandom = new Random();
// 	
// 	public static final SeededRandomizer random = new SeededRandomizer();
// 	
// 	public static void resetSeed(long seed) {
// 		SeededRandomizer.seed = seed;
// 		internalRandom.setSeed(seed);
// 	}
// 
// 	/* I think this will only lead to confusion
// 	public static int nextInt() {
// 		return internalRandom.nextInt();
// 	} */
// 
// 	/**
// 	 * returns a internalRandom integer number between 0 and n-1
// 	 * @param n Upper bound for internalRandom number
// 	 * @return a internalRandom integer number between 0 and n-1
// 	 */
// 	public static int nextInt(int n) {
// 		return internalRandom.nextInt(n);
// 	}
// 	
// 	public static long nextLong() {
// 		return internalRandom.nextLong();
// 	}
// 	
// 	/**
// 	 * @return Returns the next pseudorandom, uniformly distributed double value between 0.0 and 1.0
// 	 */
// 	public static double nextDouble()
// 	{
// 		return internalRandom.nextDouble();
// 	}
// 	
// 	public static long getSeed()
// 	{
// 		return seed;
// 	}
// }


// Path: src/wota/ai/solitary/HillAI.java
import wota.gamemaster.AIInformation;
import wota.gameobjects.Caste;
import wota.utility.SeededRandomizer;

package wota.ai.solitary;


@AIInformation(creator = "Wota Team", name = "SolitaryAI")
public class HillAI extends wota.gameobjects.HillAI {
	
	@Override
	public void tick() {
		int antsToProduce = (int) (self.food / parameters.ANT_COST);
		for (int i=0; i<antsToProduce; i++) {
			if (random.nextInt(5) <= 3) {
				createAnt(Caste.Gatherer, GathererAI.class);
			}
			else {
				createAnt(Caste.Soldier, SoldierAI.class);