private void eatBacteria(Bacteria bac){
    	
    	int e = bac.getEnergy();
    	
        if (!bac.isDead() && e > 0) {

        	float aggressionDiff = this.getGenetics().getAggression() - bac.getGenetics().getAggression();
        	
        	if(bac.isDying()){
        		int eatenEnergy = Math.min(e, 50);
                bac.dropEnergy(eatenEnergy);
                if (e - eatenEnergy <= 0) {
                	bac.setDead(true);
                }

                addEnergy(eatenEnergy + (int) (eatenEnergy * getGenetics().getAggression() - 0.5));
        	}
        	
        	//If the bacteria is aggressive (or hungry) enough it takes a chance at eating
        	else if(aggressionDiff > (Constants.safeEating - Constants.maxHungerDesperation * getHunger())){
            	
            	//Determines chance of victory based on aggression. 50% initial chance and increasing with aggression  
        		boolean victory = rand.nextFloat() < 0.50 + (aggressionDiff) / Constants.safeEating;
            	
            	//We determine who takes a bite of whom
            	if(victory){
            	
	            	int eatenEnergy = Math.min(e, 50);
	                bac.dropEnergy(eatenEnergy);
	                if (e - eatenEnergy <= 0) {
	                	bac.setDead(true);
	                }
	
	                addEnergy(eatenEnergy + (int) (eatenEnergy * getGenetics().getAggression() - 0.5));
	            } else if(!victory){
                	
	            	int eatenEnergy = Math.min(this.getEnergy(), 50);
	                this.dropEnergy(eatenEnergy);
	                if (e - eatenEnergy <= 0) {
	                	this.setDead(true);
	                }
	
	                bac.addEnergy(eatenEnergy + (int) (eatenEnergy * bac.getGenetics().getAggression() - 0.5));
	            }
            }
        }
    }