Example #1
0
 def activate(self, action):
     self.on_cd()
     if 'massive' in action.target.types:
         self.string('impossible',
                     format_dict={
                         'target': action.target.name,
                         'actor': self.unit.name
                     })
     elif 'dodge' in action.target.action:
         self.string('fail',
                     format_dict={
                         'target': action.target.name,
                         'actor': self.unit.name
                     })
     elif 'shield' in action.target.action:
         self.string('special',
                     format_dict={
                         'target': action.target.name,
                         'actor': self.unit.name
                     })
     else:
         self.string('use',
                     format_dict={
                         'target': action.target.name,
                         'actor': self.unit.name
                     })
         statuses.Buff(action.target, 'melee_accuracy', -6, 1)
         statuses.Buff(action.target, 'range_accuracy', -6, 1)
         action.target.move_back()
Example #2
0
 def activate(self, action):
     self.unit.waste_energy(3)
     statuses.Buff(unit=action.target,
                   attr='range_accuracy',
                   value=4,
                   length=2)
     statuses.Buff(unit=action.target,
                   attr='melee_accuracy',
                   value=4,
                   length=2)
     self.string('use',
                 format_dict={
                     'actor': self.unit.name,
                     'target': action.target.name
                 })
Example #3
0
    def activate(self, action=None):
        # Определяет разницу между максимальным и текущим хп. bonus_energy - число этой разницы
        bonus_energy = self.unit.max_hp - self.unit.hp
        if bonus_energy > self.bonus_energy:
            # Если прошлый бонус меньше этого - добавляет строку с разницей бонусов и увеличивает количество энергии
            # и максимум запаса энергии.
            plus = bonus_energy - self.bonus_energy
            self.string('use',
                        format_dict={
                            'actor': self.unit.name,
                            'plus': plus
                        })
            self.unit.max_energy += plus
            self.unit.energy += plus
            self.unit.speed += plus

        elif bonus_energy < self.bonus_energy:
            # Если прошлый бонус больше этого - уменьшает только максимум запаса энергии
            minus = self.bonus_energy - bonus_energy
            self.unit.max_energy -= minus
            self.unit.speed -= minus
        self.bonus_energy = bonus_energy

        # Увеличивает урон на 2 при одной жизни.
        if self.unit.hp == 1:
            statuses.Buff(self.unit,
                          'damage',
                          2,
                          2,
                          emoji=emoji_utils.emote_dict['berserk_em'])
            if not self.bonus_damage:
                self.string('special', format_dict={'actor': self.unit.name})
                self.bonus_damage = True
        elif self.bonus_damage:
            self.bonus_damage = False
Example #4
0
 def activate(self, action=None):
     if self.unit.energy == self.unit.max_energy:
         statuses.Buff(self.unit,
                       'damage',
                       2,
                       1,
                       emoji=emoji_utils.emote_dict['biceps_em'])
Example #5
0
 def first_stage(self):
     self.use()
     statuses.Buff(self.target, 'spell_damage', 2, 3)
     self.string('use',
                 format_dict={
                     'actor': self.unit.name,
                     'target': self.target.name
                 })
Example #6
0
 def activate(self, action):
     self.string('use', format_dict={'actor': self.unit.name})
     statuses.Buff(unit=self.unit, attr='damage', length=3, value=3)
     statuses.CustomStatus(unit=self.unit,
                           delay=1,
                           func=self.wear_off,
                           order=40,
                           name='psycho_delay')
Example #7
0
 def tighten(ability, action):
     unit = action.unit
     if unit.state == 'reach':
         unit.grab(unit.target)
         unit.victim = unit.target
     elif unit.state == 'grabbed':
         chance = random.randint(1, 3)
         if chance == 1:
             unit.pull()
             unit.state = 'pull'
         elif chance == 2:
             unit.fling()
             unit.state = 'free'
         elif chance == 3:
             unit.choke()
             unit.state = 'choking'
     elif unit.state == 'choking':
         unit.choke()
     elif unit.state == 'pull':
         unit.string('skill_3',
                     format_dict={
                         'actor': unit.name,
                         'target': unit.target.name
                     })
         statuses.Buff(unit.victim, 'range_accuracy', -5, 2)
         statuses.Buff(unit.victim, 'melee_accuracy', -3, 2)
         unit.state = 'lift'
     elif unit.state == 'lift':
         unit.string('skill_4',
                     format_dict={
                         'actor': unit.name,
                         'target': unit.target.name
                     })
         unit.state = 'free'
         unit.target.change_hp(-10)
         unit.free()
     elif unit.state == 'free':
         unit.string('skill_7',
                     format_dict={
                         'actor': unit.name,
                         'target': unit.target.name
                     })
         unit.move_forward()
         unit.state = 'reach'
     elif unit.state == 'broken':
         unit.state = 'free'
Example #8
0
 def activate_special_action(self, target):
     self.string('special_hit',
                 format_dict={
                     'actor': self.unit.name,
                     'target': target.name
                 })
     statuses.Buff(target, 'damage', self.bonus_damage, 1)
     target.energy += self.bonus_energy
     target.dmg_received += 1
     self.unit.waste_energy(self.energy)
Example #9
0
 def activate(self, action):
     self.on_cd()
     if 'massive' in action.target.types:
         self.string('impossible',
                     format_dict={
                         'target': action.target.name,
                         'actor': self.unit.name
                     })
     elif action.target.energy < action.unit.energy + random.randint(0, 1):
         self.string('use',
                     format_dict={
                         'actor': action.unit.name,
                         'target': action.target.name
                     })
         statuses.Buff(action.target, 'melee_accuracy', -6, 1)
         statuses.Buff(action.target, 'range_accuracy', -6, 1)
         print(action.target.melee_accuracy)
         statuses.Prone(action.target)
     else:
         self.string('fail',
                     format_dict={
                         'actor': action.unit.name,
                         'target': action.target.name
                     })
Example #10
0
 def activate(self, action):
     self.string('use', format_dict={'actor': self.unit.name})
     statuses.Buff(self.unit, 'evasion', 6, 1)
     self.unit.move_back()
Example #11
0
 def activate_bonus(self):
     statuses.Buff(self.actor, 'melee_accuracy', 2, 1)
     statuses.Buff(self.actor, 'range_accuracy', 2, 1)
     statuses.Buff(self.actor, 'damage', 1, 1)
     self.string('use', format_dict={'actor': self.actor.name})
Example #12
0
 def activate(self, action):
     InstantAbility.activate(self, action)
     self.string('use', format_dict={'actor': self.unit.name})
     statuses.Buff(self.unit, 'evasion', 8, 1)
Example #13
0
 def activate(self, action):
     power = int(action.info[-1])
     statuses.Buff(self.unit, 'spell_damage', power, 2)
     self.string('special', format_dict={'actor': self.unit.name})
Example #14
0
 def activate(self, action):
     self.string('use', format_dict={'actor': self.unit.name})
     for unit in self.unit.fight.units:
         statuses.Buff(unit, 'range_accuracy', -6, 2)
         statuses.Buff(unit, 'melee_accuracy', -4, 2)
Example #15
0
 def start_regenerating(self):
     statuses.Buff(self, 'damage', 2, 3)
     statuses.CustomStatus(self, 21, 0, self.regenerate, name='custom_{}_{}'.format('regenerate', engine.rand_id()), acting=True)
     statuses.CustomStatus(self, 21, 1, self.regenerate, name='custom_{}_{}'.format('regenerate', engine.rand_id()))
     statuses.CustomStatus(self, 21, 2, self.regenerate, name='custom_{}_{}'.format('regenerate', engine.rand_id()))
     statuses.CustomStatus(self, 22, 2, self.reset_blood, name='custom_{}_{}'.format('blood_reset', engine.rand_id()))
Example #16
0
 def activate(self, action):
     self.string('use', format_dict={'actor': self.actor.name})
     for actor in self.actor.fight.actors:
         statuses.Buff(actor, 'range_accuracy', -6, 2)
         statuses.Buff(actor, 'melee_accuracy', -4, 2)