| 155 | intCacheDmg = fitCache['internalDmg'] = {} |
| 156 | |
| 157 | def addDpsVolley(ddKey, addedTimeStart, addedTimeFinish, addedVolleys): |
| 158 | if not addedVolleys: |
| 159 | return |
| 160 | volleySum = sum(addedVolleys, DmgTypes.default()) |
| 161 | if volleySum.total > 0: |
| 162 | addedDps = volleySum / (addedTimeFinish - addedTimeStart) |
| 163 | # We can take "just best" volley, no matter target resistances, because all |
| 164 | # known items have the same damage type ratio throughout their cycle - and |
| 165 | # applying resistances doesn't change final outcome |
| 166 | bestVolley = max(addedVolleys, key=lambda v: v.total) |
| 167 | ddCacheDps = intCacheDpsVolley.setdefault(ddKey, []) |
| 168 | ddCacheDps.append((addedTimeStart, addedTimeFinish, addedDps, bestVolley)) |
| 169 | |
| 170 | def addDmg(ddKey, addedTime, addedDmg): |
| 171 | if addedDmg.total == 0: |