Ejemplo n.º 1
0
        public void EndSequence(SequenceEndMessage message)
        {
            var fighter = GetFighter(message.authorId);

            if (fighter == null)
            {
                throw new InvalidOperationException(string.Format("Fighter {0} not found, cannot end sequence", message.authorId));
            }

            if (SequenceEnded != null)
            {
                SequenceEnded(this, fighter);
            }

            //if ((TimeLine.CurrentPlayer != null) && (message.authorId != TimeLine.CurrentPlayer.Id))
            //    throw new InvalidOperationException(string.Format("EndSequence authorId {0} is not current Player {1}", message.authorId, fighter.Id));
            //if (CurrentPlayer is PlayedFighter)
            //{
            //    (CurrentPlayer as PlayedFighter).Character.SendMessage(String.Format("EndSequence : of fighter {0}, CurrentPlayer {1}, TimeLine.CurrentPlayer {2}", fighter, CurrentPlayer, TimeLine.CurrentPlayer), Color.Gray);
            //}
            if (CurrentPlayer != null && CurrentPlayer.Id == message.authorId)
            {
                CurrentPlayer.NotifySequenceEnded();
            }
        }
Ejemplo n.º 2
0
 private void HandleSequenceEndMessage(IAccount account, SequenceEndMessage message)
 {
     if (message.AuthorId != account.Character.Id)
     {
         return;
     }
     account.Network.SendToServer(new GameActionAcknowledgementMessage(true, (sbyte)message.ActionId));
 }
Ejemplo n.º 3
0
 public void HandleSequenceEndMessage(Bot bot, SequenceEndMessage message)
 {
     if (bot == null || bot.Character == null || bot.Character.Fight == null)
     {
         logger.Error("Fight is not properly initialized.");
         return; // Can't handle the message
     }
     bot.Character.Fight.EndSequence(message);
 }
Ejemplo n.º 4
0
        public static Task HandleSequenceEndMessage(Account account, SequenceEndMessage message)
        => Task.Run(async() =>
        {
            if (account.Game.Character.Id == message.AuthorId)
            {
                await Task.Delay(200 * (int)account.Extensions.Fights.Configuration.FightsSpeed);
                await account.Network.SendMessageAsync(new GameActionAcknowledgementMessage(true, (int)message.ActionId));
            }

            await account.Extensions.Fights.Update(message);
        });
Ejemplo n.º 5
0
        public static void SequenceEndMessageTreatment(Message message, byte[] packetDatas, AccountUC account)
        {
            SequenceEndMessage msg = (SequenceEndMessage)message;

            using (BigEndianReader reader = new BigEndianReader(packetDatas))
            {
                msg.Deserialize(reader);
            }
            if ((account.Fight != null) && (account.Fight.Fighter != null) && (account.Fight.Fighter.Id == msg.authorId) && (!account.IsMITM))
            {
                GameActionAcknowledgementMessage msg2 = new GameActionAcknowledgementMessage(true, msg.sequenceType);
                account.SocketManager.Send(msg2);
                account.Fight.PerformSpellsStack();
                //account.Fight.PerformMove();
            }
        }
Ejemplo n.º 6
0
        public static void SequenceEndMessageTreatment(Message message, byte[] packetDatas, AccountUC account)
        {
            SequenceEndMessage msg = (SequenceEndMessage)message;

            using (BigEndianReader reader = new BigEndianReader(packetDatas))
            {
                msg.Deserialize(reader);
            }
            if (!account.FightData.IsDead && account.FightData.Fighter.Id == msg.authorId && !account.IsMITM && account.Fight != null && account.FightData.IsFighterTurn)
            {
                GameActionAcknowledgementMessage msg2 = new GameActionAcknowledgementMessage(true, (sbyte)msg.actionId);
                account.SocketManager.Send(msg2);
                switch (account.Fight.flag)
                {
                case -1:
                    account.Fight.EndTurn();
                    break;

                case 1:
                    account.Fight.ExecutePlan();
                    break;
                }
            }
        }
Ejemplo n.º 7
0
        public async Task Update(SequenceEndMessage message)
        {
            if (!_account.Game.Fight.IsOurTurn || message.AuthorId != _account.Game.Character.Id)
            {
                return;
            }

            // If all the ennemies are dead, avoid doing something
            if (_account.Game.Fight.AliveEnnemiesCount == 0)
            {
                return;
            }

            // If its the end of the turn
            if (_endTurn && message.SequenceType == 5)
            {
                await FinishTurn(400);

                return;
            }

            if (_awaitingSequenceEnd)
            {
                _awaitingSequenceEnd = false;
            }
            else
            {
                return;
            }

            // Otherwise handle the spells
            await Task.Delay(400);

            Console.WriteLine("3- Calling ProcessSpells");
            await ProcessSpells();
        }