/** * @return The amount of damage based on the damage of each weapon and their odds of hitting. */ synchronized double getExpectedDamage() { double expectedDamage = 0; for (WeaponFireInfo weaponFireInfo : this) { expectedDamage += weaponFireInfo.getExpectedDamageOnHit() * weaponFireInfo.getProbabilityToHit(); } return expectedDamage; }
public double getExpectedDamage() { return getProbabilityToHit() * getExpectedDamageOnHit(); }
String getDebugDescription() { return getWeapon().getName() + " P. Hit: " + LOG_PER.format(getProbabilityToHit()) + ", Max Dam: " + LOG_DEC.format(getMaxDamage()) + ", Exp. Dam: " + LOG_DEC.format(getExpectedDamageOnHit()) + ", Num Crits: " + LOG_DEC.format(getExpectedCriticals()) + ", Kill Prob: " + LOG_PER.format(getKillProbability()); } }
@Test public void testGetExpectedDamage() { Mockito.when(mockWeaponFireInfoMG.getExpectedDamageOnHit()).thenReturn(2.0); Mockito.when(mockWeaponFireInfoMG.getProbabilityToHit()).thenReturn(0.1666); Mockito.when(mockWeaponFireInfoPPC.getExpectedDamageOnHit()).thenReturn(10.0); Mockito.when(mockWeaponFireInfoPPC.getProbabilityToHit()).thenReturn(0.7222); Mockito.when(mockWeaponFireInfoERML.getExpectedDamageOnHit()).thenReturn(5.0); Mockito.when(mockWeaponFireInfoERML.getProbabilityToHit()).thenReturn(0.4166); double expected = (2 * 0.1666) + (10 * 0.7222) + (5 * 0.4166); Assert.assertEquals(expected, testFiringPlan.getExpectedDamage(), TOLERANCE); }
/** * Test to make sure that Princess will choose a FiringPlan that shots at * a MechWarrior, instead of choosing to do nothing. */ @Test public void testCalcFiringPlansAtMechwarrior() { mockTarget = Mockito.mock(MechWarrior.class); Mockito.when(mockPPCFireInfo.getProbabilityToHit()).thenReturn(0.6); Mockito.when(mockPPCFireInfo.getHeat()).thenReturn(10); Mockito.when(mockPPCFireInfo.getExpectedDamageOnHit()).thenReturn(10.0); Mockito.when(mockMLFireInfo.getProbabilityToHit()).thenReturn(0.6); Mockito.when(mockMLFireInfo.getHeat()).thenReturn(3); Mockito.when(mockMLFireInfo.getExpectedDamageOnHit()).thenReturn(5.0); Mockito.when(mockLRMFireInfo.getProbabilityToHit()).thenReturn(0.6); Mockito.when(mockLRMFireInfo.getHeat()).thenReturn(1); Mockito.when(mockLRMFireInfo.getExpectedDamageOnHit()).thenReturn(3.0); Mockito.doReturn(0.0).when(testFireControl).calcDamageAllocationUtility(Mockito.any(Targetable.class), Mockito.anyDouble()); Mockito.when(mockShooter.getPosition()).thenReturn(mockShooterCoords); Mockito.when(mockTarget.getPosition()).thenReturn(mockTargetCoords); Mockito.when(mockShooter.getWeaponList()).thenReturn(shooterWeapons); final FiringPlan plan = testFireControl.getBestFiringPlan(mockShooter, mockTarget, mockGame, testToHitThreshold); Assert.assertFalse("Expected not 0.0. Got " + plan.getUtility(), 0.00001 > Math.abs(0 - plan.getUtility())); } }
setMaxDamage(getExpectedDamageOnHit()); msg.append("\n\tMax Damage: ").append(LOG_DEC.format(maxDamage)); if (getExpectedDamageOnHit() > ((targetArmor + targetInternals))) { setExpectedCriticals(getExpectedCriticals() + (hitLocationProbability * getProbabilityToHit())); if (Mech.LOC_CT == hitLocation) { } else if (getExpectedDamageOnHit() > (targetArmor)) { setExpectedCriticals(getExpectedCriticals() + (hitLocationProbability * getProbabilityToHit() *
testWeaponFireInfo.initDamage(null, false, true, null); TestCase.assertEquals(expectedMaxDamage, testWeaponFireInfo.getMaxDamage()); TestCase.assertEquals(expectedMaxDamage, testWeaponFireInfo.getExpectedDamageOnHit()); TestCase.assertEquals(expectedProbabilityToHit, testWeaponFireInfo.getProbabilityToHit(), DELTA); TestCase.assertEquals(expectedCriticals, testWeaponFireInfo.getExpectedCriticals(), DELTA); testWeaponFireInfo.initDamage(null, false, true, null); TestCase.assertEquals(expectedMaxDamage, testWeaponFireInfo.getMaxDamage()); TestCase.assertEquals(expectedMaxDamage, testWeaponFireInfo.getExpectedDamageOnHit()); TestCase.assertEquals(expectedProbabilityToHit, testWeaponFireInfo.getProbabilityToHit(), DELTA); TestCase.assertEquals(expectedCriticals, testWeaponFireInfo.getExpectedCriticals(), DELTA); testWeaponFireInfo.initDamage(null, false, true, null); TestCase.assertEquals(expectedMaxDamage, testWeaponFireInfo.getMaxDamage()); TestCase.assertEquals(expectedMaxDamage, testWeaponFireInfo.getExpectedDamageOnHit()); TestCase.assertEquals(expectedProbabilityToHit, testWeaponFireInfo.getProbabilityToHit(), DELTA); TestCase.assertEquals(expectedCriticals, testWeaponFireInfo.getExpectedCriticals(), DELTA); testWeaponFireInfo.initDamage(null, false, true, null); TestCase.assertEquals(expectedMaxDamage, testWeaponFireInfo.getMaxDamage()); TestCase.assertEquals(expectedMaxDamage, testWeaponFireInfo.getExpectedDamageOnHit()); TestCase.assertEquals(expectedProbabilityToHit, testWeaponFireInfo.getProbabilityToHit(), DELTA); TestCase.assertEquals(expectedCriticals, testWeaponFireInfo.getExpectedCriticals(), DELTA); testWeaponFireInfo.initDamage(null, false, true, null); TestCase.assertEquals(expectedMaxDamage, testWeaponFireInfo.getMaxDamage()); TestCase.assertEquals(expectedMaxDamage, testWeaponFireInfo.getExpectedDamageOnHit()); TestCase.assertEquals(expectedProbabilityToHit, testWeaponFireInfo.getProbabilityToHit(), DELTA); TestCase.assertEquals(expectedCriticals, testWeaponFireInfo.getExpectedCriticals(), DELTA);
Mockito.when(mockPPCFireInfo.getExpectedDamageOnHit()).thenReturn(10.0); Mockito.when(mockPPCFireInfo.getExpectedCriticals()).thenReturn(0.46); Mockito.when(mockPPCFireInfo.getKillProbability()).thenReturn(0.002); Mockito.when(mockMLFireInfo.getExpectedDamageOnHit()).thenReturn(5.0); Mockito.when(mockMLFireInfo.getExpectedCriticals()).thenReturn(0.0); Mockito.when(mockMLFireInfo.getKillProbability()).thenReturn(0.0); Mockito.when(mockLRMFireInfo.getExpectedDamageOnHit()).thenReturn(3.0); Mockito.when(mockLRMFireInfo.getExpectedCriticals()).thenReturn(0.0); Mockito.when(mockLRMFireInfo.getKillProbability()).thenReturn(0.0); Mockito.when(mockMGFireInfo.getProbabilityToHit()).thenReturn(0.6); Mockito.when(mockMGFireInfo.getHeat()).thenReturn(0); Mockito.when(mockMGFireInfo.getExpectedDamageOnHit()).thenReturn(2.0); Mockito.when(mockMGFireInfo.getExpectedCriticals()).thenReturn(0.0); Mockito.when(mockMGFireInfo.getKillProbability()).thenReturn(0.0);