@@ -49,8 +49,10 @@ export default class AverageDamageProcessor {
49
49
if ( mwModifier ) {
50
50
const mortalHits = attacks * mwModifier . resolve ( this . profile ) ;
51
51
mortalDamage += mortalHits * mwModifier . getMortalWounds ( ) ;
52
- mortalDamage -= mortalDamage * this . target . resolveMortalSave ( this . profile ) ;
53
- hits -= ! mwModifier . inAddition ? mortalHits : 0 ;
52
+ mortalDamage = Math . max ( mortalDamage - mortalDamage * this . target . resolveMortalSave ( this . profile ) , 0 ) ;
53
+ if ( ! mwModifier . inAddition ) {
54
+ hits = Math . max ( hits - mortalHits , 0 ) ;
55
+ }
54
56
}
55
57
56
58
const cbModifier = this . profile . modifiers . getModifier ( m . CONDITIONAL_BONUS , C . TO_HIT ) ;
@@ -60,7 +62,7 @@ export default class AverageDamageProcessor {
60
62
const cbModHits = attacks * cbModifier . resolve ( this . profile ) ;
61
63
const splitProcessor = new AverageDamageProcessor ( newProfile , this . target ) ;
62
64
splitDamage = splitProcessor . resolveWounds ( cbModHits ) ;
63
- hits -= cbModHits ;
65
+ hits = Math . max ( hits - cbModHits , 0 ) ;
64
66
}
65
67
66
68
return this . resolveWounds ( hits ) + mortalDamage + splitDamage ;
@@ -76,8 +78,10 @@ export default class AverageDamageProcessor {
76
78
if ( mwModifier ) {
77
79
const mortalToWounds = hits * mwModifier . resolve ( this . profile ) ;
78
80
mortalDamage += mortalToWounds * mwModifier . getMortalWounds ( ) ;
79
- mortalDamage -= mortalDamage * this . target . resolveMortalSave ( this . profile ) ;
80
- wounds -= ! mwModifier . inAddition ? mortalToWounds : 0 ;
81
+ mortalDamage = Math . max ( mortalDamage - mortalDamage * this . target . resolveMortalSave ( this . profile ) , 0 ) ;
82
+ if ( ! mwModifier . inAddition ) {
83
+ wounds = Math . max ( wounds - mortalToWounds , 0 ) ;
84
+ }
81
85
}
82
86
83
87
const cbModifier = this . profile . modifiers . getModifier ( m . CONDITIONAL_BONUS , C . TO_WOUND ) ;
@@ -87,7 +91,7 @@ export default class AverageDamageProcessor {
87
91
const cbModWounds = hits * cbModifier . resolve ( this . profile ) ;
88
92
const splitProcessor = new AverageDamageProcessor ( newProfile , this . target ) ;
89
93
splitDamage = splitProcessor . resolveSaves ( cbModWounds ) ;
90
- wounds -= cbModWounds ;
94
+ wounds = Math . max ( wounds - cbModWounds , 0 ) ;
91
95
}
92
96
93
97
return this . resolveSaves ( wounds ) + mortalDamage + splitDamage ;
@@ -102,6 +106,6 @@ export default class AverageDamageProcessor {
102
106
resolveDamage ( successful : number ) {
103
107
const damage = successful * this . profile . getDamage ( ) ;
104
108
const saves = damage * this . target . resolveFNP ( this . profile ) ;
105
- return damage - saves ;
109
+ return Math . max ( damage - saves , 0 ) ;
106
110
}
107
111
}
0 commit comments