コード例 #1
0
 def attack(self, mult, min_hit=1, max_hit=1):
     if mult is None:
         return None
     output = '{}%데미지'. \
         format(minmax(int(min_hit) * int(mult), int(max_hit) * int(mult)))
     if min_hit and max_hit != 1:
         output += ' ({}회, 각 {}%)'. \
             format(minmax(min_hit, max_hit), mult)
     return output
コード例 #2
0
 def attack(self, mult, min_hit=1, max_hit=1):
     if mult is None:
         return None
     output = 'Deal {:s}% damage'. \
         format(minmax(int(min_hit) * int(mult), int(max_hit) * int(mult)))
     if min_hit and max_hit != 1:
         output += ' ({:s}, {:,}% each)'. \
             format(noun_count("hit", minmax(min_hit, max_hit)), mult)
     return output
コード例 #3
0
 def absorb(self, abs_type: Absorb, condition, min_turns, max_turns=None):
     if abs_type == Absorb.attr:
         source = self.attributes_to_str(condition)
         return '{}턴동안 {} 속성의 공격을 흡수' \
             .format(minmax(min_turns, max_turns), source)
     elif abs_type == Absorb.combo:
         source = ' {}콤보 이하의'.format(condition)
     elif abs_type == Absorb.damage:
         source = ' {} 이상'.format(condition)
     else:
         source = 'ㅇㅇ'
     return '{}턴동안 공격을 흡수'.format(minmax(min_turns, max_turns), source)
コード例 #4
0
 def recover(self,
             min_amount,
             max_amount,
             target_type,
             player_threshold=None):
     target = targets_to_str([target_type])
     if player_threshold and player_threshold != 100:
         return capitalize_first(
             '{:s} recover {:s} HP when below {}% HP'.format(
                 target, minmax(min_amount, max_amount, True),
                 player_threshold))
     else:
         return capitalize_first('{:s} recover {:s} HP'.format(
             target, minmax(min_amount, max_amount, True)))
コード例 #5
0
 def absorb(self, abs_type: Absorb, condition, min_turns, max_turns=None):
     if abs_type == Absorb.attr:
         source = self.attributes_to_emoji(condition)
         return "({}:{} for {})".format(emoji_dict['absorb'], source,
                                        minmax(min_turns, max_turns))
     elif abs_type == Absorb.combo:
         return "({}{} for {})".format(emoji_dict['combo_absorb'],
                                       condition,
                                       minmax(min_turns, max_turns))
     elif abs_type == Absorb.damage:
         return "({}{} for {})".format(emoji_dict['damage_absorb'],
                                       f'{condition:,}',
                                       minmax(min_turns, max_turns))
     else:
         raise ValueError("unknown absorb type: {}".format(abs_type))
コード例 #6
0
 def recover(self,
             min_amount,
             max_amount,
             target_type,
             player_threshold=None):
     target = targets_to_str([target_type])
     if player_threshold and player_threshold != 100:
         return "({}{}%HP{}{})".format(emoji_dict['recover'],
                                       minmax(min_amount, max_amount),
                                       emoji_dict['to'],
                                       capitalize_first(target))
     else:
         return "({}{}%HP{}{})".format(emoji_dict['recover'],
                                       minmax(min_amount, max_amount),
                                       emoji_dict['to'],
                                       capitalize_first(target))
コード例 #7
0
 def skyfall(self,
             attributes,
             chance,
             min_turns,
             max_turns=None,
             locked=False):
     lock = 'Locked ' if locked else ''
     orbs = self.attributes_to_str(attributes)
     # TODO: tieout
     if lock and orbs == 'Random':
         orbs = orbs.lower()
     if not locked:
         return "([{}:{}]+{}% for {})".format(
             emoji_dict['skyfall'], self.attributes_to_emoji(attributes),
             chance, minmax(min_turns, max_turns))
     if locked:
         return "([{}{}:{}]+{}% for {})".format(
             emoji_dict['locked'], emoji_dict['skyfall'],
             self.attributes_to_emoji(attributes), chance,
             minmax(min_turns, max_turns))
コード例 #8
0
 def skyfall(self,
             attributes,
             chance,
             min_turns,
             max_turns=None,
             locked=False):
     lock = 'Locked ' if locked else ''
     orbs = self.attributes_to_str(attributes)
     if orbs != 'Random':
         orbs += '드롭이 '
     return '{}턴동안 {}%확률로 {}잠금 상태로 출현' \
         .format(minmax(min_turns, max_turns), chance, orbs)
コード例 #9
0
 def bind(self,
          min_turns,
          max_turns,
          target_count=None,
          target_types=TargetType.card,
          source: Source = None):
     if isinstance(target_types, TargetType):
         target_types = [target_types]
     elif source is not None:
         target_types = SOURCE_FUNCS[source]([target_types]) + ' cards'
     targets = targets_to_str(target_types)
     output = 'Bind {:s} '.format(noun_count(targets, target_count))
     output += 'for ' + noun_count('turn', minmax(min_turns, max_turns))
     return output
コード例 #10
0
 def bind(self,
          min_turns,
          max_turns,
          target_count=None,
          target_types=TargetType.card,
          source: Source = None):
     if isinstance(target_types, TargetType):
         target_types = [target_types]
     elif source is not None:
         target_types = SOURCE_FUNCS[source]([target_types]) + ' cards'
     targets = targets_to_str(target_types)
     output = '({} {} '.format(emoji_dict['bind'],
                               noun_count(targets, target_count))
     output += 'for ' + minmax(min_turns, max_turns) + ')'
     return output
コード例 #11
0
 def blind_sticky_random(self, turns, min_count, max_count):
     if min_count == 42:
         return '({} for {})'.format(emoji_dict['super_blind'], turns)
     else:
         return '({} {} for {})' \
             .format(minmax(min_count, max_count), emoji_dict['super_blind'], turns)
コード例 #12
0
 def blind_sticky_random(self, turns, min_count, max_count):
     if min_count == 42:
         return 'Blind all orbs for {:s}'.format(noun_count('turn', turns))
     else:
         return 'Blind random {:s} orbs for {:s}' \
             .format(minmax(min_count, max_count), noun_count('turn', turns))
コード例 #13
0
 def blind_sticky_random(self, turns, min_count, max_count):
     if min_count == 42:
         return '{}턴동안 모든 드롭을 초암흑으로 가림'.format(turns)
     else:
         return '{}턴동안 무작위 {}개의 드롭을 초암흑으로 가림' \
             .format(turns, minmax(min_count, max_count))
コード例 #14
0
 def skill_delay(self, min_turns, max_turns):
     return 'Delay active skills by {:s}' \
         .format(noun_count('turn', minmax(min_turns, max_turns)))
コード例 #15
0
 def skill_delay(self, min_turns, max_turns):
     return "({}-[{}])".format(emoji_dict['skill_delay'],
                               minmax(min_turns, max_turns))
コード例 #16
0
 def suicide_random_nuke_convert(self, act):
     skill_text = self.suicide_convert(act) + '; '
     skill_text += 'Deal ' + minmax(act.maximum_multiplier, act.minimum_multiplier, fmt=True) \
                   + 'x ' + self.ATTRIBUTES[act.attribute] + ' damage to ' + self.fmt_mass_atk(act.mass_attack)
     return skill_text
コード例 #17
0
 def skill_delay(self, min_turns, max_turns):
     return '아군의 액티브 스킬 대기 턴 {}턴 증가'.format(minmax(min_turns, max_turns))