//Determines if a creature successfully kills its target, then takes care of casualties and enegery gain. void Hunt(Critter target, Hex habitat) { float casualties = 0; float bite = biteSize; float targetPop = target.GetLocalPopulation(habitat); float targetFoodValue = target.GetBaseFoodValue(); float huntScore = ChaseScore(target) * FightScore(target) / 100; //print ("-----Target = Creature#" + target.number + "------------------------------------------------------------------------------------------Hunt Success Probability = " + huntScore + ".\r\n"); //print ("This creature (#" + number + ") Hunts Creature #" + target.number + ".\r\n"); if(target == this){ AquireTarget(habitat); } else if (Random.Range (1, 101) <= huntScore * AptitudeCheck(target)) { float popRatio; if(bite > energy_Needed){ bite = energy_Needed; } if(bite < 0){ bite = 0; } casualties = (float)((bite / targetFoodValue * target.GetSize())); casualties = KillCount(target, casualties); if(casualties >= targetPop){ casualties = targetPop / 2; } popRatio = targetPop / (float)(1.25f * GetLocalPopulation(habitat)); if(popRatio > 1.25f){ popRatio = 1.25f; } casualties = (casualties * popRatio); foodTaken += casualties * (targetFoodValue * size); //print (name + " + Target: " + target.name + " PopRatio " + popRatio + "\r\n"); if(energy_Needed <= foodTaken){ foodTaken = energy_Needed; } targetPop -= casualties; target.SetLocalAdultPopulation(targetPop, habitat); target.AddCrittersEaten(casualties); target.AddToHuntDeathsList(habitat, turn, casualties); habitat.AddExcessMeatFood(foodTaken * .5f); target.MortalityCheck(habitat); target.UpdateStats(); //if(isPlayer){ //print ("Total Kills = " + casualties + ". Food aquired = " + foodTaken + " vs. Energy Needed = " + energy_Needed +"\r\n"); //} } //else {print ("Hunt Failed.\r\n");} }