예제 #1
0
        public override async Task RunAsync()
        {
            var selectedMove = Player.Moves.FirstOrDefault(m =>
                                                           m.Name.Equals(SelectedMoveName, StringComparison.InvariantCultureIgnoreCase));

            Player.SelectedMove = selectedMove;
            var targetTeam = selectedMove.OnEnemy ? Player.Enemies : Player.Party;

            if ((selectedMove.TargetType & TargetType.NoAim) == selectedMove.TargetType || targetTeam.Count <= 1)
            {
                Player.HasSelected    = true;
                selectedMove.TargetNr = 0;
            }

            if (selectedMove is Summon)
            {
                await Context.UpdateReplyAsync(p => p.Components = ControlBattleComponents.GetSummonsComponent(Player));
            }
            else
            {
                await Context.UpdateReplyAsync(p =>
                                               p.Components = ControlBattleComponents.GetPlayerControlComponents(Player));
            }

            if (Player is PlayerFighter fighter)
            {
                fighter.AutoTurnsInARow = 0;
            }
            if (Player.HasSelected)
            {
                _ = Battle.ProcessTurn(false);
            }
            await Task.CompletedTask;
        }
예제 #2
0
 public override async Task RunAsync()
 {
     Player.SelectedMove.TargetNr = SelectedTargetPosition;
     Player.HasSelected           = true;
     if (Player.Party.Count > 1)
     { // Only update the select menu if its a group battle
         if (Player.SelectedMove is Summon)
         {
             await Context.UpdateReplyAsync(p => p.Components = ControlBattleComponents.GetSummonsComponent(Player));
         }
         else
         {
             await Context.UpdateReplyAsync(p =>
                                            p.Components = ControlBattleComponents.GetPlayerControlComponents(Player));
         }
     }
     _ = Battle.ProcessTurn(false);
     await Task.CompletedTask;
 }