Beispiel #1
0
 def key(effect):
     try:
         spot = effect.subject.spot
     except AttributeError:
         turn_order = speed = 0
     else:
         turn_order = spot.turn_order
         speed = spot.battler.stats.speed * Effect.speed_factor(spot, 1)
     return (major_tier, EndTurnOrder.tier_effect, -speed, turn_order,
             minor_tier)
Beispiel #2
0
 def command_sort_order(self, command):
     speed_value = command.request.battler.stats.speed
     trick_factor = Effect.speed_factor(self, 1)
     speed_sort_value = -speed_value * trick_factor
     if command.command == 'move':
         return (
                 1,
                 -command.move.priority,
                 speed_sort_value,
             )
     elif command.command == 'switch':
         # XXX: Should switch-ins be sorted by speed?
         return (
                 0,
                 speed_sort_value,
             )
     else:
         raise NotImplementedError(command.command)
Beispiel #3
0
    def process_replacements(self):
        """Send out monsters to replace those that have fainted."""
        self.assert_state('waiting_replacements')

        commands = [command for command in self.commands.values()
                if command.command == 'switch']

        for command in commands:
            battler = command.battler
            spot = battler.spot
            self.switch(spot, command.replacement)

        trick_factor = Effect.speed_factor(self, 1)
        commands.sort(key=lambda c: -c.replacement.stats.speed * trick_factor)
        for command in commands:
            Effect.send_out(command.battler.spot.battler)

        self.ask_for_commands()