コード例 #1
0
    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))
コード例 #2
0
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