def L2(p: Player, t: Monster): DEX = p.modifiers["DEX"] P = p.prof musket_SS = attack.factor_ac(DEX + P - 5, t.ac, D(12)(A) + DEX + 10) ba_flurry = attack.factor_ac(DEX + P, t.ac, D(4)(A) + DEX) + attack.factor_ac(DEX + P, t.ac, D(4)(A) + DEX) return musket_SS + ba_flurry
def L2(p: Player, t: Monster): DEX = p.modifiers["DEX"] P = p.prof musket_SS_1_atkroll = D(20)(A) + DEX + P - 5 musket_SS_1_damage = 0 musket_SS_2_atkroll = D(20)(A) + DEX + P - 5 musket_SS_2_damage = 0 ki_used = False if musket_SS_1_atkroll >= t.ac: musket_SS_1_damage = D(12)(A) + DEX + 10 # Use Focused Aim to boost attack roll by 2 elif musket_SS_1_atkroll + 2 >= t.ac: musket_SS_1_damage = D(12)(A) + DEX + 10 ki_used = True if musket_SS_2_atkroll >= t.ac: musket_SS_2_damage = D(12)(A) + DEX + 10 # If Focused Aim would let us hit & we didn't already use ki elif musket_SS_2_atkroll + 2 >= t.ac and not ki_used: musket_SS_2_damage = D(12)(A) + DEX + 10 # Ki-Fueled Attack musket_SS_ba_damage = attack.factor_ac(DEX + P - 5, t.ac, D(12)(A) + DEX + 10) return musket_SS_1_damage + musket_SS_2_damage + musket_SS_ba_damage
def L2(p: Player, t: Monster): DEX = p.modifiers["DEX"] P = p.prof musket_damage, _ = self.musket_attack(0, DEX, P, t, False) musket_SS_ba_damage = attack.factor_ac(DEX + P - 5, t.ac, D(12)(A) + DEX + 10) return musket_damage + musket_SS_ba_damage
def _(p: Player, t: Monster): DEX = p.modifiers["DEX"] P = p.prof ARCHERY = 2 musket_damage, _ = self.musket_attack(ARCHERY, DEX, P, t, False, advantage=True, dread_ambusher=False) # Ki-Fueled Attack musket_SS_ba_damage = attack.factor_ac(DEX + P - 5 + ARCHERY, t.ac, D(12)(A) + DEX + 10, adv=1) return musket_damage + musket_SS_ba_damage
def _(p: Player, t: Monster): DEX = p.modifiers["DEX"] P = p.prof ARCHERY = 2 musket_damage_1, sd_left = self.musket_attack(ARCHERY, DEX, P, t, False, advantage=True, dread_ambusher=False, emboldening_bond=True, precision=4) musket_damage_2, _ = self.musket_attack(ARCHERY, DEX, P, t, False, advantage=True, dread_ambusher=False, emboldening_bond=True, precision=sd_left) # Ki-Fueled Attack musket_SS_ba_damage = attack.factor_ac(DEX + P - 5 + ARCHERY, t.ac, D(12)(A) + DEX + 10, adv=1) return musket_damage_1 + musket_damage_2 + musket_SS_ba_damage
def _(p: Player, t: Monster): DEX = p.modifiers["DEX"] P = p.prof ARCHERY = 2 # OWTB Damage Bonus is negligible here, so ignoring from now on musket_damage, _ = self.musket_attack(ARCHERY, DEX, P, t, False, dread_ambusher=True) # Ki-Fueled Attack musket_SS_ba_damage = attack.factor_ac(DEX + P - 5 + ARCHERY, t.ac, D(12)(A) + DEX + 10) return musket_damage + musket_SS_ba_damage
def _(p: Player, t: Monster): DEX = p.modifiers["DEX"] P = p.prof ARCHERY = 2 musket_damage, _ = self.musket_attack(ARCHERY, DEX, P, t, True) # Ki-Fueled Attack musket_SS_ba_damage = attack.factor_ac(DEX + P - 5 + ARCHERY, t.ac, D(12)(A) + DEX + 10) return musket_damage + musket_SS_ba_damage
def _(p: Player, t: Monster): DEX = p.modifiers["DEX"] P = p.prof ARCHERY = 2 # OWTB Damage Bonus is negligible here, so ignoring from now on musket_damage_1, sd_left = self.musket_attack(ARCHERY, DEX, P, t, False, dread_ambusher=True, emboldening_bond=True, precision=4) musket_damage_2, _ = self.musket_attack(ARCHERY, DEX, P, t, False, dread_ambusher=True, emboldening_bond=True, precision=sd_left) # Ki-Fueled Attack musket_SS_ba_damage = attack.factor_ac(DEX + P - 5 + ARCHERY, t.ac, D(12)(A) + DEX + 10) return musket_damage_1 + musket_damage_2 + musket_SS_ba_damage
def L2(p: Player, t: Monster): DEX = p.modifiers["DEX"] P = p.prof musket = attack.factor_ac(DEX + P, t.ac, D(12)(A) + DEX) ba_punch = attack.factor_ac(DEX + P, t.ac, D(4)(A) + DEX) return musket + ba_punch
def L1(p: Player, t: Monster): DEX = p.modifiers["DEX"] P = p.prof punch = attack.factor_ac(DEX + P, t.ac, D(4)(A) + p.modifiers["DEX"]) ba_punch = attack.factor_ac(DEX + P, t.ac, D(4)(A) + DEX) return punch + ba_punch