/** * @return The total number of expected critical hits based on the chance to hit, damage to target, toughness of * target and odds of rolling a successful crit check. This is in the units of critical hits. */ synchronized double getExpectedCriticals() { double expectedCriticals = 0; for (WeaponFireInfo weaponFireInfo : this) { expectedCriticals += weaponFireInfo.getExpectedCriticals(); } return expectedCriticals; }
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 testGetExpectedCriticals() { Mockito.when(mockWeaponFireInfoMG.getExpectedCriticals()).thenReturn(0.0); Mockito.when(mockWeaponFireInfoPPC.getExpectedCriticals()).thenReturn(0.423); Mockito.when(mockWeaponFireInfoERML.getExpectedCriticals()).thenReturn(0.015); double expected = 0 + 0.423 + 0.015; Assert.assertEquals(expected, testFiringPlan.getExpectedCriticals(), TOLERANCE); }
setExpectedCriticals(getExpectedCriticals() + (hitLocationProbability * getProbabilityToHit())); if (Mech.LOC_CT == hitLocation) { setKillProbability(getKillProbability() + (hitLocationProbability * getProbabilityToHit())); setExpectedCriticals(getExpectedCriticals() + (hitLocationProbability * getProbabilityToHit() * expectedCriticalHitCount));
TestCase.assertEquals(expectedMaxDamage, testWeaponFireInfo.getExpectedDamageOnHit()); TestCase.assertEquals(expectedProbabilityToHit, testWeaponFireInfo.getProbabilityToHit(), DELTA); TestCase.assertEquals(expectedCriticals, testWeaponFireInfo.getExpectedCriticals(), DELTA); TestCase.assertEquals(expectedKill, testWeaponFireInfo.getKillProbability(), DELTA); TestCase.assertEquals(expectedMaxDamage, testWeaponFireInfo.getExpectedDamageOnHit()); TestCase.assertEquals(expectedProbabilityToHit, testWeaponFireInfo.getProbabilityToHit(), DELTA); TestCase.assertEquals(expectedCriticals, testWeaponFireInfo.getExpectedCriticals(), DELTA); TestCase.assertEquals(expectedKill, testWeaponFireInfo.getKillProbability(), DELTA); TestCase.assertEquals(expectedMaxDamage, testWeaponFireInfo.getExpectedDamageOnHit()); TestCase.assertEquals(expectedProbabilityToHit, testWeaponFireInfo.getProbabilityToHit(), DELTA); TestCase.assertEquals(expectedCriticals, testWeaponFireInfo.getExpectedCriticals(), DELTA); TestCase.assertEquals(expectedKill, testWeaponFireInfo.getKillProbability(), DELTA); TestCase.assertEquals(expectedMaxDamage, testWeaponFireInfo.getExpectedDamageOnHit()); TestCase.assertEquals(expectedProbabilityToHit, testWeaponFireInfo.getProbabilityToHit(), DELTA); TestCase.assertEquals(expectedCriticals, testWeaponFireInfo.getExpectedCriticals(), DELTA); TestCase.assertEquals(expectedKill, testWeaponFireInfo.getKillProbability(), DELTA); TestCase.assertEquals(expectedMaxDamage, testWeaponFireInfo.getExpectedDamageOnHit()); TestCase.assertEquals(expectedProbabilityToHit, testWeaponFireInfo.getProbabilityToHit(), DELTA); TestCase.assertEquals(expectedCriticals, testWeaponFireInfo.getExpectedCriticals(), DELTA); TestCase.assertEquals(expectedKill, testWeaponFireInfo.getKillProbability(), DELTA);
Mockito.when(mockPPCFireInfo.getHeat()).thenReturn(10); Mockito.when(mockPPCFireInfo.getExpectedDamageOnHit()).thenReturn(10.0); Mockito.when(mockPPCFireInfo.getExpectedCriticals()).thenReturn(0.46); Mockito.when(mockPPCFireInfo.getKillProbability()).thenReturn(0.002); Mockito.when(mockPPCFireInfo.getWeapon()).thenReturn(mockPPC); Mockito.when(mockMLFireInfo.getHeat()).thenReturn(3); Mockito.when(mockMLFireInfo.getExpectedDamageOnHit()).thenReturn(5.0); Mockito.when(mockMLFireInfo.getExpectedCriticals()).thenReturn(0.0); Mockito.when(mockMLFireInfo.getKillProbability()).thenReturn(0.0); Mockito.when(mockMLFireInfo.getWeapon()).thenReturn(mockML); Mockito.when(mockLRMFireInfo.getHeat()).thenReturn(1); Mockito.when(mockLRMFireInfo.getExpectedDamageOnHit()).thenReturn(3.0); Mockito.when(mockLRMFireInfo.getExpectedCriticals()).thenReturn(0.0); Mockito.when(mockLRMFireInfo.getKillProbability()).thenReturn(0.0); Mockito.when(mockLRMFireInfo.getWeapon()).thenReturn(mockLRM5); 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); Mockito.when(mockMGFireInfo.getWeapon()).thenReturn(mockMG);