Skip to content

Commit

Permalink
actual shoot combo calced
Browse files Browse the repository at this point in the history
  • Loading branch information
Jacob Egner authored and Jacob Egner committed Apr 19, 2024
1 parent f587bae commit b3873e3
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 14 deletions.
24 changes: 16 additions & 8 deletions src/CalcEngineCommon.ts
Original file line number Diff line number Diff line change
Expand Up @@ -423,16 +423,24 @@ export function calcMultiRoundDamage(

// eslint-disable-next-line
for(let _ of range(numRounds - 1)) {
const dmgsPrevRounds = dmgsCumulative;
dmgsCumulative = new Map<number,number>();
dmgsCumulative = combineDmgProbs(dmgsCumulative, dmgsSingleRound);
}

for(let [dmgPrevRounds, probPrevRounds] of dmgsPrevRounds) {
for(let [dmgSingleRound, probSingleRound] of dmgsSingleRound) {
const dmgCumulative = dmgPrevRounds + dmgSingleRound;
addToMapValue(dmgsCumulative, dmgCumulative, probPrevRounds * probSingleRound);
}
return dmgsCumulative;
}

export function combineDmgProbs(
dmgToProb1: Map<number,number>,
dmgToProb2: Map<number,number>,
): Map<number, number>
{
const dmgToProbCombined = new Map<number,number>();

for(let [dmg1, prob1] of dmgToProb1) {
for(let [dmg2, prob2] of dmgToProb2) {
addToMapValue(dmgToProbCombined, dmg1 + dmg2, prob1 * prob2);
}
}

return dmgsCumulative;
return dmgToProbCombined;
}
3 changes: 1 addition & 2 deletions src/components/ShootResultsDisplay.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -132,8 +132,7 @@ const ShootResultsDisplay: React.FC<Props> = (props: Props) => {
</>;

return (
<Container style={{width: '320px'}}>
<Row>Results</Row>
<Container className='p-2' style={{width: '320px'}}>
<Row>
<Col className='p-0'>
<Accordion flush>
Expand Down
15 changes: 11 additions & 4 deletions src/components/ShootSection.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import ShootOptions from 'src/ShootOptions';
import { calcDmgProbs } from 'src/CalcEngineShoot';
import { SaveRange } from 'src/KtMisc';
import ShootResultsDisplay from './ShootResultsDisplay';
import { combineDmgProbs } from 'src/CalcEngineCommon';

const ShootSection: React.FC = () => {
const [attacker1, setAttacker1] = React.useState(new Model());
Expand All @@ -35,6 +36,8 @@ const ShootSection: React.FC = () => {
[save, calcDmgProbs(attacker2, defender2.withProp('diceStat', save), shootOptions2)])),
[attacker2, defender2, shootOptions2]);

const saveToDmgToProbCombined = new Map<number,Map<number,number>>(SaveRange.map(save =>
[save, combineDmgProbs(saveToDmgToProb1.get(save)!, saveToDmgToProb2.get(save)!)]));

const noteListItems: JSX.Element[] = [
N.AvgDamageUnbounded,
Expand Down Expand Up @@ -89,10 +92,14 @@ const ShootSection: React.FC = () => {
/>
</Col>
</Row>
<Row className='border p-0'>
<div>Combination Of Situation 1 & 2<br/></div>
<ShootResultsDisplay saveToDmgToProb={saveToDmgToProb1} defender={defender1} />
</Row>
<div className='border p-0'>
<Row className={Util.centerHoriz}>
Situation 1&2 Combo using W={defender1.wounds} and Sv={defender1.diceStat}+ from Situation1
</Row>
<Row>
<ShootResultsDisplay saveToDmgToProb={saveToDmgToProbCombined} defender={defender1} />
</Row>
</div>
<Row>
<Col className={Util.centerHoriz + ' border'} style={{fontSize: '11px'}}>
<Credits/>
Expand Down

0 comments on commit b3873e3

Please sign in to comment.