Example #1
0
 def determine_critical_hit(self, hit):
     if Effect.prevent_critical_hit(hit):
         return False
     stage = Effect.critical_hit_stage(hit, 1)
     rate = {1: Fraction(1, 16), 2: Fraction(1, 8), 3: Fraction(1, 4), 4: Fraction(1, 3), 5: Fraction(1, 2)}[
         min(stage, 5)
     ]
     hit.is_critical = self.field.flip_coin(rate, "Determine critical hit")
     if hit.is_critical:
         return True
     else:
         return Effect.force_critical_hit(self)