@Override
	public void spawnChild() throws Exception {
		Stack<Position> neighbor = this.field.getNeighborPositions(this.pos);
		while(!neighbor.empty()) {
			Position n = neighbor.pop();
			Creature content = n.getContent();
			if(content != null && content instanceof Tiger) {
				return;
			}
		}
		
		Stack<Position> newPos = this.field.getFreeNeightbors(this.pos);
		if(newPos != null && newPos.size() > 2 && this.age >= 3) {
			Collections.shuffle(newPos);
			Rabbit child = new Rabbit(this.field, false, newPos.pop());
			
			// chance of posion child if parent is already inffected
			if(this.poisoned) {
				double rand = Math.random();
				if(rand > 0.4) {
					child.poison();
				} else {
					child.immune();
				}
			}
			
			Simulator.getInstance().addCreature(child);
		}
	}