示例#1
0
        private void HandleGameActionFightDispellableEffectMessage(IAccount account,
                                                                   GameActionFightDispellableEffectMessage message)
        {
            if (message.Effect is FightTemporaryBoostStateEffect ftbse)
            {
                if (ftbse.TargetId != Fighter.Id)
                {
                    return;
                }
                if (DurationByEffect.ContainsKey(ftbse.StateId))
                {
                    DurationByEffect.Remove(ftbse.StateId);
                }

                DurationByEffect.Add(ftbse.StateId, ftbse.TurnDuration);
            }
            else if (message.Effect is FightTemporaryBoostEffect ftbe)
            {
                switch (message.ActionId)
                {
                case 168:
                    ((Fighter)Fighter).ActionPoints = (short)(Fighter.ActionPoints - ftbe.Delta);
                    break;

                case 169:
                    ((Fighter)Fighter).MovementPoints = (short)(Fighter.MovementPoints - ftbe.Delta);
                    break;
                }
            }
        }
 public void HandleGameActionFightDispellableEffectMessage(Bot bot, GameActionFightDispellableEffectMessage 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.AddEffect(message.effect, message.actionId);
 }
示例#3
0
        public static void GameActionFightDispellableEffectMessageTreatment(Message message, byte[] packetDatas, AccountUC account)
        {
            GameActionFightDispellableEffectMessage msg = (GameActionFightDispellableEffectMessage)message;

            using (BigEndianReader reader = new BigEndianReader(packetDatas))
            {
                msg.Deserialize(reader);
            }
            account.FightData.SetEffect(msg.effect, msg.actionId);
        }
示例#4
0
        public void Update(GameActionFightDispellableEffectMessage message)
        {
            if (message.Effect is FightTemporaryBoostStateEffect ftbse)
            {
                if (ftbse.TargetId == PlayedFighter?.ContextualId)
                {
                    if (_effectsDurations.ContainsKey(ftbse.StateId))
                    {
                        _effectsDurations.Remove(ftbse.StateId);
                    }

                    //_account.Logger.LogWarning("", $"Added state{ftbse.StateId} for {ftbse.TurnDuration} turns.");
                    _effectsDurations.Add(ftbse.StateId, ftbse.TurnDuration);
                }
            }
            else if (message.Effect is FightTemporaryBoostEffect ftbe)
            {
                if (ftbe.TargetId == PlayedFighter?.ContextualId)
                {
                    PlayedFighter.Update(message.ActionId, ftbe);
                }
            }
        }
示例#5
0
        public static void GameActionFightDispellableEffectMessageTreatment(Message message, byte[] packetDatas, AccountUC account)
        {
            GameActionFightDispellableEffectMessage msg = (GameActionFightDispellableEffectMessage)message;

            using (BigEndianReader reader = new BigEndianReader(packetDatas))
            {
                msg.Deserialize(reader);
            }
            if (account.Fight != null)
            {
                if (msg.effect is FightTemporaryBoostStateEffect)
                {
                    FightTemporaryBoostStateEffect effect = (FightTemporaryBoostStateEffect)msg.effect;
                    if (effect.targetId == account.Fight.Fighter.Id)
                    {
                        if (account.Fight.DurationByEffect.ContainsKey(effect.stateId))
                        {
                            account.Fight.DurationByEffect.Remove(effect.stateId);
                        }
                        account.Fight.DurationByEffect.Add(effect.stateId, effect.turnDuration);
                    }
                }
                else if (msg.effect is FightTemporaryBoostEffect)
                {
                    FightTemporaryBoostEffect effect = (FightTemporaryBoostEffect)msg.effect;
                    if (msg.actionId == 168)
                    {
                        ((BFighter)account.Fight.Fighter).ActionPoints = account.Fight.Fighter.ActionPoints - effect.delta;
                    }
                    else if (msg.actionId == 169)
                    {
                        ((BFighter)account.Fight.Fighter).MovementPoints = account.Fight.Fighter.MovementPoints - effect.delta;
                    }
                }
            }
        }
示例#6
0
 public static Task HandleGameActionFightDispellableEffectMessage(Account account, GameActionFightDispellableEffectMessage message)
 => Task.Run(() => account.Game.Fight.Update(message));
示例#7
0
 public static void HandleGameActionFightDispellableEffectMessage(Bot bot, GameActionFightDispellableEffectMessage message)
 {
 }