def ConstructHitObject(self, player, dummy, Do): """ Constructs the Hit object depending on the type of hit. :param player: The Player object :param Do: The DoList object :return: Nothing """ if player.PerkReflexes and self.Name == 'Anticipation': self.cdMax = 12 if player.PerkPlantedFeet and self.Name in { 'Sunshine', 'Death\'s Swiftness' }: self.Bleed = False self.BoostTime = 63 return if self.Standard or self.Channeled: DamAvg = AVGCalc.StandardChannelDamAvgCalc(self, player, Do) if self.Standard: for i in range(0, self.nS): self.Hits.append(self.Hit(self, DamAvg, 1, 1, i, i)) if self.StunBindDam: StunBindDamAvg = AVGCalc.StandardChannelDamAvgCalc( self, player, Do, 'StunBind', 0) for i in range(0, self.nS): self.HitsStunBind.append( self.Hit(self, StunBindDamAvg, 5, 1, i, i)) else: for i in range(0, self.nS): self.Hits.append(self.Hit(self, DamAvg, 2, 1, i, i)) if self.SideTarget: SideTargetAvg = AVGCalc.StandardChannelDamAvgCalc( self, player, Do, 'SideTarget', 0) for i in range(0, self.nS): self.SideTargetAvg.append( self.Hit(self, SideTargetAvg, 6, 1, i, i)) if self.Bleed: DoTAvg = AVGCalc.BleedDamAvgCalc(self, player, Do) for i in range(0, self.nD): self.DoTHits.append( self.Hit(self, DoTAvg, 3, 1, i, self.nS + i)) if self.Puncture: DoTAvg = AVGCalc.PunctureDamAvgCalc(self, player, Do) for i in range(0, self.nD): self.DoTHits.append( self.Hit(self, DoTAvg, 4, 1, i, self.nS + i))
def CalcNewAvg(bar, dummy, player, Do, i): ############################################################## ############# Calculate new avg depending on type ############ ############################################################## if dummy.PHits[i].Type in {7, 8}: return dummy.PHits[i].Damage IDX = bar.AbilNames.index( dummy.PHits[i].Name) # Spot of the ability on the bar if dummy.PHits[i].Name == 'Salt the Wound': Avg = AVGCalc.StandardChannelDamAvgCalc(bar.Rotation[IDX], player, Do, 'Salt the Wound', dummy.PHits[i].Index, dummy.LastStack) dummy.LastStack = 0 elif dummy.PHits[i].Type in {1, 2}: # if dummy.PHits[i].Name == 'Greater Ricochet' and dummy.PHits[i].Target == 1: # nRedundantHits = 3 + player.Cr - dummy.nTarget # Avg = bar.Rotation[IDX].StandardChannelDamAvgCalc(player, Do, 'Greater Ricochet', 0, nRedundantHits) if not all( [bar.Rotation[IDX].StunBindDam, any([dummy.Stun, dummy.Bind])]): Avg = AVGCalc.StandardChannelDamAvgCalc(bar.Rotation[IDX], player, Do, 'Normal', dummy.PHits[i].Index) else: Avg = AVGCalc.StandardChannelDamAvgCalc(bar.Rotation[IDX], player, Do, 'StunBind', dummy.PHits[i].Index) elif dummy.PHits[i].Type in {3, 4}: Avg = AVGCalc.BleedDamAvgCalc(bar.Rotation[IDX], player, Do) ############################################################## ########### Return the new Average if its not None ########### ############################################################## if Avg is not None: return Avg[0] else: return None